Como as permissões de arquivo funcionam?

33

Você pode explicar brevemente os principais conceitos e ferramentas de linha de comando usados ​​para gerenciar permissões de arquivo?

    
por guillermooo 28.07.2010 / 22:05

2 respostas

18

Cada arquivo tem direitos para três categorias diferentes:

  • o proprietário do arquivo,
  • o grupo associado ao arquivo e
  • todos os outros.

Os direitos significam o direito de ler o arquivo, o direito de gravar no arquivo ou o direito de executar o arquivo no caso de um script ou programa.

Na CLI, você pode

  • altere o proprietário com chown , por exemplo %código%
  • altere o grupo com chown guillermooo , por ex. %código%
  • altere os direitos com chgrp , por ex. chgrp root (Adiciona permissão de gravação para o proprietário do arquivo chmod )

Se você quiser saber mais sobre cada uma dessas ferramentas, abra um terminal e digite chmod u+w filename.ext , por exemplo, filename.ext .

    
por ParanoiaPuppy 28.07.2010 / 22:17
24
  

Aviso: A alteração de permissões de arquivos e diretórios é potencialmente prejudicial e pode tornar seu sistema inutilizável. Quando executar recursivamente como root no caminho errado, podemos chegar a um ponto de onde teremos que reinstalar o Ubuntu. Portanto, é uma boa idéia não alterar as permissões fora dos diretórios HOME, e executar os comandos recursivamente como root deve ser evitado sempre que possível.

Permissões de arquivo

O Ubuntu herdou o conceito de permissões do Unix quando, para arquivos ou diretórios, existem três tarefas que podemos permitir ou negar:

  • r (leia) arquivo / diretório pode ser aberto para acesso de leitura.
  • w O arquivo / diretório (write) pode ser aberto para acesso de gravação / edição.
  • x (executar) arquivo pode ser executado como um programa / diretório pode ser atravessado.

( Atravessar um diretório essencialmente significa usá-lo como parte de um nome de caminho. Consulte Ссылка ou Ссылка para mais explicações.

Além disso, temos três casos de quem concedemos uma permissão:

  • u (usuário) o proprietário de um arquivo recebe qualquer uma das permissões.
  • O grupo g (grupo) ao qual o arquivo pertence recebe permissão.
  • o (outros) todos os outros recebem permissão.

Agora, para obter a combinação destes classificados, usamos um sistema binário, onde cada bit define uma permissão. Isso pode ser melhor mostrado na tabela a seguir

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

Agora, se quisermos, por exemplo,

a) o proprietário de um arquivo (= usuário) tem r ead, w rito e e x permissão de ecute,
b) o grupo do arquivo concedeu permissões de ecr de r ead e e x , e
c) todos os outros devem ter acesso ao r ead.

Em seguida, a permissão do arquivo resultante será:

 u   g   o
rwx r-x r--

Para obter isso nos números octal, por exemplo. para o comando chmod ou quando tivermos que entender uma mensagem de erro, precisamos preencher a tabela acima conforme abaixo:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

Cada número de permissão precisa ser adicionado para somar um usuário (4 + 2 + 1 = 7), grupo (4 + 0 + 1 = 5) e outro (4 + 0 + 0 = 4). O número resultante é então:

 u   g   o
 7   5   4

Agora temos duas opções para alterar os bits de permissão com chmod :

chmod u+rwx g+rx o+r filename

ou muito mais simples com

chmod 751 filename

Ambos os comandos farão o mesmo.

  

A permissão padrão de um arquivo recém-criado em nossa casa será 664 (-rw-rw-r -).

Se quisermos que os arquivos sejam executáveis ​​como programas, precisaremos alterar essa permissão.

  • Note que também teremos que alterar a permissão do diretório em que este executável pode estar. Somente se ambos, o arquivo e o bit executável do diretório estiver definido, poderemos execute este arquivo como um programa.

  • Ao copiar um arquivo para nossa casa, ele perderá as permissões que serão substituídas por nossas próprias permissões padrão (a menos que copiemos usando opções avançadas, por exemplo, uma opção de arquivamento).

  • Observe também que o arquivo pode herdar sua permissão do ponto de montagem, resp. opções de montagem. Isso é importante ao montar unidades formatadas do Windows que não suportam permissões do Unix.

Usuários e grupos

Logo percebemos que isso era apenas metade da história. Também precisamos separar os pertences. Para fazer isso, cada arquivo ou pasta tem um proprietário definido e uma associação de grupo definida.

Cada vez que criamos um arquivo, seremos o proprietário de um arquivo, e o grupo do arquivo também será nós. Com ls -l , podemos ver permissões, propriedade e grupo conforme visto na seguinte saída de exemplo:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  
  • Só podemos alterar permissões, grupos ou propriedade de um arquivo nosso.
  •   

Se não formos o proprietário do arquivo, receberemos um erro Permission denied . Apenas root pode mudar isso para todos os arquivos. É por isso que temos que usar sudo ao editar a permissão de arquivos que não são nossos. Existem dois comandos internos para fazer isso chown para usuários e chgrp para grupos.

Para alterar a propriedade de um arquivo de alguém para takkat , podemos emitir este comando:

sudo chown takkat testfile

Para alterar o grupo de um arquivo para takkat , emitimos

sudo chgrp takkat testfile

Leia as páginas de manual dos comandos para mais detalhes e opções. Há também este guia mais elaborado recomendado para leitura adicional:

  • Ajuda da comunidade Ubuntu: Permissões de arquivo

Encontre também algumas perguntas relacionadas aqui:

por Takkat 19.09.2013 / 22:53