nug*_*ets 4 setuid permissions
我有一个世界可写的 (s|g)uid 文件:
ls -lh suid_bin.sh
-rwsr-srwx 1 root root 168 mai 23 16:46 suid_bin.sh
Run Code Online (Sandbox Code Playgroud)
使用非 root 用户帐户登录。我使用 vi(或其他编辑器)来修改“suid_bin.sh”。保存新内容后,(s|g)uid 位未设置:
ls -lh suid_bin.sh
-rwxr-xrwx 1 root root 168 mai 23 16:46 suid_bin.sh
Run Code Online (Sandbox Code Playgroud)
为什么?有没有办法在修改后保留 (s|g)uid 位?
小智 8
Unix 权限允许写入文件,如果不小心有人在 setuid 文件上设置了组或世界可写位,但不允许陌生人更改此类文件的所有者和组 ID。
所以修改后内核从文件中删除 setuid/setgid 位,以确保没有恶意代码被写入文件。
root 用户当然可以恢复 setuid 位,但是普通用户,如果他因为某人的错误而获得了对特权可执行文件的写访问权限,将无法利用它。
而且,知道该领域的内核部分,我不确定您可以在不编辑内核源代码并重新编译的情况下禁用它。
请注意,Linux 中的 setuid 脚本在执行后不会获得 setuid 状态,因为实际上内核启动脚本解释器,没有 setuid 状态,将脚本的完整路径作为最后解析的参数,然后解释器将脚本作为普通文件读取。但这在其他 Unix 系统上可能会有所不同。
| 归档时间: |
|
| 查看次数: |
1750 次 |
| 最近记录: |