问题:
当我能够切换到目录本身时,为什么我无法 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 无法遵循其他用户拥有的符号链接