PDA

Ver la versión completa : Permisos en Debian(Linux)



Danilo51
04-05-2009, 17:30
Buenas gente,
Hoy estoy intentando crear una estructura de usuarios y grupos. Tengo un pequeño problema que os paso a comentar.

Imaginemos que tenemos una carpeta que tiene los siguientes permisos:

rwx => para root
rwx => para el grupo
--- => 0 patatero para el resto :p

Bien, ahora que tenemos clara la estructura (espero...) imaginemos que el usuario A deja en esa carpeta un archivo.
Si observamos los permisos que tiene ese archivo son los siguientes:
rwx => para propietario (usuario A)
rwx => para grupo(usuario A)
--- => 0 patatero para el resto.

Aquí es donde vienen las dudas ya que cuando un usuario B quiere acceder a ese archivo el sistema no le deja.

Investigando un poco he encontrado una opción en chmod que se supone que da la solución. El Sticky Bit (bit pegajoso...).

Así que procedo a hacer chmod g+s carpeta, para que tanto el usuario A como el B puedan ver y modificar el archivo.

No acaba de salir como debiera el tema.

El resultado es:

rwx => para el usuaro
r-- => para el grupo (cuando se suponen que son del mismo grupo...)
r-- => para los otros

Me podriais echar una manita??
Un saludo.

j8k6f4v9j
05-05-2009, 00:20
Imaginemos que tenemos una carpeta que tiene los siguientes permisos:

rwx => para root
rwx => para el grupo
--- => 0 patatero para el resto :p

O sea,

-rwxrwxr-x 1 root usuario
o lo que es lo mismo,

$stat -c "%a %U" midirectorio
770 root



Bien, ahora que tenemos clara la estructura (espero...) imaginemos que el usuario A deja en esa carpeta un archivo.
Si observamos los permisos que tiene ese archivo son los siguientes:
rwx => para propietario (usuario A)
rwx => para grupo(usuario A)
--- => 0 patatero para el resto.
O lo que es lo mismo:

$stat -c "%a %U %G" archivo
770 userA userA



Aquí es donde vienen las dudas ya que cuando un usuario B quiere acceder a ese archivo el sistema no le deja.
El cero de 770 significa que "otros" (ni usuario ni grupo) no tienen ningún privilegio sobre el archivo, ni lectura, ni escritura, ni ejecución.


Investigando un poco he encontrado una opción en chmod que se supone que da la solución. El Sticky Bit (bit pegajoso...).
El sticky bit no debe usarse bajo casi ningún concepto, sólo en circunstancias especiales y por personas que saben exactamente lo que hacen. Cualquier persona con permisos de escritura y ejecución sobre un archivo con el sticky bit activado puede hacerse en segundos con tu sistema al completo. No es nada recomendable activarlo.


Así que procedo a hacer chmod g+s carpeta, para que tanto el usuario A como el B puedan ver y modificar el archivo.

No acaba de salir como debiera el tema.

El resultado es:

rwx => para el usuaro
r-- => para el grupo (cuando se suponen que son del mismo grupo...)
r-- => para los otros

Me podriais echar una manita??
Un saludo.

Si lo único que necesitas es que "otros" puedan leer y escribir en el archivo, basta con


#chmod 776 archivo

Salu2

Danilo51
05-05-2009, 08:47
Buenas j8,
Entiendo lo que me comentas pero no me soluciona el problema que tengo.

Lo que me interesa es que cuando un usuario que sea de un mismo grupo y cree un archivo, no se cree con los permisos habituales. (Que seguramente no he sabido ponérselos bien ...:rolleyes:)



-rwxr--r-- 1 usuario usuario 16240 2009-05-04 21:26 utilidades.sql


Necesito, que dentro de la carpeta de grupo si los permisos son:


drwxrws--- 6 propietario grupo 4096 2009-04-23 19:01 Carpeta


Se sigan heredando si un usuario de ese mismo grupo añade un archivo.

Espero haberme explicado mejor.

Gracias por todo j8.
Un saludo

