Come posso eseguire un comando come amministratore di sistema (root)


66

Devo eseguire un comando con privilegi di amministratore. Qualcuno ha detto che dovrei eseguire un comando come root. Come faccio a fare questo?


2
si prega di consultare la meta discussione su questa domanda
Stefan,

Risposte:


94

Le due principali possibilità da riga di comando sono:

  • Utilizzare sue immettere la password di root quando richiesto.
  • Metti sudodavanti al comando e inserisci la tua password quando richiesto.

Esecuzione di un comando shell come root

sudo (preferito quando non si esegue una visualizzazione grafica)

Questo è il metodo preferito sulla maggior parte dei sistemi, inclusi Ubuntu, Linux Mint, (probabilmente) Debian e altri. Se non si conosce una password di root separata, utilizzare questo metodo.

Sudo richiede di digitare la propria password. (Lo scopo è limitare il danno se si lascia la tastiera incustodita e sbloccata, e anche per assicurarsi che si desideri davvero eseguire quel comando e che non fosse un errore di battitura.) È spesso configurato per non chiedere più minuti in modo da poter eseguire diversi sudocomandi in successione.

Esempio:

sudo service apache restart

Se è necessario eseguire diversi comandi come root, aggiungere un prefisso a ciascuno di essi sudo. A volte, è più conveniente eseguire una shell interattiva come root. Puoi usare sudo -iper quello:

$ sudo -i
# command 1
# command 2
...
# exit

Invece di sudo -i, puoi usare sudo -s. La differenza è che -iri i nitializes l'ambiente di default sensati, mentre -susa i file di configurazione per il meglio o per il peggio.

Per ulteriori informazioni, consultare il sito Web sudo o digitare man sudosul sistema. Sudo è molto configurabile; ad esempio, può essere configurato per consentire a un determinato utente di eseguire solo determinati comandi come root. Leggi la sudoerspagina man per maggiori informazioni; usare sudo visudoper modificare il file sudoers.

su

Il sucomando esiste sulla maggior parte dei sistemi unix-like. Ti consente di eseguire un comando come un altro utente, a condizione che tu conosca la password dell'utente. Se eseguito senza l'utente specificato, suverrà impostato automaticamente sull'account di root.

Esempio:

su -c 'service apache restart'

Il comando da eseguire deve essere passato utilizzando l' -copzione. Si noti che sono necessarie le virgolette in modo che il comando non venga analizzato dalla shell, ma passato intatto alla shell radice in suesecuzione.

Per eseguire più comandi come root, è più conveniente avviare una shell interattiva.

$ su
# command 1
# command 2
...
# exit

Su alcuni sistemi, devi essere nel gruppo numero 0 (chiamato wheel) per usare su. (Il punto è limitare il danno se la password di root viene accidentalmente trapelata a qualcuno.)

Accesso come root

Se è stata impostata una password di root e ne sei in possesso, puoi semplicemente digitare rootal prompt di accesso e inserire la password di root. Fai molta attenzione ed evita di eseguire applicazioni complesse come root in quanto potrebbero fare qualcosa che non volevi. Accedere direttamente come root è utile soprattutto in situazioni di emergenza, come guasti del disco o quando ti sei bloccato fuori dal tuo account.

Modalità utente singolo

La modalità utente singolo o livello di esecuzione 1 offre anche privilegi di root. Ciò è destinato principalmente a situazioni di manutenzione di emergenza in cui non è possibile eseguire l'avvio in un livello di esecuzione multiutente. È possibile avviare in modalità utente singolo passando singleo emergencydalla riga di comando del kernel. Si noti che l'avvio in modalità utente singolo non equivale all'avvio normale del sistema e all'accesso come root. Piuttosto, il sistema avvierà solo i servizi definiti per il livello di esecuzione 1. In genere, si tratta del numero più piccolo di servizi richiesti per disporre di un sistema utilizzabile.

Si può anche arrivare a modalità utente singolo utilizzando il comando telinit: telinit 1; tuttavia, questo comando richiede di avere già ottenuto i privilegi di root tramite qualche altro metodo per essere eseguito.

In molti sistemi l'avvio in modalità utente singolo consentirà all'utente di accedere a una shell di root senza richiedere una password. In particolare, systemdquando si avvia in questo modo , i sistemi basati su di esso richiederanno la password di root.

Altri programmi

Calife

Calife ti consente di eseguire comandi come un altro utente digitando la tua password, se autorizzata. È simile al sudo molto più diffuso (vedi sopra). Calife è più leggero del sudo ma anche meno configurabile.

Operazione

Op ti consente di eseguire comandi come un altro utente, incluso root. Questo non è uno strumento completo per eseguire comandi arbitrari: si digita opseguito da un mnemonico configurato dall'amministratore di sistema per eseguire un comando specifico.

Super

Super ti consente di eseguire comandi come un altro utente, incluso root. Il comando deve essere stato autorizzato dall'amministratore di sistema.

Esecuzione di un comando grafico come root

Vedi anche Wikipedia .

PolicyKit (preferito quando si utilizza GNOME)

È sufficiente aggiungere il comando desiderato al comando desiderato pkexec. Tieni presente che mentre funziona nella maggior parte dei casi, non funziona universalmente.

Vedi man pkexecper maggiori informazioni.

KdeSu, KdeSudo (preferito quando si utilizza KDE)

