Inici > Alter > Informática > Sobre Linux > Debian >

Uso de Sudo en Debian Testing Stretch

dissabte 8 d’octubre de 2016, per  laura

Después de usar durante unos años Ubuntu te acabas acostumbrando a ciertas manías que tiene esta distro y que no comparte con el resto de las distribuciones de Linux.

Una de estas manías es la de no crear un usuario root, o más bien no mostrar al usuario que este tipo de usuario puede existir.

Usuario root, por qué y para qué

Un usuario root, por definición, es aquel que puede administrar completamente el ordenador en linux. Esto hace que si se crean otros usuarios, no sean capaces de hacer lo mismo que root, es decir, root tiene poderes que no tienen el resto de usuarios.

La invención de este usuario es para poder asegurarse de que el sistema permanece seguro a pesar de que pueda ser usado por multitud de personas, incluso, al mismo tiempo, ya que si no se tienen permisos de lectura(r), ejecución(x) y de escritura(w) sobre los archivos de configuración, poco daño pueden hacer los usuarios bien o mal intencionados que tenga un sistema. Lo cual contribuye a la seguridad de Linux como sistema operativo. [1]

Sudo y Ubuntu

Para facilitar la vida, lo que hace Ubuntu es eliminar la figura de root, y convertir al usuario principal (el que haces durante la instalación de ubuntu) en el todopoderoso del sistema operativo. Si se crean otros usuarios más tarde, estos no tienen sus poderes, a no ser que se retoque su configuración.

El método que se emplea para que el usuario principal pueda administrar el sistema es utilizar el comando sudo situándolo siempre ante los comandos que se hayan de ejecutar. Un ejemplo es el siguiente:

usuario@ubuntu:~$sudo apt-get install blabla
[sudo] password for usuario:

Aquí tenemos a usuario tratando de instalar un programa llamado blabla mediante el uso de sudo en la shell. Como se observa tras escribir el comando :

sudo apt-get install blabla

el sistema le pide la contraseña para confirmar que es usuario con derechos de administrador del sistema.

[sudo] password for usuario:

Si la contraseña corresponde a la del usuario, el comando apt-get se ejecutará con todas sus consecuencias.

En el ejemplo anterior el sistema reconoce al usuario como un usuario sudo válido.

Puede que cuando se trata de usar sudo en un sistema sin que esté preparado para ello, o con un usuario que no tenga especificado en su configuración este poder, ocurra algo similar a esto:

laura@debian:~$ sudo su
laura is not in the sudoers file.  This incident will be reported.

Más o menos nos indica que no tenemos ningún derecho a usar sudo, y que se lo dirá al jefe, es decir, a root. Si este no fuera mi sistema o si fuera un ordenador público, puede que esta tontería tuviera consecuencias, depende del humor del administrador. ;)

Como en este caso se trata de mi ordenador, pues tengo posibilidad de ejecutar cualquier comando tras loguearme como root, pero esto a la larga y como dije antes, una vez acostumbrados al sudo, se hace pesado, así que había que encontrar una forma de solucionar este elemento de fustración continuada.

Archivo de configuración, /etc/sudoers

Sudo determina quien está autorizado consultando el archivo /etc/sudoers. El archivo /etc/sudoers, es el lugar donde se guarda la configuración respecto a sudo. Y resulta ser un tipo de archivo bien especial, pues no tiene derechos de escritura ni el mismísimo root:

laura@debianppc:~$ ls -ls /etc/sudoers
4 -r--r----- 1 root root 322 may 10 12:25 /etc/sudoers

Esto hace que no se pueda editar de cualquier forma. Hay al menos dos modos de actuar ante esta situación, una es correcta y otra es incorrecta, probablemente esta última es bastante más utilizada,

Forma Incorrecta, pero solucionable
Lo malo es que llegados a este punto, se suele hacer mal, porque pensamos:
"si este archivo no tiene derechos de escritura ni el propio root, habrá que cambiar los permisos para que se pueda escribir. Y una vez modificado el archivo, pues vuelvo a cambiar los permisos y ya està :D"