j8k6f4v9j
05-05-2009, 16:44
Los permisos predeterminados en los nuevos archivos (o directorios) creados no vienen dados por el nivel superior en la jerarquía de directorios, sino por el sistema de archivos, el sistema operativo y el usuario o propietario que lo crea. Esto sí se puede cambiar, pero que yo sepa para todo el sistema de archivos al completo.

Salu2

Danilo51
06-05-2009, 08:34
Buenas j8,
Seguiré investigando un poco a ver si logro sacar la solución, si la encuentro la posteo aquí.

Gracias por todo de nuevo.
Un saludo.

j8k6f4v9j
06-05-2009, 15:12
Danilo51, quizá ya exista algo similar, pero podrías implementar un script que sustituyera a tu cp, mv, etc, o los comandos que quieras sustituir, mediante alias, para que, tras realizar sus operaciones normales, mire los permisos de los niveles superiores y modifique los del archivo en cuestión para que tenga los mismos.

Salu2

Danilo51
13-05-2009, 12:34
Buenas j8,
Finalmente he optado por instalar samba en la debian, he creado un recurso y le he dado estas propiedades:


create mask = 0770
directory mask = 0770

Con eso cada vez que se crea una nueva carpeta lo hace con esos permisos. Después a pesar de lo peligroso he utilizado el bit pegajoso para que se hereden los permisos de grupo cada vez que se creen nuevos archivos.

Pero claro... como no, habia que toparse con el papa. Y es que cuando se da el caso, que un usuario pertenece a dos grupos y puede acceder a dos carpetas distintas e intenta cortar y pegar el archivo, también copia los permisos originales con lo que cuando llegan a la carpeta de destino donde otros usuarios tienen control total sobre los archivos, no pueden verlo.(vaya tela...)

He intentado hacer virguerías con las ACL, para ver si conseguía ver los arvchivos o carpetas, pero cuando cortas y pegas no hay nada que hacer.

Si que está jodio esto...

Alguna sugerencia?:confused:

Un saludo.

j8k6f4v9j
13-05-2009, 14:37
Debes replantear el problema, la causa de que no tengas una solución limpia para el problema es el hecho de que el problema está mal planteado.

¿Te importaría definir de la forma más precisa y explícitamente posible lo que necesitas? A ver si te puedo echar una mano. Si lo que expones en el primer post es todo lo que necesitas, entonces bastará con sugerirme una relectura del hilo :D

Salu2

Danilo51
13-05-2009, 16:38
jejeje
Vale, voy a intentarlo de nuevo (esto me está costando).

Partimos de la base en la cual quiero compartir dos carpetas.
Como voy a tener máquinas guindous que tienen que ver esos recursos instalo samba:



aptitude install samba dhcp samba-common


Una vez instalado edito /etc/samba/smb.conf y agrego el recurso para que sea visible a la gente:



[recurso]
comment = Grupo de trabajo
path = /home/trabajo
admin users = root
read only = No
browseable = Yes
create mask = 0770
directory mask = 0770



lo que pongo en negrita, lo pongo para que cuando se agregue algúna carpeta o archivo lo haga con esa mascara.

Después añado usuarios a samba:


smbpasswd -a pepe


He creado dos directorios como se puede ver, cada uno pertenece a un grupo, he puesto permisos solo para propietario y grupo y posteriormente he agregado el bit pegajoso para que cuando alguien cree algo coja el grupo de la carpeta donde esté en ese momento.



chgrp administracion administracion/
chgrp informatica informatica/
chmod 770 administracion/
chmod 770 informatica/
chmod g+s administracion/
chmod g+s informatica/


Veamos como ha quedado el directorio de trabajo:



Pruebas:/home/trabajo# ls -la
total 16
drwxr-xr-x 4 root root 4096 may 13 09:25 .
drwxr-xr-x 5 root root 4096 may 12 17:42 ..
drwxrws--- 2 root administracion 4096 may 13 09:48 administracion
drwxrws--- 3 root informatica 4096 may 13 09:48 informatica



