Finestre.  Virus.  I Quaderni.  Internet.  ufficio.  Utilità.  Autisti

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ù:

  • per impostazione predefinita, sudo scrive tutte le attività dell'utente nel canale authpriv syslog (di norma, il risultato viene inserito nel file /var/log/auth.log) e una funzionalità simile deve essere inclusa in su impostando un parametro speciale in il file delle impostazioni, che differisce da distribuzione a distribuzione (SULOG_FILE in /etc/login.defs in ubuntu linux, /etc/login.conf e /etc/pam.d/su su FreeBSD, ecc.)
  • nel caso di su, l'amministratore di sistema non può limitare i comandi che gli utenti possono eseguire, ma nel caso di sudo può
  • se l'utente dovesse essere privato dei diritti amministrativi, nel caso di su, dopo averlo rimosso dal gruppo wheel, deve dimenticare la password di root; se si usa sudo, è sufficiente rimuoverlo dal gruppo appropriato (ad esempio, wheel o admin) e/o file sudoers se è stato configurato in aggiunta.
D: Sono l'unico utente sul mio sistema e sono abituato a su, perché ho bisogno di sudo?
A: Risponderò alla domanda con una domanda: se c'è un sudo corretto, perché usare il deprecato su?

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 un utente può ottenere i diritti di amministratore tramite il comando sudo e
  • Può eseguire tutte le azioni amministrative attraverso di essa?

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.

Come funziona Sudo?

Prima di passare alla configurazione dell'accesso all'utilità sudo, diamo un'occhiata a come funziona. Su Linux, ci sono due modi per ottenere i diritti di amministratore. Puoi passare all'utente root con il comando su, oppure puoi passare il comando desiderato come parametro all'utility sudo, che lo eseguirà con diritti di amministratore. Inoltre, è preferibile il secondo metodo, perché non dimenticherai che stai utilizzando i diritti di root e non farai nulla in più.
Il nome del comando significa utente sostitutivo fare O super utente fare. L'utilità consente di eseguire programmi per conto di un altro utente, ma molto spesso per conto del root. L'utilità è stata sviluppata nel 1980 da Bob Cogshell e Cliff Spencer. Durante questo periodo, molti sviluppatori sono cambiati e sono state aggiunte molte funzionalità.
sudo funziona grazie al flag di accesso SUID. Se questo flag è impostato per il programma, allora non viene eseguito per conto dell'utente che lo ha avviato, ma per conto del proprietario, dato che il file sudo appartiene, quindi l'utilità viene eseguita come root. Quindi legge le sue impostazioni, chiede la password dell'utente e decide se può essere autorizzato a eseguire comandi come amministratore. Se sì, viene eseguito il comando passato nel parametro.
Ora che conosci la teoria, diamo un'occhiata a come impostare sudo su Linux.

Configurazione di sudo su Linux

Tutte le impostazioni sudo si trovano in /etc/sudores. Qui puoi configurare molti parametri, a partire da chi sarà autorizzato a eseguire comandi per conto del superutente e finendo con la limitazione del set di comandi disponibili.
Per aprire un file per la modifica, digita il seguente comando come superutente:

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 principali

L'alias Defaults consente di impostare parametri standard per il funzionamento dell'utilità e li considereremo in questa sezione. Tale alias inizia con la parola Defaults, seguita dal nome del flag. Se c'è un simbolo ! prima del nome, significa che il flag deve essere attivato, altrimenti disattivato:
Disabilita l'introduzione al primo utilizzo:

Impostazioni predefinite !lecture


Il superutente non può sudo:

Predefiniti !root_sudo



Ora se provi a sudo sudo non funzionerà nulla:


Cambia la home directory per l'utente di destinazione, per impostazione predefinita la cartella dell'utente corrente come home directory:

Predefinito set_home



Salva l'elenco dei gruppi dell'utente corrente:

Predefiniti !preserve_groups



Richiedi la password del superutente invece della password dell'utente:



Successivamente, considera le variabili che possono essere impostate sui valori per impostare le impostazioni desiderate:
Imposta il numero di tentativi di password prima che sudo esca, il valore predefinito è 3:

