Permiterea utilizatorilor non root să administreze serviciul systemd nu funcționează (Unix, Linux, Systemd, Sudo)

Parthasarathy Venugopal a intrebat.

Am vrut să permit anumitor utilizatori non root să pornească / oprească anumite servicii systemd în CentOS7. Dar nu a existat niciun noroc în pașii pe care i-am încercat până acum. Iată ce am încercat.

Am adăugat detaliile de mai jos în fișierul sudoers unde testsudo este un grup de utilizatori și câțiva utilizatori au fost adăugați la acest grup.

## Manage specific systemd services
Cmnd_Alias SYSTEMD = /bin/systemctl start httpd, /bin/systemctl stop httpd, /bin/systemctl restart httpd

## Allows nfam group to run init-system commands using the SYSTEMD command alias
%testsudo ALL=NOPASSWD: SYSTEMD

Detalii ale grupului și ale utilizatorilor adăugați:

# cat /etc/group | grep testsudo
testsudo:x:1009:userone,usertwo,userthree

Acum, dacă încerc să pornesc serviciul folosind oricare dintre utilizatori (care face parte din grupul testsudo), primesc un mesaj de autentificare necesară.

[[email protected] ~]$ systemctl start httpd
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Multiple identities can be used for authentication:
 1.  admin
 2.  priya
 3.  sekar
 4.  gokul
 5.  ravi
 6.  murali
Choose identity to authenticate as (1-6):

Update1:

De asemenea, am folosit sudo în fața comenzii, dar nici așa nu funcționează.

$ sudo systemctl start httpd
[sudo] password for userone:
Sorry, user userone is not allowed to execute '/bin/systemctl start httpd' as root on webapp.

Update2:

  • Doar o corecție, serverul poate fi accesat doar prin chei SSH și nu prin parolă. Va fi asta o problemă?

Comentarii

  • Ați editat sudoers, dar nu ați invocat sudo; vrei să folosești sudoers? –  > Por Jeff Schaller.
  • @JeffSchaller, există o altă abordare alternativă fără a utiliza sudoers? –  > Por Parthasarathy Venugopal.
  • Este testsudo un membru al grupului sudo? Dacă nu, atunci nu va funcționa așa cum a fost tipărit. Pentru că userone poate fi în testsudo, dar dacă testsudo nu este în sudo, rezultatul este același. –  > Por Michael Prokopec.
  • Am testat configurația dvs. pe un server Debian și funcționează. Vă sugerez să verificați de două ori sintaxa comenzilor pe care le-ați introdus în sudoers (ați folosit visudo pentru a face acest lucru ?). Verificați dacă spațiile sunt spații (și nu alt-space de ex.), eventual rescrieți-l de la zero. –  > Por lauhub.
  • Ar fi interesant să vedeți rezultatul de la sudo -l ca userone pe acel sistem. Accesul prin intermediul tastelor nu este o problemă, deoarece se pare că știi parola pentru utilizatorul userone. –  > Por Jeff Schaller.
2 răspunsuri
lauhub

Vă sugerez să încercați acest lucru:

sudo systemctl start httpd

Trebuie să vă deconectați, apoi să vă conectați din nou după ce ați modificat fișierul sudoers (este posibil să nu puteți utiliza sudo până când faceți acest lucru).

De asemenea, puteți edita și înlocui următoarele:

%testsudo ALL=NOPASSWD: SYSTEMD

cu

%testsudo ALL=(root) NOPASSWD: SYSTEMD

Comentarii

  • Am încercat să adaug sudo, dar nu ajută. Am actualizat întrebarea. –  > Por Parthasarathy Venugopal.
  • V-ați deconectat din userone apoi te-ai logat din nou? –  > Por lauhub.
  • Da, m-am deconectat și m-am conectat din nou. –  > Por Parthasarathy Venugopal.
  • %testsudo ALL=(root) NOPASSWD: SYSTEMD tradus în engleză: Membrii grupului „testsudo” de pe TOATE gazdele care folosesc acest fișier sudoers au voie să execute ca root, fără a li se cere o parolă, orice comandă definită anterior pe o CmndAlias SYSTEMD linie. –  > Por telcoM.
  • Semnul procentual înaintea cuvântului testsudo înseamnă că este un grup nu un utilizator. Iar posterul original spune că utilizatorii care trebuie să ruleze comenzile au fost deja adăugați în grupul testsudo grup. –  > Por telcoM.
ctrl-alt-delor

Dacă se utilizează sudoers, atunci trebuie să utilizați sudo dar puteți ascunde utilizarea acestuia într-un script sau alias.

Mă întreb dacă problema este că utilizatorii dvs. nu sunt încă în grup. Adăugarea unui utilizator la un nou grup, scrie doar într-un fișier (/etc/groups). Pentru a-l activa, trebuie să porniți un nou proces, cu noul grup. Există două modalități simple de a face acest lucru: 1 deconectați-vă și intrați din nou; rulați newgrp groupname. Acest lucru va porni un nou shell peste cel actual. Acesta va fi adăugat la noul grup, dacă și numai dacă sunteți membru al grupului (în conformitate cu fișierul /etc/groups).