Это не относится к привилегиям.
which
ищет команду в $PATH
. cron
Сценарии имеют ограниченный путь, который не включает iptables
, поэтому он не найден.
$ /usr/bin/which iptables
/sbin/iptables
$ PATH=/bin:/usr/bin /usr/bin/which iptables
$ echo $?
1
Если у вас ограниченный путь, он вернет пустую строку (на моем другом компьютере он сообщает, что никаких iptables в (/ usr / bin: / bin) нет, поэтому YMMV) и завершается с ненулевым кодом.
если вы сделаете что-то вроде echo $PATH >> /root/test.log
, вы увидите, что cron
имеет путь с просто /usr/bin
и /bin
Вы должны либо установить $PATH
, чтобы содержать iptables
или используйте полный путь при вызове iptables