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
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
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.
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. ;)
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.
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
.
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