He oído que se me advierte que, con la idea general de privilegio mínimo, los usuarios similares a Unix deberían crear otra cuenta sin sudo privilegio, además de la cuenta integrada con sudo privilegio. En Mac, esto se traduce como: se debe crear una cuenta de personal para el uso diario, además de la cuenta de administrador que viene con la computadora, reservándose solo cuando sea necesario.
Para concretar, digamos que bruce
es un bastón, que uso a diario, y batman
es un administrador, que solo uso cuando es necesario.
Pero, ¿cómo puedo, mientras estoy iniciando sesión en batman
, realizar tareas sudo, en nombre de bruce
, es decir, con las propias bruce
~
y $(whoami)
como si estuviera registrando en como bruce
con privilegios?
Para ilustrar esto, define /User/bruce/test.sh
:
#!/usr/bin/env bash
whoami
cd ~ && pwd
ls ~/Library/Preferences/Preferences/
(Sí, he hecho chmod 744 test.sh
) Elegí la última línea con fines de ilustración artificial que, por lo general, parece que ~/Library/Preferences/Preferences/
no es accesible para un personal (es decir, un no administrador).
Lo que intento recibir, es bruce
, /Users/bruce
, y ls
de salida.
El primer intento es que, de hecho, si abro el terminal de bruce
, pero login
la fiesta de batman
(para obtener el privilegio de sudo), y ejecuto
sudo /Users/bruce/test.sh
Obtengo root
, /Users/batman
y ls
exitoso de ~/Library/Preferences/Preferences/
, lo que muestra que la casa es de batman; esto no es de extrañar
sudo -i -u bruce
me permite ejecutar comandos como bruce
.
¡Pero no! Si yo (como arriba) abro el terminal bruce
, login
la fiesta de batman
, y ejecute
sudo -i -u bruce /Users/bruce/test.sh
Obtengo bruce
, /Users/bruce
y ls: : Permission denied
.
Otro posible duplicado (b) indica que sudo -H -u bruce
usa la casa de bruce.
Bueno, otra vez cuando abro el terminal de bruce
, login
la fiesta de batman
, y ejecuto
sudo -H -u bruce bash /Users/bruce/test.sh
Yo también obtengo bruce
, /Users/bruce
y ls: : Permission denied
.
El lector podría pensar que mi solicitud no es razonable; pero solo quiero saber si es posible otorgar temporalmente el privilegio de sudo a un miembro del personal, lo que a veces puede ser conveniente.
Por ejemplo, si se puede hacer esto, cuando hago un script corto ya no necesito evitar $(whoami)
o ~
, lo que lo hace más flexible.
O, cuando ejecuto un script corto, el sitio que busqué en Google sugiere, ni tengo que reemplazar $(whoami)
por bruce
y / o ~
por /Users/bruce
.
La última vez, por lo que recuerdo, me irritó la restricción de privilegios, probablemente cuando ejecuté un script hecho por laicos que busqué en Google para instalar una fuente LaTeX.
Sin embargo, en este momento solo puedo recordar una instancia.
Es decir, después de que yo, al iniciar sesión en batman, brew
-ed algo usando homebrew
(ya que requiere sudo privilegio), y logout
-ed volvió como bruce y brew
-ed algo más.
Homebrew se quejó de una gran cantidad de permisos incorrectos de ciertas carpetas bajo /usr/local
, y me instó a ejecutar sudo chown -R $(whoami) blablabla
.
Me pareció que brew
había establecido cierto permiso para el propio batman
, y me enloqueció arreglarlos uno por uno.
¿Qué hace para sortear el momento, por ejemplo, que brew
requiere sudo, mientras usa una cuenta de personal?
O, después de todo, ¿es la práctica que las cuentas de uso diario deban contener el menor privilegio, simplemente irreal?