Ajustar el comportamiento de sudo en OS X

18/01/2013 por Carlos Burges

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:

  1. Abre el Terminal en Aplicaciones > Utilidades
  2. Escribe sudo visudo para editar el archivo de configuración de sudo
  3. Pulsa la tecla "i" para activar la inserción
  4. Usa las teclas de flecha para desplazarte por las #Default Specifications
  5. Localiza la línea env_reset y reemplázala por env_reset,timestamp_timeout=2 donde "2" será el número de minutos que sudo estará activo
  6. 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.

0
Comentarios
  • #1 por Mandibul el 22/01/2013
    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.