Decifrando permissões do sistema de arquivos Linux
Publicados: 2017-02-24As permissões de arquivo do Linux podem parecer hieróglifos arcanos da teoria dos números para alguns e é compreensível. O modelo de permissão do sistema de arquivos do Linux deriva do legado do UNIX. No entanto, eles são bastante fáceis de entender, uma vez que você entenda a lógica por trás deles.
Grupos e tipos de permissão
Todo o controle de acesso a arquivos e pastas é definido no sistema de arquivos usando as seguintes informações:
- Três grupos de permissão: u para proprietário, g , grupo, o ou a , todos os usuários.
- Três tipos de permissão: r , read, x , execute, w , write.
Os tipos de permissão são os caracteres “r”, ”x” e “w” , chamados de sinalizadores, e são exibidos como tal se você listar as permissões do arquivo ou da pasta de alguma forma. As bandeiras não definidas são representadas com um caractere “-”. Os de grupo de permissão são usados em comandos que alteram a propriedade e o grupo de um arquivo, nos quais nos aprofundaremos em breve.
Permissões de visualização
Você pode visualizar as permissões de um arquivo ou pasta usando um gerenciador de arquivos GUI ou inspecionando a saída do comando ls no terminal do console.
Abra seu terminal e digite o seguinte comando:
teste de toque $
$ ls -la teste
-rw-r–r– 1 yorgos staff 0 23 de fevereiro 17:07 teste
A string “-rw-r–r–” contém as informações de permissão do sistema de arquivos nas quais estamos interessados. O restante dos campos da esquerda para a direita exibe as seguintes informações:
- quantos links existem para este arquivo (1)
- o ID de usuário do proprietário (yorgos)
- O ID do grupo (equipe)
- Comprimento do arquivo em bytes (0)
- Data de criação (23 de fevereiro)
- Horário criado (17:07)
- Nome do arquivo (teste)
Bits de permissão
Você notará que existem 9 combinações diferentes de grupos e tipos de permissão, mas 10 posições de bandeira. O primeiro mostra o sinalizador de tipo de arquivo enquanto o último indica as próprias permissões. Os tipos de arquivo podem ser: “-” para arquivos, “l” para links simbólicos (estes são links de sistema de arquivos que apenas apontam para outro arquivo) e “d” para diretórios. Como o primeiro caractere/flag em nosso exemplo é “-”, estamos falando de um arquivo simples. Continuando, vamos detalhar o campo de permissões:
– : Tipo de arquivo (pode conter l, - ou d)
rw- : permissões de leitura e escrita (sem execução). Essas permissões são para o proprietário.
r– : permissão de leitura, sem permissão de gravação e execução. Essas permissões dizem respeito a usuários pertencentes a um grupo.
r– : permissão de leitura, sem escrita e execução. Por fim, essas permissões dizem respeito a todos os outros.
Então, na verdade, isso significa apenas “este arquivo pode ser lido e gravado pelo proprietário, e é somente leitura por todos os outros”. O grupo compartilha as mesmas permissões.
Modificando permissões
Para modificar as permissões de um arquivo ou pasta, novamente, você usa um comando GUI (isso está fora do escopo deste artigo, então não iremos lá) ou usa certos comandos linux em seu terminal. O comando que vamos usar é chamado chmod (alterar modo de arquivo). O comando chmod aceita uma variedade de parâmetros que alteram seu comportamento de muitas maneiras diferentes, mas seu uso geral é o seguinte:
$ chmod <modo> <arquivo>
O <modo> é especificado pelos seguintes símbolos:
r a bandeira de leitura
w a bandeira de gravação
x o sinalizador de execução
u o sinalizador de permissão do usuário/proprietário
g o sinalizador de permissão do grupo
o o sinalizador de permissão de outros usuários
Existem alguns outros, mas vamos discuti-los na seção final do nosso artigo.
Então, digamos que você queira dar permissões de execução aos usuários pertencentes ao grupo (mas certifique-se de que você é o proprietário do arquivo primeiro!):
$ chown teste g+x
$ ls -l teste
-rwxrwxrwx 1 yorgos staff 0 Fev 23 17:07 test
Ou talvez você precise bloquear todos os outros completamente. Eles não seriam capazes de ler, escrever ou executar o arquivo:
teste $ chown o-rwx
$ ls -l teste
-rwxrwx— 1 yorgos staff 0 Fev 23 17:07 test

