如何在没有 sudo 的情况下执行“iftop”

Eri*_*ric 4 unix linux sudoers

我有一个iftop在文本模式下运行的脚本,将输出减少到我所关心的内容,并将其与命令的输出一起保存到文本文件中date(我正在监视一段时间内各种接口上的网络使用情况)。我遇到的唯一问题是我尝试通过 crontab 每 15 分钟运行一次脚本,并且为了运行该iftop命令,我需要 sudo 权限。有谁知道一些方法来更改权限,iftop这样我就不需要 sudo 权限?

或者,如果我可以让脚本能够使用 sudo 运行命令,那对我来说也很好。我尝试通过添加脚本到 sudoers 文件sudo visudo并添加以下行:

user ALL=(ALL) NOPASSWD: /home/user/network_usage.sh

但这不起作用...也许是从 crontab 执行的结果?

谢谢,

-埃里克

Ste*_*nds 7

更细粒度的方法是使用:

# setcap cap_net_raw=eip $(which iftop)
Run Code Online (Sandbox Code Playgroud)

这允许 iftop 捕获数据包,但不会授予该进程完整的 root 权限。如果出现安全问题或“iftop”错误,其副作用将更加有限。

相关: https: //unix.stackexchange.com/questions/189750/how-can-i-run-script-without-root-to-sniff-network-libpcap

  • 这是在任何最近的 Linux 发行版中执行此操作的正确方法。使用“setcap”可以让您允许“iftop”所需的最小权限集,而不是使用“chmod +s”,后者相当于将厨房水槽扔到问题上。这无疑是安全 POV 的最佳实践。 (2认同)