Sin dai tempi antichi, molti sono stati confusi dalla varietà di opzioni di sicurezza durante l'esecuzione di operazioni con i massimi privilegi. Ad esempio, nel funzionario Documentazione Ubuntu si consiglia di utilizzare qualcosa come sudo nano come comando di modifica, e in numerosi manuali amatoriali (nello stile di "5 trucchi sulla riga di comando che sorprenderanno tua nonna"), si suggerisce di scrivere sudo su - per ottenere il root "nuova shell. Cercherò di spiegare perché questo stato di cose mi sembra sbagliato.
Storicamente l'unico modo universale eseguire un comando come un altro utente in Unix era il programma su. Eseguito senza parametri, ha richiesto la password di root e, in caso di successo, ha semplicemente cambiato il nome utente corrente in root, lasciando quasi tutto variabili ambientali dal vecchio utente (ad eccezione di PATH, USER e un altro paio, vedi man su dalla tua distribuzione). Era più corretto eseguirlo come su - - nel qual caso anche la shell avrebbe ottenuto l'ambiente corretto. Con l'opzione -c era possibile eseguire il comando: su -c "vim /etc/fstab" .
Allo stesso tempo, gli utenti fidati dovevano ricordare la password di root e tutti gli utenti elencati nel gruppo wheel (ovvero in un gruppo i cui membri potevano eseguire il comando su e diventare un superutente) avevano lo stesso accesso illimitato all'intero sistema , che rappresentava un serio problema di sicurezza.
Poi è arrivato il comando sudo, e quella è stata la svolta. Ora l'amministratore può specificare un elenco di comandi consentiti per ciascun utente (o gruppo di utenti), file disponibili per la modifica, variabili di ambiente speciali e molto altro (tutto questo splendore è controllato da /etc/sudoers , vedi man sudoers dalla tua distribuzione) . Quando sudo viene eseguito, chiede all'utente la propria password, non la password di root. Una shell completa può essere ottenuta con " sudo -i "
Di particolare nota è il comando speciale sudoedit , che avvia in modo sicuro l'editor specificato nella variabile d'ambiente $EDITOR. Con uno schema più tradizionale, la modifica dei file è stata eseguita in questo modo:
sudo vi /etc/fstab
Vi lanciato in questo modo ha ereditato una shell con diritti illimitati e attraverso:! l'utente può eseguire qualsiasi comando (a meno che, ovviamente, l'amministratore non se ne sia occupato in anticipo) e aprire qualsiasi file.
Sudoedit controlla se questo utente può modificare dato file, quindi copia il file specificato in una directory temporanea, lo apre in un editor (che eredita i diritti utente, non root "a) e dopo la modifica, se il file è stato modificato, lo copia di nuovo con precauzioni speciali.
Nelle distribuzioni basate su Debian, l'utente root non ha una password, invece tutte le azioni amministrative devono essere eseguite tramite sudo o la sua controparte grafica gksudo . In sostituzione completa di su , sudo dovrebbe essere l'unico comando per passare da un utente all'altro, tuttavia, come accennato all'inizio, al momento non è così e tutti inventano sequenze selvagge di sudo, su, vi e trattini per qualche motivo .
Pertanto, suggerisco a tutti una volta per tutte di ricordare:
Dopo la prima pubblicazione di questa nota, mi sono state poste diverse domande. Dalle risposte è risultato fare un mini-FAQ.
D: come fare su -c "echo 1 > /etc/privileged_file" con sudo? sudo echo 1 /etc/privileged_file giura "permesso negato"
R: Questo perché solo il comando echo viene eseguito con diritti elevati e il risultato viene reindirizzato a un file già con diritti utente normali. Per aggiungere qualcosa al file privilegiato, devi eseguire il seguente comando:
$eco 1| sudo tee -a file_privilegiato >/dev/null
O diventare temporaneamente root:
$ sudo -i # echo 1 > file_privilegiato # exit $
D: sudo -i è più lungo di su - e non sembra esserci alcuna differenza tra loro, perché stampare di più?
A: sudo ha diversi vantaggi che valgono la pena di digitare qualche carattere in più:
Paradossalmente, il comando sudo non preclude l'esecuzione di una sessione amministratore all'interno di una normale sessione utente. Perché può essere utilizzato per eseguire lo stesso comando su:
$sudo su
E questo è anche in Ubuntu, dove non esiste un account root; più precisamente, per impostazione predefinita non esiste una password. Ma l'uso di sudo lo rende superfluo anche per il comando su. Ma non è vietato impostare la password del superutente - dopotutto, per questo è sufficiente dare il comando
$ sudo password
usare su nel solito modo. E anche, se lo desideri, accedi come root quando ti registri nel sistema.
Tuttavia, anche qui il comando sudo fornisce un metodo “ideologicamente corretto”, e nemmeno uno. Si tratta delle opzioni -s e -i, che prolungano, seppur in modi leggermente diversi, l'azione del comando sudo all'infinito, fino a quando la “sessione secondaria” termina con il comando exit.
L'opzione -s, quando si apre una sessione root secondaria, conserva tutte le variabili d'ambiente dell'utente originale. Tuttavia, se aggiungi l'opzione -H, queste variabili verranno rilette dai file di profilo della directory home dell'amministratore, ovvero /root, come quando si avvia un'istanza di shell interattiva. Tuttavia, la directory corrente al momento dell'immissione del comando non cambierà, né cambierà l'aspetto del prompt. riga di comando.
L'opzione -i riproduce completamente l'ambiente root eseguendo la sua shell come shell di login. Naturalmente, questo cambia anche la directory corrente in /root e il prompt della riga di comando assume la forma descritta nella variabile corrispondente nel file del profilo della shell amministrativa (in bash - PS1).
In pratica, non c'è molta differenza tra le due forme di ottenere diritti di amministratore permanenti, specialmente in bash . Ma in zsh, con le impostazioni appropriate dei file di profilo, se lo si desidera, è possibile ottenere ambienti significativamente diversi in ciascuno di questi casi. È vero, quanto l'utente ha bisogno è una grande domanda. Ma il fatto che quando si utilizzano le opzioni -H, essere in modalità amministrativa permanente non appaia in alcun modo esteriormente è irto di errori. Ciò rende preferibile l'opzione -i nella maggior parte dei casi.
A proposito, le capacità di sudo non si limitano all'esecuzione di comandi come amministratore: impostando l'opzione -u username, possono essere eseguiti anche per conto dell'utente il cui login è impostato come suo valore. Ciò può essere utile quando si visualizzano o si copiano i file e le directory dei punti di un altro utente, spesso leggibili e modificabili solo dal loro proprietario.
A proposito, il comando sudo può essere eseguito in modo tale da richiedere la password dell'utente per conto del quale verrà eseguito il comando (ad esempio, amministratore) e non quello che richiede la sua autorità. C'è un'opzione -targetpw per questo. E per rendere permanente il requisito della password di root, è sufficiente definire, ad esempio, un alias come
Alias sudo -targetpw
La richiesta di una password di root durante l'esecuzione di sudo è il suo comportamento predefinito in alcune distribuzioni, ad esempio si dice che sia Suse.
Il comando sudo ha molte più opzioni - sopra ho dato solo quelle che dovevo usare. Il resto è facile da vedere in man sudo . Di quelli non elencati, menzionerò anche l'opzione -b, che indica di eseguire il comando "giurisdizionale" in background. Può essere utile quando si eseguono attività a lungo termine, come la copia di immagini USB su un'unità flash con il comando dd.
Come abbiamo appena visto, il comando sudo fornisce all'utente poteri quasi illimitati per qualsiasi azione a livello di sistema, nonché per la manipolazione dei dati utente di altre persone. Fatta questa premessa, poniamoci le seguenti domande:
Se parliamo della famiglia Ubuntu, in cui questo meccanismo è stato utilizzato per la prima volta "out of the box", quindi "out of the box", la risposta alla prima domanda sarà negativa, alla seconda positiva. In generale, dipende dalle impostazioni del programma sudo, descritte nel file /etc/sudoers. E in esso puoi impostare regole che consentono solo a determinati utenti di eseguire determinati comandi. In sintesi, si presenta così:
nome utente host=comando
Qui, come puoi intuire, username è il nome dell'utente per il quale è impostata questa regola, host è il nome della macchina da cui può ricorrere a questa regola, command è il comando specifico il cui utilizzo è consentito dato utente da questa macchina. Il comando deve essere fornito con il percorso assoluto completo (ovvero /sbin/fdisk , non fdisk). Il campo della descrizione del comando può includere più valori separati da virgole, ad esempio:
Nome utente ALL = /sbin/fdisk,/bin/mount
In Ubuntu le regole predefinite per l'accesso degli utenti ai privilegi amministrativi sono descritte come segue:
# Specifica dei privilegi utente root ALL=(ALL) ALL # I membri del gruppo admin possono ottenere i privilegi di root %admin ALL=(ALL) ALL
Cioè, l'utente root, come dovrebbe essere, può eseguire qualsiasi comando da qualsiasi host. Ma solo gli utenti appartenenti al gruppo admin (un analogo del gruppo wheel, menzionato in) possono ottenere i suoi diritti. Un utente creato durante un'installazione tipica diventa automaticamente un membro di questo gruppo, e quindi tutti i diritti amministrativi sono a sua disposizione senza ulteriori impostazioni. Tuttavia, altri utenti, i cui account verranno creati in seguito, sono privati di questo privilegio. A meno che, ovviamente, non fossero specificatamente inclusi nel gruppo admin.
In altre distribuzioni che non utilizzano sudo per impostazione predefinita, sarà necessario modificare il suo file di configurazione, lo stesso /etc/sudoers menzionato sopra.
Il file /etc/sudoers è un normale file di testo e, di conseguenza, può essere modificato in qualsiasi editor di testo (o, diciamo, usando ed o sed). Tuttavia, allo stesso tempo, c'è un certo rischio di rovinare qualcosa (a causa dei soliti errori di battitura), fino a bloccare completamente l'accesso ai privilegi di superutente per se stessi. Naturalmente, queste situazioni sono risolvibili, ad esempio tramite un riavvio in modalità utente singolo. Tuttavia, è meglio non colpirli. Pertanto, un mezzo più affidabile per modificare /etc/sudoers è utilizzare un'utilità appositamente progettata per questo: visudo .
L'utilità visudo non fa niente di speciale: apre solo /etc/sudoers in un editor di testo descritto dalla variabile EDITOR del superutente (se non definita, sarà di nuovo il classico vi - da cui il nome) e ti consente di modificarlo nel solito modo , quindi esci dall'editor salvando i risultati con i suoi mezzi regolari. Tuttavia, prima di ciò, viene verificata la correttezza del risultato della modifica. E se viene rilevata una violazione della sintassi accettata per /etc/sudoers, viene emesso un avviso appropriato. Dopodiché puoi tornare alla modifica, rifiutare le modifiche apportate o comunque accettarle (ovviamente sotto la tua responsabilità).
L'utilità visudo non garantisce il successo della modifica al 100%. Poiché controlla solo la conformità della sintassi, ma non la “correttezza delle regole stesse”. Cioè, se viene commesso un errore nello specificare il percorso del comando necessario per questa regola, questo comando non funzionerà tramite sudo.
Tuttavia, in realtà di solito sembra molto più semplice e per niente spaventoso. Quindi, in Fedora 11, nella configurazione esemplare di /etc/sudoers, ho dovuto solo decommentare la riga
%wheel TUTTI=(TUTTI) TUTTI
per dare all'utente del gruppo specificato (e mi sono incluso in anticipo, come descritto in) tutti i diritti che ha l'amministratore. Allo stesso tempo, sarebbe possibile dotarsi di un pull e della possibilità di utilizzare sudo senza password. Ciò richiederebbe la rimozione del commento dalla riga
# %wheel ALL=(ALL) NOPASSWD: ALL
Ma mi sono limitato solo a rendere l'azione della password più duratura inserendo (inizialmente mancante riga
Predefinito timestamp_timeout=10
dove il valore di timeout è in minuti. A proposito, se lo cambi a zero...
Predefinito timestamp_timeout=0
quindi la password verrà richiesta ogni volta che viene richiamato il comando sudo.
In alternativa, puoi disabilitare il timeout dell'azione sudo inserendo un valore negativo per essa:
Default timestamp_timeout=-1
In questo caso la password verrà richiesta solo la prima volta che si chiama questo comando.
Uno sguardo più attento al file /etc/sudoers rivelerà facilmente la possibilità di concedere a determinati utenti o gruppi solo un insieme limitato di diritti. Tuttavia, qui iniziano le sottigliezze della vera amministrazione. Ho semplicemente privato il mio doppio sperimentatore dell'accesso a qualsiasi azione amministrativa per fermare tutte le sue invasioni in questo campo. Tuttavia, anche questo non sempre mi permette di far fronte a lui, proprio come Timur Shaov non è in grado di far fronte al suo eroe lirico.
Il comando sudo è molto importante per la gestione dei diritti di accesso in sistema operativo Linux. Grazie a questo piccolo comando, puoi dare il permesso di eseguire determinate azioni per conto dell'amministratore ad altri utenti, senza fornire loro la stessa password di superutente. Inoltre, non è necessario essere sempre sotto l'account di superutente per eseguire a volte azioni amministrative.
Sembrerebbe un team così piccolo, con un minimo di funzionalità e l'utilizzo più semplice possibile, ma in realtà può fare molto di più. In questo articolo, vedremo come sudo è configurato in Linux per controllare l'accesso alle funzioni di sistema e alle capacità dell'utente.
Puoi anche specificare editor di testo dove vuoi modificare il file di configurazione:
# EDITOR=nano visudo
Successivamente, esamineremo le impostazioni più interessanti che puoi impostare in questo file. Ma prima, diamo un'occhiata alla sintassi di base del file. Consiste in due tipi di righe, si tratta di alias, che consentono di creare elenchi di utenti e flag, nonché le regole stesse, che specificano come si comporterà il comando sudo. La sintassi dell'alias è simile a questa:
digita nome_alias = elemento1, elemento2, elemento3
Il tipo specifica quale tipo di alice creare, il nome specifica il nome da utilizzare e l'elenco degli elementi specifica gli elementi che saranno impliciti quando ci si riferisce a questo nome.
La descrizione delle autorizzazioni per gli utenti ha una sintassi leggermente diversa:
utente host = (altro_utente:gruppo) squadre
L'utente specifica l'utente o il gruppo per il quale stiamo creando la regola, l'host è il computer per il quale verrà applicata questa regola. Altro utente - con il pretesto di quale utente il primo può eseguire comandi e l'ultimo - comandi consentiti. È possibile utilizzare un alias al posto di uno qualsiasi dei parametri. E ora configurare sudo su Debian e altre distribuzioni.
Impostazioni predefinite !lecture
Predefiniti !root_sudo
Predefinito set_home
Predefiniti !preserve_groups
default passwd_tries=5
Predefinito timestamp_timeout=10
default passwd_timeout=10
Defaults passprompt="La tua password è:"
È possibile specificare un altro utente, non root, da cui verranno eseguiti tutti i comandi, per questo uso:
valori predefiniti runas_default="utente"
Puoi registrare tutti i tentativi di connessione a sudo:
Predefinito logfile=/var/log/sudo
$ sudo cat /var/log/sudo
TUTTI TUTTI = (TUTTI) TUTTI
%wheel TUTTI = (TUTTI) TUTTI
Significa lo stesso del precedente, solo qui non permettiamo a tutti gli utenti di usare sudo, ma solo a quelli che sono membri del gruppo wheel.
%wheel ALL = (radice) ALL
Qui abbiamo già limitato la possibile selezione di utenti al solo utente root. Puoi anche specificare il gruppo di utenti per conto del quale può eseguire i comandi:
%wheel TUTTI = (root:admins) TUTTI
User_Alias Utenti = utente1,utente2,utente3
Runas_Alias Admins = root,admin
Host_Alias Host = host1,host2
Cmd_Alias Cmds = /bin/mount, /bin/umount
Utenti Host = (Amministratori) Cmds
Ciò significa che gli utenti nell'elenco Utenti potranno eseguire i comandi Cmds come utenti Amdins sugli host.
Resta da dire qualche parola sulle bandiere. Il flag NOPASSWD ti dice di non chiedere una password durante l'esecuzione di questa regola. Ad esempio, per consentire a tutti gli utenti di eseguire il comando mount con sudo senza password:
ALL ALL = (root) NOPASSWD: /bin/mount
Puoi anche disabilitare questo particolare comando usando il flag NOEXEC:
ALL ALL = (radice) NOEXEC /bin/mount
Puoi controllare se il file /etc/sudores è stato configurato correttamente e vedere tutte le regole create usando il comando:
Tutti i flag e le impostazioni impostate, nonché i permessi di questo utente, vengono visualizzati qui.
In qualsiasi sistema Linux, c'è sempre un utente privilegiato: root. Questo utente ha i diritti per eseguire qualsiasi azione, eliminare qualsiasi file e modificare qualsiasi impostazione. È quasi impossibile limitare in qualche modo la libertà di azione di root. D'altra parte, tutti gli altri utenti del sistema di solito non hanno la maggioranza diritti necessari, ad esempio, i diritti per l'installazione dei programmi, poiché si tratta di un'operazione amministrativa per la quale solo l'utente root ha i diritti. Un'altra operazione comune, disponibile solo per il superutente, è la copia e la modifica dei file nelle cartelle di sistema a cui l'utente normale non ha accesso.
In precedenza, questo problema veniva risolto in modo abbastanza semplice: se si disponeva della password di root, era possibile accedere al sistema con il suo account o ottenere temporaneamente i suoi diritti utilizzando il comando su. Quindi esegui tutte le operazioni necessarie e torna come utente normale. In linea di principio, un tale schema funziona bene, ma presenta molti inconvenienti significativi, in particolare è impossibile (più precisamente, molto difficile) limitare i privilegi amministrativi solo a una certa gamma di compiti.
Pertanto, in moderno Distribuzioni Linux invece dell'account root per l'amministrazione, viene utilizzata l'utilità sudo.
In Ubuntu, per impostazione predefinita, l'account root è generalmente disabilitato, ovvero non è possibile accedere a root senza abilitarlo. root è esattamente ciò che è disabilitato, cioè è presente nel sistema, semplicemente non puoi passarci sotto. Se vuoi restituire la possibilità di utilizzare root, consulta il paragrafo sull'abilitazione dell'account root di seguito.
sudo è un'utilità che concede i privilegi di root per eseguire operazioni amministrative in base alle sue impostazioni. Consente di controllare facilmente l'accesso alle applicazioni importanti nel sistema. Per impostazione predefinita, quando installare Ubuntu al primo utente (quello creato durante l'installazione) vengono concessi tutti i diritti per l'uso di sudo. Quelli. infatti il primo utente ha la stessa discrezionalità di root. Tuttavia, questo comportamento di sudo è facile da modificare, vedi sotto nel paragrafo sulla configurazione di sudo.
sudo viene utilizzato ogni volta che si esegue qualcosa dal menu di amministrazione del sistema. Ad esempio, all'avvio di Synaptic, ti verrà chiesto di inserire la tua password. Synaptic è un programma di gestione delle installazioni, quindi hai bisogno dei diritti di amministratore per eseguirlo, che ottieni tramite sudo inserendo la tua password.
Tuttavia, non tutti i programmi che richiedono privilegi amministrativi vengono eseguiti automaticamente con sudo. Di solito devi avviare manualmente i programmi con diritti di amministratore.
Per cominciare programmi grafici con i diritti di amministratore, puoi utilizzare la finestra di dialogo di avvio del programma, richiamata per impostazione predefinita con la scorciatoia da tastiera Alt + F2 .
Diciamo che dobbiamo correre gestore di file Nautilus con diritti di amministratore su through GUI in qualche modo modificare il contenuto cartelle di sistema. Per fare ciò, inserisci il comando nella finestra di dialogo di avvio dell'applicazione
gksudo nautilus
gksudo può essere sostituito da gksu e gli utenti di KDE dovrebbero scrivere kdesu invece di gksudo. Ti verrà chiesto di inserire la tua password, e se l'hai diritti necessari, Nautilus verrà eseguito come amministratore. Qualsiasi software grafico può essere avviato con diritti di amministratore semplicemente scrivendo nella finestra di dialogo di avvio
gksudo<имя_команды>
Prestare estrema attenzione quando si lavora in applicazioni in esecuzione con diritti di amministratore. Sarai in grado di eseguire qualsiasi operazione senza alcun avviso dal sistema, in particolare, eliminare file di sistema rendendo così inutilizzabile il sistema.
Per eseguire un comando nel terminale come amministratore, digita semplicemente sudo davanti ad esso:
sudo<команда>
Ti verrà chiesto di inserire la tua password. Fai attenzione, la password quando entri non c'è modo non viene visualizzato, questo è normale e fatto per motivi di sicurezza, basta digitare fino alla fine e premere Invio. Dopo aver inserito la password, il comando specificato verrà eseguito come root.
Il sistema ricorda per qualche tempo la password inserita (mantiene aperta la sessione sudo). Pertanto, le successive esecuzioni sudo potrebbero non richiedere la password. Per assicurarti che una sessione sudo sia terminata, digita un terminale
Inoltre, i bug relativi alle pipe in Linux sono comuni. Quando si esegue un comando
Sudo gatto test.txt | testo grep > risultato.txt
Con come radice verrà eseguito solo cat, quindi il file risultato.txt potrebbe non iscriversi. O devi scrivere sudo prima di ogni comando o passare temporaneamente a superutente.
A volte diventa necessario eseguire più comandi di seguito con diritti di amministratore. In questo caso, puoi diventare temporaneamente il superutente con uno dei seguenti comandi:
sudo -s sudo -i
Successivamente, entrerai nella modalità superutente (con restrizioni imposte tramite le impostazioni sudo), come indicato dal simbolo # alla fine del prompt dei comandi. I dati del comando di azione sono simili a su , tuttavia:- sudo -s- non cambia la home directory in /root, la home directory rimane la home directory dell'utente che ha chiamato sudo -s che di solito è molto conveniente. - sudo -i- cambierà anche la directory home in /root.
Per tornare alla normale modalità utente, digita exit o premi semplicemente Ctrl + D .
Sbloccare account root comporta rischi ingiustificati (lavorando come root tutto il tempo hai 100.500 modi per "spararti ai piedi") e rende anche più facile per un utente malintenzionato ottenere l'accesso al tuo computer.
Per accedere come root, basta impostare una password per esso:
sudo passwd radice
Quindi, nella schermata di accesso, fai clic su Altro... e inserisci il nome utente (root) e la password che hai impostato.
Dalla versione 11.10, è stato installato il gestore degli accessi lightdm e la gestione degli accessi root è un po' più complicata.
1. Impostare la password di root. Digita nel terminale:
sudo passwd radice
2. Attiva la voce "Inserisci il tuo login". Digita nel terminale:
Gksu gedit /etc/lightdm/lightdm.conf
Alla fine del file aggiungi:
Greeter-show-manual-login=true
3. Riavvia lightdm. Digita nel terminale:
sudo service lightdm riavvio
Ecco fatto, nella schermata di login comparirà la voce "Login". Nel campo login, inserisci "root", nel campo password - la password che abbiamo impostato nella prima fase.
Per bloccare nuovamente l'account root, dovrai annullare le modifiche nelle impostazioni di lightdm, nonché bloccare l'account root con il comando nel terminale:
sudo passwd -l radice
sudo consente di consentire o negare agli utenti l'esecuzione di un insieme specifico di programmi. Tutte le impostazioni relative ai diritti di accesso sono memorizzate in un file /etc/sudoers. Questo non è un file ordinario. Per modificarlo necessario(per motivi di sicurezza) utilizzare il comando
sudo visudo
Per impostazione predefinita, dice che tutti i membri del gruppo admin avere pieno accesso a sudo , come indicato dalla riga
%admin TUTTI=(TUTTI) TUTTI
Puoi leggere ulteriori informazioni sulla sintassi e sulle opzioni di personalizzazione per questo file eseguendo
Uomo sudoer
Se commetti un errore durante la modifica di questo file, è del tutto possibile che perderai completamente l'accesso alle funzioni amministrative. Se ciò accade, è necessario eseguire l'avvio in modalità di recupero e otterrai automaticamente i diritti di amministratore e sarai in grado di sistemare tutto. Inoltre, puoi modificare questo file dal LiveCD.
Affinché il sistema non richieda una password con determinati comandi, è necessario in sudoers dopo la riga # Specifica dell'alias Cmnd aggiungi una riga dove, separati da virgole, elenca i comandi desiderati con il percorso completo (il percorso del comando può essere trovato eseguendo quale nomecomando:
# Specifica alias Cmnd Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot
E aggiungi la riga alla fine del file
Nome utente ALL=(TUTTI) NOPASSWD: SHUTDOWN_CMDS
Attenzione! I passaggi precedenti non cambiano la necessità di inserire il comando sudo prima del comando
Per non solo non inserire una password per sudo, ma anche per non inserire affatto sudo, procedi come segue: apri il file .bashrc che si trova nella tua home directory
nano ~/bashrce aggiungi le righe alla fine del file
alias reboot ="sudo reboot" alias poweroff ="sudo poweroff" alias pm-hibernate="sudo pm-hibernate" alias hibernate ="sudo pm-hibernate" alias shutdown ="sudo shutdown"Forse vuoi cambiare la quantità di tempo in cui sudo viene eseguito senza inserire una password. Questo può essere facilmente ottenuto aggiungendo qualcosa di simile a /etc/sudoers (visudo):
Predefiniti: foo timestamp_timeout=20
Qui sudo per l'utente pippo valido senza la necessità di inserire una password per 20 minuti. Se vuoi che sudo richieda sempre una password, imposta timestamp_timeout su 0.
sudo senza password è un mostruoso buco di sicurezza, chiunque può fare qualsiasi cosa. Se l'hai permesso apposta, restituiscilo urgentemente com'era.
Tuttavia, in alcuni casi, sudo smette improvvisamente di chiedere una password da solo. Se lo fai visudo , puoi vedere qualcosa di simile a questa riga che l'utente non sembra aver aggiunto:
TUTTI TUTTI=(TUTTI) NOPASSWD:TUTTI
Molto probabilmente, questa linea catastrofica è stata aggiunta durante l'installazione di un programma come Connect Manager da MTS o Megafon. In questo caso, deve essere modificato in una riga che consenta l'esecuzione come root solo a questo Connect Manager, qualcosa del genere:
Nome utente ALL= NOPASSWD: /percorso/del/programma
Ci sono altre soluzioni al problema, una piccola discussione.
Come amministratore di Linux, ho sempre utilizzato e sudo, E su. E amministratore di sistemaè molto importante conoscere la differenza tra loro. Per coloro che non hanno una comprensione di base della differenza tra i due, o li confondono sempre, ecco un elenco di 12 domande e risposte (domande e risposte) che mirano ad aiutarti a capire i punti più fini di sudo e su.
NOTA- Questo articolo è specifico solo per Ubuntu. Sebbene alcune delle informazioni possano applicarsi alle distribuzioni più popolari.
Questa serie di domande e risposte dovrebbe chiarire alcune delle specifiche di sudo vs su per molti utenti di Ubuntu.
Q1. Come si usano sudo e su? Qual'è la differenza tra loro?
Risposta.sudo viene utilizzato per eseguire alcuni comandi con il permesso di root. La cosa interessante è che quando usi sudo per un comando specifico, il sistema richiederà la password dell'utente corrente. Dopo aver inserito la password, il comando viene eseguito con privilegi di superutente.
Ecco un esempio:
$ apt-get install skype E: Impossibile aprire il file di blocco /var/lib/dpkg/lock - open (13: Autorizzazione negata) E: Impossibile bloccare la directory di amministrazione (/var/lib/dpkg/), sei root ? $ sudo apt-get install skype password for mylinuxbook: Lettura degli elenchi dei pacchetti... Fatto Creazione dell'albero delle dipendenze Lettura delle informazioni sullo stato... Fatto ... ...
Come puoi vedere, prima ho provato a installare Skype usando il comando apt-get ma ho capito errore di autorizzazione negata. Quindi ho usato sudo insieme allo stesso sistema di comandi e sistema di password per l'utente mylinuxbook. Dopo aver inserito la password corretta, il comando è stato completato correttamente.
D'altra parte, su viene utilizzato per cambiare qualsiasi utente. Impostare la password l'utente corrispondente è abilitato. Se su viene utilizzato senza opzioni, passa all'account utente root. In questo caso, il sistema richiede la password del superutente.
Ecco un esempio:
$ su mylinuxbook Password: [e-mail protetta]:~$
Nell'esempio sopra, ho usato su per passare all'account utente mylinuxbook e dopo aver inserito la password per mylinuxbook, sono stato in grado di farlo.
Ecco un altro esempio:
$ su Password: su: Errore di autenticazione
Nell'esempio sopra, ho fatto causa per eseguire il root dell'account all'utente normale, ma non ha potuto perché non avevo configurato la password di root. Le distribuzioni come Ubuntu non hanno password di root configurate per impostazione predefinita. Una volta configurato, puoi utilizzare questa password.
D2. Cosa succede se non voglio impostare una password di amministratore sul mio Ubuntu ma voglio comunque passare a superutente?
Risposta. In questo caso, puoi provare il comando " sudo su". Ecco un esempio:
$ sudo su password per mylinuxbook: [e-mail protetta]:/home/libromiolinux#
Una volta che sudo è stato utilizzato per avviare su, il sistema richiede la password dell'utente corrente, non la password del superutente. Non appena questo è stato inserito, il conto corrente è stato trasferito sul conto.
D3. Cosa succede se voglio utilizzare su per navigare verso altri account utente ma non voglio ricordare ogni singola password utente?
Risposta. Bene, in tal caso, usa semplicemente il comando su, inserisci la password dell'amministratore e passa all'account. Da qui, utilizzando su, puoi passare a qualsiasi account utente senza utilizzare password.
D4. Se sudo viene utilizzato per fare qualcosa con i privilegi di superutente, allora perché è necessaria la password dell'utente corrente e non la password del superutente?
Risposta. Bene, non è proprio che qualsiasi utente normale possa eseguire sudo ed eseguire comandi che richiedono privilegi di superutente. Tu, come utente, devi esserlo sudoer Stesso. Ciò significa che devi disporre dei privilegi per utilizzare sudo. Se sei un sudoer valido, il sistema richiede solo una password per assicurarti di capire che stai facendo un lavoro che richiede i privilegi di root e dovresti ricontrollare tutto prima di farlo effettivamente.
Ora arriva la questione dei sudoers. Come diventare un utente sudoer? Un utente può diventare un sudoer se viene aggiunto al gruppo sudo. Ecco un esempio:
$ sudo adduser
Basta sostituirlo con il nome utente effettivo dell'account. Si noti che in precedenza (prima di Ubuntu 12.04) il gruppo doveva essere chiamato admin ma questo non è richiesto ora.
Puoi usare il comando " gruppo" per controllare tutti i gruppi che hanno questo utente. Ecco un esempio:
$ gruppi mylinuxbook mylinuxbook: mylinuxbook adm cdrom sudo dip plugdev lpadmin sambashare
Quindi vedi che l'utente " mylinuxbook" è un membro di tutti questi gruppi, inclusi i gruppi sudo, e quindi sudoer.
Q5. Ho notato che non appena ho usato sudo, i miei diritti di root persistono a lungo, anche se dopo un po' tutto torna alla normalità. Cos'è questo?
Risposta. Ubuntu ricorda la password per sudo per circa 15 minuti. Ciò significa che una volta che hai usato sudo per eseguire un comando, il sistema non ti chiederà una password se esegui altri comandi che richiedono privilegi di superutente per essere eseguiti. Anche se dovrai usare " sudo prima di ogni comando.
D6. Quali sono i vantaggi di sudo rispetto a su?
Risposta. Sudo ha molti vantaggi rispetto a su.
Ecco l'elenco:
Q7. Qualsiasi utente può eseguire operazioni sudo?
Risposta. No, solo gli utenti fidati o i sudoer possono eseguire operazioni sudo. Ecco la pagina ufficiale che descrive come e cosa può fare un utente sudoer.
D8. sono interessato a su. Come posso personalizzare l'uso di su in modo da ottenere funzionalità simili a suda?
Risposta. Se stai eseguendo su, significa che hai già impostato la password di root. Per ottenere funzionalità simili a sudo, ad es. per eseguire un solo comando con privilegi di root utilizzando su, è sufficiente utilizzare l'opzione -C dal comando su.
Ecco un esempio:
$ su -c "apt-get install skype" Password:
Basta inserire la password e solo questo comando funzionerà con i privilegi di superutente. Sebbene sia uguale a sudo, l'unica differenza è che devi inserire la password di root invece della password dell'utente corrente.
D9. io lavoro con sudo. Come posso modificare l'uso di sudo per ottenere la stessa funzionalità di su?
Risposta. Per ottenere la funzionalità su tramite sudo, provare l'opzione -io comandi sudo.
Ecco un esempio:
$ sudo -i password per mylinuxbook: [e-mail protetta]:~#
Lo vedi con " sudo -i", è stata eseguita la transizione all'account root, nonostante la password inserita per l'utente corrente (mylinuxbook in questo caso).
Q10. La password di root del mio account non è ancora stata attivata. Posso usare sudo per abilitare la password del superutente?
Risposta. Per attivare la password per il superutente, puoi usare il comando password nel seguente modo:
$ sudo passwd radice
Questo comando richiede l'accesso come root, quindi dovrai usare sudo.
Q12. Posso utilizzare sudo per concedere autorizzazioni speciali agli utenti?
Risposta. File di configurazione per sudo- /etc/sudoers. Non può essere modificato manualmente con un editor. A tale scopo si consiglia di utilizzare il comando visudo.
Ecco il comando esatto:
$sudo visudo
e questo è ciò che ottieni:
Questo comando aprirà un file /etc/sudoers.tmp temporaneo nell'editor nano per la modifica. Visudo si assicura che non ci siano conflitti quando vengono modificate più istanze dello stesso file.
Per capire come concedere diritti limitati, comprendere la progettazione di questo file di configurazione, .