Aqui vemos os últimos sinalizadores todos desmarcados para “-”.
Se você quiser ver mais exemplos, consulte a página de manual do chmod emitindo o seguinte comando:
$ man chmod
Proprietários e grupos
Você também pode alterar a propriedade do arquivo e do grupo de um arquivo usando o comando chown .
O comando chown aceita vários parâmetros que alteram seu comportamento de alguma forma, mas o uso mais comum é o seguinte:
# chown <proprietário> <arquivo>
Ou
# chown <proprietário:grupo> <arquivo>
O primeiro exemplo é usado para alterar o proprietário de um arquivo para outro. Tenha em mente, porém, que você deve ter acesso root para alterar a propriedade de um arquivo. Então, executando o seguinte:
#chown ninguém teste
# ls -l teste
-rwxrwxrwt 1 ninguém da equipe 0 23 de fevereiro 17:07 teste
é revelado agora que o arquivo é de propriedade do userid 'nobody' e não mais de 'yorgos'.
Da mesma forma o comando:
#chown none:wheel test
# ls -l teste
-rwxrwxrwt 1 ninguém roda 0 23 de fevereiro 17:07 teste
Altera a propriedade do arquivo para ninguém e o grupo para wheel .
Se você quiser saber mais sobre o comando e seus diversos parâmetros, consulte a página de manual do chown emitindo o comando:
$ man chown
Permissões especiais
Além dos tipos e grupos de permissões que já mencionamos no artigo, existem alguns outros, chamados “permissões especiais”.
Estes são os seguintes:
s O sinalizador Definir ID do usuário e Definir ID do grupo.
t A bandeira pegajosa.
O primeiro é definido usando o sinalizador “s” no comando chmod da maneira usual, assim:
$ chmod u+s teste
$ ls -l teste
-rwsrwx— 1 yorgos funcionários 0 23 de fevereiro 17:07 teste
Esse sinalizador também é chamado de sinalizador SUID (Set User ID) ou SGID (Set Group ID). Se este bit estiver definido, o arquivo herdará os direitos de acesso de seu proprietário. Isso significa que qualquer pessoa que executa o arquivo está fazendo isso como o proprietário. O SGID é semelhante, mas o arquivo herda o direito de acesso de seu grupo. Isso, é claro, pode levar a problemas de segurança, portanto, deve-se tomar cuidado.
O bit pegajoso, ou “t” é particularmente útil. Quando definido em um diretório, que geralmente é compartilhado como /tmp, os arquivos criados lá só podem ser renomeados ou excluídos por seus respectivos proprietários. Se o sticky bit não estiver definido, o proprietário do diretório não terá controle sobre eles.
Você pode tornar um diretório “fixo” emitindo o seguinte comando:
$ chmod +t /diretório
Representação octal
Além de usar sinalizadores para definir permissões como “r” e “w”, você também pode usar valores numéricos. O comando chmod atribui os seguintes valores às permissões:
“r” = 4
“w” = 2
“x” = 1
Portanto, para definir um arquivo para ler/gravar/executar para o proprietário e ler/executar para todos os outros, significando “-rwxr-xr-x”, calculamos o valor numérico como tal:
rwx = 4+2+1 = 7
rx = 4+1 = 5
Finalmente emitimos o comando:
$ chmod 755 teste
$ ls – teste
-rwxr-xr-x 1 yorgos funcionários 21 de fevereiro 24 02:08 teste
Pratique por conta própria usando diferentes permissões e valores numéricos para pegar o jeito!