¿Cómo hacer que los permisos de superusuario duren más que usar sudo?

25

¿Hay alguna manera de hacer que el sudocomando me otorgue permisos por un período más largo que su tiempo predeterminado?

Puede ser una molestia tener que seguir ingresando la sudocontraseña, cuando se requiere la instalación de muchos paquetes, por lo que sería bueno si existe un comando o configuración que se pueda hacer para afectar su período de uso.

Dime por qué
fuente
3
Entonces, ¿nadie usa sumás? ¿Siempre?
Mr Lister el
99
@MrLister sudo -iy usted tiene una cáscara de raíz, lista para que cualquiera pueda ayudar a aplastarse en los pies durante tanto tiempo como ...
Rmano
1
@DevRobot, ¿tienes una fuente para eso? Me resulta un poco difícil creer que Canonical eliminaría un comando tan importante, y no puedo encontrar nada al respecto en Google.
DJMcMayhem
99
@DevRobot sunecesita root para tener una contraseña. Por defecto, el usuario root de Ubuntu no tiene una contraseña. Por lo tanto, no puedes surootear. suestá funcionando según lo previsto aquí. Intente con cualquier usuario que tenga una contraseña.
muru
3
@muru sudo sufunciona bien, aunque un poco repetitivo.
coteyr

Respuestas:

27

El comportamiento de sudose configura en el /etc/sudoersarchivo. Hay una timestamp_timeoutopción responsable de volver a comunicar la contraseña al usuario después de un período de tiempo específico.

De hombres sudoers

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.

Para alterar esa configuración, haga lo siguiente:

  1. En terminal ejecutado sudo visudo. visudose usa específicamente para editar /etc/sudoersarchivos y por defecto usa el nanoeditor de texto.
  2. Encuentra las líneas que comienzan con Defaults. Agregue la siguiente línea

    Defaults        timestamp_timeout=x
    

    donde x es la cantidad de minutos que desea entre repromptos

  3. Guarde el archivo con Ctrl+O

Sergiy Kolodyazhnyy
fuente
12

De man sudoers:

timestamp_timeout
                       Number of minutes that can elapse before sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.  This
                       can be used to allow users to create or delete their
                       own time stamps via “sudo -v” and “sudo -k” respec‐
                       tively.

Como puede ver, el tiempo de espera predeterminado sudoes de 15 minutos. Puede cambiar este valor en /etc/sudoers.

No edita directamente /etc/sudoers, sino que lo usa visudopara hacerlo.

De man visudo:

     visudo edits the sudoers file in a safe fashion, analogous to vipw(8).
     visudo locks the sudoers file against multiple simultaneous edits, pro‐
     vides basic sanity checks, and checks for parse errors.  If the sudoers
     file is currently being edited you will receive a message to try again
     later.

Por lo tanto, escriba sudo visudoun terminal, que abrirá el /etc/sudoersarchivo en nanoel editor de texto.

Busque esta línea:

Defaults    env_reset

Y agregue donde X es el tiempo que desea establecer en minutos.timestamp_timeout=X

Entonces, como ejemplo:

Defaults    env_reset,timestamp_timeout=5

Si especifica 0, siempre se le pedirá la contraseña. Si especifica un valor negativo, el tiempo de espera nunca caducará.

Una vez hecho, guardar y salir.

Ver RootSudoTimeout

Ron
fuente
Derrótame por 29 segundos =)
Sergiy Kolodyazhnyy
1
Eres bueno -_- b Estoy en una computadora portátil. . . tal vez necesito más café
Sergiy Kolodyazhnyy
También puede establecer, por ejemplo, -1 en tiempo de espera, si nunca desea que se active una solicitud de contraseña.
Michał Żywiecki
8

Prueba esto .

  1. Ejecute el siguiente comando en una Terminal:

    sudo visudo
    
  2. Desplácese hacia abajo a la línea que se ve así:

    Defaults        env_reset
    
  3. Cámbielo a por ejemplo:

    Defaults        env_reset,timestamp_timeout=30
    

Cambie 30 a la hora, en minutos, que desea que espere antes de que se agote el tiempo. También puede cambiarlo a 0 si desea una solicitud de contraseña cada vez que ejecuta sudo, o -1 si nunca desea una solicitud de contraseña Presione Ctrl+ Xpara finalizar la edición, Y para guardar los cambios y Enter para salir.

Aquí está la fuente: http://lifehacker.com/make-sudo-sessions-last-longer-in-linux-1221545774