Espero que hasta aquí la estructura haya quedado más clara :D.

Como comento, en los otros post, mientras los usuarios crean o copian ficheros nuevos el orden de permisos funciona correctamente.

El problema nace cuando un usuario esta en dos grupos (ahí va si soy yo :0=!!)y se le ocurre la brillante idea de "cortar y pegar" el resultado es el siguiente:



Pruebas:/home/trabajo/informatica# ls -la
total 44
drwxrws---+ 3 root informatica 4096 may 13 13:38 .
drwxr-xr-x 5 root root 4096 may 13 16:20 ..
-rwxrwx---+ 1 maria informatica 863 may 13 13:38 asdf.calc
-rwxrwx---+ 1 pepe informatica 863 may 13 13:38 otroarchivo.txt
-rwxrwx---+ 1 dani informatica 863 may 13 13:38 asdf.contact
-rwxrwx---+ 1 dani administracion 15237 abr 29 09:25 Nuevo Hoja de cálculo de Open Office.ods



Y lo que desearía, es que cuando se muevan archivos cuando lleguen al lugar de destino conserven los permisos de grupo del destino, ya que de no ser así, no hay nadie que pueda abrirlo y en consecuencia me toca volver a cambiar el grupo a mano.

Un saludo!

j8k6f4v9j
14-05-2009, 12:00
Ah, ok, prueba con la máscara 2770

Salu2

Danilo51
14-05-2009, 13:34
Buenas j8,
He probado a hacer:



chmod 2770 carpeta/ -R


y no surge el efecto deseado. Sigue conservando los permisos de la carpeta de origen.

Por cierto el primer 2 para que sirve??

Un saludo!

j8k6f4v9j
14-05-2009, 13:46
No, me refiero a que lo hagas en la máscara de samba, que es la interfaz que usas para generar los archivos.

Es decir,

create mask = 2770
directory mask = 2770

El dos es lo mismo que g+s, que por cierto, no es el bit pegajoso propiamente dicho. Puedes ver una explicación aquí:
http://www.unixguide.net/hp/faq/5.1.9.shtml

Salu2

Danilo51
14-05-2009, 13:54
Buenas j8,
Me había dado por probarlo también pero no funciona.
Es raro que esto no lo haga linux no??

Un saludo.

j8k6f4v9j
14-05-2009, 14:34
A mí sí que me funciona (en sistema de archivos, en samba no lo he probado).

Ojo, si no lo haces como root, no te da error, pero tampoco pone +s al grupo.

Compruébalo con
ls -l después de ejecutar el chmod.

Una vez tenga g+s el directorio, también los archivos copiados a él cambiarán su propietario. Pero no los archivos movidos, como es el caso de "cortar y pegar". En ese caso, conservarán sus propietarios originales.

Salu2

Danilo51
14-05-2009, 16:03
Buenas j8, ahí es donde quería llegar.
No hay manera humana de que cuando cortas y pegas herede el grupo de la carpeta de destino??

Un saludo.

j8k6f4v9j
14-05-2009, 16:48
La solución parece ser desactivar las extendiones unix:

http://www.mail-archive.com/[email protected]/msg640133.html
http://www.mail-archive.com/[email protected]/msg640139.html

Salu2

Danilo51
14-05-2009, 18:14
Buenas j8,
En el par de links no cuenta como montárselo uno para desactivar las extensiones.

Estoy mirando a ver como hacerlo pero, no doy con la info.

Alguna ilustración?

Un saludo.

j8k6f4v9j
14-05-2009, 20:18
Prueba a poner


unix extensions = no

en el archivo /etc/samba/smb.conf

Salu2

Danilo51
15-05-2009, 12:26
Probado en el [globals] y en el [share] con los mismos resultados: No funciona ni pa trás.

En fin, tendré que ir desistiendo del tema. Copiaré y pegaré y luego borraré.

MUCHISIMAS GRACIAS por todo j8. No lo he conseguido pero lo que he llegado aprender con el tema de permisos ha sido brutal!

Un saludo.