Por que recebo erros de "Permissão negada" mesmo que eu tenha permissão de grupo?

6

Estou tentando rodar um jogo chamado "Dofus", no Manjaro Linux. Eu instalei com o packer, que colocou na pasta /opt/ankama . Esta propriedade de pasta (e para cada arquivo dentro dela) é usuário root e grupo de jogos. Conforme instruído pelo pacote de instalação, eu adicionei a mim mesmo (usuário familia ) no grupo de jogos (ao não fazê-lo, "eu teria que inserir minha senha toda vez que eu tentasse executar o atualizador").

No entanto, ao executar o jogo, ele falha após a entrada da minha senha (que não deve ser necessária). Verificando os logs, eu tenho alguns erros como esses:

[29/08 20:44:07.114]{T001}INFO    c/net/NetworkAccessManager.cpp L87  : Starting request GET http://dl.ak.ankama.com/updates/uc1/projects/dofus2/updates/check.9554275D
[29/08 20:44:07.291]{T001}INFO    c/net/NetworkAccessManager.cpp L313 : Request GET http://dl.ak.ankama.com/updates/uc1/projects/dofus2/updates/check.9554275D Finished (status : 200)
[29/08 20:44:07.292]{T001}ERROR   n/src/update/UpdateProcess.cpp L852 : Can not cache script data

Então, suspeito de erros de permissão negada. Uma mensagem de erro um momento depois de iniciar

Issosetraduzem"Ocorreu um erro ao gravar no disco - verifique se você tem os direitos suficientes e espaço em disco suficiente".

Depois de algumas pesquisas, me deparei com "auditd", que pode registrar os acessos a arquivos em uma pasta. Depois de configurá-lo e ver quais acessos de arquivo não tiveram êxito, este é o resultado .

Todos esses erros realmente se referem a um arquivo exclusivo, /opt/ankama/transition/transition , com um syscall para ( open ). As permissões deste arquivo são rwxrwxr-x ( 775 ). Então, eu tenho permissões rwx para ele, mas isso me dá um erro exit -13 , que é um erro EACESS (Permissão negada).

Já tentei reiniciar o computador para efetuar login e logout. Nenhum deles funcionou.

Se eu definir as permissões da pasta como familia:games , ele será executado sem problemas, nem preciso inserir minha senha. No entanto, não parece certo assim. Alguma idéia de por que recebo erros de permissão negada, mesmo que eu tenha permissões de leitura / gravação / execução?

Mark disse que eu poderia precisar de permissões + x em todos os diretórios do prefixo do caminho. O caminho em si é /opt/ankama/transition/transition . As permissões para os prefixos de caminho são:

/opt - drwxr-xr-x(755), ownership root:root

/opt/ankama - drwxr-xr-x(755), ownership root:games

/opt/ankama/transition - drwxrwxr-x(775), ownership root:games

No entanto, uma coisa que notei é que todas as subpastas de /opt/ankama são 775 , mesmo que a própria pasta seja 755 . Eu não acho que isso significa nada, e mudar as permissões para 775 não funciona.

Além disso, Giel sugeriu que eu poderia ter o AppArmor em execução no meu sistema. No entanto, executar # cat /sys/module/apparmor/parameters/enabled me dá N .

    
por Ramon Dantas 30.08.2014 / 02:43

2 respostas

6

Primeiro, quando você se adiciona a um grupo, a alteração não é aplicada imediatamente. O mais fácil é sair e fazer login novamente.

Depois, há permissões de gravação de arquivos de dados (como já mencionado em alguns dos comentários). No entanto, as soluções não são boas para segurança.

  • Adicione um grupo para o jogo. Não adicione nenhum usuário a este grupo.
  • Torne o jogo executável por chmod -R ugo+rX game-directory
  • Conceder permissões de gravação somente para grupo e ninguém usando chmod -R ug+w,o-w game-directory
  • Adicione o jogo ao grupo chgrp -R game-group game-directory , chmod -R g+s game-directory

ou apenas addgroup game-group; chgrp -R game-group game-directory; chmod -R u=rwX,g=rwXs,o=rX game-directory

Se o jogo precisar alterar as permissões, você poderá fazer o mesmo, mas para o usuário, em vez de para o grupo. ou seja,

adduser game-owner; addgroup game-group; chown -R game-owner:game-group game-directory; chmod -R u=rwXs,g=rwXs,o=rX game-directory

    
por 30.08.2014 / 16:34
0

Os diretórios precisam do conjunto de bits x (para o diretório em que o bit é visto como bit de pesquisa) para abrir. Então eu uso tree para que eu possa obter apenas o conjunto de pastas e evitar o pesadelo de ter todos os arquivos definidos como executáveis (a opção para a árvore é -d List directories only. ):

sudo tree -faid here_goes_your_directory xargs -L1 -I{} sudo chmod 755  "{}"

Atenção !!! você deve ter isso em consideração:

  • usando chmod ou chown recursivo no diretório raiz / ou diretórios do sistema destruirá seu SO (na verdade, qualquer coisa recursiva no diretório / ou nos diretórios do sistema é perigosa)

  • isso não é uma boa prática de segurança para definir permissões em massa como essas

por 25.01.2018 / 15:15