Por que o sistema de permissão Unix usa 1 2 3 4… valores em vez de 1 ou 0?

0

Por que o sistema de permissão Unix usa 1 2 3 4 ... valores?

Por que não apenas 3 bits; um pouco para cada configuração leia escrever e executar. por exemplo

( rwx ) 110 => r=1 w=1 x=0
    
por aliarousyoucef 31.08.2017 / 13:07

3 respostas

4

É mais compacto usar números inteiros de 1 a 7 que são a soma dos três números de representação de permissão octal a seguir, 4 (lidos), 2 (gravar) e 1 (executar) adicionados juntos, porque todas as permissões Unix podem ser representado por um número inteiro variando de 1 a 7, em vez de usar 3 números para representar as permissões do Unix.

Exemplos de uso

Number  Octal Permission Representation                            Ref
0       No permission                                              ---
1       Execute permission                                         --x
2       Write permission                                           -w-
3       Execute and write permission: 1 (execute) + 2 (write) = 3  -wx
4       Read permission                                            r--
5       Read and execute permission: 4 (read) + 1 (execute) = 5    r-x
6       Read and write permission: 4 (read) + 2 (write) = 6        rw-
7       All permissions: 4 (read) + 2 (write) + 1 (execute) = 7    rwx
    
por karel 31.08.2017 / 13:10
5

Porque temos esses 3 bits (r / w / x) 3 vezes, uma vez para permissões de usuário (proprietário), uma vez para permissões de grupo e uma vez para permissões para todos os outros.

É por isso que, por exemplo na saída de ls -l , onde você obtém a representação de permissões textuais, é exibida, por exemplo como -rwxr-xr-x (o primeiro - indicando apenas o tipo de arquivo, ou seja, se é um diretório ou não).

(Na verdade, existem ainda mais três bits - SUID, SGID e Sticky - mas você pode procurar por essas permissões mais avançadas se estiver interessado.)

    
por Byte Commander 31.08.2017 / 13:10
2

Para representar rwx , é exatamente o uso de 3 (0 ou 1) bit:

Decimal  |  Binary
--------------------
1        |    001
2        |    010
3        |    011
4        |    100
5        |    101
6        |    110
7        |    111

Então, quando você está usando "3", você está definindo os bits: 011 igual a -wx , exatamente como você está pensando. No entanto, não se esqueça do SUID, SGID e sticky bit como um bit extra.

    
por Ravexina 31.08.2017 / 13:46