Después de pensar esto, debería sonar un campanazo de error, o un gran Meeeeck, porque este pensamiento llevado a efecto, crea un conflicto muy interesante, si no se tiene contraseña para loguearse directamente como root (como suele ocurrir en ubuntu), ya no se puede usar el sudo para nada, puesto que los permisos del archivo de configuración de sudo no son correctos, pero paradójicamente tampoco se pueden modificar para cambiarlos :DD porque no te puedes loguear como root haciendo sudo su(¿a que es divertido?).

Bien, la solución cuando no hay password para root, y no hay forma de entrar como root, es reiniciar el sistema, y entrar a ubuntu en el modo recorvery mode (modo de rescate) y elegir la opción root.
Esto te permite llegar a una consola (sin gráficos) donde ya eres root (uff :)) donde se pueden modificar los permisos con un simple:

chmod 0440 /etc/sudoers

Al reiniciar en el modo normal todo estará arreglado y el susto habrá pasado. :)

Forma Correcta, sin caos
La correcta, se basa en el uso de un editor especial, que únicamente sirve para editar este archivo. Es el editor visudo. Visudo sólo tiene 4 opciones, pero para el caso que nos ocupa, basta con usar una.

visudo -f /etc/sudoers

Con este comando (o agregándole el sudo delante) se puede editar y modificar el archivo de la configuración de los usuarios sudo. Este podría ser un archivo típico /etc/sudoers, en debian:

Bien, una vez abierto se localiza la línea donde está root, y se agrega justo debajo una muy similar pero sustituyendo root por el nombre de nuestro usuario, es decir, siguiendo con el ejemplo, algo así:

laura ALL=(ALL:ALL) ALL

Donde :
laura: nombre de la usuaria a la que se le permite el uso de sudo
ALL: se permite que se ejecute sudo desde cualquier terminal
(ALL:ALL): (usario:grupo) el usuario podrá ejecutar todos los comandos de cualquier otro usuario. Además, con el segundo ALL de este paréntesis, permitimos que el usuario ejecute todos los comandos de todos los grupos existentes en el sistema.
ALL: permite que todos los comandos pueden ser ejecutados

NOTA IMPORTANTE: [2]

Tras lo cual hemos de guardar y cerrar para que tomen efecto los cambios. Como visudo, contra toda la lógica de su propio nombre, no usa vi, sino GNU Nano, los atajos de teclado son diferentes, básicamente es bueno recordar estos dos:

Ctrl+o  Intro para guardar
Ctrl+x  para salir  

Existe la posibilidad de cambiar el editor de este archivo por otro, por ejemplo usando vim con el siguiente comando:

root@debian:/~#  EDITOR=vim visudo

Hecho todo esto, podremos disfrutar instalando o tocando la configuración de nuestro sistema, sea o no ubuntu, usando el sudo ....

laura@debian:~$ sudo apt-get install blabla
[sudo] password for laura:

Una vez que el usuario ha sido autenticado, durante un periodo de 15 minutos(opción por defecto) sudo puede ser usado sin necesidad de escribir la contraseña nuevamente.

Conocer que derechos hay concedidos en nuestro sistema

Para saber que derechos hay definidos en el /etc/sudoers, ejecutar sea cual sea el usuario con el que estemos logueados:

laura@debian:~$  sudo -l
[sudo] password for laura:
User laura may run the following commands on this host:
   (ALL) ALL

Configuración avanzada de sudoers

Esto que he descrito hasta aquí es todo lo que se puede hacer sin profundizar mucho en el tema, pero tocando el archivo sudoers se puede llegar a personalizar el comportamiento de sudo para que cumpla nuestros requerimientos.

Por ejemplo, sabemos que tras ejecutar el comando sudo con nuestro usuario y aportar la contraseña, tenemos un periodo de tiempo, por defecto 15 minutos, en que podremos seguir ejecutando órdenes con sudo sin que el sistema nos pida la contraseña de nuevo. Bien, esto puede llegar a ser un problema si dejamos el equipo en manos de extraños. Para evitarse problemas puede configurarse el comportamiento de sudo para que limite ese tiempo

