Limitare l'utente all'esecuzione di comandi selettivi (Linux)


14

Come posso limitare il mio utente ad eseguire solo comandi selettivi. Ho un utente tomc nel gruppo tomc. Ho bisogno che questo utente sia utente sudo e quindi abbia una bash limitata. Ho provato a seguire il codice nel /etc/sudoersfile, ma non funziona poiché l'utente è in grado di eseguire altri comandi come mkdir,rm

%tomc ALL=/bin/bash,/usr/bin/vim /*

3
Sebbene l'uso di sudo possa essere limitato a comandi particolari, questo può essere complicato e richiede un po 'di fiducia. Se non ti fidi dell'utente, dare loro l'accesso sudo è una cattiva idea. O darà loro i privilegi di root o darà loro un'app mirata per attaccare per ottenere i privilegi di root. Permettere a qualcuno di correre sudo bashequivale in molti modi ad avere la password di root. Da una sudo bashshell possono eseguire qualsiasi comando di amministrazione, installare o eliminare software, eliminare utenti e directory, ecc.
Paul

@Paul Puoi suggerirmi opzioni migliori e pratiche per questo?

Innanzitutto, questo è off topic sullo overflow dello stack. I posti migliori da chiedere includono superuser, askubuntu o linux e unix. Prima scopri esattamente cosa vuoi permettere a Tomc di fare. tomc dovrebbe essere autorizzato a fare _____ ma non ________. Allora chiedi. Sudo è per i comandi che richiedono il root (admin) priv. Può già eseguire bash senza eseguirlo come root.
Paul,

Risposte:


18

Potresti andare in questo modo nel modo sbagliato. Invece di dare a un utente una shell bash "limitata", dovresti dare loro solo l'accesso ai comandi di cui avrebbero bisogno per essere eseguiti come root. Ad esempio, nel tuo file sudoers:

tomc ALL=(root) /usr/bin/vim /etc/myapp.conf
tomc ALL=(root) /usr/bin/less /var/log/myapp/*.log

Fai attenzione a consentire agli utenti di eseguire vim come root. Vim ha molte funzionalità integrate, come le escape per la shell e la possibilità di eseguire comandi dall'interno di Vim. A seconda della tua distribuzione, potresti essere sudoeditdisponibile. Funziona come un normale Vim, tranne per il fatto che è progettato per gestire le fughe della shell e simili.


7
Nessuna di queste linee è sicura. Come accennato, èvimpossibile eseguire comandi shell arbitrari. E la seconda riga probabilmente lo consentiràless /var/log/myapp/../../../etc/shadow! Secondo i miei esperimenti usare sudo in sicurezza è difficile ! Ma se riesci ad evitare se ne*usisudoeditinvece divimallora potresti essere ok.
Joeytwiddle,

Evitare *non è abbastanza! Una volta entrato lesscome rootutente, prova a digitare !tail /var/log/secure. Come va? Studia il NOEXECtag. Ma prendi a cuore il messaggio di @ joeytwiddle: la sicurezza sudo è davvero difficile.
Bruno Bronosky,

3

Sulla mia Synology Diskstation che esegue DSM 6 solo gli utenti admin possono ssh in modo coerente (gli utenti non admin hanno la shell come / sbin / nologin in / etc / passwd - puoi impostarlo su / bin / sh per consentire temporaneamente a ssh, ma al riavvio il file / etc / passwd viene ripristinato). Per questo motivo è necessario un tipo di restrizione sudo per un account che altrimenti esiste solo per eseguire ad esempio / sbin / poweroff. Le seguenti righe in / etc / sudoers hanno funzionato per me:

# Allow guestx user to remote poweroff
guestx ALL=(ALL) !ALL
guestx ALL=NOPASSWD: /sbin/poweroff

Traduzione: non consentire tutti i comandi, quindi consentire solo il comando desiderato (senza richiedere la password in questo caso).

Con questa configurazione sudo chiede la password e quindi non riesce per comandi diversi da quello nella whitelist:

guestx@ds:~$ sudo su -
Password: 
Sorry, user guestx is not allowed to execute '/bin/su -' as root on ds.
guestx@ds:~$ 
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.