GNU/Linux >> Linux Esercitazione >  >> Linux

Differenza tra utente Sudo e utente root?

Chiuso . Questa domanda ha bisogno di dettagli o chiarezza. Attualmente non accetta risposte.

Vuoi migliorare questa domanda? Aggiungi dettagli e chiarisci il problema modificando questo post.

Chiuso 4 anni fa.


Migliora questa domanda

Il /etc/sudoers elenca i file che gli utenti possono fare cosa con sudo comando

L'utente root crea e modifica il /etc/sudoers file.

Questo concetto è difficile da capire per me.

Se tutti gli utenti con privilegio sudo appartengono a sudoers gruppo, quindi tutti possono diventare root dando il sudo su comando.

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

Per favore, spiegamelo.

Risposta accettata:

Riepilogo esecutivo:"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 poco importa.

L'utente root ha 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 volevi eseguire attività amministrative, dovevi accedere come root, ricevendo in qualche modo un prompt di accesso² o con il su comando ("su" è l'abbreviazione di utente sostitutivo.)³

È un po 'una seccatura e inoltre non ti consente di concedere agli utenti poteri amministrativi parziali. Così è stato inventato il comando “sudo” (abbreviazione di “substitute user 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 es. sudo vi /etc/hosts ti consentirebbe di modificare il file hosts come se stessi eseguendo come root. Non hai nemmeno bisogno della password di root, solo la tua password di accesso.

E, naturalmente, sudo su ti permetterebbe di diventare semplicemente root. Il risultato è lo stesso come se avessi effettuato l'accesso come root o eseguito su comando, tranne per il fatto che non è necessario conoscere la password di root ma è necessario essere nel file sudoers.

Il file sudoers determina chi può usare il comando sudo e cosa possono fare con esso.

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

In effetti, nelle organizzazioni in cui qualcun altro amministra il tuo computer per te, è abbastanza comune non conoscere la password di root del tuo computer, finché sei nel file sudoers, non importa.

In un'azienda per cui ho lavorato, con un'enorme server farm, solo un numero molto, 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 rimuoverebbe alla scadenza della tua autorizzazione.

Correlati:Escape caratteri sconosciuti dalla stringa per -exec?

¹ Un'altra cosa:le versioni moderne di 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 queste restrizioni.

Con il sistema SIP (System Integrity Protection) di Apple (noto anche come "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 ad ottenere l'accesso come root. (O, in alcuni casi, per impedire agli utenti di eseguire il jailbreak dei loro dispositivi incorporati.) Per ovvi motivi, è estremamente difficile aggirare queste restrizioni, anche con l'accesso come root.

² Il prompt "login:" è un altro pezzo arcaico della storia di Unix, che risale a quando tutti usavamo terminali ascii su linee seriali, invece di sistemi a finestre. Puoi comunque ricevere un messaggio di "accesso:" semplicemente digitando login in qualsiasi finestra del terminale o aprendo una connessione ssh (o telnet o rsh) al tuo computer da altrove. Puoi accedere come un altro utente da lì, se lo desideri. (E se il tuo computer dispone di porte seriali, puoi comunque configurarlo per consentirne l'accesso.)

³ È anche possibile concedere l'accesso root ai singoli programmi. Questi programmi possono fare qualsiasi cosa possa fare un utente con accesso root, anche se eseguiti da un utente normale. 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 sorvolato in precedenza. Ho usato "amministratore" e "root" 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 nel sistema. Se dai un'occhiata a /etc/passwd file 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 del database, i file di configurazione e così via sarebbero tutti di proprietà di quell'utente. Solo quell'utente (e root, ovviamente) avrebbe i permessi necessari per accedere ai file ed eseguire il server mysql. In un certo senso, quell'utente sarebbe un account amministratore, ma solo per mysql.

Se dovessi eseguire attività di amministrazione del database, diventeresti "mysql" con su mysql comando o usa sudo dove il file sudoers ti darebbe i privilegi mysql per quei comandi specifici.


Linux
  1. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  2. La differenza tra account utente e account di servizio?

  3. Linux:differenza tra spazio utente e spazio kernel?

  4. Differenza tra $HOME e '~' (tilde)?

  5. differenza tra cgroup e namespace

La differenza tra sudo e su spiegata

Comprendere la differenza tra il comando sudo e su su Linux

Differenza tra proprietario/root e Ruid/euid?

Differenza tra Snat e Masquerade?

La differenza tra Update-grub e Update-grub2?

Qual è la differenza tra spazio utente e spazio kernel?