不管谁执行脚本,如何使脚本以root用户身份执行?
我读过有关setuid的文章,但不确定如何执行此操作。
我正在使用Linux,Ubuntu 12.04 LTS。
务必小心:脚本与setuid结合使用很危险!
如果仍要使用setuid
set执行脚本,则可以编写一个简短的C程序作为包装器,并setuid
在已编译的二进制文件上设置该位。
包装器示例:
int main(void) {
setuid(0);
clearenv();
system("/absolute/path/to/your/script.sh");
}
使用的另一种解决方案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
这类似于使用上面的wrapper / setuid解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句