我有两个指向同一目标目录的符号链接。ls
显示其中一个(坏的)属于 1001 用户,另一个属于 root。除 1001 之外的任何用户(甚至是 root)都可以使用好的符号链接列出目录,但不能使用坏的符号链接。1001 用户可以使用其中任何一个,并且它们都可以工作。
# ls -ldn /opt
lrwxrwxrwx 1 0 0 12 Sep 27 12:54 good -> dir
lrwxrwxrwx 1 1001 100 12 Nov 7 2016 bad -> dir
drwxrwxr-x 9 1001 100 11 Jun 3 2016 dir
...
# id
uid=0(root) gid=0(root) groups=0(root)
# ls /opt/good
(directory entries...)
# ls /opt/bad
ls: cannot access /opt/bad: Permission denied
可能是什么原因造成的?我的印象是符号链接自身的权限在 Linux 上并不重要。我如何解决它?如何找到存在此问题的所有符号链接?
我使用的是带有内核 4.4.76 和 ZFS 0.6.5.9 的 Debian Linux 系统。这是内核和/或 ZFS 中的错误吗?是否是 ZFS 中留下的一些失效的 Solaris 代码读取了符号链接自身的权限?
答案1
Solaris 不关心符号链接权限,所以我怀疑 ZFS 代码可能是罪魁祸首。
无论如何,您可以尝试以下解决方法:
chown -h 0:0 /opt/bad