首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有sudo的情况下执行“iftop”

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

Stack Overflow用户
提问于 2016-03-17 00:17:36
回答 3查看 2.7K关注 0票数 4

我有一个脚本,它在文本模式下运行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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-17 00:38:57

您可以使用root的crontab来运行脚本。如果您使用的不是crontab -e,而是sudo crontab -e,那么您将编辑root的crontab。该文件中指定的任务将在root帐户和权限下运行。

或者,您可以为脚本文件设置setuid访问标志。为此,首先将文件的所有者更改为root,然后启用setuid,如下所示:

代码语言:javascript
复制
sudo chown root /home/user/network_usage.sh
sudo chmod +s-w /home/user/network_usage.sh

setuid位使可执行文件与其所有者的有效UID一起运行。

无论您采取什么方法,都要非常小心地使用

  • 让您的脚本由root拥有,不要让任何其他用户向它写入,否则它可能会减少权限提升。
  • 注意你的setuid程序的副作用。如果脚本具有setuid,并且可以创建或修改文件,则其他人可能会使用它来修改或创建他们不应该使用的文件。在给未编写的程序提供setuid之前,请始终检查手册。
票数 1
EN

Stack Overflow用户

发布于 2019-03-12 16:51:17

一种更细粒度的方法是使用:

代码语言:javascript
复制
# setcap cap_net_raw=eip $(which iftop)

这样,如果顶部捕获数据包,但不授予进程完全根权限。如果出现安全问题或错误与"iftop“,其副作用将是非常有限的。

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

票数 5
EN

Stack Overflow用户

发布于 2016-03-17 00:28:29

如果您可以以快速和肮脏的方式访问机器上的根用户:

代码语言:javascript
复制
chmod +s $(which iftop)

这将使它运行w/ root特权,而不管是谁调用它。但是我仍然认为像这样的sudo应该能工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36049437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档