¿Cómo aumento la contraseña de sudo para recordar el tiempo de espera?

61

Ya sé que necesito ajustar el archivo / etc / sudoers pero me gustaría ver información completa y también una solución que no requiera que use el vieditor.

Actualización: nunca, nunca intentes editar el archivo con algo más que visudo.

sorin
fuente
1
puedes configurar el editor EDITOR env mientras también usas visudo :: sudo env EDITOR = nano visudo
Good Person

Respuestas:

86

Ejecute sudo visudoy agregue esta línea:

Defaults    timestamp_timeout=-1

Ver man 5 sudoers. -1hace que la contraseña nunca expire. Puede cambiar el número a lo que quiera en minutos.

La página del manual sudodice que sudo -v"extiende el tiempo de espera de sudo por otros 5 minutos".

Ejecutar 'sudo visudo' en lugar de editar el archivo directamente hace que el sistema valide el archivo sudoers antes de confirmar los cambios. Por ejemplo, si deja un personaje perdido en algún lugar, cuando guarde y salga, dirá "hay un error en el archivo sudoers, ¿qué le gustaría hacer?" ... por lo tanto, le da la oportunidad de volver y editar. Esto realmente me sucedió hace 10 minutos.

lhf
fuente
20
Sí, pero visudoejecuta algunas comprobaciones básicas de sanidad en el archivo sudoers antes de guardar. Si estropea el archivo usando vidirectamente, puede bloquear el uso de sudo, lo que hace que sea muy difícil deshacer el cambio.
nohillside
44
Los privilegios son así en otros sistemas, por lo que nada tiene que ver con Apple. visudose ajusta al editor predeterminado del sistema (supongo que el usuario raíz predeterminado si la raíz ha anulado el predeterminado), por lo que no tiene nada que ver con vi bar el nombre. En mi sistema (no Apple Btw) obtengo nano. Prueba export EDITOR='/bin/nano'o el editor que quieras y luego usa visudo.
Chris
44
Um ... No puedes usar root para corregirlo, porque no puedes llegar a root, porque acabas de rellenar tu archivo sudo ... Ese es el punto.
daviewales
1
En un rol profesional, puede tener acceso a sudo pero no tener la contraseña de root. Su servidor puede estar en un centro de datos en todo el país, lo que dificulta el acceso al modo de usuario único. Pero, si fuera dicho profesional, probablemente no le darían tales advertencias. El punto es que debes aprender de los profesionales. No busque maneras de evitar formar buenos hábitos. Luego tenemos que escuchar sus gritos frenéticos en Stack Exchange e IRC.
Bruno Bronosky
1
(Tal vez sea obvio para todos, pero agregando): timestamp_timeout es en minutos, puede incluir un componente fraccional.
usuario
3

¡Tenga mucho cuidado al modificar /etc/sudoersdirectamente!

Por ejemplo, probé la sugerencia anterior directamente:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

que estropeó mi /etc/sudoersarchivo (en una máquina virtual CentOS Virtualbox). Debería haber sido:

sudo sh -c 'echo -e "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

¡Afortunadamente, tuve acceso a la cuenta raíz, inicié sesión como root, usé visudoy reparé el problema! Por lo tanto, estoy de acuerdo con los comentarios anteriores para usar visudoen su lugar.

usuario304227
fuente
1

Toda la información para sudoers se puede encontrar desde la terminal con el comando

man sudoers

Incluso puede usar texto simple para editar archivos, sin embargo, los privilegios lo hacen difícil. sudoers es-r--r----- (Octal 0440)

Esto indica que Apple realmente no quiere que juegues con el archivo. Esta es realmente la seguridad central del sistema operativo.

Las opciones para editar son vi, emacs o mi BBEdit favorito personal.

Andrei Freeman
fuente
55
Hay una razón por la que se establecen esos privilegios. Se establecen en un intento de forzarlo a usar en visudolugar de editar el archivo usted mismo. Además, esto no tiene nada que ver con OS X. Es estándar * nix. Además, si desea utilizar un editor no predeterminado, simplemente configure la $EDITORvariable de entorno antes de llamar visudo. por ej EDITOR=nano sudo visudo.
daviewales
1

Deshabilite el tiempo de espera de sudo con este comando:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

Para volver a habilitar sudo timeout con este método:

sudo sed -i "/Defaults timestamp_timeout=-1/d" /etc/sudoers
Patpat
fuente
8
Desde la página de manual de sudoers: el archivo de sudoers siempre debe editarse mediante el comando visudo que bloquea el archivo y realiza una comprobación gramatical. Es imperativo que los sudoers estén libres de errores de sintaxis ya que sudo no se ejecutará con un archivo de sudoers sintácticamente incorrecto.
Matteo
@Matteo Bueno, puede hacer lo que quiera en su propia propiedad siempre que sepa las consecuencias. En algunas situaciones, esto está bien, por ejemplo, lo uso en versiones nuevas de Mac que no tienen datos valiosos sobre ellas como parte de un script de automatización. He sugerido una edición de esta respuesta para proporcionar una advertencia. ¡Idealmente sudodebería tener una forma única de cambiar esto sin tener que editar un archivo!
samthebest
1
Cuidado, este es un consejo peligroso. Use visudo en su lugar.
Will Sheppard