Con frecuencia, cuando hablamos de trucos y tutoriales que implican el uso del Terminal, usamos el comando sudo
. El programa sudo
(del inglés super user do) es una utilidad de los sistemas operativos tipo Unix, como Linux, BSD, o Mac OS X, que permite a los usuarios ejecutar programas con los privilegios de seguridad de otro usuario (normalmente el usuario root) de manera segura. Se instala por defecto en /usr/bin.
Una de las ventajas (o problemas) de sudo
es que una vez lo utilizamos está activo durante cierto tiempo para permitirnos seguir utilizando los correspondientes comandos bajo ese súper usuario, incluyendo aquellos scripts de Applescript en los que hemos usado sudo
con privilegios de administrador. El problema (de seguridad) es que una vez ejecutado ese Applescript con esos privilegios, durante cierto tiempo es posible abrir el Terminal y ejecutar comandos como superusuario cuando no debería ser así.
Así, cuando trabajemos con sudo
para integrarlo en un Applescript (o en general, cuando queramos que su uso sea único y se circunscriba a una sola utilización) deberemos marcar el comando con la correspondiente bandera de forma que solo se ejecute única y exclusivamente en esa ocasión. Así, el uso de sudo
quedaría de la siguiente manera:
sudo -k Comando_a_ejecutar
Realmente, cuando ejecutamos el comando sudo
lo que hace el sistema es crear un archivo especial donde se almacena el tiempo en una variable que identificará cuanto tiempo estará disponible sudo
para los comandos que ejecutemos (el tiempo de sesión de sudo
). La bandera -k lo que hace es evitar que se cree ese archivo. Esto funciona muy bien cuando vamos a invocar sudo
por una única ocasión, pero algo inconveniente cuando necesitamos una sesión completa usando sudo
porque lo tendremos que incluir en cada comando. La mejor opción es entonces no incluir esta bandera y una vez terminemos usar esa sesión de sudo
usar la bandera -K (en mayúsculas) para eliminar el archivo que gestiona la duración de la sesión de sudo
.
También podemos ajustar el tiempo de cada sesión de sudo
. Los pasos son los siguientes:
- Abre el Terminal en Aplicaciones > Utilidades
-
Escribe
sudo
visudo
para editar el archivo de configuración desudo
- Pulsa la tecla «i» para activar la inserción
- Usa las teclas de flecha para desplazarte por las #Default Specifications
-
Localiza la línea
env_reset
y reemplázala porenv_reset,timestamp_timeout=2
donde «2» será el número de minutos quesudo
estará activo - Pulsa «:w» para guardar y «:q» para cerrar.
A partir de este momento, las sesiones de sudo
durarán 2 minutos. Puedes, evidentemente, modificar este comportamiento en cualquier momento modificando el archivo para ampliar la duración de las sesiones o simplemente eliminar ,timestamp_timeout=2
para dejar el comportamiento por defecto.
Hola,
He cambiado de usuario de App store.
Cada vez que uno de los programas que instalé con el anterior usuario tiene una actualización, me obliga a registrarme con ése para poder realizarla.
¿Hay alguna forma de usar un Automator y un sudo para que automatice y autorice ese proceso?
Perdón si la pregunta está totalmente fuera de rango.