我有一个脚本,在文本模式下运行iftop
,减less输出到我所关心的,并将其与date
命令的输出保存到一个文本文件(我正在监视不同接口上的networking使用率随着时间的推移) 。 唯一的问题是我试图通过crontab每15分钟运行我的脚本,并且为了运行iftop
命令我需要sudo权限。 有没有人知道一些方法来改变iftop
的权限,所以我不需要sudo权限?
另外,如果我能赋予脚本以sudo运行这个命令的能力,我也可以。 我尝试通过sudo visudo
将脚本添加到sudoers文件中,然后添加以下行:
user ALL=(ALL) NOPASSWD: /home/user/network_usage.sh
但没有工作…也许是从crontab执行的结果?
谢谢,
-Eric
您可以使用root的crontab来运行脚本。 如果不使用sudo crontab -e
,则使用sudo crontab -e
编辑root的crontab。 该文件中指定的任务将在根用户的帐户和权限下运行。
或者,您可以为您的脚本文件设置setuid访问标志。 要这样做,首先将文件的所有者更改为root,然后启用setuid,如下所示:
sudo chown root /home/user/network_usage.sh sudo chmod +sw /home/user/network_usage.sh
setuid位使可执行文件以其所有者的有效UID运行。
不管你采取什么方法,要非常小心 。
如果您在机器上拥有root权限,那么快速和肮脏的方式:
chmod +s $(which iftop)
无论谁调用它,这将使它以root权限运行。 但我仍然认为你的sudo 应该工作。