¿Alguna idea, por favor? He mirado y remirado mil páginas y no entiendo porqué no toman efecto las reglas del fichero sudoers.
¿Alguien puede echarme un cable? Gracias.
Hola a tod@s,
Necesito ayuda con la administración de permisos mediante la configuración del fichero /etc/sudoers.
Os explico lo que necesito exactamente. Estoy migrando una aplicación cliente Java de Windows a Linux. Dicha aplicación establece conexión con un servidor, el cuál le envía en un paquete su hora de sistema. El cliente, al recibirlo, extrae la hora y ejecuta el comando correspondiente para sincronizar la hora (sé que es un mecanismo muy cutre, pero es lo que se me ha ocurrido hasta el momento..xD). En Windows, con el comando 'time' más la hora obtenida funciona sin problemas. En Linux, utilizando 'date -s' más la hora, NO. Deduzco que es por cuestión de permisos.
Para ello he intentado hacer lo mismo desde la consola de Ubuntu y, efectivamente, me solicita permisos. Así pues, fácil, modifico /etc/sudoers para que a mi usuario no le pida la contraseña para determinados ejecutables.
Así pues, con el man y mediante google, he probado varias cosas para conseguirlo, quedando mi fichero así:
No obstante, todavía me sigue pidiendo la contraseña, así que me gustaría que me echárais un cable y para ello os pregunto dos cosas:Código:# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Uncomment to allow members of group sudo to not need a password #%sudo ALL=NOPASSWD: ALL # Host alias specification # User alias specification User_Alias DULCEANGUSTIA = dulceangustia # Cmnd alias specification Cmnd_Alias BIN = /bin/, /usr/bin/, /usr/local/bin/ # User privilege specification root ALL=(ALL) ALL DULCEANGUSTIA ALL= NOPASSWD: BIN dulceangustia ALL=(ALL) NOPASSWD: ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL
1. ¿Es absolutamente necesario realizar las modificaciones con visudo? A mí es que vi no me gusta un pescao, y lo he hecho con nano. Los cambios se guardan, y no alcanzaría a entender que pueda ser éste el problema. No obstante, si necesitara utilizar visudo, ¿qué hago ahora que lo he modificado con nano?
2. ¿Cómo debería quedar mi /etc/sudoers para que pudiera ejecutar los binarios especificados sin que se me solicitara contraseña alguna con sudo?
Espero vuestras indicaciones. Muchas gracias.
Hola, la verdad es que no tengo ni idea de como hacer eso que pides, pero te pongo un enlace en español por si no lo has visto:
http://www.linuxtotal.com.mx/index.p...info_admon_014
EDITADO--> Otro enlace por si te ayuda...
http://alufis35.uv.es/~laura/spip/spip.php?article172
Última edición por tolyluis; 30/08/2008 a las 12:57 Razón: Añadir más cosas
¿Por que te conformas con un windows cuando tienes un /home para ti entero? Usa GNU/Linux
Muchas gracias por los enlaces, no los había leído (me tiré a los tutoriales en inglés... xD). De todas formas, todos dicen casi lo mismo, aunque en uno de éstos dice que aún poniendo como regla
usuario ALL=(ALL) ALL
Se pide el password y que, por norma y si no se modifica con otro parámetro, durante 15 minutos no se requerirá escribir el password de nuevo.
¿Acaso no es posible actuar sobre el ordenador sin que se solicite contraseña? En teoría el único que lo permite es root, pero me gustaría saber si es posible proporcionar a otro usuario la misma facilidad, es decir, poder ejecutar cualquier cosa sin necesidad de introducir la contraseña ni una sóla vez (únicamente en el login, claro). Estoy en Ubuntu como podéis deducir...
Gracias.
Hombre si no, no sería linux¿Acaso no es posible actuar sobre el ordenador sin que se solicite contraseña? En teoría el único que lo permite es root, pero me gustaría saber si es posible proporcionar a otro usuario la misma facilidad, es decir, poder ejecutar cualquier cosa sin necesidad de introducir la contraseña ni una sóla vez (únicamente en el login, claro). Estoy en Ubuntu como podéis deducir...
Gracias.
PD.: para el root tambien necesitas contraseña no?
Última edición por Giens; 30/08/2008 a las 19:04
Joder Dulce angustiA, mira que no quería liarme a investigar , pero al final me pico y me lío yo solo....
Bueno, solo decir que ya se un poco por donde van los tiros, y lo único que puedo decir es que esto del sudoers es la POLLA(perdón por la grosería, pero es lo que mejor define a sudoers), es potentísimo y permite administrar tus equipos hasta el mínimo detalle.
Cuando leí tu mensaje me chocaba que Ubuntu usase vi para el comando visudo, todo esto del sudoers (de lo que no tenía ni idea y gracias a este hilo he aprendido una cosa más) lo he hecho bajo Debian y no usa vi, usa nano para visudo. Ahora estoy en Ubuntu y diosss que asco, hacía años que no usaba vi (desde los tiempos en que me inicié en linux y no conocía nano). Si la gente dice que vi es un editor super-potente será por algo, pero a mi particularmente me exaspera.Iniciado por Dulce angustiA
Por otro lado, usa siempre visudo en uno de los enlaces que te puse antes pone lo siguiente:
Así que ya ves la que se puede montar si no usas visudo, pero hay una buena noticia, ¡se puede cambiar!, vas a poder editar con nano si te apetece ya que hay una opción que permite cambiar el editor de visudo.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à"
Después de pensar esto, debería sonar un campanazo de error, o un gran Meeeeeeeeeeck, 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 cambiarlosD 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.![]()
Si, en el enlace que te he puesto antes pone eso que dices, tenemos por un ladoIniciado por Dulce angustiA
Con esta opción permites al usuario ana usar todo tipo de comandos (por supuesto mediante sudo) sin que se le pida nunca su contraseña.Defaults !authenticate, log_host
Desactiva 'off' el default 'authenticate' que por defecto esta activado 'on' e indica que todos los usuarios que usen sudo deben identificarse con su contraseña, obviamente esto es un ejemplo y sería una pésima idea usarlo realmente, ya que ningún usuario necesitaria autenticarse, esto es porque estamos usando Defaults de manera global. La segunda opción 'log_host' que por defecto está en 'off' la activamos y bitacoriza el nombre del host cuando se usa un archivo (en vez de syslog) como bitácora de sudo.
Defaults:ana !authenticate
Aqui se aprecia algo más lógico, usamos opciones por usuario en vez de global, indicando que el usuario 'ana' no requerira auténticarse. Pero todos los demás si.
Fijándome en el ejemplo que ponen en el enlace que puse te recomiendo que uses comentarios para liarte menos y saber que estás definiendo en cada momento.
Es decir, si tu sudoers quedase así:
Haces que tu usuario ejecute cualquier comando sin necesidad de pass mediante sudo, es decir:# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
# Defaults env_reset
# Esta línea hace que el usuario dulceangustia ejecute cualquier comando mediante sudo sin pedir pass
Defaults:dulceangustia !authenticate
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
# esta línea permite ejecutar todos los comandos al usuario dulceangusia (como viene en Ubuntu por defecto)
dulceangustia ALL=(ALL) ALL
si haces a palo seco: apt-get update - NO FUNCIONA
si haces: sudo apt-get update - el sistema hará la orden sin password de usuario
Como puedes ver, esto no es nada seguro, ya que podrías lanzar cualquier comando sin tener que meter tu pass.
Ahora es cuando entra en juego esto:
Con la opción NOPASSWD dices que comandos quieres que se usen sin que el sistema te pida el pass, un ejemplo:NOPASSWD Y PASSWD
Por defecto sudo requiere que cualquier usuario se identifique o auténtifique con su contraseña. Aprendimos en la sección de 'Opciones' o 'Defaults' que es posible indicar que un usuario o alias de usuario no requiera de autentificación. Pero el control granular propio de sudo, permite ir aun más lejos al indicar a nivel de comandos, cuáles requieren contraseña para su uso y cuáles no.
gerardo webserver = NOPASSWD: /bin/kill, /usr/bin/lprm, /etc/httpd/conf/
Usuario 'gerardo' en el equipo 'webserver' no requerira contraseña para los comandos listados. El tag se hereda, es decir no solo el primer elemento de la lista de comandos, sino los subsiguientes. Suponiendo que el último '/etc/httpd/conf/' elemento, que permite modificar cualquier archivo contenido en el directorio, si deseamos que use contraseña, lo siguiente lo conseguirá:
gerardo webserver = NOPASSWD: /bin/kill, /usr/bin/lprm, PASSWD: /etc/httpd/conf/
Aunque ya que solicitar contraseña es el default o defecto preestablecido, lo anterior también funcionará de la siguiente manera:
gerardo webserver = /etc/httpd/conf/, NOPASSWD: /bin/kill, /usr/bin/lprm,
Haces que al usuario dulceangustia se le pida pass al usar sudo excepto si hace sudo apt-get loquesea (p.e. si haces sudo apt-get update o apt-get upgrade lo hace sin pedir pass)# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
# Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
# esta línea permite ejecutar todos los comandos al usuario dulceangusia (como viene en Ubuntu por defecto)
dulceangustia ALL=(ALL) ALL
dulceangustia ALL= NOPASSWD: /usr/bin/apt-get
Por otro lado, creo que usas los alias de forma redundante, la parte esta que has puesto al inicio
sobra, ya que en tu equipo ya tienes un usuario dulceangustia. Los Alias son opcionales, no obligatorios, y se usan para acortar al citar equipos (Host_Alias), usuarios (User_Alias) o comandos (Cmnd_Alias).User_Alias DULCEANGUSTIA = dulceangustia
Por lo tanto para que puedas usar date sin que pida permisos y que puedas usar nano como editor de visudo deberías hacer el sudoers de esta manera:
La única limitación es que para ajustar la fecha en el cliente el comando que tienes que usar es sudo date, por lo que parece no se puede configurar el sudoers para que mi usuario (luis) pueda hacer comandos de root sin anteponer sudo, cosa lógica por otro lado. Así que no se si todo esto te servirá.# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
# Defaults env_reset
# Hace que el editor para visudo sea nano
Defaults editor= /bin/nano
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
# permite ejecutar todos los comandos al usuario dulceangustia (como viene en Ubuntu por defecto)
dulceangustia ALL=(ALL) ALL
# permite usar el comando date sin pedir pass
dulceangustia ALL= NOPASSWD: /bin/date
De todas formas si el archivo sudoers tiene algo inconsistente te "pega un toque" antes de guardarlo para que lo rectifiques.
Una última cosa si haces:
y luego haces:Código:sudo su
ves todas las opciones que trae visudo por defecto en el sistema, como puedes ver hay multitud de ellas, por eso digo que sudoers es una herramienta potentísima para administrar el/los equipo(s).Código:sudo -V
Bueno, me he pegado una buena pechá trasteando con visudo hasta que he dado con la forma de hacer lo que pedías, y no me importa, por que ya te digo, he aprendido una cosa nueva (que nunca está de más). Sólo espero que te sirva y que al final puedas hacer lo que tenías pensado. Por otro lado yo me voy mañana (bueno, mejor dicho, hoy) de vacaciones y ya no voy a poder forear. Si eso, sigue comentando aquí los resultados y ya lo leeré cuando vuelva.
¡Nos vemos!
PD. Aunque todas las pruebas las he hecho bajo Debian, he probado ahora en Ubuntu lo que he aprendido y funciona si dejas la misma estructura del sudoers de Debian en Ubuntu.
Última edición por tolyluis; 31/08/2008 a las 03:41
¿Por que te conformas con un windows cuando tienes un /home para ti entero? Usa GNU/Linux
Huolas,
Pedazo de mini-howto que te has currado toyluisGracie. Yo cuando entre en la empresa que estoy ahora siempre habia usado nano (soy administrador de sistemas y bueno, los archivos de configuracion no son muy largos)
Pero los programadores con los que trabajo, usan todos vi y al principio yo renegaba muchisimo de usarlo, me parecia super dificil y bastante caotico.
Pues bien, si te pones en una semana y un tio que edita 5 archivos de 800 lineas cada uno, te explica los comandos que usa y porque les usa empiezas a entender el poder de vi. Te aseguro que si sabes manejarlo el vi te hace hasta pajas!
En serio, hace cosas que no sabria hacer con ningun otro editor de texto (decirle, buscame de la linea 3 a la 200 la cadena 'define' y la borras o la sustituyes o borrame de esta linea a tal linea el penultimo caracter y mil cosas asi). Es cierto que si no le vas a dar un uso intensivo y vas a hacer uso de todas sus funciones es mejor no perder el tiempo en aprenderlo ya que la curva de aprendizaje es jodida, pero bueno a mi me enseñaron poco a poco y ahora tambien soy un vi-adicto.
Un saludo.
Linux Abuser.
En primer lugar, muchisimas gracias a toyluis por la currada que se ha metido para hacer un minitutorial. No obstante y, a decir verdad, me da hasta rabia decirlo, con incluir el usuario en el grupo 'admin' bastaba ya que la última linea de mi /etc/sudoers hace que cualquier miembro del grupo 'admin' tenga los mismos derechos que root, pudiendo ejecutar cualquier comando sin introducir contraseña, únicamente introduciendo 'sudo' antes del comando. La verdad es que pensaba que ya estaba en el grupo admin... U_U.
Lo de !authenticate no lo había visto todavía, quizás sea eso lo que realmente hace falta para que funcione el tema como a mí me interesa. Lo de NOPASSWD y ALL=(ALL) ALL ya lo hice como se pudo ver pero no servía de nada. Es por eso por lo que pedía ayuda: lo hice pero no surgía efecto.
Yo también he leído mucho que vi es el editor de editores y ciertamente es complicado de usar. De todas formas y como siempre, se va aprendiendo sobre la marcha (aún recuerdo cuando no sabía ni como salir, ni como escribir, ni como guardar...xD). Para visudo la gracia de usar vi en lugar de otro editor parece ser que es que analiza la corrección sintáctica. No estoy seguro si al cambiar el editor sigue comprobándolo. De tus líneas, toyluis, extraigo que sí; ¿es así?
Lo dicho, muchas gracias por tus apuntes. Sin duda han sido de utilidad y, sobre todo, para aprender varias cosas nuevas. Se agradece mucho esta dedicación. Ahora, que disfrutes de tus vacaciones..xD.
EDITO: ¡MENTÍ! No me pedía password porque tenía al final una línea: dulceangustia ALL=NOPASSWD: ALL en lugar de la combinación que tenía en el fichero que presenté al principio. Digamos que la forma correcta es como explica toyluis, pues coincide con la configuración resultante y correcta.
Conclusión:
1. Al pertenecer mi usuario (dulceangustia) al grupo admin, puedo lanzar cualquier ejecutable (como el usuario root y cualquier otro usuario en el grupo admin).Código:# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Uncomment to allow members of group sudo to not need a password # %sudo ALL=NOPASSWD: ALL # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # No password requierement for dulceangustia dulceangustia ALL=NOPASSWD: ALL
2. No se me requerirá password al lanzar cualquier ejecutable.
3. Para que esto tenga efecto debo lanzarlos con el 'prefijo' sudo, de manera que el sistema acuda al fichero /etc/sudoers, analice las reglas establecidas en el mismo y las aplique a la ejecución.
Ale, parece que está arreglado. Aprovecho para volver a agradecer a toyluis su currada.