Como hacer un icono que ejecute dos comandos, y otras cosas...

Hola, a ver, necesito saber como puedo hacer un icono que al picarle me desconecte el Ipod.

El caso es que hay que meter los siguientes comandos:

umount /mnt/ipod
y rmmod sbp2
este ultimo, solo rula bajo root.

La clave seria darle al icono y q se desconectase sin tener que meter pasword ni nada.
Supongo que esto se podra hacer o algo, hasta ahora he estado provando intentado hacer un script y usando el comando sudo, pero como no tengo mucha idea no me sale, me pide password. No se, que se os ocurre?

Y otra cosa, como puedo hacer para que cuando conecte el ipod, se monte automaticamente?
ahora mismo tengo en el fstab esto:
/dev/sda2 /mnt/ipod vfat iocharset=iso8859-15,codepage=850,user,umask=0 0 0
y uso mandrake.

Espero vuestra ayuda, gracias.
Bueno, te voy a intentar responder desde mis limitados conocimientos de Linux (vamos, los de un novato en toda regla XD).

Te puedes crear un fichero script tal que así:

---------------- comienzo del fichero -----------------
#!/bin/bash

umount /mnt/ipod
rmmod sbp2
-------------------- fin del fichero ----------------------

Le puedes llamar ipodon.sh, por ejemplo

A partir de aquí vas a necesitar privilegios de root.

Creamos un grupo para los usuarios que vayan a utilizar el chisme y tengan privilegios para utilizarlo.

groupadd ipod

Le das como usuario propietario del archivo root y grupo el que acabamos de crear.

chown root:ipod ipodon.sh

Le activas el bit SUID para que cada vez que se ejecute el archivo lo haga con los privilegios del usuario propietario del archivo (root) y le das privilegios de ejecución a cualquier usuario del grupo ipod.

chmod u+s ipodon.sh
chmod g+x ipodon.sh

Ya sólo necesitas añadir al grupo ipod los usuarios que tendrán permiso para ejecutar este archivo y crear el correspondiente icono en tu gestor de escritorio favorito a /ruta/del/archivo/ipod.sh.

Bueno, quizá está no sea la mejor manera, ni la más segura, yo no conozco otra (ya dije lo novato que era desde un principio).

Por otro lado lo de que se te conecta automáticamente... echale un vistazo a la documentación de hotplug, quizá encuentres algo.
he seguido todo lo que me has dicho, pero el usuario (erik) no lo puede ejecutar, me dice que permission denied.
has añadido al usuario Erik al grupo ipod ?

Lo puedes añadir directamente, editanto /etc/groups

o con algún frontend de tu elección.

Y hasta donde yo sé, para que la asignación de un usuario a un grupo surta efecto, el usuario debe de hacer logout y login (cerrar y abrir una nueva sesión). (Yo por lo menos, aún no sé cómo conseguir que el cambio de grupo se le aplique a una sesión abierta).
si, si que lo he añadido. He reiniciado ahora las X y sigue saliendo lo mismo. No se por que puede ser.....
Es mucho más sencillo que eso, puedes hacer que rmmod sea ejecutado como root, con sudo (man sudo), o activándole el bit SUID (como harías con el cdrecord por ejemplo ;)
yo pongo sudo rmmod sbp2 en la consola, y acto seguido me pide el password. Yo lo que necesito es k no me pida el password.

Lo del bit SUID ese k es? es picar la casillita en los permisos (estoy en kde) del archivo, en la parte de "especial" donde pone "Asignar UID" verdad?
El sudo lógicamente tienes que configurarlo, sino cualquiera podría lanzar un programa con privilegios. Se configura en /etc/sudoers (man sudo)
ok...........lo estoy configurando:

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification

# User alias specification
User_Alias USER = erik
# Cmnd alias specification
Cmnd_Alias RMMOD = /sbin/rmmod
# Defaults specification

# User privilege specification
root ALL=(ALL) ALL
USER ALL=NOPASSWD: RMMOD

pero esto no rula..... no se xq....
sí, lo de SUID es lo de "Asignar UID" del kde, o "chmod u+s fichero" en consola (necesitarás privilegios de root para el caso de cambiar los atributos de rmmod).

