Zablokuj polecenie użytkownika sudo

10

Nie potrzebuję administratora, aby zmienić hasło roota. Nie chcę, aby jakikolwiek użytkownik sudo wykonał to polecenie:

sudo passwd $root

Próbowałem tego w pliku sudoers za pomocą następującego polecenia:

%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root

Jak mogę to zablokować?

Magesh Arumugam
źródło
Czy masz na myśli, że masz więcej niż jednego użytkownika z funkcją sudo w swoim systemie? Albo coś innego? Proszę edytować pytanie przedstawić żadnych nowych informacji.
edwin

Odpowiedzi:

15

Zgodnie z instrukcją sudoers :

   It is generally not effective to "subtract" commands from ALL using the
   ’!’ operator.  A user can trivially circumvent this by copying the
   desired command to a different name and then executing that.  For
   example:

       bill        ALL = ALL, !SU, !SHELLS

   Doesn’t really prevent bill from running the commands listed in SU or
   SHELLS since he can simply copy those commands to a different name, or
   use a shell escape from an editor or other program.  Therefore, these
   kind of restrictions should be considered advisory at best (and
   reinforced by policy).

To dlatego twoje zasady sudoers nie działają.

Jeśli chcesz uniemożliwić użytkownikowi uzyskanie uprawnień roota i zmianę hasła, spróbuj wykonać następującą procedurę:

  • Zakładając, że twoi sudoers zawiera tę dyrektywę:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • Zakładając, że Twoja nazwa użytkownika to foo, jego grupy to fooi sudo. groupsdane wyjściowe polecenia to:

    foo sudo
    
  • Usuń użytkownika fooz sudogrupy: gpasswd -d foo sudopo tym użytkownik foonie może uruchomić żadnego polecenia z sudo.

  • Edytuj plik sudoers. Użyj tego polecenia:

    sudo visudo -f /etc/sudoers.d/foo
    
  • Zdefiniuj foouprawnienia użytkownika , na przykład:

    foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
    

    Oznacza to, że użytkownik foomoże uruchamiać dowolne polecenia w katalogu /usr/bin/oprócz passwdi su. Uwaga: jeśli użytkownik foochce zmienić hasło, może uruchomić passwdpolecenie bez sudo.

  • Kolejny przykład foouprawnień użytkownika :

    foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    

    Oznacza to, że użytkownik foomoże uruchamiać dowolne polecenia w katalogu /usr/bin/i może zmieniać hasło każdego użytkownika oprócz root na WSZYSTKICH komputerach.

Możesz zdefiniować grupy poleceń, definiując Cmnd_Aliasesi tworząc „poziomy uprawnień”. Przydatne przykłady można znaleźć w sekcji PRZYKŁAD podręcznika sudoers , a tutaj znajduje się przydatny link na temat korzystania z sudoers.

Lety
źródło
Musiałem foo ALL=/usr/bin/*, !/usr/bin/passwdwiedzieć, dlaczego tak jest?
clurect
-1

dodaj alias polecenia poprzez visudo:

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

dodaj ograniczenia poprzez visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

dodaj użytkownika do grupy o nazwie nopasswdgroup:

usermod -aG nopasswdgroup nopasswduser
shcherbak
źródło