web-dev-qa-db-pt.com

Linux, Por que não consigo escrever apesar de ter permissões de grupo?

Eu quero criar um arquivo em um diretório pertencente ao grupo de funcionários do qual eu sou membro. Por que não posso fazer isso?

[email protected]:~$ ls -l /usr/local/lib/R/
total 4
drwxrwsr-x 2 root staff 4096 2010-07-31 16:21 site-library
[email protected]:~$ id -nG bmccann
bmccann adm dialout cdrom plugdev staff lpadmin admin sambashare
[email protected]:~$ touch /usr/local/lib/R/site-library/tmp
touch: cannot touch `/usr/local/lib/R/site-library/tmp': Permission denied
92
Ben McCann

Você fez logout e login novamente depois de fazer as alterações no grupo? Vejo:
Super resposta do usuário envolvendo falhas de permissão de toque

177
AdamJonR

Por que o usuário do Linux não pode editar arquivos no grupo do qual ele faz parte?

Estou usando o Ubuntu 12.04 e tive o mesmo problema em que um usuário não pode gravar em um arquivo para o qual ele pode acessar o grupo. Por exemplo:

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 o terminal agora para garantir que os usuários E os grupos entraram em vigor. Entre como el.

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

Produz o aviso:

Warning: W10: Warning: Changing a readonly file"

O que? Eu fiz tudo certo porque não funciona?

Responda:

Faça uma reinicialização completa do computador. Parar o terminal não é suficiente para corrigir esses problemas. 

Eu acho que o que acontece é que o Apache2 também usa o grupo www-data, então a tarefa estava de alguma forma impedindo que os usuários e grupos fossem aplicados corretamente. Não apenas você precisa fazer logout, mas também precisa interromper e reiniciar todos os serviços que usam seu grupo. Se a reinicialização não ocorrer, você terá problemas maiores.

11
Eric Leschinski

Eu tive o mesmo problema, verifique se a pasta tem mais regras ACL ou não!

Se você puder ver + (sinal de mais) ao listar a pasta, isso significa que ele possui regras de acesso especiais. Por exemplo:

[[email protected] 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

Veja a permissão:

[[email protected] 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

Isso significa que meu usuário (user_in_Apache_group) não possui permissão de gravação para essa pasta.

A solução é o que @techtonik disse, adicione permissão de gravação para o usuário:

[[email protected] html]$ Sudo setfacl -m u:user_in_Apache_group:rwx ./ilias5

Verifique a permissão novamente:

[[email protected] html] getfacl ilias5
...
user:user_in_Apache_group:rwx
...

Espero que ajude. ;)

7
Laszlo Lugosi

Use o Linux ACL (listas de controle de acesso) - é a versão mais refinada do sistema de permissão,

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

Isso define os direitos ativos para o diretório e os direitos padrão para qualquer item criado dentro dele.

Isso não funcionará sem o relogin se você acabou de se adicionar ao grupo staff, mas você pode definir a permissão somente para si mesmo na sessão atual.

6
anatoly techtonik

Eu tive um problema quando um usuário não pôde acessar o diretório /foo/bar/baz mesmo quando ele tinha permissões porque ele não tinha acesso ao diretório bar.

5
Kolyunya

Verifique se o seu diretório pai tem permissão antes de adicionar conteúdo a esse arquivo

Sudo chmod -R 777 /yourDir/file.log
0
Mani P