Come modificare le autorizzazioni utente pi sudo; come aggiungere altri account con autorizzazioni diverse?


14

Da quando uso occasionalmente il mio Pi su SSH, ho imparato che è pericoloso consentire a SSH di accedere ai comandi sudo. Pertanto, ho intenzione di disattivare questa autorizzazione nel prossimo futuro. Ma quando installo i pacchetti di solito devo riavviare. Attualmente, questo è consentito solo tramite il superutente.

sudo reboot

È possibile modificare le autorizzazioni dell'utente pi per consentirgli di riavviare (e installare) i pacchetti?

Potrei avere più account con autorizzazioni diverse?

Grazie


1
Qualcuno delle risposte fornite è stato utile? Qualcuno di loro è la risposta che cercavi? Si prega quindi contrassegnare come risposta.
Anders,

Sì. Se sei ancora interessato, li ho aggiornati a giugno 2017: questa domanda è stata posta 4 anni e 2 mesi fa e mi ha portato al modo di risolvere il problema oggi. Leggi le risposte di seguito:
SDsolar,

Risposte:


22

Per chiarire un po ': non ci sono "comandi sudo", ci sono solo comandi che hanno bisogno dei privilegi di root per funzionare correttamente ed sudoè il comando per ottenerli per un comando: sudoesegue semplicemente il comando dato come root (leggi "sudo" come imperativo frase "superutente, fai qualcosa!"). Le regole sulle quali gli utenti possono farlo sono scritte in /etc/sudoers. In un'installazione Raspbian predefinita, l'utente predefinito "pi" ha i suoi permessi da questa linea:

pi ALL=(ALL) NOPASSWD: ALL

