【问题标题】:How to avoid the sudo word, for executing the higher privilged commands by a non-root user如何避免 sudo 词,以由非 root 用户执行更高权限的命令
【发布时间】:2016-06-24 04:11:56
【问题描述】:

在通过 sudo 策略对非 root 用户执行更高权限的命令时是否可以避免使用 sudo 字,这样非 root 用户不应该知道他正在执行更高权限的命令,并且 sudo 的使用可能变得复杂。

示例: sudo 命令正常执行。

$ sudo -u root /usr/bin/tcpdump

非 root 用户应执行 tcpdump,如下所示。

$ tcpdump

提前致谢。

注意:我为非 root 用户定义了一个 Sudo 策略。因此,当非 root 用户执行 tcpdump 时,它应该在后端执行为 sudo -u root tcpdump。

【问题讨论】:

  • 你可以定义一个alias tcpdump='sudo tcpdump'
  • 你的意思是添加非root用户bash配置文件的别名吗?
  • 为什么这个问题被标记为perl
  • @dgw - 好问题。所以我删除了 Perl 标签。

标签: linux bash sudo sudoers


【解决方案1】:

是的。这是可能的。

你应该:

1- 创建一些用户所属的新的特定新组:

groupadd nonroot

2- 将您的特权用户添加到该组:

2.1- 编辑 /etc/group:

vim /etc/group

2.2- 查找新创建组的行。它应该是这样的:

nonroot:x:127:

2.3- 最后,添加您的特权用户:

nonroot:x:127:user1,user2

3- 更改二进制文件的组:

chgrp nonroot /usr/bin/tcpdump

4- 授予二进制文件组执行权限:

chmod g+x /usr/bin/tcpdump

您必须考虑到,如果二进制文件读取、写入或执行 user1 没有权限的文件,您将以相同的方式修改它们。

如果无法更改二进制的组,请查看下面帖子的正确答案,方法类似:

Allow users of a certain group to run a command without sudo

希望对你有帮助。

注意:不同的 linux/unix 发行版之间的命令可能不同。

【讨论】:

  • 感谢 nicof 的回答,但这不是我要找的。​​span>
  • @sach - 如果您告诉我们为什么这不是您正在寻找的答案,它将大大提高您获得满意答案的机会。
  • @nicof,我将为少数用户定义 sudo 策略,以便用户有权执行策略中定义的命令。我需要一种方法来隐藏用户输入 sudo。因此,我正在寻找一种用户无需输入 sudo 用法即可执行命令的方式。
  • @sach - 我假设当您谈论 sudo 策略 时,您的意思是为某些用户配置 /etc/sudoers 文件。此文件允许对某些用户或其中的一组用户执行一些高级二进制文件,但之前始终键入 sudo,因为 sudoers 文件是该文件的配置。
  • 另外,据我所知,你不能省略使用“/etc/sudoers”配置中的 sudo 如果你阅读了我最后发布的链接,你有一个选项,包括创建一个脚本来隐藏 sudo 使用(正如 Henrik 在他的回答中所说)
【解决方案2】:

我至少可以看到两种可能性:

  1. 将其封装在脚本中(也可以使用别名,但如果用户可以使用不同的 shell 或手动启动它们,则可能会变成维护地狱)

  2. 在 tcpdump 上设置 suid 位,但这意味着可以调用 tcpdump 的每个人都始终以所有者身份这样做。

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    相关资源
    最近更新 更多