Los permisos de grupo permiten, pero aún así se les niega el permiso

43

Tengo una partición ext4 y configuré el propietario del grupo para todos los subdirectores en mygroup:

# chgrp -R mygroup /mount/abc
# chmod -R g+swrx /mount/abc

Mi usuario es parte de ese grupo. Dentro de esa partición hay una carpeta que pertenece al usuario 'nobody' y ahora al grupo 'mygroup'. Mi usuario es parte de 'mygroup'. Aquí hay un ls -l:

myuser@host:/mount/abc/folder$ ls -l
drwxr-sr-x 2 nobody      mygroup      4096 Apr 25 12:08 ./
drwxrwsrwx 6 nobody      mygroup      4096 Apr 24 07:57 ../
-rw-r-xr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

myuser@host:/mount/abc/folder$ groups myuser
myuser : mygroup {... a list of other groups also...} 

myuser@host:/mount/abc/folder$ rm test.png 
rm: remove write-protected regular file ‘test.png’? y
rm: cannot remove ‘test.png’: Permission denied

myuser@host:/mount/abc/folder$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied

Tenga en cuenta que no puedo eliminar ni crear un archivo que sea propiedad de un grupo del que forme parte mi usuario.

Supongo que no entiendo completamente cómo funcionan los grupos. Pensé que si eras parte de un grupo, entonces heredaste los permisos de ese grupo. ¿Estoy haciendo algo mal?

Gracias

Caos
fuente
Parece que la tríada de permisos es owner-group-world. Arriba puede ver drwxr-sr-x para el directorio. Entonces el permiso del grupo es rs. Parece que el chmod -R no estableció recursivamente los permisos en rwx. Cuando volteo el bit w para el permiso de grupo de la carpeta, funciona.
Caos

Respuestas:

70

¿Agregó recientemente ese usuario a ese grupo, sin cerrar sesión / en el medio? Luego, "grupos" mostrará el grupo pero el usuario aún no tiene los permisos de grupo.

Puede mostrar sus grupos efectivos usando

$ id

Como ejemplo, si agrego mi usuario psal grupo faxy luego escribo

$ id

no muestra el grupo fax, pero

$ groups ps

muestra fax.

Hacer sua su propio usuario le da la nueva afiliación de grupo:

$ su ps
$ id

La salida ahora también contiene fax.

peschü
fuente
1
Es realmente útil saberlo. Especialmente la parte 'sudo <nombre de usuario>'.
Caos
44
iniciar / cerrar sesión es tan obvio que me perdí el punto, muchas gracias amigo!
nicolallias
1
@ peschü tengo sudoy lo uso regularmente. El error que le mostré se queja de que el comando ubuntu(es decir, el nombre de usuario) no es un comando reconocido. No creo que su sugerencia sea sintácticamente correcta, tal vez funcione en su caso porque pstambién es un comando y un nombre de usuario.
beldaz
1
@beldaz oh no! ¡Tienes razón! sintácticamente correcto es su <username>. He editado la publicación.
peschü
1
maldita sea, el viejo cierre de sesión / inicio de sesión nuevamente funciona cada vez.
Steampunkery
9

El método que ha utilizado parece ser correcto. Acabo de intentar replicarlo y funcionó bien.

No estoy seguro de si hay un error tipográfico, pero hay un pequeño problema con el comando. No es necesario que se mencione "mygroup" allí. Los siguientes trabajos

# chmod -R g+swrx /mount/abc

Incluso, puedes quitar el sbit, solo hazlo g+rwx. Después de que haya cambiado los permisos, y lo haga ls -l, debería mostrar los privilegios relevantes.

Vivek Kapoor
fuente
2
Eliminé el error tipográfico con el nombre del grupo. El directorio tiene los permisos wrx cuando hace ls -l, y no es propiedad de nadie: mygroup. Aunque myuser es parte de mygroup, myuser aún no puede crear / eliminar archivos. Espero que tenga sentido.
Caos
3

No puede eliminar el archivo porque el grupo mygroupno tiene permisos de escritura en el archivo ni en test.pngla carpeta. Para que las operaciones de escritura funcionen en el archivo, los permisos del archivo deberían verse así:

-rw-rwxr-- 1 otheruser   mygroup    159539 Apr 23 23:44 test.png*

Si observa de cerca el formato de permiso

duuugggooo

Los tres primeros marcadores de posición uuuson usuario r ead, w rito y e x ecute. Los siguientes tres marcadores de posición gggson para el grupo y ooopara otros. En el fragmento publicado por el grupo de OP no se encuentra la w permiso rito.

Ashoka Lella
fuente
2

Para agregar a la respuesta aceptada (ya que aún no puedo comentar):

Si utiliza software como BitVise para crear una conexión SSH a su servidor, simplemente cerrar y volver a abrir un terminal no contará como iniciar y cerrar sesión. Se va a hacer cosas como su recarga ~/.bashrc, pero no realizar las actualizaciones grupo actual (si se ha añadido al grupo en la sesión de "entrada"). Para que esto surta efecto, deberá cerrar sesión por completo e iniciar sesión nuevamente con sus claves / credenciales SSH.

Figidon
fuente
2

Los directorios necesitan un conjunto de x bits (para que el directorio se vea como bit de búsqueda) para abrir. Así que uso el árbol para poder obtener solo el conjunto de carpetas y evitar la pesadilla de tener todos los archivos configurados como ejecutables (la opción para el árbol es -d List directories only.):

sudo tree -faid /mount/abc | xargs -L1 -I{} sudo chmod 755  "{}"

¡¡¡Advertencia!!! deberías tener esto en consideración:

  • el uso de chmod o chown recursive en el /directorio raíz o los directorios del sistema destruirá su sistema operativo (en realidad, cualquier cosa recursiva en el /directorio o directorios del sistema es peligrosa)

  • esta no es una buena práctica de seguridad para establecer permisos masivos como ese

Eduard Florinescu
fuente
1
¡Muchas gracias! ¡Las palabras "Los directorios necesitan un conjunto de x bits" resolvieron mi problema! Hice "sudo chmod g + x <ruta del directorio principal>" y funcionó.
kinORnirvana