Significa: "L'utente 'pi' su TUTTI gli host è autorizzato a passare a TUTTI gli utenti e NON deve digitare il suo PASSWD quando usa i comandi ALL (leggi: qualsiasi)". (Ho usato la grammatica pazza qui per mantenere l'ordine della linea .. una nota sul perché c'è un modo per distinguere gli host: in questo modo, lo stesso file sudoers può essere distribuito su più macchine su una rete in modo che l'amministratore di rete abbia meno lavoro) .

Potrebbe essere che essere in grado di eseguire comandi utilizzando sudo senza emettere una password di amministratore è il motivo per cui pensi che sia pericoloso usare sudo su SSH (non ho sentito parlare di un problema generale nel farlo ... così potresti spiegare quale pericolo intendi esattamente?).

Sicuro che potresti avere più utenti con autorizzazioni diverse. Ma temo che usare sudo sia ancora il modo migliore per gestire queste autorizzazioni.

Quindi, spero che questa piccola ricetta qui sia ciò di cui hai bisogno:

$ sudo adduser admin

Questo creerà un utente "admin", chiederà una password, creerà la sua home directory, ecc.

$ sudo adduser admin sudo
$ sudo adduser admin adm

Ciò inserirà l'utente "admin" nei gruppi utenti "sudo" e "adm". E poiché le autorizzazioni sono gestite in Linux aggiungendo utenti ai gruppi di utenti, questo dà all'utente "admin" tutti i privilegi e le autorizzazioni di cui ha bisogno. È presente una riga /etc/sudoersche consente a qualsiasi utente del gruppo utente "sudo" di eseguire qualsiasi comando come root; e questo privilegio è ciò di cui abbiamo bisogno per un utente amministratore (aggiungendolo a "adm" gli permette di leggere alcuni file di log /var/logsenza usare sudoe poche altre cose). È ancora necessario utilizzarlo sudoquando si è effettuato l'accesso come amministratore, ma ora sudo richiede ripetutamente la password dell'amministratore ogni volta che non si utilizza sudo per circa cinque minuti.

Ora disconnettersi e accedere come utente "admin". Controlla se

$ sudo apt-get update
$ sudo apt-get upgrade

lavori. In tal caso, è possibile revocare alcuni privilegi dell'utente "pi", poiché ora si è certi che l'utente amministratore disponga dei privilegi giusti:

$ sudo deluser pi sudo
$ sudo deluser pi adm

Questo elimina l'utente "pi" dal gruppo utenti "sudo".

$ sudo visudo

Verrà avviato un editor che ti consente di modificare /etc/sudoers. Inserisci un tag hash ( #) prima della riga che inizia con "pi", commentandolo (o semplicemente rimuovendolo). Quindi salva ed esci dall'editor, visudo ricaricherà immediatamente le regole dei privilegi. Ora l'utente "pi" non può più usare sudo.

Successivamente, è possibile accedere nuovamente come utente "pi". Se vuoi passare all'amministratore per alcuni comandi, usa su("cambia utente"):

$ su - admin

Se vuoi aggiungere più utenti: usa sudo adduser <name>come sopra, quindi controlla l'elenco dei gruppi di utenti che l'utente "pi" ha:

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

Utilizzalo sudo adduser <username> <groupname>per aggiungere il tuo nuovo utente a molti di questi gruppi di utenti, consentendogli di usare l'audio, i video accelerati, i dispositivi collegabili, ecc. Se non sei sicuro, aggiungilo a tutti questi gruppi di utenti (ma non a "sudo"!).


2
visudoè un comando che utilizzerà l'editor predefinito per modificare il file sudoers. Modificare questo file senza di esso può essere una seccatura e non è raccomandato. Puoi modificare il tuo editor preferito pubblicandosudo update-alternatives --config editor
earthmeLon

Oppure puoi provare questo VISUAL=vim visudosolo per questa volta. Ma un ottimo esempio di modifica dei programmi predefiniti, come l'editor.
Anders,

6

Sì, è possibile configurare sudoper consentire all'utente di eseguire solo determinati comandi con privilegi aggiuntivi. Puoi cambiarlo nel tuo /etc/sudoersfile, ma è consigliabile non farlo direttamente ma usa il sudo visudocomando per questo.

Nell'installazione di sistema predefinita è necessario trovare tale riga:

pi ALL=(ALL) NOPASSWD: ALL

Indica sudodi consentire all'utente pidi eseguire tutti i cammands come rootutente senza nemmeno fornire la password. È possibile modificare l'ultimo ALLe specificare un elenco di comandi delimitati da virgole (con il loro percorso completo) autorizzati a essere eseguiti. Nel tuo caso dovresti cambiare questa riga in:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

Si noti che esiste un'altra riga che sudoersriguarda l' piutente:

%sudo   ALL=(ALL:ALL) ALL

Questa riga consente a tutti gli utenti del gruppo sudo(il %carattere davanti al nome significa che è un nome di gruppo anziché un nome utente) di eseguire TUTTE le password purché conoscano la propria password . Se si esce da questa riga, l'utente pisarà in grado di eseguire tutti gli altri comandi ma verrà richiesta la password.

Se si desidera impedire che ciò accada, è possibile rimuovere questa riga o rimuovere l'utente pidal sudogruppo.

Dopo aver apportato modifiche al /etc/sudoersfile, potresti voler controllare che faccia davvero quello che vuoi chiamando il sudo -l -U picomando.

Naturalmente è possibile creare account diversi e configurare sudoersdando loro accesso a diversi comandi.


1

Maggio 2018, questo è ancora accurato nel concetto ma la procedura è cambiata con le versioni successive:

In primo luogo, i file dovrebbero essere modificati direttamente in vi o nano o leafpad o emacs - qualunque sia il tuo editor di testo preferito.

Il nome utente pi non è menzionato in questo file:

/etc/sudoers

e l'ultima riga del file è questa:

#includedir /etc/sudoers.d

Questa è una directory che contiene un file denominato

010_pi-nopasswd

che contiene questa riga singola

pi ALL=(ALL) NOPASSWD: ALL

Il che ha l'effetto di non richiedere alcun comando sudo fintanto che ho effettuato l'accesso come utente pi. (nota che la sintassi deve essere esattamente così)

Questo è fantastico

La linea di gruppo %sudo ALL=(ALL:ALL) ALLè ancora lì come

Quindi, per rispondere alla prima parte della domanda:

Quando ho spostato il file /etc/sudoers/sudoers.d/010_pi-nopasswd su un livello di directory per far fallire l'inclusione, quindi ho aspettato 15 minuti, il mio sistema Raspbian ha richiesto la mia password su uso di sudo, solo come faceva il mio sistema Ubuntu 14.04 LTS.

Quindi quando l'ho spostato di nuovo al suo posto, anche dopo 10 minuti non mi ha più richiesto.

Nessun riavvio necessario. Voilà, nessuna richiesta di password quando si usa sudo

Il mio sistema di test LTS Lubuntu 14.04 ha la stessa configurazione, tranne per il fatto che il file 010_pi-nopasswd non era presente. lubuntu è stato installato con pi come utente root. Mi ha spinto ogni volta che ho usato sudo, quindi non mi ha richiesto per 10 minuti dopo.

Ho aggiunto questo stesso file al sistema Ubuntu proprio come è configurato Raspbian (ricordati di modificare 0440 su questo file mentre sei ancora in quella finestra di 10 minuti) - e

Voilà, non mi viene più richiesta la mia password quando eseguo l'accesso come pi anche dopo 15 minuti.

Ancora una volta, la modifica avviene istantaneamente senza il riavvio necessario.

Questa è la risposta di maggio 2018 su come disabilitare e abilitare il prompt per l'uso del comando sudo quando si accede come utente root pi. Altri utenti e gruppi possono essere configurati nello stesso modo.

--UPDATE per Ubuntu 16.04 LTS Anche questo sistema è molto simile. Tuttavia, la differenza più grande è che 16.04 ha autorizzazioni di file molto più strette, quindi il lavoro deve essere fatto in sumodalità. Se hai dimenticato la password di root, puoi reimpostarla dal tuo normale prompt usando sudo passwd rootQuindi il sucomando funzionerà e puoi andare da lì.


Ho appena trovato questo tramite Google, quindi se lo sto seguendo, l'utente deve comunque essere nel gruppo sudoers, ma /etc/sudo.d controlla con quale frequenza viene richiesta una password all'utente specifico?
Lonstar,

1
Sì. Ce l'hai Essere un membro di sudoerssolito viene fatto al momento della creazione dell'utente. Esempio di utilizzo: noterai che la stringa di comando comune sudo apt-get update && sudo apt-get upgraderichiama due volte sudo, ma è fastidioso che si fermi e richieda nuovamente la password prima dell'aggiornamento. Quindi ho impostato il mio in sudo apt-get update -y && sudo apt-get upgrade -ymodo che non richieda mai il mio unico nome di accesso (pi) e quindi lo uso anche in modo che non si fermi allo stesso modo per chiedere a OK di apportare modifiche considerevoli. Per renderlo più simile a Unix. Fai solo quello che ti chiedo e anche se me ne vado voglio che finisca.
SDsolar,

0

È più sicuro consentire l'accesso sudo tramite SSH che consentire a qualsiasi utente di installare pacchetti. Se sei davvero preoccupato, cambia la linea /etc/sudoersda:

pi ALL=(ALL) NOPASSWD: ALL

per

pi ALL=(ALL) PASSWD: ALL

Ciò significa che ti verrà richiesta una password la prima volta che usi sudo in qualsiasi sessione e di nuovo dopo alcuni minuti di timeout. Non è possibile modificare /etc/sudoersdirettamente; utilizzare sudo visudoper farlo.

Sembra che Krzysztof sia entrato con una risposta proprio lì. Sei davvero sicuro di dover riavviare ogni volta che installi nuovi pacchetti? A meno che non si stia installando un nuovo kernel o firmware, non è necessario riavviare molto altro. Questo è un sistema operativo di qualità che abbiamo qui ...


3
Menzionare il timestamptimeout è una buona idea. Sono 15 minuti di default, BTW. Si noti che PASSWDè predefinito (se NOPASSWDnon è stato specificato precedentemente in questo elenco di comandi). Nota anche che /etc/sudoerspuoi modificarlo direttamente senza problemi se sai cosa stai facendo. L'uso visudoconsente di apportare modifiche al file temporaneo impedendo la scrittura automatica del file nel mezzo della modifica (che potrebbe introdurre errori di sintassi e / o problemi di sicurezza), blocca questo file contro più modifiche simultanee e fa alcuni controlli di sintassi prima di scrivere il file.
Krzysztof Adamski il

Penso che l'OP aggiorni che raramente ottiene sempre un nuovo kernel ... o qualche collega gli ha detto di riavviare ogni volta, perché non voleva spiegare come l'OP potesse individuare un pacchetto del kernel nell'elenco degli aggiornamenti.
orithena,

TNX per questo commento, @Krzysztof. Ho apportato la correzione nella mia risposta. E hai ragione sulla modifica. In effetti, sulla mia macchina 16.04, ho appena inserito la linea pi direttamente nel file sudoers, perché sudoers.d conteneva solo un file Leggimi. L'ho lasciato solo perché, ma almeno le autorizzazioni pi sono in fase di elaborazione. (Il mio editor preferito è VI / VIM, a proposito, ma a volte userà leafpad o Idle. Non ho ancora imparato Emacs - 15 anni sono tanti - e posso fare molto di più, più velocemente, in vim di quanto io possa fare in emacs , di gran lunga.) Grazie ancora.
SDsolar,

0

Solo un'alternativa a ciò che scruss ha detto, eliminare il /etc/sudoers.d/010_pi-nopasswdfile eseguendo sudo rm /etc/sudoers.d/010_pi-nopasswd. Molto più semplice e sicuro quindi modificare il file sudoers principale, che può interrompere sudo.

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.