Cómo cambiar los permisos de usuario sudo pi; ¿Cómo agregar otras cuentas con diferentes permisos?

14

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

xxmbabanexx
fuente
1
¿Alguna de las respuestas dadas ha sido útil? ¿Alguien de ellos es la respuesta que buscabas? Por favor, marque eso como contestado.
Anders
Si. Si todavía está interesado, los actualicé a junio de 2017: esta pregunta se hizo hace 4 años y 2 meses, y me llevó a la forma de resolver el problema hoy. Vea las respuestas a continuación:
SDsolar

Respuestas:

22

Para aclarar un poco: no hay "comandos sudo", solo hay comandos que necesitan privilegios de root para funcionar correctamente y sudoes el comando para obtenerlos para un comando: sudosimplemente 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:

pi ALL=(ALL) NOPASSWD: ALL

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:

$ sudo adduser admin

Esto creará un usuario "admin", solicitará una contraseña, creará su directorio personal, etc.

$ sudo adduser admin sudo
$ sudo adduser admin adm

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/sudoersque 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/logsin usar sudoy algunas otras cosas). Aún debe usarlo sudocuando 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

$ sudo apt-get update
$ sudo apt-get upgrade

trabajos. Si lo hace, puede revocar algunos privilegios del usuario "pi", porque ahora está seguro de que su usuario administrador tiene los privilegios correctos:

$ sudo deluser pi sudo
$ sudo deluser pi adm

Esto arroja al usuario "pi" fuera del grupo de usuarios "sudo".

$ sudo visudo

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"):

$ su - admin

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":

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

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"!).

orithena
fuente
2
visudoes 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
earthmeLon
O puedes probar esto VISUAL=vim visudosolo por esta vez. Pero un gran ejemplo de cambio de programas predeterminados, como el editor.
Anders
6

Sí, puede configurarlo sudopara permitir que el usuario ejecute ciertos comandos con privilegios adicionales. Puede cambiar esto en su /etc/sudoersarchivo, pero es aconsejable no hacerlo directamente, pero use el sudo visudocomando para esto.

En la instalación predeterminada del sistema, debe encontrar dicha línea:

pi ALL=(ALL) NOPASSWD: ALL

Le indica sudoque permita al usuario piejecutar todos los comandos de rootusuario como usuario sin siquiera proporcionar una contraseña. Puede cambiar el último ALLy especificar la lista de comandos delimitados por comas (con su ruta completa) permitidos para ejecutarse. En su caso, debe cambiar esta línea a:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

Tenga en cuenta que hay una línea más que sudoersafecta al piusuario:

%sudo   ALL=(ALL:ALL) ALL

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 usuario pipodrá 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 pidel sudogrupo.

Después de realizar cambios en el /etc/sudoersarchivo, es posible que desee inspeccionar que realmente hace lo que desea llamando al sudo -l -U picomando.

Por supuesto, puede crear diferentes cuentas y configurarlas sudoersdándoles acceso a diferentes comandos.

Krzysztof Adamski
fuente
1

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:

/etc/sudoers

y la última línea del archivo es esta:

#includedir /etc/sudoers.d

Este es un directorio que contiene un archivo llamado

010_pi-nopasswd

que contiene esta sola línea

pi ALL=(ALL) NOPASSWD: ALL

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) ALLsigue ahí como

Entonces, 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 sumodo. Si olvidó su contraseña de root, puede restablecerla desde su solicitud normal utilizando sudo passwd rootLuego, el sucomando funcionará y podrá continuar desde allí.

SDsolar
fuente
Acabo de encontrar esto a través de Google, por lo que si sigo esto, el usuario aún debe estar en el grupo de sudoers, pero /etc/sudo.d controla con qué frecuencia se le solicita una contraseña al usuario específico.
lonstar
1
Sí. Tu lo tienes. Ser miembro sudoersgeneralmente se realiza en el momento en que se crea el usuario. Ejemplo de uso: Notará que la cadena de comando común sudo apt-get update && sudo apt-get upgradeinvoca 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 use sudo apt-get update -y && sudo apt-get upgrade -ypara 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.
SDsolar
0

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/sudoersde:

pi ALL=(ALL) NOPASSWD: ALL

a

pi ALL=(ALL) PASSWD: ALL

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/sudoersdirectamente; solía sudo visudohacerlo.

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í ...

scruss
fuente
3
Mencionar el timestamptiempo de espera es una buena idea. Son 15 minutos por defecto, por cierto. Tenga en cuenta que PASSWDes predeterminado (si NOPASSWDno se especificó anteriormente en esta lista de comandos). También tenga en cuenta que /etc/sudoerspuede editarse directamente sin problemas si sabe lo que está haciendo. El uso visudorealiza 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.
Krzysztof Adamski
Creo que el OP actualiza que rara vez obtiene un nuevo kernel ... o algún colega le dijo que reiniciara cada vez, porque no quería explicar cómo el OP podía detectar un paquete de kernel en la lista de actualizaciones.
orithena
TNX para este comentario, @Krzysztof. Hice la corrección en mi respuesta. Y tienes razón sobre la edición. De hecho, en mi máquina 16.04, simplemente puse la línea pi directamente en el archivo sudoers, porque sudoers.d solo contenía un archivo Léame. Lo dejé solo porque, pero al menos se están procesando los permisos pi. (Mi editor favorito es VI / VIM, por cierto, pero a veces usará leafpad o Idle. No he vuelto a dominar emacs, 15 años es mucho tiempo, y puedo hacer mucho más, más rápido, en vim de lo que puedo en emacs , de lejos.) Gracias de nuevo.
SDsolar
0

Solo una alternativa a lo que dijo scruss, elimine el /etc/sudoers.d/010_pi-nopasswdarchivo ejecutando sudo 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