如何通过 sudoers 授予 nopasswd 访问多个命令的权限?

如何通过 sudoers 授予 nopasswd 访问多个命令的权限?

以下是我所知道的:

我必须在sudoers文件中添加下面这一行,以授予用户执行特定任务的权限。

user_name ALL=NOPASSWD: /usr/bin/apt-get install

在这种情况下,我想授予该用户访问权限,以使用所有安装权限重新启动 2 项服务(即Apache和)。MySQL

使用上面的行,我已授予他所有安装权限,现在我是否必须再添加两次相同的行来授予服务权限?或者我可以在同一行中添加这些命令,用逗号或其他东西分隔吗?

答案1

我已经通过创建一个具有有限管理权限的新组解决了该问题...该组的名称是LimitedAdmins之后我更新了sudoers以下文件。

我附加的行是:

%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/apache2 restart

这是完整的/etc/sudoers文件:

# This file MUST be edited with the 'visudo' command as root.    
#   
# Please consider adding local content in /etc/sudoers.d/ instead of directly modifying   his file.   
#   
# See the man page for details on how to write a sudoers file.  
# 
Defaults    env_reset

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL  

#includedir /etc/sudoers.d
%domain_name\\administrators ALL=(ALL) ALL
%LimitedAdmins ALL=NOPASSWD: /usr/bin/apt-get*, /etc/init.d/apache2 restart

无论您的系统是否属于域,它都可以正常工作。

答案2

看起来逗号就是你所需要的。

Cmnd_Alias 打印 = /usr/sbin/lpc, /usr/bin/lprm
...
user3 全部= 打印

来源

答案3

顺便说一句,我和楼主有同样的想法,而且看起来你也可以直接复制这些行,例如

user_name ALL=NOPASSWD: cmd1
user_name ALL=NOPASSWD: cmd2
user_name ALL=NOPASSWD: cmd3

答案4

我最终做的是(与您正在寻找的类似):

## PRTG monitoring
Cmnd_Alias PRTG = /bin/cat /proc/loadavg, /bin/df, /var/prtg/scripts/check_proc.sh
prtg ALL = NOPASSWD: PRTG

里面:/etc/sudoers.d/666-prtg

(666,因为...嗯...你知道 prtg 是一个基于 Windows 的监控工具)

相关内容