Blocca un comando dall'utente sudo


10

Non ho bisogno di un amministratore per cambiare la mia password di root. Non voglio che nessun utente sudo esegua questo comando:

sudo passwd $root

L'ho provato nel file sudoers usando il seguente comando:

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

Come posso bloccarlo?


Vuoi dire che hai più di un utente abilitato nel tuo sistema? O qualcos'altro? Si prega, modificare la domanda di fornire tutte le nuove informazioni.
edwin,

Risposte:


15

Secondo il manuale dei 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).

Ecco perché la tua politica sudoers non funziona.

Se desideri impedire all'utente di ottenere l'autorizzazione di root e modificare la sua password, prova questa procedura:

  • Supponendo che i tuoi sudoers contengano questa direttiva:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • Supponendo che il tuo nome utente sia foo, i suoi gruppi sono fooe sudo. groupsl'output del comando è:

    foo sudo
    
  • Rimuovi utente foodal sudogruppo: gpasswd -d foo sudodopo ciò, l'utente foonon può eseguire alcun comando con sudo.

  • Modifica il file sudoers. Usa questo comando:

    sudo visudo -f /etc/sudoers.d/foo
    
  • Definire l' fooautorizzazione dell'utente , ad esempio:

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

    Ciò significa che l'utente foopuò eseguire qualsiasi comando nella directory /usr/bin/tranne passwde sucomando. Nota: se l'utente foodesidera modificare la propria password, può eseguire il passwdcomando senza sudo.

  • Un altro esempio di fooautorizzazione utente :

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

    Ciò significa che l'utente foopuò eseguire qualsiasi comando nella directory /usr/bin/ed è autorizzato a modificare la password di chiunque, ad eccezione del root su TUTTE le macchine.

È possibile definire gruppi di comandi definendo Cmnd_Aliasese creando "livelli di autorizzazioni". Puoi trovare esempi utili nella sezione ESEMPIO del manuale sudoers , ed ecco un link utile su come usare i sudoers.


Ho dovuto fare foo ALL=/usr/bin/*, !/usr/bin/passwdqualche idea sul perché sia ​​così?
Clurect,

-1

aggiungi alias di comando tramite visudo:

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

aggiungere restrizioni tramite visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

aggiungi utente al gruppo chiamato nopasswdgroup:

usermod -aG nopasswdgroup nopasswduser
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.