Perché non riesco a eseguire `su`? (e come devo fare?)


33

Ogni volta che provo a emettere suottengo questo:

$ su  
Password:  
su: Sorry

Inutile dire che sto inserendo la password dell'amministratore corretta con cui funziona sudo. Quello che voglio non è dover entrare sudoogni volta.

Risposte:


34

In MacOS X, l'utente root è disabilitato per impostazione predefinita, quindi sunon funzionerà. Come altri hanno già detto, è meglio usare sudo.

Se è necessario abilitare l'utente root, vedere la nota tecnica di Apple: Abilitazione e utilizzando l'utente "root" in Mac OS X .


13
sudo sufunziona ancora, quindi non è davvero disabilitato. Non ha solo password.
Nome falso

@FakeName Questa è la backdoor più esilarante! Se riesci a scappare sudo su, qual è il punto di disabilitazione del mondo suallora?
Kolob Canyon,

3
@KolobCanyon - Il punto non è proprio quello di "disabilitare su", è quello di impedire il login root . Impedendo l'accesso come root, si impediscono numerosi possibili problemi di sicurezza. Non permettere a qualcuno che può sudofarlo suè un po 'sciocco. Fondamentalmente, sucambia solo l'ID utente corrente ed esegue un comando (una shell, se non specificato). Se l'id utente è già 0 (root), come quando eseguito con sudo, non c'è niente da fare, quindi esegue solo la shell. Puoi ottenere un effetto simile facendo sudo bash.
Nome falso

1
@FakeName Ancora confuso. Qual è la differenza tra il login come root e l'esecuzione di 'sudo su'? Non è effettivamente allo stesso livello?
Kolob Canyon,

2
@KolobCanyon - No. Fondamentalmente, se disabiliti l' accesso , significa che se c'è una vulnerabilità nel processo di accesso, un hacker non può usarlo per ottenere il root direttamente. Fondamentalmente, sposta il compromesso di root richiesto da "compromesso login" a "login comprimise per account utente + privesc". Fondamentalmente è fatto come una difesa in profondità.
Nome falso

14

Hai due opzioni. Il primo è usare sudo -s- questo ti darà accesso da superutente, ma rimarrai comunque 'te stesso' (per così dire), quindi cose come ~la tua home directory. In alternativa, puoi usare sudo su, che ti dà una shell come l'utente root effettivo del tuo Mac.


5
Apple Way (tm) è da usare sudoper eseguire comandi che richiedono privilegi elevati, non per passare a una shell di root e lavorare da quello.
Ian C.

3
@Ian C. - No, questo è in realtà il modo unix. Apple lo usa solo perché è basato anche su * nix.
Nome falso

@ Nome falso: Apple fa molta fatica a non parlare o esporre mai la shell di root agli utenti. Si potrebbe dire che portano l' sudoethos all'estremo. Ma qualunque cosa: semantica. Non utilizzare le shell di root in OS X.
Ian C.

1
@Ian C - Apple non fa molto di più dei designer * nix, Apple non ne parla molto. In entrambi i casi, è lì, solo con cose come Linux, ti dicono come usarlo facilmente. Se ciò lo rende più ampiamente utilizzato , non indica una differenza di architettura sottostante.
Nome falso

1

Ad esempio, se hai bisogno di spostare i file o usare git usando la CLI, in quel caso, la soluzione migliore sarà usare il sudo -scomando. Dopo quel comando, non è necessario continuare a inserire la password più e più volte.


1

Penso che non puoi farlo come un utente "normale" ...

Se esiste un altro account utente con diritti di amministratore, è necessario utilizzare questo

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now

1

Soluzione moderna: sudo -u

Per eseguire come un altro uso, utilizzare sudo -u.

Ad esempio, per eseguire un editor di testo come nano :

sudo -u someuser nano

... e inserisci la password dell'utente amministratore Mac quando richiesto. A questo punto, è il tuo utente amministratore Mac che sta invocando sudo, non l' someuserutente, quindi non inserisci la someuserpassword.

  • sudo significa eseguire qualcosa utilizzando i privilegi di superutente.
  • -u significa "eseguire un comando specificato come questo utente specificato".
  • someuser dovrebbe essere sostituito con il nome utente desiderato.

Per simulare un accesso iniziale come un particolare utente, inclusa l'esecuzione degli script di avvio, utilizzare -I.

sudo -u someuser -i nano

Questo esegue l' nanoapp come utente someuserma solo dopo aver eseguito gli script di avvio per quell'utente.

Se decidiamo di non specificare un comando o un'app da eseguire, otteniamo una shell interattiva in esecuzione come tale utente.

sudo -u someuser -i

Vecchia scuola: sudo su someuser

Un altro approccio utilizza il sucomando in combinazione con sudo. Il sucomando significa "cambia utente".

sudo su someuser

In alternativa, per includere l'esecuzione degli script di avvio dell'utente, aggiungere il trattino.

sudo su - someuser

root utente

L' rootutente nei sistemi operativi relativi a Unix ha il potere assoluto di fare qualsiasi cosa.

Apple ha scelto di disabilitare l' rootaccount in macOS, per evitare gli exploit della vulnerabilità della sicurezza e per proteggerti dal spararti ai piedi. Apple ha creato l'idea degli account utente amministratore che hanno molti poteri, più poteri di un account utente standard , ma non un potere assoluto come rootha fatto. Vedi questa nota di supporto Apple per la discussione.

Se necessario, puoi abilitare l' rootutente in macOS e passare a quell'utente. Questo è fortemente scoraggiato. Vorrei seguire questa strada solo come ultima risorsa disperata.


Per una discussione di questo nel contesto postgresdell'utente che esegue il sistema di database Postgres su macOS, vedere questa domanda sul sito gemello , DBA Stack Exchange .

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.