2 votos

Grant no-admin sudo privilegio, pero con `~` ser su propia casa~

He oído que se le advierte que, con la idea general de privilegio mínimo, similar a Unix, los usuarios deben crear otra cuenta sin sudo privilegio, además de la cuenta integrada con sudo privilegio. En Mac, esto se traduce a: se debe crear una cuenta de personal para el uso diario, además de la cuenta de administrador que viene con el equipo, siendo reservado sólo cuando sea necesario.

Para la concreción, decir bruce es personal, el que yo uso a diario, y batman que es un administrador, el que yo uso sólo cuando sea necesario. Pero, ¿cómo puedo, mientras que el registro en batman, realizar sudo tareas, en nombre de bruce, es decir, bruce's propia ~ y $(whoami) como si estuviera ingresando como bruce con privilegio?

Para ilustrar esto, definimos /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 artificial ilustración propósito de que, normalmente parece, ~/Library/Preferences/Preferences/ no es accesible a los funcionarios (es decir, un non-admin).

Lo que tengo la intención de recibir, bruce, /Users/bruce, y el éxito de ls de salida.


La primera prestar atención es que, de hecho, si abro bruce's de la terminal, pero login el bash de batman (con el fin de obtener sudo privilegio), y ejecutar

sudo /Users/bruce/test.sh

Llego root, /Users/batman, y el éxito de ls de salida de ~/Library/Preferences/Preferences/, mostrando que la casa es de batman; esto no es de extrañar.

O, un posible duplicado (un) afirma que sudo -i -u bruce me permite ejecutar comandos como bruce. Pero no! Si yo (como arriba) abra bruce's de la terminal, login el bash de batman, y ejecutar

sudo -i -u bruce /Users/bruce/test.sh

Llego bruce, /Users/brucey ls: : Permission denied.

Sin embargo, otra posible duplicado (b) los estados que sudo -H -u bruce usa de bruce casa. Bueno, de nuevo, cuando abro bruce's de la terminal, login el bash de batman, y ejecutar

sudo -H -u bruce bash /Users/bruce/test.sh

Yo también te bruce, /Users/brucey ls: : Permission denied.


El lector podría pensar que mi petición es razonable; pero sólo quiero saber si es posible otorgar temporalmente sudo privilegio a un personal -- que puede ser conveniente en los tiempos. Por ejemplo, si esto se puede hacer, cuando estoy haciendo algún corto script que necesito ya no evite $(whoami) o ~, lo que es más flexible. O, cuando ejecuto un script cortos en qué sitio busqué en google sugiere, ni tengo para reemplazar $(whoami) por bruce y/o ~ por /Users/bruce.

La última vez, que yo recuerde, yo estaba irritada por la restricción de privilegios, es, probablemente, cuando me encontré con un laico-script busqué en google, con el fin de instalar una fuente de Látex.

Sin embargo, en la actualidad puedo recordar un caso único. Que es, después de, mientras que el registro en batman, brew-ed algo utilizando homebrew (pues se requiere sudo privilegio), y logout-ed de vuelta como bruce y brew-ed algo. Homebrew se quejó de un gran número de permisos incorrectos de ciertas carpetas en /usr/local, y me instó para que se ejecute sudo chown -R $(whoami) blablabla. Me parecía que brew habían establecido ciertas permiso a batman's propio, y me volví loca para corregirlos uno por uno.

¿Qué hacer para evitar el momento en que, por ejemplo, brew requiere sudo, mientras que el uso de una cuenta de personal? O, después de todo, es la práctica que diariamente utilizan la cuenta debe contener menos de privilegio, simplemente poco realista?

1voto

klanomath Puntos 19587

Hay un error en bruce carpeta de inicio probablemente: los permisos de ~/Library/Preferences/Preferencias están equivocados. Por lo tanto, la secuencia de comandos no funcionan como se espera.

Compruebe la siguiente salida en mi entorno de ejecución de la secuencia de comandos de sesión como administrador. He modificado ligeramente la secuencia de comandos y reemplazado ls ~/Library/Preferences/Preferences por ls -la ~/Library/Preferences | grep "loginwindow"

/Users/bruce/bin/sh/test-env.sh
batman
/Users/batman
-rw-------    1 batman  staff     192 27 Nov 13:42 com.apple.loginwindow.plist
-rw-------    1 batman  staff     198 24 Okt 21:43 loginwindow.plist

sudo /Users/bruce/bin/sh/test-env.sh
root
/Users/batman
-rw-------    1 batman  staff     192 27 Nov 13:42 com.apple.loginwindow.plist
-rw-------    1 batman  staff     198 24 Okt 21:43 loginwindow.plist

sudo -i -u bruce /Users/bruce/bin/sh/test-env.sh
bruce
/Users/bruce
-rw-------    1 bruce  staff      95 27 Nov 13:40 com.apple.loginwindow.plist
-rw-------    1 bruce  staff     198 27 Nov 13:36 loginwindow.plist

sudo su bruce
/Users/bruce/bin/sh/test-env.sh
bruce
/Users/bruce
-rw-------    1 bruce  staff      95 27 Nov 13:40 com.apple.loginwindow.plist
-rw-------    1 bruce  staff     198 27 Nov 13:36 loginwindow.plist
$USERNAME = root #check this by entering `env` in the shell additionally

sudo su -l bruce
/Users/bruce/bin/sh/test-env.sh
bruce
/Users/bruce
-rw-------    1 bruce  staff      95 27 Nov 13:40 com.apple.loginwindow.plist
-rw-------    1 bruce  staff     198 27 Nov 13:36 loginwindow.plist
$USERNAME = <empty>

También: hay un gran malentendido de cómo sudo/ub realmente funciona. Su admin batman nunca se ejecuta un comando "en nombre" de otro usuario. Si escribe "sudo some_command" o "sudo-i -u usuario some_command" es siempre el super usuario de la posición elevada (y el privilegio de administrador para ejecutar sudo como determinado por el archivo sudoers y "hacer el mismo super usuario" de forma temporal), que "se ejecuta el comando correctamente en nombre de otro usuario".

Si usted tiene que ejecutar comandos con privilegios elevados sobre una base diaria con su usuario no administrador, agregarlo al archivo sudoers y agregar un número limitado de comandos sólo.

Ejemplo (control de servidor web Apache):

bruce ALL=(ALL) /usr/sbin/apachectl

o sin el requisito para ingresar una contraseña después de la ejecución sudo apachectl como bruce:

bruce ALL=(ALL) NOPASSWD: /usr/sbin/apachectl

O modificar las secuencias de comandos de forma apropiada a permanecer dentro de bruce del reino.

Que dijo el asesoramiento y la práctica de que "el diario de usuario no debe ser un sudoer" todavía es válida.


Homebrew es una bestia diferente: está diseñado para ser instalado por un único usuario - usuario administrador. La mayoría de las aplicaciones/archivos ejecutables proporcionados por el homebrew medio ambiente puede ser lanzado por un usuario estándar después de la modificación del usuario $PATH, aunque el uso de la ruta de acceso completa.

Varios how-tos existe cómo configurar homebrew como un entorno multi-usuario (por ejemplo, Mi Homebrew Multi Configuración de Usuario). No sé si esto se aplica a los más nuevos sistemas OS X/versiones de brew.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X