Ho sentito dire che, con l'idea generale di privilegio minimo, gli utenti di tipo Unix dovrebbero creare un altro account senza privilegio sudo, oltre all'account incorporato con privilegio sudo. In Mac, questo si traduce in: si dovrebbe creare un account personale per l'uso quotidiano, oltre all'account amministratore fornito con il computer, riservato solo quando necessario.
Per concretezza, diciamo che bruce
è uno staff, che uso quotidianamente e batman
è un admin, che uso solo quando necessario.
Ma come posso, mentre eseguo il login in batman
, eseguire attività sudo, per conto di bruce
, vale a dire con bruce
proprio ~
e $(whoami)
proprio come se fossi loggato in bruce
con privilegio?
Per illustrare questo, definisci /User/bruce/test.sh
:
#!/usr/bin/env bash
whoami
cd ~ && pwd
ls ~/Library/Preferences/Preferences/
(Sì, ho fatto chmod 744 test.sh
) Ho scelto l'ultima riga per scopi di illustrazione artificiale che, normalmente, ~/Library/Preferences/Preferences/
non è accessibile a uno staff (vale a dire un non amministratore).
Quello che intendo ricevere è bruce
, /Users/bruce
e riuscito ls
output.
Il primo tentativo è, in effetti, se apro il terminale di bruce
, ma login
il bash di batman
(per ottenere il privilegio di sudo), ed esegui
sudo /Users/bruce/test.sh
Ottengo root
, /Users/batman
e riuscito ls
output di ~/Library/Preferences/Preferences/
, a dimostrazione che la casa è batman; non c'è da meravigliarsi
Oppure, un possibile duplicato (a) asserisce che sudo -i -u bruce
mi consente di eseguire comandi come bruce
.
Ma no! Se I (come sopra) apre il terminale di bruce
, login
il bash di batman
, ed esegui
sudo -i -u bruce /Users/bruce/test.sh
Ottengo bruce
, /Users/bruce
e ls: : Permission denied
.
Ancora un altro possibile duplicato (b) afferma che sudo -H -u bruce
utilizza la casa di bruce.
Bene, di nuovo quando apro il terminale di bruce
, login
il bash di batman
, ed eseguo
sudo -H -u bruce bash /Users/bruce/test.sh
Anche io ottengo bruce
, /Users/bruce
e ls: : Permission denied
.
Il lettore potrebbe pensare che la mia richiesta non sia ragionevole; ma voglio solo sapere se è possibile concedere temporaneamente privilegio sudo a uno staff, il che può essere conveniente a volte.
Ad esempio, se questo può essere fatto, quando sto facendo un breve script non ho più bisogno di evitare $(whoami)
o ~
, rendendolo più flessibile.
Oppure, quando eseguo un breve script, quale sito suggerisco, né devo sostituire $(whoami)
di bruce
e / o ~
di /Users/bruce
.
L'ultima volta, per quanto ricordo, sono stato irritato dalla limitazione dei privilegi, è probabilmente quando ho eseguito una sceneggiatura scritta su disco che ho cercato su google, al fine di installare un font LaTeX.
Tuttavia, al momento posso ricordare solo un'istanza.
Cioè, dopo che I, durante l'accesso a batman, brew
-ed qualcosa usando homebrew
(perché richiede sudo privilegio), e logout
-ed indietro come bruce e brew
-ed qualcosa di altro.
Homebrew ha lamentato un numero elevato di autorizzazioni errate di alcune cartelle in /usr/local
e mi ha spinto a eseguire sudo chown -R $(whoami) blablabla
.
Mi è sembrato che brew
avesse impostato un determinato permesso su batman
e mi ha fatto impazzire a correggerli uno per uno.
Che cosa fai per aggirare il momento, ad esempio, che brew
richiede sudo, mentre usi un account dello staff?
O, dopo tutto, è la pratica che l'account usato quotidianamente dovrebbe contenere privilegi minimi, semplicemente irrealistici?