kdesue kdesudosono front-end grafici rispettivamente a sue sudo. Ti consentono di eseguire i programmi X Window come root senza problemi. Fanno parte di KDE . genere

kdesu -c 'command --option argument'

e inserisci la password di root o digita

kdesudo -c 'command --option argument'

e inserisci la tua password (se autorizzata all'esecuzione sudo). Se selezioni l'opzione "Mantieni password" in KdeSu, dovrai digitare la password di root solo una volta per sessione di accesso.

Altri programmi

Ktsuss

Ktsuss ("keep the su simple, stupid") è una versione grafica di su.

Beesu

Beesu è un front-end grafico al comando su che ha sostituito Gksu nei sistemi operativi basati su Red Hat. È stato sviluppato principalmente per RHEL e Fedora.

Metodi obsoleti

gksu e gksudo

gksue gksudosono front-end grafici rispettivamente a sue sudo. Ti consentono di eseguire i programmi X Window come root senza problemi. Fanno parte di Gnome . genere

gksu command --option argument

e inserisci la password di root o digita

gksudo command --option argument

e inserisci la tua password (se autorizzata all'esecuzione sudo).

gksue gksudosono obsoleti. Sono stati sostituiti da PolicyKit in GNOME e molte distribuzioni (come Ubuntu) non le installano più per impostazione predefinita. Non dovresti dipendere dal fatto che siano disponibili o funzionino correttamente.

Manualmente tramite uno dei metodi basati su shell

Utilizzare uno dei metodi nella "esecuzione di un comando shell come sezione radice". Dovrai assicurarti che né la DISPLAYvariabile di ambiente né l' XAUTHORITYambiente vengano ripristinati durante la transizione a root. Ciò potrebbe richiedere una configurazione aggiuntiva di quei metodi che non rientrano nell'ambito di questa domanda.

Nel complesso, questa è una cattiva idea, soprattutto perché le applicazioni grafiche leggeranno e scriveranno i file di configurazione come root e quando si tenta di riutilizzare quelle applicazioni come normali utenti, tali applicazioni non avranno l'autorizzazione a leggere le proprie configurazioni.

Modifica di un file come root

Vedi Come posso modificare un file come root?


2
Va notato che sudofunzionerà solo se (1) è installato e (2) se il tuo uso è nel file sudoers e ha permesso di eseguire l'operazione.
n0pe

2
questo deve essere aggiornato. pkexecsta sostituendo gksu/ gksudoin molte distribuzioni al giorno d'oggi.
strugee,

1
@strugee - hai intenzione di provare ad aggiornare questo? Neanche i contenuti di Redhat sono corretti.
slm

8

Utilizzare su:

$ su -c command

o

$ su
# command
# exit

In entrambi i casi, ti verrà richiesta la rootpassword. Per ulteriori informazioni, consultare la pagina del manuale .


3

Poiché la domanda non era specifica di Linux, ecco come raggiungere lo stesso obiettivo in Solaris 9+ (o Trusted Solaris 8):

Solaris, dalla versione 9, include una suite di strumenti affettuosamente denominati RBAC, o controllo degli accessi in base al ruolo.

L'essenza di RBAC è che attraverso la concessione di autorizzazioni e diritti, agli utenti e / o al ruolo, o la concessione di ruoli agli utenti, è possibile creare modelli incredibilmente dettagliati per chi può eseguire ciò con quali privilegi.

In sostanza, identifichi l'autorizzazione in / etc / security / auth_attr, quindi li concedi agli utenti o ai ruoli in / etc / user_attr.

I profili vengono definiti in / etc / security / prof_attr. Quindi si associano i comandi a tali profili in / etc / security / exec_attr, seguito dall'assegnazione di tali profili agli utenti nel file / etc / user_attr.

Una volta che queste cose sono fatte, si esegue effettivamente pfexec <command>eseguire il comando con privilegiati o autorizzazioni che vengono concesse a quella dell'utente per quel comando.

La cosa bella di RBAC è che non ci sono privilegi aggiuntivi concessi al comando stesso, o all'utente, solo alla combinazione di utente + comando. Quindi è più sicuro che fare un binario + s, o semplicemente usare sudo per rendere un utente in grado di eseguire praticamente qualsiasi cosa. (So ​​che puoi bloccare sudo, ma nella mia esperienza la maggior parte delle persone non lo fa)

Un altro vantaggio di RBAC è che puoi rendere root un account di ruolo e assegnare quel ruolo agli utenti che sono in grado di diventare root con il comando 'su' e la password di root. L'utente root sarà anche in grado di accedere in modalità utente singolo, che è migliore (a mio avviso) rispetto al modello Linux in cui è possibile disabilitare la password di root passwd -d rooto bloccare l'account di root passwd -l root, entrambi i quali rendono l'accesso come root abbastanza difficile quando qualcosa va storto.

Ben Rockwood ha un ottimo post sul blog su RBAC che può essere letto su Uso di RBAC su (Apri) Solaris .


3

Oppure puoi dare ad alcuni comandi una superpotenza. Sto parlando di autorizzazioni speciali in cui i comandi vengono eseguiti con l'autorizzazione del proprietario.

Ottieni il percorso del comando #which <command>e imposta SUID o SGID per quel percorso.

PS - I bit SUID e SGID devono essere dati con cura. Possono rendere insicuro il tuo sistema.

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.