如何设置特定用户可以运行 redhat中的某些root命令

How to set specific user can run certain root command in redhat

我想请求特定用户在 redhat 中使用某些 root 命令?

我的服务器 运行 redhat OS 7.6。我不知道如何设置可以从 root 运行 某些命令的用户。

假设我有一个用户 ID 名称 MY_CIT,因此 MY_CIT 可以 运行 某些命令,例如创建打印队列 #lpadmin -p printer -v socket://打印机:9100 -E

所以MY_CIT不需要root权限来触发命令。

有人有这方面的经验吗?请帮助。谢谢

您将能够使用文件 ACL。作为测试,我从 nano 命令中删除了执行权限,只是为了展示它是如何工作的。

您不需要执行此操作,但是,您将需要对计算机的根权限。根据您的要求使用 'lpadmin' 而不是 nano

[root@server bin]# chmod o-x /bin/nano 
[root@server bin]# ls -lah /bin/nano
-rwxr-xr-- 1 root root 202K Jun 10  2014 nano

为了测试,我们切换到 user1 并尝试使用 nano 编辑文件:

[user1@server ~]$ nano file1
-bash: /bin/nano: Permission denied

现在,我们再次以 root 身份向 nano 程序添加一个 ACL。这只允许 user1 执行程序。

[root@server bin]# setfacl -m u:user1:x /bin/nano

使用 getfacl 显示 ACL:

[root@server bin]# getfacl /bin/nano
getfacl: Removing leading '/' from absolute path names
# file: bin/nano
# owner: root
# group: root
user::rwx
user:user1:--x            <<-- Note this
group::r-x
mask::r-x
other::r--

作为 user1,我们可以使用 nano 程序,但不能作为 user2:

[user1@server ~]$ nano file1
[user1@server ~]$ ls
file1
[user1@server ~]$ exit
logout
[root@server bin]# su - user2

[user2@server ~]$ nano file1
-bash: /bin/nano: Permission denied

ACL 允许管理员将权限扩展到 user/group/other 以上。您可以为系统上的特定用户设置权限。

运行 具有 root 权限的命令:

sudo visudo

打开文件 /etc/sudoers 进行编辑。
在文件末尾添加这一行(并在保留一个空行之后):

MY_CIT ALL = NOPASSWD: /usr/sbin/lpadmin

其中:

MY_CIT - 您的用户名
/usr/sbin/lpadmin - 可执行文件的路径。请注意,在您的发行版路径中可能会有所不同。您可以使用命令 whereis lpadmin.

进行检查

在用户可以 运行 命令 lpadmin 后,参数为 sudo 而无需密码:

sudo lpadmin ...