Lo único que hace este atributo es dar los permisos del usuario propietario del archivo a quien ejecute dicho archivo *sea quién sea*.

haz el favor, copia la salida de de los comandos "ls -l /ruta/del/archivo/ipodon.sh", "cat /etc/group | grep -i ipod", y "groups", este último ejecutado con el usuario Erik.

Por cierto, te dije que el archivo donde tenías los grupos era /etc/groups y me equivoqué, es /etc/group.

Sudo ni lo tengo instalado... o sea, que no te puedo ayudar con eso. XD

Lo de los grupos y tal lo hice de cara a la seguridad, para que estuviese controlado quién puede ejecutar el script y tal, pero si lo vas a usar en escritorio y te la trae floja la seguridad... XD (ya que estoy aprendiendo, intento hacer las cosas lo mejor que sé, aunque no sea todo lo bien que debiera)
Escrito originalmente por keo01

USER ALL=NOPASSWD: RMMOD


Te debería funcionar perfectamente, de hecho acabo de probarlo y funciona.
[root@eskritorio1 opt]# ls -l /opt/ipod.sh
---S--x--- 1 root ipod 47 feb 28 00:16 /opt/ipod.sh*

[root@eskritorio1 opt]# cat /etc/group | grep -i ipod
ipod:x:502:erik,root

[erik@eskritorio1 erik]$ groups
ipod


y con sudo:

[erik@eskritorio1 erik]$ sudo rmmod sbp2
sudo: rmmod: command not found
y a veces me ha pide la contraseña.......pa despues decir eso.
¿Tienes en el path de tu usuario al rmmod? Ejecuta rmmod sin más, debería darte la ayuda.

Utilizaste visudo para editar el fichero ¿no? visudo comprueba que la sintaxis sea correcta.
Escrito originalmente por Churly
¿Tienes en el path de tu usuario al rmmod? Ejecuta rmmod sin más, debería darte la ayuda.

Utilizaste visudo para editar el fichero ¿no? visudo comprueba que la sintaxis sea correcta.


como es eso del path de tu usuario al rmmod? te refieres en el archivo sudoers?

Por cierto, lo intente editar con el visudo, pero no sabia como guardarlo, asi que tire de kwrite. Al principio, cuando no sabia que se tenia que hacer con el visudo em daba un error de sintaxis cuando lo ejecutaba, pero ahora ya no me lo da, tal como lo he puesto en el post de mas arriba.
fale, haz lo siguiente (como root):

chmod g+r /ruta/del/archivo/ipodon.sh

o sea, le damos permisos de lectura al grupo, ya está, con esto debería funcionar.
he hecho eso, y me dice esto:

[erik@eskritorio12 opt]$ sh ipod.sh
umount: /mnt/ipod no está montado (según mtab)
ipod.sh: line 5: rmmod: command not found
[erik@eskritorio12 opt]$

ya se que no tengo el ipod conectado, de todas maneras me tendria que decir esto:


[root@eskritorio12 opt]# sh ipod.sh
umount: /mnt/ipod: no montado
rmmod: module sbp2 is not loaded
[root@eskritorio12 opt]#
cambia el script por :

---------------- comienzo del fichero -----------------
#!/bin/bash

umount /mnt/ipod
/sbin/rmmod sbp2
-------------------- fin del fichero ----------------------

ale, lo único que he hecho ha sido indicar el path para rmmod.

Espero que ahora si funcione.
ya lo he hecho, el resultado es este:

[erik@eskritorio12 opt]$ sh ipod.sh
umount: /mnt/ipod no está montado (según mtab)
sbp2: Operation not permitted
[erik@eskritorio12 opt]$ su
Password:
[root@eskritorio12 opt]# sh ipod.sh
umount: /mnt/ipod: no montado
rmmod: module sbp2 is not loaded
[root@eskritorio12 opt]#


como ves, sigue sin ser satisfactorio.
ya me va, la solucion ha sido al final poner en el script:



#!/bin/bash

umount /mnt/ipod
sudo /sbin/rmmod sbp2


y modificar el sudoers.A parte tengo puestos los permisos q me habeis ido diciendo.
18 respuestas