当 cd 到 /tmp 中的符号链接目录(值为 700 并且由普通用户拥有)时,权限被拒绝

当 cd 到 /tmp 中的符号链接目录(值为 700 并且由普通用户拥有)时,权限被拒绝

问题:

当我能够切换到目录本身时,为什么我无法 cd 进入具有 700 权限、由普通用户(作为 root)拥有的符号链接目录?

例子:

ttucker@plato:/tmp# uname -a
Linux plato 4.4.0-140-generic #166~14.04.1-Ubuntu SMP Sat Nov 17 01:52:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

ttucker@plato:/tmp$ whoami
ttucker
ttucker@plato:/tmp$ mkdir -v test_dir
mkdir: created directory ‘test_dir’
ttucker@plato:/tmp$ chmod -v 700 test_dir
mode of ‘test_dir’ changed from 0775 (rwxrwxr-x) to 0700 (rwx------)
ttucker@plato:/tmp$ ln -s -v test_dir/ test_sym
‘test_sym’ -> ‘test_dir/’
ttucker@plato:/tmp$ ls -ld test_*
drwx------ 2 ttucker ttucker 4096 Mar 21 10:29 test_dir
lrwxrwxrwx 1 ttucker ttucker    9 Mar 21 10:29 test_sym -> test_dir/

ttucker@plato:/tmp$ sudo su -
root@plato:~# whoami
root
root@plato:~# cd /tmp/test_sym/
-su: cd: /tmp/test_sym/: Permission denied
root@plato:~# cd /tmp/test_dir/
root@plato:/tmp/test_dir# pwd
/tmp/test_dir

其他信息:

Redhat 上也会出现这种情况。

答案1

我在这里找不到答案,所以我想将其放在这里供其他人使用。

回答:

这里的行为取决于 /proc/sys/fs/protected_symlinks 的设置

root@plato:/tmp# cat /proc/sys/fs/protected_symlinks 
1

也可以看看:

RedHat Bug 1034239 - root 无法遵循其他用户拥有的符号链接

https://bugzilla.redhat.com/show_bug.cgi?id=1034239

相关内容