我将此规则添加到 crontab 的底部
* * * * * /root/test.sh
它基本上重置了 iptables,这样我就可以闲逛了。如果我搞砸了,我不会被锁在我的盒子外面。当我以 bash 编写运行脚本时,/root/test.sh
它会按预期清除所有内容。但是,如果我等一下,它似乎不会执行。
我运行了下面的命令,可以看到它似乎每分钟都在运行我的脚本,但我的脚本没有执行任何操作。
grep CRON /var/log/syslog
IIRC 强制脚本以所有者身份运行的方法是chmod a+s file
。所以我就这么做了。stat
显示这一行
Access: (6755/-rwsr-sr-x) Uid: ( 0/ root) Gid: ( 0/ root)
cron 不应该以 root 身份运行我的脚本吗?为什么它看起来没有执行?我正在运行 Debian 7(喘息)
答案1
您无法使用 SUID 权限运行脚本(而不是二进制文件)。您的脚本正在执行,但作为您的用户而不是 root,因此它的iptables
调用不起作用。
来自 cron 作业的错误消息将发送到本地电子邮件。确保本地电子邮件配置正确(某些发行版默认情况下不这样做)。
简单的解决方案(因为您具有 root 访问权限)是在 root 用户的 crontab 中安装该脚本,或者使用/etc/crontab
以下行:
* * * * * root /root/test.sh