我有一个脚本,它在文本模式下运行iftop,将输出减少到我所关心的内容,并将其与date命令的输出一起保存到文本文件中(随着时间的推移,我将监视各种接口上的网络使用情况)。唯一的问题是,我试图通过crontab每15分钟运行一次脚本,为了运行iftop命令,我需要sudo权限。是否有人知道如何更改iftop的权限以使我不需要sudo权限?
或者,如果我可以赋予脚本使用sudo运行命令的能力,我也可以这样做。我尝试通过sudo visudo将脚本添加到sudoers文件并添加行:
user ALL=(ALL) NOPASSWD: /home/user/network_usage.sh
但这不是work...perhaps从crontab执行的结果吗?
谢谢,
-Eric
发布于 2016-03-17 00:38:57
您可以使用root的crontab来运行脚本。如果您使用的不是crontab -e,而是sudo crontab -e,那么您将编辑root的crontab。该文件中指定的任务将在root帐户和权限下运行。
或者,您可以为脚本文件设置setuid访问标志。为此,首先将文件的所有者更改为root,然后启用setuid,如下所示:
sudo chown root /home/user/network_usage.sh
sudo chmod +s-w /home/user/network_usage.shsetuid位使可执行文件与其所有者的有效UID一起运行。
无论您采取什么方法,都要非常小心地使用。
发布于 2019-03-12 16:51:17
一种更细粒度的方法是使用:
# setcap cap_net_raw=eip $(which iftop)这样,如果顶部捕获数据包,但不授予进程完全根权限。如果出现安全问题或错误与"iftop“,其副作用将是非常有限的。
发布于 2016-03-17 00:28:29
如果您可以以快速和肮脏的方式访问机器上的根用户:
chmod +s $(which iftop)这将使它运行w/ root特权,而不管是谁调用它。但是我仍然认为像这样的sudo应该能工作。
https://stackoverflow.com/questions/36049437
复制相似问题