/etc/sudoers
我已经这样进行了 visudo 编辑:
User_Alias APACHE = www-data
Cmnd_Alias FIREWALL = /sbin/iptables, /sbin/ifconfig, /sbin/route
APACHE ALL = (ALL) NOPASSWD: FIREWALL
(允许php运行iptables
cmd)。
有没有一种方法可以实现相同的效果,纯粹使用terminal/tty/cmdline AND/OR root外壳脚本?
答案1
当然。您可以将文件拖入其中,/etc/sudoers.d
而不是编辑 sudoers 文件本身:
cat > /etc/sudoers.d/apache <<EOF
User_Alias APACHE = www-data
Cmnd_Alias FIREWALL = /sbin/iptables, /sbin/ifconfig, /sbin/route
APACHE ALL = (ALL) NOPASSWD: FIREWALL
EOF
chmod 440 /etc/sudoers.d/apache
我想如果你遇到了一个非常旧的sudo
而不支持sudoers.d
目录的情况,你可以将其连接到/etc/sudoers
:
if ! grep -q APACHE /etc/sudoers; then
cat >> /etc/sudoers <<EOF
User_Alias APACHE = www-data
Cmnd_Alias FIREWALL = /sbin/iptables, /sbin/ifconfig, /sbin/route
APACHE ALL = (ALL) NOPASSWD: FIREWALL
EOF
fi
(if ! grep -q ...
如果脚本运行多次,则可以防止多次连接)