Michał Żywiecki
fuente
5

Puede editar el /etc/sudoersarchivo (con sudo visudo: tenga cuidado) y agregar una línea como

Defaults:myname timestamp_timeout=15 

¿Dónde mynameestá tu ID de usuario? El valor del tiempo de espera es en minutos. Puede usar un valor de -1 para nunca caducar, y luego escribir sudo -kpara eliminar la autenticación, por lo que necesita una contraseña nuevamente.

O puede agregar una entrada para decir que un comando específico no necesita una contraseña en absoluto.

meuh
fuente
1
+1 por mencionar sudo -kque invalida manualmente la autenticación en caché.
Byte Commander
5

No puedo creer que el comando más simple:

sudo -s

No se menciona aquí. El modificador "-s" le brinda una consola con permisos de root, que dura hasta que salga de ella. No es necesario confundirse con la configuración predeterminada.

Oliver Friedrich
fuente
1
¿Por qué se vota esto?
coteyr
3
No voté en contra, pero esto anula una ventaja de usar sudo: cada comando se registra (para que pueda ver lo que hizo). Pierdes ese registro cuando abres un shell raíz.
Guntbert
1
@guntbert seguramente es cada comando registrado, pero en el historial del usuario root.
Oliver Friedrich
@BeowulfOF no necesariamente: el historial de bash es algo completamente diferente al registro del sistema.
guntbert
1
Realmente, @guntbert, si usa el registro de autenticación de esta manera, tiene diferentes problemas.
Oliver Friedrich
1

Todas las otras respuestas hasta ahora parecen centrarse en cambiar el tiempo de espera predeterminado durante cuánto tiempo antes de tener que volver a escribir su contraseña sudo. Sin embargo, si desea poder ejecutar comandos como root sin anteponer cada comando sudo, puede obtener un shell raíz con:

sudo -i

o

sudo bash

o

sudo <your preferred shell here>

Si bien todos estos solo inician un proceso único como root, el proceso en cuestión resulta ser un shell que le permitirá iniciar tantos otros procesos como desee sin necesidad de escribir sudoni una contraseña. :)

Por supuesto, con un gran poder viene una gran responsabilidad, no hagas cosas estúpidas, etc.

reirab
fuente
1
Tenga mucho cuidado con esto. En efecto, estará ejecutando un shell raíz.
hmayag
44
¿Por qué se rechaza esto?
coteyr
@hmayag Sí, si inicia un shell raíz, de hecho estará ejecutando un shell raíz. De ahí la razón de la advertencia al final.
reirab
@coteyr Posiblemente por la misma razón que la respuesta de BeoWulf.
guntbert
1

Después de ver demasiadas preguntas de usuarios que modificaron archivos de configuración y estaban confundidos acerca de por qué se sobrescribieron sus cambios después de una actualización del paquete, notaré que si desea modificar timestamp_timeout, es mejor hacerlo creando un archivo en /etc/sudoers.dlugar de modificar /etc/sudoersdirectamente

Entonces deberías hacer

sudo visudo -f /etc/sudoers.d/timeout

(el nombre del archivo puede ser lo que desee siempre que no contenga un punto ( .) ni termine con una tilde ( ~)). En lugar de abrir /etc/sudoersen el editor de su elección, se abrirá /etc/sudoers.d/timeout, normalmente como un archivo vacío, ya que no existe. Ponga su

Defaults timestamp_timeout=X

en él, y guardar como de costumbre. Luego, si /etc/sudoerssale una nueva versión de , no tiene que elegir entre instalar la versión más nueva o conservar sus cambios; automáticamente tendrá ambas.

fkraiem
fuente
1

Si está buscando una solución que no cambie el archivo de configuración , por ejemplo, cuando desea que el token dure más para una sesión específica, o que se aplique solo después de una acción explícita, puede intentar lo siguiente:

# Work as is with Bash 4.1.2(1)-release and later, this might require some adaptation for other shells
(while [ true ]; do sudo -v; sleep $((60*4)); done)&

Básicamente, el código anterior actualiza el token sudo cada 4 minutos , a través de un proceso iniciado en segundo plano.

De hecho, según el sudomanual: "el tiempo de espera de solicitud de contraseña predeterminado para la política de seguridad de sudoers es de 5 minutos ". Entonces, dependiendo de la política específica del sistema, puede ajustar la cantidad de tiempo que el ciclo pasa a dormir entre dos ciclos.

psicoslave
fuente