Inspirado por esta pregunta ...
Soy la única persona que usa mi sistema con 12.04.
Cada vez que emito un sudo
comando; el sistema solicita la contraseña de usuario (que es buena a su manera).
Sin embargo estaba pensando; sin activar la cuenta raíz ; ¿Cómo puedo ejecutar los comandos sudo que no solicitarán la contraseña de usuario para autenticar?
NOTA: Quiero ejecutar el comando sudo sin autenticarme mediante contraseña; solo cuando se ejecutan vía terminal.
No quiero eliminar esta capa adicional de seguridad de otras funciones, como cuando uso 'Centro de software de Ubuntu' o ejecuto un script bash arrastrando y soltando el archivo something.sh al terminal.
command-line
password
sudo
root
Bhavesh Diwan
fuente
fuente
Respuestas:
sudo -i
es el camino a seguir si no desea escribir una contraseña cada 10 minutos mientras realiza modificaciones en su sistema (u otros sistemas), y no desea modificar ningún archivo del sistema.Lo cambiará a root usando su
sudo
contraseña de usuario, cuando cierre la consola o escribaexit
, volverá a su usuario normal.fuente
exit
o hasta que cierre la ventana del emulador de terminal.Puede configurar
sudo
para nunca solicitar su contraseña.Abra una ventana de Terminal y escriba:
En la parte inferior del archivo, agregue la siguiente línea:
¿Dónde
$USER
está tu nombre de usuario en tu sistema? Guarde y cierre el archivo sudoers (si no ha cambiado su editor de terminal predeterminado (sabrá si lo ha hecho), presione ctl + x para salirnano
y le pedirá que guarde).A partir de Ubuntu 19.04, el archivo ahora debería verse como
Después de esto, puede escribir
sudo <whatever you want>
en una ventana de Terminal sin que se le solicite la contraseña.Esto solo se aplica al uso del
sudo
comando en la terminal. Aún se le pedirá su contraseña si (por ejemplo) intenta instalar un paquete desde el centro de softwarefuente
sudo visudo
lugar de editarlo directamente. También cambiar los permisos de los sudoers puede bloquearse. Al editar convim
, use:wq!
para escribir en archivos de solo lectura y salga del editor. De esa manera, los permisos 644 no son necesarios.sudo install crapware
no solicitará una contraseña en este caso y puede estropear todo lo que tiene, y no necesita estar físicamente al lado de una máquina para distribuir los scripts la última vez que lo revisé. .. Esto es solo un ejemplo.rm -rf ~
estropear algunas cosas). En general, no llamaría «riesgo de seguridad grave» a la simple eliminación de la solicitud de contraseña de sudo.Los tiempos de espera de sudo raíz son la forma más fácil y segura de hacerlo. Presentaré todos los ejemplos, pero tenga en cuenta que es muy arriesgado de cualquier manera que haga esto, aunque de esta manera es mucho más seguro:
Esto abre un editor y lo apunta al archivo sudoers: Ubuntu por defecto es nano, otros sistemas usan Vi. Ahora eres un súper usuario que edita uno de los archivos más importantes de tu sistema. ¡Sin estrés!
(Vi instrucciones específicas anotadas con (vi!) . Ignore estas si está usando nano.
Use las teclas de flecha para moverse al final de la
Defaults
línea.(vi!) presione la tecla A ("a" mayúscula) para moverse al final de la línea actual e ingresar al modo de edición (agregar después del último carácter en la línea).
Ahora escriba:
donde X es la caducidad del tiempo de espera en minutos. Si especifica 0, siempre se le pedirá la contraseña. Si especifica un valor negativo, el tiempo de espera nunca caducará. Por ej
Defaults env_reset,timestamp_timeout=5
.(vi!) pulsa Escape para volver al modo de comando. Ahora, si está satisfecho con su edición, escriba
:w
Enterpara escribir el archivo y:q
Entersalir de vi. Si cometió un error, quizás la forma más fácil es rehacer desde el inicio, salir sin guardar (presione Escapepara ingresar al modo de comando) y luego escriba: q! Enter.Presiona Ctrl+ X, luego Y, luego Enterpara guardar tu archivo y salir de nano.
Es posible que desee leer las páginas del manual de sudoers y vi para obtener información adicional.
Restablecer el valor de tiempo de espera usando:
Estas instrucciones son para eliminar la solicitud de contraseña cuando se usa el comando sudo. Sin embargo, el comando sudo aún deberá usarse para el acceso raíz.
Edite el archivo sudoers
Abre una ventana de Terminal. Teclear
sudo visudo
. Agregue la siguiente línea al FIN del archivo (si no al final puede ser anulado por entradas posteriores):Reemplace
<username>
con su nombre de usuario (sin el<>
). Esto supone que Ubuntu ha creado un grupo con el mismo nombre que su nombre de usuario, lo cual es típico. Puede usar alternativamente los usuarios del grupo o cualquier otro grupo en el que se encuentre. Solo asegúrese de estar en ese grupo. Esto se puede verificar yendo a Sistema -> Administración -> Usuarios y grupos.Ejemplo:
Escriba ^ X ( Ctrl+ X) para salir. Esto debería solicitar una opción para guardar el archivo, escriba Y para guardar.
Cierre la sesión y vuelva a iniciarla. Esto debería permitirle ejecutar el comando sudo sin que se le solicite una contraseña.
La cuenta raíz
Habilitar la cuenta raíz
Habilitar la cuenta raíz rara vez es necesario. Casi todo lo que necesita hacer como administrador de un sistema Ubuntu se puede hacer a través de sudo o gksudo. Si realmente necesita un inicio de sesión root persistente, la mejor alternativa es simular un shell de inicio de sesión Root con el siguiente comando:
Sin embargo, si debe habilitar los inicios de sesión raíz, puede hacerlo así:
Rehabilitar su cuenta raíz
Si por alguna razón ha habilitado su cuenta raíz y desea deshabilitarla nuevamente, use el siguiente comando en el terminal:
Sudo grupal en todo el sistema
Cerrar sesión y luego volver a ingresar.
Restablecer sudo timeout
Puede asegurarse de que sudo solicite la contraseña la próxima vez ejecutando:
fuente
sudo env EDITOR=/bin/nano visudo
para editar de manera confiablesudoers
en nano. (las alternativas de actualización también se pueden usar para configurar el editor)La forma preferida de otorgar permisos individuales (o grupales) sería agregar archivos en
/etc/sudoers.d
Esto separa los cambios locales de la política predeterminada y ahorra tiempo en caso de que cambie el archivo de sudoers de distribución.
Para hacer que el usuario actualmente conectado sea un sudoer y
sudo
no pedirle una contraseña, useesto creará un archivo llamado
/etc/sudoers.d/$USER
(donde$USER
está el nombre de usuario del usuario con el que inició sesión como cuando ejecutó ese comando), dejando en claro qué usuarios tienen permiso.Si desea hacer eso para un usuario diferente, simplemente reemplace ambas instancias
$USER
con algún otro nombre de usuario en el comando anterior.Del mismo modo, un archivo se puede usar para administrar múltiples directivas:
Ver
/etc/sudoers.d/README
yman sudoers
para más información.fuente
tee
comando.sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)'
seguido porsudo chmod 440 /etc/sudoers.d/$(logname)
sudo ... >file
shell, la redirección se ejecuta en el shell original, por lo que podría funcionar solo en el shell raíz.echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/username
Una línea agradable para eliminar las indicaciones de sudo para el usuario actual
fuente
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo
solovisudo
necesitasudo
después de todo (e inclusoenv
no será necesario en la configuración predeterminada, IIRC).sudo visudo
), mientras se prueba el resultado (con el editor aún abierto), para aquellos usuarios nuevos que podrían verse tentados a probar este "one-liner".sudo chmod 440 /etc/sudoers.d/$(logname)
corregir los permisos de archivo como se indica en el archivo README en ese directorio.Por supuesto, lo que quieres hacer no es recomendable. Después de un tiempo, aunque entrar se
sudo
vuelve tan automático que disminuye su utilidad.Otro enfoque es dejar su archivo de sudoers tal como está y, mientras hace algo complicado para sus miles de servidores, ingrese
sudo bash
. Eso le dará un shell que se autenticará como root hasta que salga de él.fuente
sudo -s
osudo -i
son probablemente ambas mejores ideas quesudo bash
, porque aseguran que el medio ambiente es sano y las cosassudo
comandos (pensando especialmente ensudo pip ...
) requierensudo -H
(establecer HOME) para que el comando se ejecute correctamente. En otros casos,sudo -E
(preservar env) puede ser requerido. La ejecuciónsudo bash
probablemente funcionará en la mayoría de los casos, pero no en todos, y cuando no lo haga, no estará claro por qué.De Super User viene una buena respuesta:
Use el modificador -S que lee la contraseña de STDIN:
Reemplace
<password>
con su contraseña.fuente
echo
para que no aparezca en la historia?Un trazador de líneas
sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'
fuente
Esta es una solución de una línea que también cambia los permisos de los archivos como se indica en
/etc/sudoer.d/README
:fuente
Ampliando la idea de @upteryx.
Así es como he implementado el usuario no root, sin contraseña en una imagen efímera de Docker para usar en una tubería CICD:
fuente