default passwd_tries=5





Il numero di minuti che trascorreranno prima che sudo chieda nuovamente una password, il valore predefinito è 5. Se impostato su 0, la password verrà sempre richiesta, indipendentemente da quanto tempo fa hai utilizzato l'utilità:

Predefinito timestamp_timeout=10



Il seguente parametro specifica il numero di minuti che sudo attenderà per il reinserimento della password se inserita in modo errato:

default passwd_timeout=10



È possibile modificare il messaggio che verrà visualizzato quando viene richiesta una password:

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



Quindi proviamo a verificare il funzionamento del log:

$ sudo cat /var/log/sudo



Queste sono state tutte le opzioni di configurazione sudo più interessanti di cui potresti aver bisogno, ora vedremo come impostare le autorizzazioni sudo per gli utenti.

Configurazione degli utenti sudo

Abbiamo già discusso sopra della sintassi per l'impostazione delle azioni per gli utenti, qui tutto è più complicato che con gli alias, ma puoi capirlo. Ad esempio, consentiamo a qualsiasi utente di utilizzare sudo, da qualsiasi host, ed eseguire qualsiasi comando:

TUTTI TUTTI = (TUTTI) TUTTI



Tale comando è molto insicuro, consente a tutti ea tutto. Il primo è ALL per consentire a tutti gli utenti, il secondo è ALL per tutti gli host, il terzo è ALL per consentire l'accesso come qualsiasi utente e il quarto è per consentire l'esecuzione di qualsiasi comando. Ma molto più spesso viene utilizzata un'altra costruzione:

%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



Ciò significa che puoi eseguire il comando come root o un altro utente del gruppo admins. Possiamo anche specificare i comandi che l'utente può eseguire. Per esempio:
  • Runas_Alias- alias degli utenti per conto dei quali verranno eseguiti i comandi;
  • alias_host- alias host;
  • Cmnd_Alias- alias di comando;
  • Ad esempio, creiamo quattro alias e applichiamoli alla nostra regola:

    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.

    conclusioni

    In questo articolo, abbiamo esaminato come sudo è configurato su Linux. Come puoi vedere, anche se è molto semplice utilità, nasconde molte impostazioni utili che puoi utilizzare nel tuo sistema. Se hai domande, chiedi nei commenti!

    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.

    Cos'è Sudo

    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.

    Dove si usa 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.

    Esecuzione di programmi di grafica 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.

    Esecuzione di programmi con diritti di amministratore nel terminale

    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.

    Ottenere i diritti di superutente per eseguire più comandi

    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 .

    Usando il tradizionale account root e il comando su

    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.

    Ubuntu 11.04 e versioni precedenti

    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.

    Ubuntu 11.10 e precedenti

    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

    Impostazione di sudo e autorizzazioni per eseguire vari comandi

    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.

    Consentire a un utente di eseguire un comando senza immettere una password

    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

    Creare sinonimi (alias)

    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 ~/bashrc

    e 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"

    Tempo di validità della password inserita

    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 non richiede la password

    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.

    sudo contro su

    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 sudo

    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:

  • Sudo si assicura che i privilegi esistano per un comando specifico (o per un periodo di tempo specifico) e non per l'intera sessione, poiché ciò può portare ad un abuso accidentale dei privilegi di superutente.
  • Puoi usare sudo per limitare le autorizzazioni degli utenti. Ciò è utile quando non si desidera che l'utente abbia il controllo su tutti i diritti di superutente durante l'esecuzione di suda.
  • Esiste un file di registro (auth.log) che viene mantenuto per ogni sudoer. Questo file contiene informazioni sui comandi che sono stati eseguiti utilizzando sudo, il loro tempo di esecuzione. Questo aiuta l'amministratore a tenere traccia anche degli utenti fidati (sudoer).
  • Il vantaggio più importante è che suda richiede la propria password utente anziché la password del superutente per accedere a suda. Questo aiuta a mantenere privata la password di root e non è necessario cambiarla anche quando l'utente (sudoer) se ne va.
  • 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, .

    Se noti un errore, seleziona una parte di testo e premi Ctrl + Invio
    CONDIVIDERE: