Differenza tra utente sudo e utente root [chiuso]


21

Il /etc/sudoersfile elenca quali utenti possono fare cosa con il sudocomando

L'utente root crea e modifica il /etc/sudoersfile.

Questo concetto è difficile per me da capire.

Se tutti gli utenti che hanno il privilegio di sudo appartengono al sudoersgruppo, tutti possono diventare root dando il sudo sucomando.

Quindi chi è l'utente root effettivo e come controlla i poteri degli utenti nel gruppo sudoers?

Per favore spiegamelo.


4
Penso che sia necessario espandere su quale parte è difficile da capire.
garethTheRed,

chi è l'utente root? Questa domanda è difficile per me da capire. Perché gli utenti humn possono far parte del gruppo sudoers
rancho,

@rancho aggiorna la domanda, per favore
peterph


Risposta semplice alla domanda sottostante (basata sui commenti sulla risposta): è vero che la differenza tra rootaccesso e sudodiritti diventa irrilevante se si consente sudo sul'esecuzione. Tuttavia, non devi permetterlo. È possibile consentire solo un set specifico di comandi, ad es. Dare l' sudoaccesso al proprio amministratore di sistema junior solo per comandi di backup specifici.
Wildcard il

Risposte:


29

Riepilogo: "root" è il nome effettivo dell'account amministratore. "sudo" è un comando che consente agli utenti ordinari di eseguire attività amministrative. "Sudo" non è un utente.


Risposta lunga:

"root" (aka "superutente") è il nome dell'account dell'amministratore di sistema. Le origini del nome sono un po 'arcaiche, ma non importa.

L'utente root ha l'id utente 0 e nominalmente ha privilegi illimitati. Il root può accedere a qualsiasi file, eseguire qualsiasi programma, eseguire qualsiasi chiamata di sistema e modificare qualsiasi impostazione. (Ma vedi sotto¹).

Prima dell'invenzione del comando "sudo", se si desidera eseguire attività amministrative, è necessario accedere come root, ottenendo in qualche modo un prompt di accesso² oppure con il sucomando ("su" è l'abbreviazione di un utente sostitutivo.) ³

È un po 'una seccatura e non ti consente di conferire agli utenti poteri amministrativi parziali. Quindi è stato inventato il comando "sudo" (abbreviazione di "utente sostitutivo do").

Il comando "sudo" ti consente di eseguire comandi con privilegi di superutente purché il tuo ID utente sia nel file sudoers, dandoti l'autorizzazione necessaria.

Quindi, ad esempio, sudo vi /etc/hoststi permetterebbe di modificare il file hosts come se fossi in esecuzione come root. Non hai nemmeno bisogno della password di root, ma solo della tua password di accesso.

E, naturalmente, sudo suti permetterebbe semplicemente di diventare root. Il risultato è lo stesso di se si fosse effettuato l'accesso come root o se fosse stato eseguito il sucomando, tranne per il fatto che non è necessario conoscere la password di root ma è necessario trovarsi nel file sudoers.

Il file sudoers determina chi può usare il comando sudo e cosa può farci.

Il file sudoers è ciò che ti dà più amministratori⁴. In effetti, i tuoi amministratori sono root, oltre a tutti quelli elencati nel file sudoers. Senza il file sudoers, l'unico amministratore è root.

Infatti, nelle organizzazioni in cui qualcun altro gestisce il tuo computer per te, è abbastanza comune non conoscere la password di root del tuo computer - fintanto che sei nel file sudoers, non importa.

In un'azienda per cui ho lavorato, con una server farm enorme, solo un numero molto piccolo di persone conosceva le password di root. Invece, c'era un database di chi era autorizzato a lavorare su quali server. Un processo automatizzato ti aggiungerebbe ai file sudoers di quei server a cui eri autorizzato ad accedere e ti rimuoverà alla scadenza dell'autorizzazione.


¹ Ancora una cosa: le moderne versioni Unix ora possono limitare anche ciò che l'utente root può fare.

Sotto SELinux (Security Enhanced Linux), esiste effettivamente un elenco di controllo degli accessi che determina quale programma può fare cosa, e anche il root non può superare quelle restrizioni.

Con il sistema SIP ( System Integrity Protection ) di Apple (aka "rootless"), alcuni file e directory sono bloccati in modo che solo le applicazioni nella whitelist appropriata possano accedervi.

Questi sistemi esistono per proteggere un sistema dal caso in cui un utente malintenzionato riesca a ottenere l'accesso come root. (O in alcuni casi, per impedire agli utenti di eseguire il jailbreak dei loro dispositivi incorporati.) Per ovvie ragioni, è estremamente difficile aggirare queste restrizioni, anche con l'accesso root.

² Il prompt "login:" è un altro pezzo arcaico della storia di Unix, che risale a quando usavamo tutti i terminali ASCII su linee seriali, anziché i sistemi di finestre. È ancora possibile ottenere un prompt "login:" digitando semplicemente loginin qualsiasi finestra del terminale o aprendo una connessione ssh (o telnet o rsh) al computer da qualsiasi altra parte. Se lo desideri, puoi accedere come un altro utente da lì. (E se il tuo computer ha porte seriali, puoi comunque configurarlo per consentire l'accesso su di esse.)

³ È anche possibile ottenere l'accesso come root ai singoli programmi. Questi programmi possono fare tutto ciò che un utente con accesso root può fare, anche se eseguito da un normale utente. Questi sono in genere limitati a compiti specifici. Ad esempio, il programma crontab ha i privilegi di root in modo che possa modificare le tabelle cron. Ovviamente, "sudo" ha i privilegi di root in modo che possa fare quello che fa.

⁴ Tratterò un altro punto che ho precedentemente trattato. Ho usato "amministratore" e "radice" in modo intercambiabile, ma ci sono altri tipi di amministratori. Questi sono spesso chiamati "account di ruolo", vale a dire che questi account non appartengono a esseri umani reali, ma esistono invece per svolgere un ruolo specifico sul sistema. Se dai un'occhiata al /etc/passwdfile sul tuo sistema, troverai dozzine e dozzine di tali account.

Ad esempio, se mysql fosse installato sul tuo sistema, ci sarebbe un utente "mysql" e tutti i file di database, i file di configurazione e così via sarebbero tutti di proprietà di quell'utente. Solo quell'utente avrebbe le autorizzazioni necessarie per accedere ai file ed eseguire il server mysql. In un certo senso, quell'utente sarebbe un account amministratore, ma solo per mysql.

Se fosse necessario eseguire attività amministrative del database, si diventerebbe "mysql" con il su mysqlcomando o si userebbe sudodove il file sudoers ti darebbe privilegi mysql per quei comandi specifici.


1
Il file sudoers è ciò che ti più amministratori. In effetti, i tuoi amministratori sono root, oltre a tutti quelli elencati nel file sudoers. Senza il file sudoers, l'unico amministratore è root.
Edward Falk,

1
"Sotto SELinux (Security Enhanced Linux), esiste effettivamente un elenco di controllo degli accessi che determina chi può fare cosa, e anche root non può superare queste restrizioni." - se anche il root non riesce a superare quelle restrizioni, allora chi crea quelle restrizioni in primo luogo?
Rancho,

1
Per chiarire questo: "In effetti, i tuoi amministratori sono root, più tutti quelli elencati nel file sudoers." le voci sudoers non devono significare l'accesso completo a livello di root o persino a livello di root; Potrei concedere a Sven la possibilità di riavviare un agent di monitoraggio che funziona come monitor.
Jeff Schaller

1
The "sudo" command lets you execute commands with superuser privileges as long as your user id is in the sudoers file [..]. Sulla mia macchina (Solus OS 3), questo è sbagliato. Il mio nome utente non si trova nel file sudoers. e posso ancora fare sudo.
Martin Andersson,

2
Vecchia risposta e questa è pedanteria, ma suè l'abbreviazione di "utente sostitutivo"; sudoè quindi "utente sostitutivo do". È possibile utilizzare super accedere come un altro utente, non solo root. E puoi usare sudoper eseguire comandi come un altro utente.
josaphatv,
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.