Quais são os diferentes códigos de permissão de arquivo e o que eles significam?

1

Estou trabalhando com um script de upload de arquivos. No momento, estou fazendo o upload de um arquivo e, em seguida, tentando ecoar uma âncora com um link para esse arquivo, mas como usei o mkdir () com permissões 0700 para carregar o arquivo, ele não me permitirá acessar o arquivo.

Tenho certeza de que o problema que estou tendo é por causa do código de permissão de arquivo que usei. O problema é que eu não sei o que são todos os diferentes códigos de permissão de arquivo e o que eles significam.

Alguém pode listar todas as permissões de arquivo diferentes e o que cada uma delas faz?

    
por zeckdude 06.06.2010 / 00:33

2 respostas

8

As permissões em sistemas semelhantes ao Unix são gerenciadas em três classes distintas. Essas classes são conhecidas como usuário, grupo e outras.

Classes

Arquivos e diretórios são de propriedade de um usuário. O proprietário determina a classe do proprietário do arquivo. Permissões distintas se aplicam ao proprietário.

Arquivos e diretórios são atribuídos a um grupo, que define a classe de grupo do arquivo. Permissões distintas se aplicam a membros dos membros do grupo do arquivo. O proprietário não precisa ser membro do grupo do arquivo.

Os usuários que não são proprietários nem membros do grupo compõem a classe de outros arquivos. Permissões distintas se aplicam a outras pessoas.

As permissões efetivas são determinadas com base na classe do usuário. Por exemplo, o usuário que é o proprietário do arquivo terá as permissões dadas à classe proprietária, independentemente das permissões atribuídas à classe do grupo ou a outras classes.

Permissões

Existem três permissões específicas em sistemas semelhantes ao Unix que se aplicam a cada classe:

  • A permissão de leitura, que concede o capacidade de ler um arquivo. Quando definido para um diretório, essa permissão concede a capacidade de ler os nomes de arquivos no diretório (mas não para descubra qualquer informação adicional sobre eles, como conteúdo, arquivo tipo, tamanho, propriedade, permissões, etc)

  • A permissão de gravação, que concede a capacidade de modificar um arquivo. Quando definido para um diretório, essa permissão concede a capacidade de modificar entradas no diretório. Isso inclui criar arquivos, excluir arquivos e renomeando arquivos.

  • A permissão de execução, que concede a capacidade de executar um arquivo. este permissão deve ser definida para executável binários (por exemplo, um c ++ compilado programa) ou shell scripts (para exemplo, um programa Perl) para permitir que o sistema operacional seja executado eles. Quando definido para um diretório, permissão concede a capacidade de atravessar a árvore para acessar arquivos ou subdiretórios, mas não ver arquivos dentro do diretório (a menos que read está definido).

O efeito de definir as permissões em um diretório (em vez de em um arquivo) é "um dos problemas de permissão de arquivo mais frequentemente incompreendidos".

Quando uma permissão não está definida, os direitos que ela concederia são negados. Os arquivos criados dentro de um diretório não terão necessariamente as mesmas permissões que esse diretório. As permissões a serem atribuídas são determinadas usando aks.

Notação Octal

A notação octal consiste em um valor base-8 de três ou quatro dígitos.

Com a notação octal de três dígitos, cada numeral representa um componente diferente do conjunto de permissões: classe de usuário, classe de grupo e "outros", respectivamente.

Cada um desses dígitos é a soma de seus bits componentes (veja também Sistema numérico binário). Como resultado, bits específicos adicionam à soma como é representada por um numeral:

  • O bit de leitura adiciona 4 ao seu total (em binário 100),

  • O bit de gravação adiciona 2 ao seu total (em binário 010) e

  • O bit de execução adiciona 1 ao total (no binário 001).

Esses valores nunca produzem combinações ambíguas; cada soma representa um conjunto específico de permissões.

Aqui está um resumo dos significados para valores de dígito octal individuais:

0 --- no permission
1 --x execute 
2 -w- write 
3 -wx write and execute
4 r-- read
5 r-x read and execute
6 rw- read and write
7 rwx read, write and execute

Observe também que seu arquivo pode ser de propriedade do usuário foo , o Apache geralmente é executado como um usuário diferente (vamos chamá-lo de bar ). Isso significa que, se você quiser que o Apache o leia, é necessário conceder à permissão group ou other (dependendo da configuração) para ler o arquivo.

Você pode encontrar mais informações sobre as permissões do POSIX Filesystem em Wikipedia .

    
por 06.06.2010 / 00:37
2

Parece uma questão de falha de servidor.

Para usuários que não são do sistema terem acesso de leitura em um diretório, você precisa definir o diretório como executável.

Quanto ao que os números significam, é um número de código octal que define todos os três grupos de permissões de uma só vez.

R W X  Code
0 0 0  0 No Permission
0 0 1  1 Executable
0 1 0  2 Write
0 1 1  3 Write and execute
1 0 0  4 Read
1 0 1  5 Read and execute
1 1 0  6 Read and write
1 1 1  7 read, write, execute

Simplesmente bloqueie esses três números, sendo o proprietário o primeiro número, o grupo o segundo e os outros o terceiro, e você tem o código de permissão octal.

Geralmente com compartilhamentos de arquivos, você configura arquivos para 744 e diretórios para 755, porque o proprietário deve ter permissão para fazer qualquer coisa com ele, mas usuários e convidados (como usuários anônimos da Web) devem ter apenas permissões de leitura.

link

    
por 06.06.2010 / 00:41