Modifica del file sudoers per limitare i comandi di un utente


8

È possibile modificare il file sudoers in modo che un utente possa usare sudo per qualsiasi comando tranne uno specificato? Il contrario è vero, credo, che il file sudoers può essere configurato in modo che un utente possa eseguire solo un determinato elenco di comandi.

EDIT: i comandi che voglio davvero togliere sono l'arresto e il riavvio ... questo mi fa pensare che ci siano chiamate di sistema speciali per l'arresto e il riavvio. Puoi prendere le chiamate di sistema da un utente? In caso contrario, è perché il sistema di autorizzazione unix si sottrae alle chiamate di sistema trascurandolo?

Risposte:


5

Un altro modo di osservarlo è che se gli utenti hanno un accesso root senza restrizioni, possono facilmente ottenere l'accesso root completo.

Mentre potresti essere in grado di elaborare qualcosa, sarebbe facilmente aggirabile.

Anche se Linux è un modo possibile, anche se ci vuole molto da imparare.


3

Per fare ciò che vuoi (mantieni il modulo utente in esecuzione di arresto, riavvio e spegnimento), dovrai esaminare le cose di SElinux per impedire all'utente di fare quelle syscall. Altrimenti l'utente eseguirà prima / bin / sh e poi eseguirà / bin / halt senza passare sudo.


2
O uno dei tanti programmi da cui puoi ottenere una shell o il loro script.
Ronald Pottol,

3

Registra tutto ciò che fanno tramite sudo, presumibilmente, hai un modo per ottenere il punto per non farlo di nuovo.

Defaults logfile=/var/log/sudolog 

registrerà tutti i comandi che eseguono, google un po 'per maggiori informazioni.


Avrai bisogno di una registrazione centralizzata e dovrai urlare contro di loro se eseguono una shell. Ad esempio, è possibile ottenere una shell da un editor. o uomo uomo ecc.
James,

3

Sì e no ... È possibile impedire a un utente di eseguire un file specifico precedendo il botto (!), Tuttavia non è possibile impedire a un utente di copiare il file in un'altra posizione e quindi eseguirlo da lì.

User_Alias    ADMINS = peter, bob, bunny, %operator

ADMINS        ALL    = !/usr/bin/su, !SHELLS

Concedere l'accesso a file specifici come un altro utente


Esempio di come impostare "SHELLS" sopra: Cmnd_Alias ​​SHELLS = / bin / sh, / bin / ksh, / bin / bash, / bin / zsh, \ / bin / csh, / bin / tcsh, \ / usr / bin / login, / usr / bin / su
pulcher

Un sacco di utility ti permetterà di eseguire i comandi come root (tar, links e nmap dalla parte superiore della mia testa), quindi sinceramente penso che la vera soluzione sia a) i comandi della whitelist che vuoi eseguire come root o b) semplicemente assumili qualcuno di cui ti fidi
Qualche nerd Linux

2

Se l'utente vuole davvero riavviare, troverà un modo. sudo -s, sudo -i, sudo $EDITOR /etc/sudoers... può essere usato per rimuovere le restrizioni.

E su sistemi simili a Unix ti è permesso riavviare il sistema finché sei root (uid 0). Se trovi un modo per limitare quelle chiamate di sistema, puoi farlo:

utente $ echo b | sudo tee / proc / sysrq-trigger

o una sua variazione. O riavviare causando il panico del kernel. O...

Infine, avere l'accesso come root di solito ti dà la possibilità di rimuovere qualsiasi restrizione in atto.


Fa schifo che Linux non abbia più sicurezza. Non erano perfetti, ma l'uomo era facile da installare. Non hanno impedito il riavvio, ma hanno impedito molte altre cose. E dato che erano così facili da poterli usare su tutti i sistemi. Nessuna modifica e tale necessità.
Thomas,

Non erano in BSD, non in Linux?
user1686

1

certo, come root chiama visudo e impedisce a 'user' di eseguire / sbin / halt:

user ALL=(ALL) NOPASSWD: !/sbin/halt

Credo che la richiesta fosse per un elenco di comandi che l'utente NON può eseguire
Wayne

1

Esiste un rischio nel fare questo: spesso ci sono modi per fare la stessa azione. Ad esempio, telnit 6 o init 6 eseguono anche un riavvio. Potrebbe esserci un modo per forzare il kernel al core dump e al riavvio.


1

La seguente riga dovrebbe consentire all'utente "jim" di eseguire tutto tranne / usr / bin / kill e / usr / bin / su.

jim          ALL= !/usr/bin/kill,!/usr/bin/su

0

Questo non è testato e YMMV, ma per quanto riguarda l'impostazione di un cmd_list dei comandi che non si desidera eseguire e quindi utilizzare! Cmd_list per il gruppo / utente specificato?

Non ho accesso a questo test e ho appena guardato la pagina di manuale online nel Manuale dei Sudatori, quindi alcuni esperti mi correggeranno qui se sbaglio

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.