{{timestamp_timeout=0 }} (cero) con esta configuración se consigue que cada vez que se ejecute sudo el sistema pida la contraseña, ya que expira cada 0 segundos.

{{timestamp_timeout= X }} Donde X será el tiempo en segundos durante los que se podrá ejecutar sudo sin necesidad de introducir la contraseña de nuevo.

{{timestamp_timeout=-1 }} (menos uno) con esta configuración el sistema no vuelve a pedir la contraseña. Opción poco recomendable en la mayoría de casos.

Para adentrarse en este tema se puede leer la páginaman de sudoers, la de man sudo, o echar un vistazo a los manuales que hay por internet dedicados a extender este punto.


[1Este tipo de restricciones es la base de que no se puedan propagar fácilmente los virus o otros malwares, ya que no se suele ejecutar ningún programa como root directamente evitando que el sistema esté a merced de programas mal intencionados.

[2La forma de esta linea no es algo aleatorio, sino que responde a una estructura muy determinada. La sintaxis de ejecución como usuario no root es:

user  host = (run-as) commands

Esta sintaxis le dice a sudo que el usuario, identificado como user y conectado a través del sistema host, puede ejecutar cualquiera de los comandos listados en commands como usuario root.

Esto se puede convertir en una gran ventaja o en un gran enemigo, hay que tener mucho cuidado de a quien se le otorga este beneficio, si se pretende usar esto en un sistema con muchos usuarios o más o menos público, lo mejor es no dejar que un usuario ejecute ninguna aplicación que le permita incrementar los permisos.

Missatges

  • Hola, he llegado a esta pagina mediante una búsqueda especificando como cambiar permisos a usuarios en Debian para que se comporte como en Ubuntu. Mi problema es, ya que acabo de instalar Etch r3, de como montar automáticamente con el disks manager algunas particiones ntfs y hacerlas utilizables para el usuario normal, ya que solo lo permite para el root. Probaré la configuración que dices, aunque dejé el asunto en intentar localizar los paquetes relacionados con ntfs-3g para x64 (para i386 si los localicé). Una lástima que los debianeros sean tan alérgicos al güindos. Personalmente creo que el camino es el de la integración y la compatibilidad, como así lo han entendido en Ubuntu, pero no he conseguido instalar este adecuadamente en la máquina a que me refiero por problemas con la controladora Sata del PC.
    Por lo demas, me ha gustado la forma en que explicas y desarrollas la solución en la página.
    Saludos...

  • Hola Ortzi,

    pues el montaje de ntfs, no he tenido que solucionarlo en debian porque en mi Ibook no existen estas particiones propietarias, pero con Kubuntu, (en un i386) he visto que en el archivo /etc/fstab aparece la siguiente linea:

    /dev/sda2 /mnt ntfs defaults 0 0

    Para una explicación de porque tener todo esto y para q sirve, además de otras muchas fuentes de info... hace tiempo ya comenté su significado aquí: http://alufis35.uv.es/ laura/spip/spip.php?article162#forum585 .

    Suerte!

  • Hola Laura.
    He llegado hasta aquí googleando, buscando como añadir aplicaciones al menú aplicaciones del escritorio de debian. Como ves no lo he encontrado, pero he encontrado este mágnifico artículo (vengo de Ubuntu, ya sabes de lo que hablo, jeje)
    Gracias,
    Pep

  • Hola!

    :) te agradezco el comentario. voy a tratar de resolver tu duda, si es que no lo has hecho ya.

    Para añadir aplicaciones al menú aplicaciones del escritorio Gnome (es posible que para kde se haga de forma análoga)

    1) Haces clic con el botón derecho del ratón encima del menú aplicaciones.

    2) En el diálogo emergente que sale podrás modificar lo que quieras de los menúes, añadir o quitar programas.

    Venga, suerte y hasta otra!

    Laura

  • Hola

    Parece ser que hay un modo de evitar poner la password cuando se trata de ejecutar algún comando con sudo .
    En este forum lo explican bastante bien :)
    http://foro.noticias3d.com/vbulletin/showpost.php?s=cbae2f5283f21c5e7afdb798fa3e8f28&p=2393276&postcount=7

  • Hola Laura, acabo de instalar debian etch en un pentium III y he aprovechado para agregarme (yo jeje) en la lista de sudoers. Respecto al tema de añadir aplicaciones con el menu contextual que dices no es tan fácil, sólo permite quitar de los establecidos pero si quiero añadir otro no hay opcion.Me imagino que habrá algún comando en consola. Googlearé un poco. Gracias de todas formas
    Pep

  • Pues la verdad es que es muy raro, has probado con los botones menu nuevo y elemento nuevo que aparecen en http://alufis35.uv.es/~laura/editor_menu_gnome.png ? .

    No lo he hecho, porque no tengo necesidad de modificar el menu de gnome, pero deberia hacerse toqueteando eso y sabiendo el lugar donde está el ejecutable que necesitas incorporar al menu.

    En todo caso, a ver si alguien se pasa por aqui y comenta la jugada :)

    Ciao!

  • Un escrit com n’hi ha pocs. Molt clar! He trobat el que cercava. Gràcies

  • Hola pastelera,

    Acabo de instalar la distro extremeña GnuLinex (basada en Debian Lenix) y al ejecutar en consola el comando

    visudo -f /etc/sudoers

    me dice:

    $bash: visudo: command not found

    ¿Soluciones?

    Un escrit com n’hi ha pocs. Molt clar! He trobat el que cercava. Gràcies

    Absolutament d’acord

    Salutacions!

  • hola :P

    Mm, creo que deberías probar con un sudo delante del visudo, puesto que parece ser que el usuario normal no puede ejecutar este comando, así que donde aparezca :

    visudo -f /etc/sudoers

    Debe aparecer :

    sudo visudo -f /etc/sudoers

    o ejecutar visudo como root :)

    Suerte!

    Laura

  • Hola laura!! Esta demasiado bueno tu comentario, pero como soy tan nuevo en esto (apenas ayer instale debian lenny) no entiendo muy bien a que te refieres con "sudo visudo -f /etc/sudoers

    o ejecutar visudo como root :)"
    Te refieres a que se debe iniciar el sistema en el recovery mode??

  • hola!

    No, no me refiero a arrancar el sistema en recovery mode, más bien, quiero decir que ejecutes esa orden en una terminal/consola y modifiques lo que se deba modificar, sin tocar nada extra.

    Aunque, si tan nuevo eres, haz todo esto en un sistema operativo de pruebas, no sea que no puedas volver atrás tu sólo, si no es borrando la partición, :) .

    Gracias!

    Laura

  • excelente explicativo justo lo que buscaba ya que migre hacia debian hace un dia desde ubuntu y me tenia este problema.
    muchas gracias!

  • no se si esto antes era distinto pero en debian testing a la fecha simplemente con hacer un su y despues usar nano o pico o echo "fulano ALL=(ALL) ALL" >> /etc/sudoers
    o sino adduser fulano sudo y listo ya podes usar sudo por pertenecer al grupo sudo
    y despues se podria usar sudo nano o sudo pico o sudo -s y despues echo "fulano bla bla b">> /etc/sudoers para editar el sudoers tambien osea eso de que no se puede editar de ninguna manera no corre mas
    ntfs para montarlo en el fstab ahora se usa el uuid
    ej
    blkid /dev/sda1
    /dev/sda1: UUID="10BEFZ93BSF77018" TYPE="ntfs"
    en vez de /dev/X seria 10BEFZ..... en el fstab
    de todas formas es mas facil montar la particion cuando queres hacer algo con
    ej
    mount -t ntfs (o ntfs-3g si quieren escribir)/dev/sda1 /mnt -o uid=1000
    el uid es el de su usuario (cat /etc/passwd) generalmente 1000 porque en la mayoria de maquinas es su primer y unico usuario y ahi arranca
    pd: jajajaj me mato como le remarcas al que pregunto lo de ntfs que es software propietario pero usas productos de la empresa que mayores trabas le pone a la tecnologia tanto en software como en hardware una empresa que hasta para bajarte sus herramientas de desarrollo te hace aceptar nda y que tiene comportamientos mas viles que microsoft como este por ejemplo
    https://bugzilla.gnome.org/show_bug.cgi?id=592665
    o ponerles lock-in al palm pre o no sacar itunes para linux es muy gracioso
    al margen de que hfs+ tambien es propietario imagino no tendras os ten instalado ,no ? saludos

  • si la solucion antes mencionada no resulta agan la siguiente que ise yop!!

    inserten el cd de instalacion,iniciando el ubuntu del mismo, luego montan la particion donde se encuentra la raiz de nuestro sistema base del disco duro, abren la terminal nano /media/particion_raiz_del disco_duro/etc/sudores

    colocan el usuario al que se le necesitan dar permisos de sudo dela forma q se menciono "usuario" ALL=(ALL) ALL reinician y listo

  • Gracias a ti por pasarte por mi blog y aportarle tu experiencia, :)

    Saludos!

  • Excelente post, yo he escrito algo similar.

    http://wp.me/pGqSw-aE

    Sólo aclarar que visudo no es un editor, es un comando :)

    Otra cosa: ¿A qué se debe que tengas el blog en francés? :)

    • gracias por la visita y el comentario, hace tiempo que escribí este post, y quizá necesite una revisión. Corregiré ese pequeño detalle semántico. :) .

      Lo cierto es que tu versión me parece bastante buena, enhorabuena por querer compartir todo lo que has aprendido hasta ahora sobre linux :).

      Ah, lo del blog, pues este blog está construido a partir del gestor de contenidos SPIP, y como este cms es de origen francés es posible que haya alguna parte no traducida, espero que no sea ningún inconveniente para quienes me visitan.

      Un saludo!

      Laura

  • BUENAS DIAS

    GRACIAS LAURA POR EL TRUCO, ME SACASTE DE UNA QUE NO SABIA QUE HACER PUES SOY NUEVO EN DEBIAN, OJALA SEAS TAN LINDA COMO INTELIGENTE...

    SALUDOS DESDE ESPINAL-TOLIMA,COLOMBIA

  • Excelente!! me sirvio mucho amigo. Gracias.

  • Buen tuto! Clarito y en un ratito tengo sudo configurado.

    Debian LXDE \m/

  • Gracias, el tutorial más claro sobre este tema que he visto.

  • Hola....si una cosa es extraña es un linux sin root.

    Todo lo que deci aqui esta bien, pero...
    abre tu consola...

    escribe su y dale al enter
    te pide contraseña..pon la que pusiste al instalar

    y listo..ya puedes escribir directamente sin sudo ni su ni nada ...

    apt-get install...lo que sea
    o ...apt-get update

    Con esta norma podras tener privilegios administrativos sin modificar nada...Asi es Debian.

    Saludos.

    • Pero este artículo es para los que no están acostumbrados a usar el comando su, sino sudo.

      Además no siempre es positivo que todos los usuarios de tu ordenador sepan la contraseña de root. Por ello se aconseja el uso de sudo para que algunos usuarios puedan ejecutar determinados programas, los que tu quieras y no puedan ejecutar otros más comprometidos sin tu control. :)

      Gracias por el comentario, un saludo!

Un missatge, un comentari?

moderació a priori

Atenció, el teu missatge no apareixerà fins que no hagi estat rellegit i aprovat.

Qui ets?
Afegeix el comentari aquí
  • Aquest formulari accepta les dreceres SPIP [->url] {{italique}} {italique} <quote> <code> i el codi HTML <q> <del> <ins>. Per crear paràgrafs, deixeu simplement línies buides.

= Frases Olvidadas =

Recopilaci

http://frasesolvidadas.es