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

$ chown -h myuser:mygroup mysymbolic/ 


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

评论

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

您正在使用NFS挂载吗?

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

#1 楼

我在目标的末尾加了一个斜杠:

chown -h myuser:mygroup mysymbolic/ 


最后才删除了斜杠就可以了。这是正确的方法:

 chown -h myuser:mygroup mysymbolic


评论


在ubuntu上对我不起作用

–拉德克
2010-09-25的1:07

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

–定义
2011年4月19日在11:36

@Radek只要我记得-h标志,它就可以在Ubuntu上工作。

–IQAndreas
2013年6月11日15:04

在我的Ubuntu上使用-h且没有斜杠可以使用。

–friederbluemle
2014年2月12日在2:44

我不敢相信四年后,我遇到了同样的问题,错过了我的“ -h”!

– Antony D'Andrea
15年7月13日在9:49

#2 楼

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

但是,它似乎并不起作用。链接链接到目录

评论


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

–Matijs
2014年7月13日在22:50



#3 楼

即使使用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/


#4 楼

目标是文件还是目录?

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

评论


目标是目录

– rizidoro
2009年11月9日13:09

查看我关于目录的编辑回复

–迈克尔
2009年11月9日13:13

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

–user40379
2010年6月18日在14:07

#5 楼



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


就足够了,可以工作!


#6 楼

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

例如:
(作为myuser),ln -s somedir/ linkname
(将被破坏如果用户目录中不存在somedir /则链接)

然后,sudo mv linkname targetlocation(如果存在targetlocation/somedir/,它将变为有效链接)

评论


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

–詹姆斯·默兹(James Mertz)
2012年7月13日在4:20

#7 楼

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

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

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

#8 楼

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

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

#9 楼

对于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/


#10 楼

在我运行之前,这对我来说一直是相同的:
chown -R user:group file.so >>

它起作用了,尽管我不确定-R是否用于目录。

评论


如果对这样的符号链接进行了修饰,则实际上会影响引用的文件。如果要更改符号链接本身,则需要使用-h或–no-dereference

– Layne Bernardo
8月15日在1:15