Como ocasionalmente uso mi Pi sobre SSH, he aprendido que es peligroso permitir que SSH acceda a los comandos sudo. Por lo tanto, planeo desactivar este permiso en un futuro cercano. Pero, cuando instalo paquetes, generalmente tengo que reiniciar. Actualmente, esto solo está permitido a través del superusuario.
sudo reboot
¿Hay alguna manera de editar los permisos del usuario pi para permitirle reiniciar (e instalar) paquetes?
¿Podría tener varias cuentas con diferentes permisos?
Gracias
Respuestas:
Para aclarar un poco: no hay "comandos sudo", solo hay comandos que necesitan privilegios de root para funcionar correctamente y
sudo
es el comando para obtenerlos para un comando:sudo
simplemente ejecuta el comando dado como root (lee "sudo" como el imperativo oración "superusuario, ¡haz algo!"). Las reglas sobre qué usuarios pueden hacer esto están escritas en/etc/sudoers
. En una instalación predeterminada de Raspbian, el usuario predeterminado "pi" tiene sus permisos de esta línea:Significa: "El usuario 'pi' en TODOS los hosts puede cambiar a TODOS los usuarios y NO tiene que escribir su PASSWD cuando usa TODOS los comandos (léase: cualquiera)". (Utilicé una gramática loca aquí para retener el orden de la línea ... una nota sobre por qué hay una manera de distinguir los hosts: de esta manera, el mismo archivo sudoers se puede distribuir a varias máquinas en una red para que el administrador de la red tenga menos trabajo) .
Puede ser que poder ejecutar comandos usando sudo sin emitir una contraseña de administrador es el punto por el que cree que es peligroso usar sudo a través de SSH (no he oído hablar de un problema general al hacerlo ... así que podría explicar a qué peligro te refieres exactamente?
Seguro que podrías tener múltiples usuarios con diferentes permisos. Pero me temo que usar sudo sigue siendo la mejor manera de administrar estos permisos.
Entonces, espero que esta pequeña receta sea lo que necesitas:
Esto creará un usuario "admin", solicitará una contraseña, creará su directorio personal, etc.
Esto colocará al usuario "admin" en los grupos de usuarios "sudo" y "adm". Y dado que los permisos se administran en Linux al agregar usuarios a los grupos de usuarios, esto le da al usuario "administrador" todos los privilegios y permisos que necesita. Hay una línea
/etc/sudoers
que permite a cualquier usuario que se encuentre en el grupo de usuarios "sudo" ejecutar cualquier comando como root; y este privilegio es lo que necesitamos para un usuario administrador (agregarlo a "adm" le permite leer algunos archivos de registro/var/log
sin usarsudo
y algunas otras cosas). Aún debe usarlosudo
cuando haya iniciado sesión como administrador, pero ahora sudo solicita una y otra vez la contraseña del administrador cada vez que no usó sudo durante aproximadamente cinco minutos.Ahora cierre sesión e inicie sesión como usuario "admin". Comprueba si
trabajos. Si lo hace, puede revocar algunos privilegios del usuario "pi", porque ahora está seguro de que su usuario administrador tiene los privilegios correctos:
Esto arroja al usuario "pi" fuera del grupo de usuarios "sudo".
Esto iniciará un editor que le permite editar
/etc/sudoers
. Coloque una etiqueta hash (#
) antes de la línea que comienza con "pi", coméntela (o simplemente elimínela). Luego guarde y salga del editor, visudo volverá a cargar las reglas de privilegio inmediatamente. Ahora el usuario "pi" ya no puede usar sudo.Después de eso, puede volver a iniciar sesión como usuario "pi". Si alguna vez desea cambiar al administrador por algunos comandos, use
su
("cambiar usuario"):Si desea agregar más usuarios: use el
sudo adduser <name>
anterior, luego verifique la lista de grupos de usuarios que tiene el usuario "pi":Use
sudo adduser <username> <groupname>
para agregar a su nuevo usuario a varios de estos grupos de usuarios, permitiéndole usar audio, video acelerado, usar dispositivos conectables, etc. Si no está seguro, agréguelo a todos estos grupos de usuarios (¡pero no a "sudo"!).fuente
visudo
es un comando que usará su editor predeterminado para editar el archivo sudoers. Editar este archivo sin él puede ser una molestia y no se recomienda. Puede cambiar su editor preferido emitiendosudo update-alternatives --config editor
VISUAL=vim visudo
solo por esta vez. Pero un gran ejemplo de cambio de programas predeterminados, como el editor.Sí, puede configurarlo
sudo
para permitir que el usuario ejecute ciertos comandos con privilegios adicionales. Puede cambiar esto en su/etc/sudoers
archivo, pero es aconsejable no hacerlo directamente, pero use elsudo visudo
comando para esto.En la instalación predeterminada del sistema, debe encontrar dicha línea:
Le indica
sudo
que permita al usuariopi
ejecutar todos los comandos deroot
usuario como usuario sin siquiera proporcionar una contraseña. Puede cambiar el últimoALL
y especificar la lista de comandos delimitados por comas (con su ruta completa) permitidos para ejecutarse. En su caso, debe cambiar esta línea a:Tenga en cuenta que hay una línea más que
sudoers
afecta alpi
usuario:Esta línea permite a todos los usuarios del grupo
sudo
(el%
carácter delante del nombre significa que es un nombre de grupo en lugar de un nombre de usuario) ejecutar TODAS las contraseñas siempre que sepan su PROPIA contraseña . Si abandona esta línea, el usuariopi
podrá ejecutar todos los demás comandos, pero se le pedirá su contraseña.Si desea evitar que esto suceda, puede eliminar esta línea o eliminar el usuario
pi
delsudo
grupo.Después de realizar cambios en el
/etc/sudoers
archivo, es posible que desee inspeccionar que realmente hace lo que desea llamando alsudo -l -U pi
comando.Por supuesto, puede crear diferentes cuentas y configurarlas
sudoers
dándoles acceso a diferentes comandos.fuente
Mayo de 2018, esto todavía es exacto en concepto, pero el procedimiento ha cambiado con versiones posteriores:
En primer lugar, los archivos deben editarse directamente en vi o nano o leafpad o emacs, el que sea su editor de texto favorito.
El nombre de usuario pi no se menciona en este archivo:
y la última línea del archivo es esta:
Este es un directorio que contiene un archivo llamado
que contiene esta sola línea
Lo que tiene el efecto de no solicitar ningún comando sudo siempre que esté conectado como usuario pi. (tenga en cuenta que la sintaxis tiene que ser exactamente así)
Esto es genial.
La línea del grupo
%sudo ALL=(ALL:ALL) ALL
sigue ahí comoEntonces, para responder la primera parte de la pregunta:
Cuando moví el archivo /etc/sudoers/sudoers.d/010_pi-nopasswd un nivel de directorio hacia arriba para que fallara la inclusión, luego esperé 15 minutos, causó que mi sistema Raspbian solicitara mi propia contraseña al usar sudo, solo como solía hacer mi sistema Ubuntu 14.04 LTS.
Luego, cuando lo moví de regreso a donde pertenece, incluso después de 10 minutos, ya no me incitó.
No es necesario reiniciar. Voila, no se solicita una contraseña cuando se usa sudo
Mi sistema de prueba lubuntu 14.04 LTS tiene la misma configuración, excepto que el archivo 010_pi-nopasswd no estaba presente. Lubuntu se instaló con pi como usuario root. Me solicitó cada vez que usaba sudo, luego no me solicitó 10 minutos después.
Agregué este mismo archivo al sistema Ubuntu al igual que la configuración de Raspbian, (recuerde chmod 0440 en este archivo mientras todavía está en esa ventana de 10 minutos) - y
Voila, ya no me pide mi propia contraseña cuando estoy conectado como pi incluso después de 15 minutos.
Nuevamente, el cambio ocurre instantáneamente sin necesidad de reiniciar.
Esta es la respuesta de mayo de 2018 sobre cómo deshabilitar y habilitar la solicitud para el uso del comando sudo cuando se inicia sesión como usuario raíz pi. Otros usuarios y grupos se pueden configurar de esta misma manera.
--UPDATE para Ubuntu 16.04 LTS Este sistema también es muy similar. Sin embargo, la mayor diferencia es que 16.04 tiene permisos de archivo mucho más estrictos, por lo que el trabajo debe hacerse en
su
modo. Si olvidó su contraseña de root, puede restablecerla desde su solicitud normal utilizandosudo passwd root
Luego, elsu
comando funcionará y podrá continuar desde allí.fuente
sudoers
generalmente se realiza en el momento en que se crea el usuario. Ejemplo de uso: Notará que la cadena de comando comúnsudo apt-get update && sudo apt-get upgrade
invoca sudo dos veces, pero es molesto que se detenga y solicite la contraseña nuevamente antes de la actualización. Así que configuré el mío para que nunca solicite mi único nombre de inicio de sesión (pi) y luego lo usesudo apt-get update -y && sudo apt-get upgrade -y
para que tampoco se detenga para pedir el OK para hacer cambios considerables. Para hacerlo más parecido a Unix. Simplemente haga lo que le pido, e incluso si me alejo, quiero que termine.Es más seguro permitir el acceso a sudo a través de SSH que permitir que cualquier usuario instale paquetes. Si realmente te preocupa, cambia la línea
/etc/sudoers
de:a
Eso significa que se le pedirá una contraseña la primera vez que use sudo en cualquier sesión, y nuevamente después de unos minutos de tiempo de espera. No puedes editar
/etc/sudoers
directamente; solíasudo visudo
hacerlo.Parece que Krzysztof entró con una respuesta justo allí. ¿Está realmente seguro de que necesita reiniciar cada vez que instala nuevos paquetes? A menos que esté instalando un nuevo núcleo o firmware, no es necesario reiniciar mucho más. Este es un sistema operativo de calidad que tenemos aquí ...
fuente
timestamp
tiempo de espera es una buena idea. Son 15 minutos por defecto, por cierto. Tenga en cuenta quePASSWD
es predeterminado (siNOPASSWD
no se especificó anteriormente en esta lista de comandos). También tenga en cuenta que/etc/sudoers
puede editarse directamente sin problemas si sabe lo que está haciendo. El usovisudo
realiza cambios en el archivo temporal evitando que el archivo se escriba automáticamente en el medio del cambio (lo que podría introducir errores de sintaxis y / o problemas de seguridad), bloquea este archivo contra múltiples ediciones simultáneas y realiza algunas comprobaciones de sintaxis antes de escribir el archivo.Solo una alternativa a lo que dijo scruss, elimine el
/etc/sudoers.d/010_pi-nopasswd
archivo ejecutandosudo rm /etc/sudoers.d/010_pi-nopasswd
. Mucho más fácil y seguro que editar el archivo principal de sudoers, que puede romper sudo.fuente