Linux
如何更改符號連結的所有權?
我在創建軟連結時遇到了一些問題。以下是原始文件。
$ ls -l /etc/init.d/jboss -rwxr-xr-x 1 askar admin 4972 Mar 11 2014 /etc/init.d/jboss
由於文件所有者的權限問題,連結創建失敗:
ln -sv jboss /etc/init.d/jboss1 ln: creating symbolic link `/etc/init.d/jboss1': Permission denied $ id uid=689(askar) gid=500(admin) groups=500(admin)
因此,我使用 sudo 權限創建了連結:
$ sudo ln -sv jboss /etc/init.d/jboss1 `/etc/init.d/jboss1' -> `jboss' $ ls -l /etc/init.d/jboss1 lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
接下來我嘗試將軟連結的所有權更改為原始使用者。
$ sudo chown askar.admin /etc/init.d/jboss1 $ ls -l /etc/init.d/jboss1 lrwxrwxrwx 1 root root 11 Jul 27 17:24 /etc/init.d/jboss1 -> jboss
但是軟連結的權限並沒有改變。
我在這裡缺少什麼來更改連結的權限?
在 Linux 系統上,當使用 更改符號連結的所有權時
chown
,預設情況下它會更改符號連結的目標(即,無論符號連結指向什麼)。如果您想更改連結本身的所有權,您需要使用以下
-h
選項chown
:-h, –no-dereference 影響每個符號連結而不是任何引用的文件(僅在可以更改符號連結所有權的系統上有用)
例如:
$ touch test $ ls -l test* -rw-r--r-- 1 mj mj 0 Jul 27 08:47 test $ sudo ln -s test test1 $ ls -l test* -rw-r--r-- 1 mj mj 0 Jul 27 08:47 test lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test $ sudo chown root:root test1 $ ls -l test* -rw-r--r-- 1 root root 0 Jul 27 08:47 test lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
請注意,連結的目標現在歸根使用者所有。
$ sudo chown mj:mj test1 $ ls -l test* -rw-r--r-- 1 mj mj 0 Jul 27 08:47 test lrwxrwxrwx 1 root root 4 Jul 27 08:47 test1 -> test
同樣,該連結
test1
仍歸 root 所有,即使test
已更改。$ sudo chown -h mj:mj test1 $ ls -l test* -rw-r--r-- 1 mj mj 0 Jul 27 08:47 test lrwxrwxrwx 1 mj mj 4 Jul 27 08:47 test1 -> test
最後,我們使用該
-h
選項更改連結的所有權。