Jak zapewnić nopasswd dostęp do wielu poleceń za pośrednictwem sudoers?

45

Poniżej jest to, co wiem:

Muszę dodać ten wiersz poniżej w sudoerspliku, aby dać użytkownikowi uprawnienia do określonego zadania.

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

W takim przypadku chcę umożliwić dostęp do tego użytkownika, aby zrestartować 2 usługi (tj. ApacheI MySQL) ze wszystkimi prawami do instalacji.

Korzystając z powyższej linii, dałem mu wszystkie prawa do instalacji, czy teraz muszę dodać tę samą linię jeszcze dwa razy, aby nadać prawa do usług? Czy mogę po prostu dodać te polecenia w tym samym wierszu, oddzielając je przecinkami?

Hrish
źródło

Odpowiedzi:

48

Rozwiązałem problem, tworząc nową grupę z ograniczonymi prawami administratora ... nazwa tej grupy jest LimitedAdminspóźniej zaktualizowałem sudoersplik, jak poniżej.

Linia, którą załączyłam to:

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

To jest kompletny /etc/sudoersplik:

# 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

Działa idealnie dobrze, jeśli twój system jest domeną, czy nie.

Rishee
źródło
Nie powinieneś umieszczać rzeczy po #includedirlinii, prawda?
hamstar
@hamstar Hej Cześć! Tak, masz rację, korzystam z tego pliku konfiguracyjnego w mojej firmie od ponad 2 lat i działa on doskonale. Nawet ty poleciłbym również, aby umieścić dwie ostatnie linijki wcześniej #includedir.
Hrish
3
Lub lepiej, umieść te dwie linie w nowym pliku pod /etc/sudoers.d zamiast edytować / etc / sudoers.
tgharold
@tgharold Tak kolego !! Masz rację ... to naprawdę lepsza opcja niż to, co zasugerowałem ... :) Doceń swój pomysł, który spróbuję wdrożyć również u mnie.
Hrish
Czy #includedir jest komentarzem? Czy może dołączanie odbywa się automatycznie, a komentarz przypomina nam o tym?
HeatfanJohn
12

Wygląda na to, że potrzebujesz przecinka.

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

Źródło

Karthik T.
źródło
Dałem prawa tak, jak wspomniałeś, ale otrzymałem komunikat o błędzie, jak poniżej. <br/> E: Nie można otworzyć pliku blokady / var / lib / dpkg / lock - open (13: Odmowa uprawnień) <br/> E: Nie można zablokować katalogu administracyjnego (/ var / lib / dpkg /), są wykorzeniłeś? ... czy ktoś może w tym pomóc?
Hrish
@Rishee Spróbuję, kiedy wrócę do domu
Karthik T
mój plik sudores zawiera niżej wymienione rzeczy.
Hrish
# Specyfikacja uprawnień użytkownika root ALL = (ALL: ALL) ALL # Członkowie grupy administracyjnej mogą uzyskać uprawnienia root% admin ALL = (ALL) ALL # Zezwól członkom sudo grupy na wykonanie dowolnej komendy% 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 restart
Hrish
2

Skończyło się to (podobne do tego, czego szukasz):

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

Wewnątrz: /etc/sudoers.d/666-prtg

(666, ponieważ ... no cóż ... prtg JEST znanym narzędziem do monitorowania systemu Windows)

Mark Maas
źródło