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


45

以下是我所知道的:

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

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

在这种情况下,我想授予该用户访问权限以重新启动具有所有安装权限的2个服务(即ApacheMySQL)。

使用上面的行,我已经给了他所有安装权,现在我是否必须再添加两次同一行才能授予服务权?还是可以仅将这些命令添加在同一行中,并用逗号或其他东西隔开?

Answers:


48

我已经通过为受限的管理员权限创建新的组来解决了该问题。该组的名称是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

如果您的系统是否为域,它可以很好地工作。


你不应该在#includedir排队之后放东西吗?
hamstar

@hamstar嗨,嗨!是的,您说得对,您现在已经在公司使用此配置文件超过2年了,并且运行良好。甚至您也建议将最后两行放在前面#includedir
2013年

3
或者,最好将这两行放入/etc/sudoers.d下的新文件中,而不是编辑/ etc / sudoers。
tgharold

@tgharold是的,哥们!您是对的...这确实是一个比我建议的方案更好的选择... :)赞赏您的想法也将尝试在我的地方实现。
赫里斯(Hrish)2013年

#includedir是评论吗?还是包含会自动发生,而评论只是提醒我们这一点?
HeatfanJohn

12

看起来逗号是您所需要的。

Cmnd_Alias PRINTING = / usr / sbin / lpc,/ usr / bin / lprm
...
user3 ALL =打印

资源


我已经按照您提到的方式授予了权利,但是出现了以下错误消息。<br/> E:无法打开锁定文件/ var / lib / dpkg / lock-打开(13:权限被拒绝)<br/> E:无法锁定管理目录(/ var / lib / dpkg /),你生根?...任何人都可以帮忙吗?
2013年

@Rishee我一回到家就会尝试
Karthik T

我的sudores文件包含以下提到的内容。
2013年

#用户特权规范root ALL =(ALL:ALL)ALL#admin组的成员可以获取root特权%admin ALL =(ALL)ALL#允许sudo组的成员执行任何命令%sudo ALL =(ALL:ALL) ALL #includedir /etc/sudoers.d $ sudo nano / etc / sudoers%Domain_Name \\ administrators ALL =(ALL)ALL%Domain_Name \\ user.name ALL = NOPASSWD:/ usr / bin / apt-get install,/ etc /init.d/apache2重新启动
2013年

2

我最终要做的是(类似于您要寻找的):

## 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的监视工具)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.