PDA

Ver la Versión Completa : Acceso a YaST sin contraseña



israrace
01-may-2008, 21:01
Hola a todos, me gustaría saber si hay alguna forma de desactivar el diálogo que te pide la contraseña al entrar en el centro de control YaST, para que, haciendo clic en el icono, YaST se abra automáticamente.

La razón es que en el ordenador que utiliza el resto de mi familia está fedora y entonces, en mi portátil, tengo openSUSE y solamente lo utilizo yo, por lo que no necesito que me pida la clave

Gracias a todos

karlggest
01-may-2008, 22:49
setuid?

Salud!!

migtei
01-may-2008, 23:03
Quieres correr el comando /sbin/yast2, que solo lo puede ejecutar root, como un usuario normal sin que te pida ninguna contraseña.
Para que un usuario normal pueda correr cualquier comando específico como otro usuario se usa sudo. Ese otro usuario puede ser root. Abre yast=>Seguridad e usuarios=>sudo

Lo que hace ese módulo de yast es configurar el archivo de texto /etc/sudoers. Míralo como root porque es donde se configura el tema. Se suele configurar con el programa de consola /usr/sbin/visudo, que funciona como el editor de texto vi, pero además comprueba la sintaxis correcta para que no la cagues.

Mira en el konqueror:
man:sudo
man:sudoers
man:visudo
Te doy algunas pistas de lo que debieras ver en /etc/sudoers una vez configurado:
Alias significa un nombre que engloba algo.


User_Alias CONFIGURADORES = pepe, manuel, rosa
Significa que pepe, manuel y rosa pertenecen todos al alias de usuario CONFIGURADORES.


Cmnd_Alias ABREYAST = /sbin/yast2, /usr/bin/less /var/log/messages, /usr/bin/less /var/log/firewall
Significa que el alias de comandos ABREYAST engloba específicamente los 3 comandos separados por coma.


CONFIGURADORES hal9000 = NOPASSWD: ABREYAST
Significa que los usuarios englobados en el alias CONFIGURADORES pueden ejecutar los comandos englobados en el alias ABREYAST en el ordenador con hostname hal9000 sin que les pida contraseña alguna (si no pones usuario presupone que el usuario que ejecutará el programa es por defecto root).
Y el archivo suele terminar con la línea:

root ALL = (ALL) ALL
Para que puedas ejecutar programas en el servidor gráfico X del usuario normal (yast es un programa gráfico), puede que sea necesario que comentes la siguiente línea con un # al principio:

Defaults env_reset
Así:

#Defaults env_reset
Busca en el foro la palabra sudo y hallarás consuelo. Si aprendes la mecánica del programa se te van a ocurrir cien cosas que puedes hacer con él. Piensa también que lo puedes usar para que unos usuarios elegidos puedan hacer cosas como meterse en directorios de otros sin tener que cambiar los permisos de los directorios, solo tocando /etc/sudoers. Lo mejor es que sudo es igual en todas las distribuciones linux.
EDITADO:
Al rehacer esto en suse 11 me he dado cuenta que el archivo /etc/sudoers menciona y precisa que se comenten con # las dos lineas siguientes para que funcione correcto y que no he mencionado (disculpas). Tienen que quedar así:

#Defaults targetpw
#ALL ALL = (ALL) ALL
Lo explica este comentario antes de esas dos lineas:

# In the default (unconfigured) configuration, sudo asks for the root password.
# This allows use of an ordinary user account for administration of a freshly
# installed system. When configuring sudo, delete the two
# following lines:
Suerte...

karlggest
01-may-2008, 23:23
(...)

Cmnd_Alias ABREYAST = /sbin/yast2, /usr/bin/less /var/log/messages, /usr/bin/less /var/log/firewall
Significa que el alias de comandos ABREYAST engloba específicamente los 3 comandos separados por coma.
(...)No sabía yo que era tan fácil definir eso. :scratchch

Salud!!

migtei
02-may-2008, 02:08
Una vez que entiendes el esquema del archivo sudoers resulta relativamente sencillo de configurar, aunque tiene mucho peligro ser poco específico.
Si como comando en una linea Cmnd_Alias ponemos un directorio, los usuarios designados podrán abrir cualquier archivo (no subdirectorio) de ese directorio.
En la man de sudoers:

Cmnd_Alias ::= NAME '=' Cmnd_List
...When you specify a directory in a Cmnd_List, the user will be able to run any file within that directory (but not in any subdirectories therein).
Si algún mangarrufo mete un script en ese directorio estás jodido. Por eso pongo lo de poner comandos (o archivos) específicos en negrita, quiero decir que cuanto menos específico (o más amplio) se sea, mayores son los agujeros de seguridad.
Un ejemplo práctico muy útil del uso de sudo
Para monitorizar la red uso iptop e iftraf, pero hay que loguearse y arrancarlos como root. Yo quiero arrancarlos en una consola como usuario normal sin tener que poner ninguna contraseña. También quiero poder acceder a los log de la máquina y del firewall fácilmente, incluso en tiempo real.
Pongo en /etc/sudoers las líneas:


User_Alias VISORES = pepeluis
Cmnd_Alias MONITORIZAR = /usr/bin/less /var/log/messages, /usr/bin/less /var/log/firewall, /usr/sbin/iptraf, /usr/sbin/iftop, /usr/bin/tail -f -n 25 /var/log/messages, /usr/bin/tail -f -n 25 /var/log/firewall
VISORES mimaquina = NOPASSWD: MONITORIZAR

Significa que pepeluis puede arrancar como root los comandos asociados al alias MONITORIZAR sin pedirle contraseña en la computadora llamada mimaquina.

Ahora viene la parte elegante. Ya que los comandos no están en el path de usuario (son de root) y para que pepeluis no se hernie tecleando sus rutas completas, vamos a asignar alias de comando sencillos a los de arriba. Este alias del que hablo ahora no tiene que ver con los alias de sudoers, no nos liemos.
Crea si no lo tienes el archivo /home/pepeluis/.alias y pega estas líneas dentro (espero que el editor web de forosuse no cambie algo):

#ALIAS QUE CORREN COMO ROOT USANDO sudo. NOTA: Para que funcionen hay que habilitarlos en /etc/sudoers
#miralog => ver con less el contenido del archivo /var/log/messages (como root)
alias miralog='sudo less /var/log/messages'
#siguelog => sigue en vivo las 25 ultimas lineas de /var/log/messages (como root)
alias siguelog='sudo tail -f -n 25 /var/log/messages'
#mirawall => ver con less el contenido del archivo /var/log/firewall (como root)
alias mirawall='sudo less /var/log/firewall'
#siguewall => sigue en vivo las 25 ultimas lineas de /var/log/firewall (como root)
alias siguewall='sudo tail -f -n 25 /var/log/firewall'
#
#NOTA: Estos 2 programas de root no estan en el $PATH (ruta de ejecutables) de los usuarios, por eso hay que poner su ruta completa
#iftop => programa de monitorización de red (como root)
alias iftop='sudo /usr/sbin/iftop'
#iptraf => otro programa de monitorización de red (como root)
alias iptraf='sudo /usr/sbin/iptraf'
Se activan estos alias de comando poniendo pepeluis en una consola:

cd ##sitúate en /home/pepeluis
source /home/pepeluis/.alias
Por ahora solo funcionan los alias de comando en esa consola que has usado (buena para pruebas), hasta que re-arranques las X (el servidor gráfico re-lee la configuración de /home/pepeluis/.alias), permitiendo con ello que funcione en todas las que arranques en el nuevo servidor gráfico.
Funcionamiento
Escribe en una consola el alias y se ejecuta el comando sin más, por ejemplo si pones como usuario pepeluis:

miralog
Verás el log de tu máquina diréctamente como si fueses el mismísimo root. Sales con q

siguelog
Sigue en vivo los acontecimientos del log de tu máquina. ¡IMPRESCINDIBLE!. Sales con Ctrl + c

mirawall
Te permite ver el log del firewall. Sales con q

siguewall
Sigue en vivo los acontecimientos de tu firewall cuando te pones paranoico. Sales con Ctrl + c

iftop
Arranca iftop, pero sin tener que poner su ruta completa (/usr/sbin/iftop no está en el path de usuario)

iptraf
Lo mesmo que el anterior.
Suerte...

karlggest
02-may-2008, 02:20
muy lindo y detallado... ¿quizás en FAQ?

Salud!!

israrace
02-may-2008, 12:42
Muchísimas gracias por toda la información (todo muy profesional) voy a ponerme a revolver un poco en el sistema :)