Linux en Espanol
 
Setuid confusion (tema #24684)
Publicar nuevo tema  Responder al tema    Foros de discusión -> Estaciones de Trabajo
Autor Mensaje
cazademonios
Forista
Registrado: 2012-03-23
Mensajes: 68

Publicado: 2013-03-31 14:20:58    Asunto: Setuid confusion

Hola buenas pues no entiendo ese permiso especial la verdad por que te?ricamente es:
a los ficheros ejecutables que lo posean se les da los privilegios del propietario.

Hasta ahi bien pero yo hago lo siguiente:
[code:1:69d6befa40]mkdir -m 775 home/usuario/prueba[/code:1:69d6befa40]
y dentro de la carpeta creo "ejecutable.sh" con el siguiente c?digo:
[code:1:69d6befa40]
#!/bin/bash
mkdir /home/usuario/prueba/nuevo[/code:1:69d6befa40]
y le doy estos permisos
[code:1:69d6befa40]chmod 4775 /home/usuario/prueba/ejecutable.sh[/code:1:69d6befa40]

ahora lo ejecuto con otro usuario
[code:1:69d6befa40]su invitado
cd /home/usuario/prueba
./ejecutable.sh[/code:1:69d6befa40]
pero me dice permiso denegado al crear el directorio
esto ser?a lo normal ya que el usuario invitado tendr?a s?lo permiso de ejecuci?n y lectura pero como le puse el setuid al ejecutable que tiene de due?o a "usuario" que este si que tiene control total en el directorio deber?a dejarme por que lo ejecutar?a como el.

pero no me deja entonces asi no puedo saber el verdadero uso de setuid ya que intentando darle uso me da fallo :(

? sabeis por que puede ser ?
rafaxdrake
Forista


Registrado: 2004-02-21
Mensajes: 3928

Publicado: 2013-03-31 15:00:16    Asunto:

Te est?s confundiendo. Aunque el ejecutable sea propiedad de ''usuario'' recuerda que al ejecutarlo lo hace como ''invitado'', debido al setuid, por eso es que ''invitado'' no tiene derecho de escritura en ''usuario''. Piensa que el contenido de tu script es independiente del propietario del fichero, porque s?lo est?s diciendo que se cree un directorio, y eso es independiente de qui?n lo ejecuta, a menos que quien lo ejecute sea root, en cuyo caso s? que se crear?a ese directorio. No s? si me he explicado bien.
rafaxdrake
Forista


Registrado: 2004-02-21
Mensajes: 3928

Publicado: 2013-03-31 15:58:11    Asunto:

Como ejemplo te pongo el comando mkdir. El propietario es root, no lleva el bit setuid activado y sin embargo te deja ejecutarlo como otro usuario.
cazademonios
Forista
Registrado: 2012-03-23
Mensajes: 68

Publicado: 2013-03-31 16:49:36    Asunto:

[quote:60661ce74e]Normalmente este bit se activa en ejecutables. Cuando a un ejecutable binario se le asigna el atributo setuid, usuarios normales del sistema pueden ejecutar ese archivo y obtener privilegios del usuario que posee dicho archivo [/quote:60661ce74e]
Extraido de wikipedia

seg?n esto deber?a obtener los privilegios de el usuario "usuario" por que el fichero tiene setuid y el propietario es "usuario"
cazademonios
Forista
Registrado: 2012-03-23
Mensajes: 68

Publicado: 2013-03-31 16:57:10    Asunto:

Bueno parece que ya resolv? el problema. Teor?camente deber?a funcionar pero a las distribuciones no les gustan los shells scripts con este bit por lo tanto s?lo funciona con binarios no con shellscripts lo cual veo mal pero bueno.
rafaxdrake
Forista


Registrado: 2004-02-21
Mensajes: 3928

Publicado: 2013-04-01 01:38:30    Asunto:

Pero tu script s? que est? funcionando, lo que ocurre es que al ejecutarlo desde el login de invitado adopta la ''id de invitado'', por eso no puede escribir en el home de ''usuario''.
miguelgf
Forista


Registrado: 2006-12-28
Mensajes: 621

Publicado: 2013-04-01 12:57:06    Asunto:

Hola.

Crea el script con permisos de ejecuci?n para los usuarios que deban ejecutarlo y dentro de ?l, los comandos que deban ser ejecutados por un usuario diferente, ejec?talos con "sudo".
Da permisos en sudoers para que los usuarios que vayan a lanzarlo puedan hacer el sudo de esos comandos sin necesidad de contrase?a. El resto del script que no necesite permisos diferentes, no necesita del uso de sudo.
Con eso consigues que s?lo se realice el cambio de permisos para los comandos estrictamente necesarios y no para el script completo.
Si el script es demasiado complicado por dentro y no quieres hacer todos esos cambios, tienes la alternativa de permitir en sudoers que se ejecute el script con sudo en nombre de otro usuario. Esto s? que afecta a todos los comandos del interior del script. Esta soluci?n es m?s f?cil pero menos segura, porque corres el riesgo de dejar por error permisos de escritura al usuario sobre el script. En ese caso le est?s dando permiso a ejecutar lo que le venga en gana en nombre del otro usuario, simplemente editando.

Saludos.
rafaxdrake
Forista


Registrado: 2004-02-21
Mensajes: 3928

Publicado: 2013-04-01 17:41:04    Asunto:

Yo tambi?n estaba confundido. Aqu? hay buena linformaci?n: http://mmc.geofisica.unam.mx/LuCAS/Manuales-LuCAS/doc-unixsec/unixsec-html/node56.html





La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries