Como conceder ao nopasswd acesso a vários comandos via sudoers?

45

Abaixo está o que eu sei:

Eu tenho que adicionar esta linha abaixo no sudoersarquivo para conceder direitos ao usuário para uma tarefa específica.

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

Nesse caso, quero dar acesso a esse usuário para reiniciar 2 serviços (ie Apachee MySQL) com todos os direitos de instalação.

Usando a linha acima, dei a ele todos os direitos de instalação, agora tenho que adicionar a mesma linha mais duas vezes para conceder os direitos pelos serviços? Ou posso apenas adicionar esses comandos na mesma linha, separados por vírgula ou algo assim?

Hrish
fonte

Respostas:

48

Resolvi o problema criando um novo grupo com direitos de administrador limitados ... o nome desse grupo foi LimitedAdminsdepois que atualizei o sudoersarquivo como abaixo.

A linha que eu anexei é:

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

Este é o /etc/sudoersarquivo completo :

# 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

Funciona perfeitamente bem, caso o seu sistema seja de domínio ou não.

Rishee
fonte
Você não deveria colocar coisas depois da #includedirlinha, não é?
Hamstar
@hamstar Hey Oi! Sim, você está certo, tu eu tenho usado esse arquivo de configuração na minha empresa há mais de 2 anos e funciona perfeitamente bem. Mesmo tu também recomendaria, para colocar as duas últimas linhas antes #includedir.
Hrish
3
Ou melhor, coloque essas duas linhas em um novo arquivo em /etc/sudoers.d em vez de editar / etc / sudoers.
tgharold 12/09
@tgharold Sim amigo !! Você está certo ... é realmente uma opção melhor do que sugeri ... :) Aprecie sua ideia que também tentará implementar em minha casa.
Hrish
#Includedir é um comentário? Ou a inclusão acontece automaticamente e o comentário apenas nos lembra disso?
HeatfanJohn
12

Parece que vírgula é o que você precisa.

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

Fonte

Karthik T
fonte
Eu dei direitos da maneira que você mencionou, mas recebi a mensagem de erro abaixo. <br/> E: Não foi possível abrir o arquivo de bloqueio / var / lib / dpkg / lock - open (13: Permissão negada) <br/> E: Não é possível bloquear o diretório de administração (/ var / lib / dpkg /). você torce? ... Alguém pode ajudar nisso?
Hrish
@Rishee vou tentar uma vez que eu chegar em casa
Karthik T
meu arquivo sudores contém as coisas mencionadas abaixo.
Hrish
# Especificação de privilégios de usuário root ALL = (ALL: ALL) ALL # Membros do grupo de administradores podem obter privilégios de root% admin ALL = (ALL) ALL # Permite que membros do grupo sudo executem qualquer comando% sudo ALL = (ALL: ALL) ALL #includedir /etc/sudoers.d $ sudo nano / etc / sudoers% Domain_Name \\ administradores ALL = (ALL) ALL% Domain_Name \\ user.name ALL = NOPASSWD: / usr / bin / apt-get install, / etc /init.d/apache2 restart
Hrish 23/01
2

O que acabei fazendo foi (semelhante ao que você está procurando):

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

Dentro: /etc/sudoers.d/666-prtg

(666, porque ... bem ... o prtg É uma ferramenta de monitoramento baseada em janelas que você conhece)

Mark Maas
fonte