chown不会更改符号链接


312

我正在尝试使用以下命令更改符号链接的用户/组:

$ chown -h myuser:mygroup mysymbolic/ 

但这并没有改变。我以root用户身份登录。当前用户/组设置为root:root。什么地方出了错?


您使用哪种操作系统?根据manaul页,-h选项仅在可以更改符号链接所有权的系统上起作用。
吉超

您是否正在使用NFS挂载?
Ortomala Lokni

以。结尾的/都是目录。您的意思是mysymbolic,它是符号链接,而不可能mysymbolic/是它指向的目录。
David Schwartz

Answers:


381

我在目标的末尾放了一个斜线:

chown -h myuser:mygroup mysymbolic/ 

最终删除了斜线即可使用。这是正确的方法:

 chown -h myuser:mygroup mysymbolic

9
在ubuntu上对我不起作用
Radek

2
哇,这花了我几个小时才找到。
定义

54
@Radek只要我记得这个-h标志,它就可以在Ubuntu上为我工作。
IQAndreas 2013年

29
为我工作在Ubuntu -h拖尾的斜杠。
Friederbluemle 2014年

8
我不敢相信四年后,我遇到了同样的问题,错过了我的“ -h”!
安东尼·安德里亚

29

我自己尝试过,对我有用。如果具有-h,它将更改符号链接的所有者,但是如果没有,则它将更改文件本身而不是链接的所有者。

但它似乎不起作用的符号链接链接到目录


2
值得一提的是,OS X上的手册页在-h选项上比(Arch)Linux上的手册页清晰得多。“ -h如果文件是符号链接,则更改链接本身的用户ID和/或组ID。”与“ -h,--no-dereference会影响符号链接,而不是任何引用的文件(仅对系统,可以更改符号链接的所有权)”
Matijs 2014年

6

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

目标是文件还是目录?

如果是目录,请尝试-H(大写H)


目标是目录

请参阅我关于目录的编辑回复

6
对线程坏死很抱歉,但是我想指出正确的语法是小写字母“ h”。

4

只是。

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

应该足够工作了!  


3

由myuser在myuser的家中重新创建该链接,并通过sudo将其链接到目标位置。

例如:(作为myuser),ln -s somedir/ linkname (如果用户目录中不存在somedir / ,它将是一个断开的链接)

然后,sudo mv linkname targetlocation(将成为提供的有效链接targetlocation/somedir/存在)


您的答案没有细节,很难完全理解。请考虑修改您的答案以提供更多详细信息。
詹姆斯·默茨

1

我有一个类似的问题。对我来说,无论我怎么称呼chmod,我都不能以root身份将符号链接更改为chmod。更令人困惑的是,鹦鹉螺将所有者/组显示为空。主人只是一片空白。因此,我尝试使用以root用户身份运行的nautilus来更改符号链接,因为chmod无法正常工作并且nautilus崩溃了!

但是我想我已经解决了问题。符号链接指向的目录具有与符号链接不同的权限。因此,我将目标目录(使用-h)更改为我的用户/组名称。然后chmod'ed符号链接到相同,它的工作!现在,在nautilus中(具有root权限)查看符号链接的详细信息不再会崩溃。

因此,对于其他有类似问题的用户,请检查目标目录/文件的权限,并确保它与您将符号链接设置为的权限兼容。


1

请注意,owner仅当您要将目标分配给新用户访问目标时,更改符号链接的功能才有效。

例如,如果您的目标位于您要分配给其的用户的文件夹中,而该文件夹没有足够的权限,则该ln -s command行为将使其根本不执行任何操作。


1

对于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/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.