Linux, ¿por qué no puedo escribir aunque tenga permisos de grupo?

108

Quiero crear un archivo en un directorio propiedad del grupo de personal del que soy miembro. ¿Por qué no puedo hacer esto?

bmccann@bmccann-htpc:~$ ls -l /usr/local/lib/R/
total 4
drwxrwsr-x 2 root staff 4096 2010-07-31 16:21 site-library
bmccann@bmccann-htpc:~$ id -nG bmccann
bmccann adm dialout cdrom plugdev staff lpadmin admin sambashare
bmccann@bmccann-htpc:~$ touch /usr/local/lib/R/site-library/tmp
touch: cannot touch `/usr/local/lib/R/site-library/tmp': Permission denied
Ben McCann
fuente
1
¿Tiene permiso de escritura en el directorio de la biblioteca del sitio en / usr / local / lib / R?
Ted Hopp
1
¿No muestra el primer comando que publiqué que el grupo tiene privilegios de escritura?
Ben McCann
3
¿Ya hay un site-library/tmparchivo / directorio presente?
Jeremiah Willcock

Respuestas:

200

¿Cerró la sesión y volvió a iniciarla después de realizar los cambios de grupo? Ver:
respuesta de superusuario que implica una falla en los permisos táctiles

AdamJonR
fuente
1
Si abro una nueva ventana de terminal, ¿no debería considerarse un proceso nuevo? Estoy bastante seguro de que lo intenté y no funcionó, lo que me obligó a cerrar la sesión.
Ben McCann
7
@Ben: Iniciar un nuevo proceso hereda uid / gids de su padre. Es necesario un programa privilegiada (como login, su, etc.) para establecer realmente UID / GID.
efímero
4
Si se trata de un inconveniente para cierre de sesión / entrada de nuevo, como se deduce de lo anterior, se puede hacer esto en un terminal: su your-user-name. El shell resultante tendrá sus permisos de grupo actualizados.
TJ Crowder
2
¡Gracias por esto! Pasé unos 15 minutos tirándome de los pelos tratando de averiguar por qué no tenía permisos de grupo en una carpeta.
Jeremy Spencer
2
Me requirió reiniciar en Ubuntu 16.04 x64, no solo cerrar la sesión e iniciar sesión nuevamente
Kartikey Tanna
15

¿Por qué el usuario de Linux no puede editar archivos en el grupo del que forma parte?

Estoy usando Ubuntu 12.04 y tuve el mismo problema en el que un usuario no puede escribir en un archivo al que se le permite el acceso de grupo. Por ejemplo:

whoami                                        //I am user el
  el                                            

touch /foobar/test_file                       //make a new file

sudo chown root:www-data /foobar/test_file    //User=root  group=www-data

sudo chmod 474 /foobar/test_file              //owner and others get only read, 
                                              //group gets rwx


sudo groupadd www-data                        //create group called www-data    

groups                                        //take a look at the groups and see
 www-data                                     //www-data exists.

groups el                                     //see that el is part of www-data
  el : www-data                               

Reinicie el terminal ahora para asegurarse de que los usuarios y grupos hayan surtido efecto. Inicie sesión como el.

vi /foobar/test_file                          //try to edit the file.

Produce la Advertencia:

Warning: W10: Warning: Changing a readonly file"

¿Qué? He hecho todo bien, ¿por qué no funciona?

Responder:

Reinicia completamente la computadora. Detener el terminal no es suficiente para solucionar estos problemas.

Creo que lo que sucede es que apache2 también usa el grupo www-data, por lo que la tarea de alguna manera impedía que los usuarios y grupos se aplicaran correctamente. No solo tiene que cerrar la sesión, sino que debe detener y reiniciar cualquier servicio que use su grupo. Si un reinicio no lo consigue, tiene problemas mayores.

Eric Leschinski
fuente
1
¿Qué son los "problemas mayores"?
Ejaz
13

Tuve el mismo problema, ¡ verifique si la carpeta tiene más reglas ACL o no!

Si puede ver + (signo más) cuando enumera la carpeta, eso significa que tiene reglas de acceso especiales. Por ejemplo:

[user_in_apache_group@web02 html]$ ls -l
total 16
drwxrwxr-x  16 apache apache 4096 Sep  4 13:46 ilias
drwxrwxr-x+ 15 apache apache 4096 Sep  4 13:46 ilias5

Ver el permiso:

[user_in_apache_group@web02 html] getfacl ilias5
# file: ilias5
# owner: apache
# group: apache
user::rwx
user:user_in_apache_group:r-x
group::rwx
mask::rwx
other::r-x

Eso significa que mi usuario (user_in_apache_group) no tiene permiso de escritura para esa carpeta.

La solución es lo que dijo @techtonik, agregar permiso de escritura para el usuario:

[user_in_apache_group@web02 html]$ sudo setfacl -m u:user_in_apache_group:rwx ./ilias5

Verifique el permiso nuevamente:

[user_in_apache_group@web02 html] getfacl ilias5
...
user:user_in_apache_group:rwx
...

Espero eso ayude. ;)

Laszlo Lugosi
fuente
8

Use Linux ACL (listas de control de acceso): es una versión más detallada del sistema de permisos,

setfacl -R -m 'group:staff:rwx' -m 'd:group:staff:rwx' /usr/local/lib/R/

Esto establece tanto los derechos activos para el directorio como los derechos predeterminados para cualquier cosa creada dentro.

Esto no funciona sin volver a iniciar sesión si se acaba de agregar al staffgrupo, pero puede establecer el permiso solo para usted para la sesión actual.

anatoly techtonik
fuente
5

Tuve un problema cuando un usuario no podía acceder al /foo/bar/bazdirectorio incluso cuando tenía permisos porque no tenía acceso al bardirectorio.

Kolyunya
fuente
-2

Verifique si su directorio principal tiene permiso antes de agregar contenido a ese archivo

sudo chmod -R 777 /yourDir/file.log
Mani P
fuente