題 chown不會改變符號鏈接


我正在嘗試使用以下命令更改符號鏈接的用戶/組:

$ chown -h myuser:mygroup mysymbolic/ 

但它並沒有改變。我以root身份登錄。當前用戶/組設置為root:root。什麼地方出了錯?


282
2017-11-09 13:02


起源


您使用哪種操作系統?根據manaul頁面,-h選項僅對可以更改符號鏈接所有權的系統產生影響。 - Jichao
你是在NFS掛載? - Ortomala Lokni
任何結束的東西 / 是一個目錄。你的意思是 mysymbolic,這是符號鏈接,而不是 mysymbolic/ 這可能是它指向的目錄。 - David Schwartz


答案:


我在目標的末尾加了一個斜線:

chown -h myuser:mygroup mysymbolic/ 

剛剛刪除了斜線並且工作正常。這是正確的方法:

 chown -h myuser:mygroup mysymbolic

353
2017-11-09 13:16



在ubuntu上對我不起作用 - Radek
哇,這花了我幾個小時才找到。 - defines
@Radek只要我記得那個,它在Ubuntu上對我有用 -h旗。 - IQAndreas
在Ubuntu上為我工作 同  -h 和 無 尾隨斜線。 - friederbluemle
4年後,我無法相信,我已經碰到了我過去的自我同樣的問題,錯過了'-h'! - Antony D'Andrea


我自己嘗試過,這對我有用。如果你有-h它會更改符號鏈接的所有者,但如果你沒有,那麼它會更改文件本身的所有者而不是鏈接。

但它似乎沒有工作的符號鏈接鏈接到一個目錄


26
2017-11-09 13:08



對於它的價值,OS X上的手冊頁在-h選項上比在(Arch)Linux上更清晰。 “-h如果文件是符號鏈接,請更改鏈接本身的用戶ID和/或組ID。”與“-h, - no-dereference影響符號鏈接而不是任何引用文件(僅對可以改變符號鏈接所有權的系統)“ - Matijs


我無法 chown 甚至是一個目錄 -h 但使用完整的路徑工作。

# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps/
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# pwd 
/var/www/html
# chown -h deploy:deploy /var/www/html/apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 deploy deploy   32 Dec 30 09:02 apps -> /u/apps/

5
2017-12-30 16:43





目標是文件還是目錄?

如果是目錄,那麼試試-H(大寫H)


4
2017-11-09 13:08



目標是一個目錄
看我編輯的關於目錄的回复
對不起線程的死靈,但我想指出正確的語法是小寫的'h'。


在myuser的主頁上通過myuser重新創建該鏈接,並通過sudo將此鏈接傳送到目標位置。

例如: (作為myuser), ln -s somedir/ linkname (如果用戶目錄中不存在somedir /將是一個斷開的鏈接)

然後, sudo mv linkname targetlocation (將成為提供的有效鏈接 targetlocation/somedir/ 存在)


3
2018-04-26 09:15



你的答案沒有細節,很難完全理解。請考慮修改您的答案以提供更多詳細信息。 - KronoS


只是。

chown -h myuser:mygroup <symlink> [without trailing slash]

應該夠了,工作!


2
2017-12-05 11:02





我有類似的問題。對我來說,無論我如何調用chmod,我都無法以root身份修改符號鏈接。為了給這個增加混亂,nautilus顯示所有者/組沒什麼。店主只是空白。所以我嘗試使用以root身份運行的nautilus來更改符號鏈接,因為chmod不能正常運行並且nautilus崩潰!

但我想我找出了問題所在。符號鏈接指向的目錄具有與符號鏈接不同的權限。所以我將目標目錄(使用-h)chmod到我的用戶/組名稱。然後chmod'ed符號鏈接相同,它的工作!在nautilus中查看符號鏈接的詳細信息(具有root權限)現在不再崩潰。

因此,對於遇到類似問題的其他人,請檢查目標目錄/文件的權限,並確保它與您設置符號鏈接的權限兼容。


1
2017-09-16 17:46





注意改變 owner 符號鏈接只能在目標位置時起作用 無障礙 由您要分配給它的新用戶。

例如,如果您的目標位於您要為其分配的用戶沒有足夠權限的文件夾內,則 ln -s command 行為是這樣的,它根本不會做任何事情。


1
2017-11-01 19:12





對於Solaris(在S11.3上驗證),您需要運行指向目錄的符號鏈接

root@ac11x017:/var/tmp$ ls -lal dumpdir
lrwxrwxrwx   1 root     root          16 Jun 15 09:08 dumpdir -> /data/dumpdir/
root@ac11x017:/var/tmp$ chown -RP oracle:oinstall dumpdir
lrwxrwxrwx   1 oracle   oinstall      16 Jun 15 09:09 dumpdir -> /data/dumpdir/

1
2017-08-11 05:24