【发布时间】:2021-12-10 08:58:06
【问题描述】:
假设如下目录结构:
-rwxr-xr-x 1 root root script
-rw-r--r-- 1 root root owned_by_root
还假设script 是一个简单的shell 脚本,内容如下:
#!/usr/bin/bash
echo "Appending $2 to $1..."
echo -n "$2" >> $1
而owned_by_root 是一个空文件。
由于owned_by_root 显然归root 用户所有,并且写入标志仅为拥有用户设置,因此在非root 帐户下执行以下操作显然会失败:
user@machine
$ ./script ./owned_by_root "Hi"
现在,如果我设置 script 文件的 SUID 位,如下所示:
sudo chmod u+s ./script
(导致script 的权限位为-rwsr-xr-x),令我惊讶的是,
user@machine
$ ./script ./owned_by_root "Hi"
仍然失败,./script: line 4: owned_by_root: Permission denied。
我的印象是,在脚本可执行文件上设置 SUID 位会导致任何第 3 方用户帐户能够附加到 ./owned_by_root。
SUID 通常由/etc/passwd//usr/bin/passwd 动态解释,其权限位分别与owned_by_root 和script 的权限位匹配。一定有我遗漏/误解的东西。
【问题讨论】:
标签: linux permissions file-permissions chmod