Letras de direitos do usuário para números

6

Estou tendo problemas ao converter os direitos do usuário. Eu quero atribuir os seguintes direitos a certos arquivos / pastas, mas não sei para traduzi-los em um formato com o qual o chmod funcionará como chmod 755 .

-rwxrwxrwx 

será?

e

drwxr-xr-x

será?

E finalmente

-rw-r--r--

será?

    
por Shaeldon 18.11.2014 / 10:28

2 respostas

12

Versão resumida:

  • As permissões podem incluir: ler (r), escrever (w), executar (x)

  • Portanto, as permissões são expressas em uma linha de três caracteres, por exemplo, rwx (para fornecer todas as permissões)

  • Quando uma permissão é negada, um "-" é colocado, por exemplo: r-- para conceder somente permissão de leitura.

  • porque existem três tipos de usuários, precisaremos de 3 x 3 caracteres:

    owner | owner group | others
    

    por exemplo, rwx rwx rwx concede a todos os tipos de usuários todas as permissões.

  • essas permissões podem ser expressas em numeração octal, onde:

    read    =  4
    write   =  2
    execute =  1
    
    so: 
    r-- = 4
    rw- = 6
    rwx = 7
    
  • exemplo:

    rw- r-- r-- 
    

    concede a todos permissão de leitura, somente o usuário pode escrever. Em octal:

    644 
    

    (4 + 2 + 0 | 4 + 0 + 0 | 4 + 0 + 0)

Seu exemplo:

-rwxrwxrwx

é provavelmente a saída de ls -l , em que o - precedente significa que é um arquivo. No seu segundo exemplo:

drwxr-xr-x

o item é um diretório ( d )

Sobre a s bandeira

de Wikipedia :
setuid e setgid (abreviação de "set user ID on execution") e "set group ID on execution", respectivamente) 1 são flags de direitos de acesso Unix que permitem aos usuários executar um executável com as permissões do proprietário ou grupo do executável, respectivamente, e para alterar o comportamento nos diretórios. Eles costumam ser usados para permitir que usuários em um sistema de computador executem programas com privilégios elevados temporariamente para realizar uma tarefa específica.

Um exemplo é passwd ( -rwsr-xr-x ), que pode alterar os arquivos protegidos contra gravação em nome de um usuário.

Uma boa descrição deve ser encontrada aqui na Wikipedia.

O sinalizador t (bit pegajoso)

(Novamente) de Wikipedia :
Quando o bit pegajoso de um diretório é definido, o sistema de arquivos trata os arquivos nesses diretórios de maneira especial, de modo que apenas o proprietário do arquivo, o proprietário do diretório ou o usuário root possam renomear ou excluir o arquivo. Sem o conjunto de bits fixos, qualquer usuário com permissões de gravação e execução para o diretório pode renomear ou excluir arquivos contidos, independentemente do proprietário do arquivo.

Nos sistemas Linux, o sinal t é ignorado quando usado em arquivos.

Veja também aqui na Wikipedia.

    
por Jacob Vlijm 18.11.2014 / 10:39
5

Você não precisa convertê-los em números. chmod entende bem os símbolos, se você os dividir em usuário, grupo e outros campos. Os seguintes são equivalentes:

chmod 755 
chmod u=rwx,g=rx,o=rx

Então, dado um conjunto de permissões como, divida-as assim:

-rwxrwxrwx  == - rwx rwx rwx
drwxr-xr-x  == d rwx r-x r-x
-rw-r--r--  == - rw- r-- r--

Em seguida, atribua o primeiro trio a u , o segundo a g e o terceiro a o , ignorando os hifens:

chmod u=rwx,g=rwx,o=rwx
chmod u=rwx,g=rx,o=rx
chmod u=rw,g=r,o=r

Quando dois campos são iguais, você pode combiná-los. O último chmod seria o mesmo que:

chmod u=rw,go=r

E você pode usar a (all) para atribuir u , g e o de uma vez, então o primeiro é equivalente a:

chmod a=rwx

Agora, há alguns bits de permissão especiais: s ( setuid / setgid ) e t ( bit pegajoso ).

Eles são exibidos sobre o campo em que x é normalmente visto, portanto, se um diretório tiver o adesivo para outros, você verá um t (se houver permissões de execução) ou um T (se permissões de execução não estão presentes). Por exemplo, as permissões de /tmp :

drwxrwxrwt

Nesses casos, você precisa escrever t como xt e s como rwxs :

chmod u=rwx,g=rwx,o=rwxt 
  • O bit setuid significa que, quando esse arquivo é executado, ele é executado como o usuário que possui o arquivo, não como o usuário que o executa. Considere passwd (usado para alterar a senha):

    # stat 'which passwd'
    Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    

    Se eu (usuário muru ) executar passwd , o processo iniciado será executado com as permissões root , não com as minhas. Geralmente é visto em binários que precisam ser root para executar alguma ação ( passwd edits /etc/shadow , por exemplo).

  • O bit setgid em um diretório significa que quaisquer arquivos ou diretórios recém-criados nele herdarão a propriedade do grupo. Geralmente é visto em diretórios usados para servidores web ou FTP, etc.

  • O bit adesivo significa que, mesmo que um usuário tenha permissões de gravação no diretório, ele não poderá mover ou renomear os arquivos de outro usuário. Geralmente é visto em diretórios compartilhados, como /tmp .

por muru 18.11.2014 / 11:07

Tags