touch: não pode tocar em ‘test’: Permissão negada

2

Eu tento arquivo crate no diretório, mas obtenho

touch: cannot touch ‘test’: Permission denied

comandos:

[user@xxx api]$ ls -l
total 184
...
drwxrwxr-x  2 root root   4096 2016-04-12 14:38 public 
..
[user@xxx api]$ cd ./public
[user@xxx public]$ touch test
touch: cannot touch ‘test’: Permission denied
    
por Edgaras Karka 13.04.2016 / 12:16

2 respostas

8

Você não pode editar o conteúdo do diretório público se não tiver acesso gravação .

  • Você indica que está tentando criar um novo arquivo. Se o arquivo test ainda não existir em public , touch tentará criar um novo arquivo. Ele não pode fazer isso sem a capacidade de gravar na listagem de diretórios para adicionar a nova entrada do inode. Aparentemente, você não tem permissão para fazer isso.

  • Se o arquivo test já existir em public , touch irá, por padrão, atualizar o horário de modificação do arquivo. Somente o acesso write ao arquivo é necessário para isso, já que a data / hora da modificação é armazenada no inode do arquivo. Se o arquivo já existir, você precisará inspecionar as permissões do arquivo usando um comando como ls -l public/test para determinar se você tem acesso de gravação.

A máscara de bits de permissões no diretório, rwxrwxr-x , significa:

  • o usuário root , ou seja, o proprietário do diretório, possui privilégios de gravação no diretório conforme indicado pelo primeiro rwx block
  • membros do grupo root , isto é, o grupo no diretório, que não são eles mesmos o usuário root , também têm privilégios de gravação no diretório conforme indicado pelo segundo rwx bloquear

Todos os outros usuários só têm direitos de leitura e execução, conforme indicado pelo último bloco r-x .

Como obtenho permissões?

Você precisará conversar com o administrador do sistema (que pode ser você!) para realizar uma das ações a seguir:

  • Torne-o proprietário do diretório public/ usando um comando como chown user public/ . Isso será adequado se você for o único usuário que precisará ter direitos de edição.
  • Crie um novo grupo com um nome adequado , talvez publiceditors , e defina isso como o grupo no diretório public/ usando um comando como chgrp publiceditors public/ . Certifique-se de que você e qualquer outro usuário que exija a capacidade de modificar o diretório sejam listados como membros do grupo. Essa abordagem funciona onde vários usuários precisam de recursos de edição.
  • Torne sua conta de usuário um membro do root group (não é algo que eu recomendaria).
  • Oferecer acesso a fazer login ou mascarar como root , como sudo ou su com root senha
  • Altere os direitos no diretório para conceder a todos os usuários permissões de gravação , usando um comando como chmod o+w public . Esteja ciente de que isso dá a todos na caixa a capacidade de editar e excluir arquivos no diretório público. Você pode não querer isso!

O que ler , escrever e executar permissões significam no contexto de um diretório?

Supondo que você esteja em uma caixa do Linux, em um diretório, um bit de permissão de leitura permite que você leia a listagem de diretórios. O bit de permissão de gravação permite atualizar o diretório listado, o que é necessário para criar um arquivo *, editar o nome de um arquivo, desvincular (excluindo) um arquivo. O bit de execução permite que você percorra o diretório, acesse seus arquivos, etc. Mais informações em Permissões do diretório Linux .

* Na verdade, você está vinculando um arquivo ao diretório. Na maioria das vezes, você fará isso no ponto de criação do arquivo, mas há exemplos mais complexos. Por exemplo, fazer um link físico para um arquivo que originalmente existia em outro lugar no sistema de arquivos exigirá acesso de gravação ao diretório de destino do link, apesar do fato de você não estar criando um novo arquivo.

Por que escrever acesso ao diretório ?

Você precisa ser capaz de gravar no diretório para adicionar uma referência ao inode relevante para o arquivo que está adicionando.

    
por 13.04.2016 / 12:42
0

Com relação aos direitos de diretório public , somente o usuário root ou um membro da raiz do grupo pode gravar nele.

O que está configurado (drwxrwxr-x) significa:

  • o usuário root tem direitos de leitura / gravação / execução
  • group root tem direitos de leitura / gravação / execução
  • outro tem direitos de leitura / execução

Verifique se o seu usuário está no grupo raiz ou dê acesso de gravação para "outro" usando o comando:

chmod o+w public
    
por 13.04.2016 / 12:25