我有ubuntu 8.04,我想写一个以root身份运行的bash脚本,每个用户都可以运行.
我自己可以做sudo.
我怎么做?
澄清:我不想用sudo做,因为用户必须输入密码.我只是希望他们以root身份运行脚本,也许是setuid,dunno.
如果这是一个普通的二进制文件,你可以通过运行来setuid
# chmod u+s /path/to/binary
不幸的是,脚本不能setuid. (嗯,你可以,但它被忽略了).原因是脚本的第一行告诉操作系统在哪个解释器下运行脚本.例如,如果您有一个脚本:
#!/bin/bash
你真的最终会跑步
/bin/bash /path/to/script
显然,你需要将解释器设置为setuid,这意味着所有脚本都是setuid.这会很糟糕.
您可以通过运行visudo将以下内容放在/ etc / sudoers文件中来执行此操作.
ALL ALL=NOPASSWD: /path/to/script
现在任何用户都可以运行
$sudo /path/to/script
这允许他们在不输入密码的情况下运行脚本.
在命令中有一个不需要sudo的替代方法,这需要创建一个执行脚本的小型setuided二进制文件,但是每个额外的setuid二进制文件都会增加另一个潜在的安全问题.