如何遍历另一个用户拥有的符号链接?
在我的 ubuntu 盒子上,我有一个符号链接:
root@anonymous:/var/tmp# ls -l
total 24
lrwxrwxrwx 1 lab lab 26 Dec 15 18:27 blank.zip -> /home/admin/important6.zip
以 root 身份访问它可获得:
root@anonymous:/var/tmp# more blank.zip
blank.zip: Permission denied
但是,如果我将所有权更改为 root:
root@anonymous:/var/tmp# chown -h root:root blank.zip ; more blank.zip
PK...
答案1
chown -h
/home/admin/important6.zip
更改的所有权。blank.zip
您已经blank.zip
以 root 身份拥有对符号链接的完全访问权限。
如果您查看important6.zip的权限,您无疑会明白为什么它不起作用。
答案2
这是由于该fs.protected_symlinks
功能而发生的。由于/var/tmp
是公共目录(世界可写且具有“粘性”位),因此存在有人可能创建符号链接的风险,例如/etc/passwd
,诱骗系统服务向其写入自定义数据。为了避免这种情况,只有当其所有者匹配时,才会跟踪位于“粘性”目录中的符号链接。
有关详细信息,请参阅以下文章:
答案3
我认为问题不在于符号链接的所有权,而在于/home/admin
目录的所有权。由于用户 lab 没有权限查看其他用户的主目录(除非以 chmod 方式),因此符号链接无法跟踪。
由于 root 可以查看任何人的主目录,因此将所有权更改为 root 可以解决您的问题。
您可以将 lab 添加到 admin 组并/home/admin
对其进行chmod 770
(或740
仅允许组成员读取)。通常主目录是 chmod 的700
。出于安全目的,不建议增加所有其他目录的权限(最后 3 位)。