spe*_*akr 30
真的要小心:脚本结合 setuid 是危险的!
如果您仍然想使用setuidset执行脚本,那么您可以编写一个简短的 C 程序作为包装器并setuid在编译后的二进制文件上设置位。
包装示例:
int main(void) {
setuid(0);
clearenv();
system("/absolute/path/to/your/script.sh");
}
Run Code Online (Sandbox Code Playgroud)
使用sudo(此处提到)的另一种解决方案:
以 root 身份,防止对脚本的写(也可能是其他)访问:
chown root /absolute/path/to/your/script.sh chmod 700 /absolute/path/to/your/script.sh
验证除了 root 之外没有人可以替换脚本,例如通过修改父文件夹的访问权限:
chown root /absolute/path/to/your/ chmod 755 /absolute/path/to/your/
在修改sudo的访问权限/etc/sudoers有visudo:
ALL ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
有关设置的更多详细信息(例如,限制对特定用户或组的访问)可以在 sudoers 联机帮助页中找到。
之后,所有用户都可以在没有密码的情况下以 root 身份运行脚本:
sudo /absolute/path/to/your/script.sh
Run Code Online (Sandbox Code Playgroud)
这类似于使用上面的包装器/setuid 解决方案。
| 归档时间: |
|
| 查看次数: |
73025 次 |
| 最近记录: |