Permissões de arquivos e diretórios
Last updated
Last updated
chmod
- É um comando que altera as permissões dos arquivos e diretórios, através de uma representação simbólica ou de um número octal.
chmod em formato simbólico |
---|
O comando é divido em 3 partes, uma ou mais letras para indicar a quem vai ocorrer a mudança, um sinal indicando se vai adicionar, remover ou substituir, e uma letra que indicam as novas permissões do usuário.
Aqui será indicado a quem vai ocorrer essa mudança: [ u g o a ]
[ u ] para indicar mudança para o dono do arquivo.
[ g ] para indicar mudança para o grupo do dono.
[ o ] para indicar mudança para outros usuários.
[ a ] para todos.
Obs: Se não for digitado nenhuma letra será assumido a
.
Aqui será indicado o que vai ser essa mudança, remover, adicionar ou substituir: { + - = }
{ + } para adicionar uma permissão.
{ - } para remover uma permissão.
{ = } para substituir as permissões pela a indicada.
Aqui será indicado qual vai ser essa mudança: { r w x s t }
{ r } permissão de leitura.
{ w } permissão de gravação.
{ x } permissão executar um arquivo ou entrar em um diretório.
{ s } permissão suid ou sgid.
{ t } permissão sticky.
Exemplo:
Essa permissão permite que o arquivo seja executado com privilégios de proprietário do arquivo.
Olhando o comando /usr/bin/passwd
, esse comando tem por padrão a permissão suid definida. O passwd é um gerenciamento de senhas, tem o suid já definido para que um usuário comum possa alterar suas próprias senhas, pois um usuário comum não tem permissão de alterar um arquivo de sistema no /etc, apenas o root.
Observe o s onde o x normalmente indicaria permissões de execução para o usuário.
A permissão SGID pode ser definida em arquivos e diretórios, nos arquivos é semelhante à permissão SUID, mas os privilégios serão os mesmos do proprietário do grupo.
Usando o comando ls -l
No lugar o x (executar) vai estar S ou s. A permissão SUID é representada pelo "s" (minúsculo) ou "S" (maiúsculo) na posição do usuário, enquanto a permissão SGID é representada pelo "s" (minúsculo) ou "S" (maiúsculo) na posição do grupo nas permissões de arquivo.
O "s" minúsculo em rws indica a presença do SUID no arquivo, junto com a permissão de execução. Se, no lugar dele, houvesse um "S" maiúsculo (rwS), isso significaria que a permissão de execução não foi definida.
Por exemplo:
O arquivo arquivo.c não tem a permissão de execução no usuário, se atribuirmos a permissão suid, ficará com o S.
Note que "S" maiúsculo indica que o suid está ativado, mas não tem permissão de execução, para ativar a execução suid é necessário ativar a permissão execução também.
Assim fica o "s" minúsculo com o suid ativado e com permissão de execução.
Usando o comando find
O comando find pode ser usado para localizar todos os arquivos com permissões SUID ou SGID no sistema.
Exemplo:
Numericamente o suid é representado por 4000, e sgid por 2000.
Usando o comando stat
O comando stat pode ser usado para exibir informações detalhadas sobre um arquivo, incluindo as permissões SUID e SGID.
O sticky bit é usado em diretórios para evitar que usuários regulares excluam ou movam arquivos que não sejam seus.
Somente o proprietário do arquivo e o usuário root podem excluir arquivos em um diretório que possua o Sticky bit ativado.
Um exemplo disso é o diretório /tmp
Da mesma forma que se ativarmos o suid e sgid em um arquivo que não tem permissão de execução mostrará o "S" e não o "s", no sticky bit ocorre a mesma coisa. Se o diretório não tiver a permissão o+x irá mostrar o "T" e não o "t".
O formato numérico octal é composto por 3 dígitos a partir de um conjunto de oito números onde cada número define um tipo de acesso diferente.
Exemplo:
Cada bit se refere as permissões leitura, gravação e execução (rwx). Quando o bit for 1 indica que a permissão será ativada.
Outra forma de usar o formato octal é somando cada permissão isolada, por exemplo:
( 4 ) permissão de leitura.
( 2 ) permissão de gravação.
( 1 ) permissão de execução.
Para atribuir as permissões de leitura e gravação soma 4+2 = 6, chmod 6 <arquivo>
Cada um dos 3 dígitos se refere ao usuário, grupo e outros, em sequência. Com isso se usarmos os dígitos 777 vamos atribuir todas as permissões ao dono, grupo e outros.
Exemplo de uso:
Números não utilizados são consideramos como 0, então chmod 6 arquivo.txt
é igual a chmod 006
.
Exemplos:
No formato octal podemos utilizar o quarto digito, na frente dos 3 dígitos, para informar uma permissão especial.
Funciona da mesma forma que as permissões r, w e x, a sequência para as permissões especiais é suid, sgid e sticky.
Agora é só colocar mais um digito na frente para atribuir uma permissão especial, chmod 4765 arquivo.txt
, vai atribuir as permissões de suid ao arquivo.
Linguagem C/C++
Para compilar os códigos use:
O gcc é um compilador da linguagem C utilizado no linux, -o main indica o nome do arquivo de saída, o binário gerado, que vai se chamar main, arquivo.c é o seu arquivo com os códigos em C.
O ./main indica para executar o arquivo binário main que foi gerado ao compilar arquivo.
Código usado
O C++ funciona da mesma forma que o gcc, mas é chamado de g++, assim:
Linguagem Python
A linguagem Python por ser interpretada e não compilada você deve apenas executar o código, sem precisar gerar um binário, mas tenha o python3 instalado.
Instalando:
Crie um arquivo em Python pelo vim.
Executando:
Código usado:
Agora sua missão é pesquisar como executar esse código em Golang no linux:
Utilize esse site e compile o código acima na sua máquina linux utilizando o vim ou nano.
Um tuor por Go - Aprenda Golang
Comando | Descrição |
---|---|
permissões | explicação |
---|---|
comando | explicação |
---|---|
Comando | Descrição |
---|---|
Comando | Descrição |
---|---|
Binário | Octal | Permissão |
---|---|---|
Comando | Descrição |
---|---|
Binário | Octal | Permissão |
---|---|---|
chmod [u g o a] {+ - =} {r w x s t} <arquivo>
chmod u+r <arquivo>
Foi adicionado a permissão leitura ao dono no arquivo.
chmod u-r <arquivo>
Foi retirado a permissão leitura ao dono no arquivo.
chmod u=r <arquivo>
Todas as permissões foram substitutas pela a informada ao dono.
-rwsr-xr-x
A permissão SUID está ativada e pode ser executada (letra "s" minúscula na posição do usuário).
-rwxr-sr-x
A permissão SGID está ativada e pode ser executada (letra "s" minúscula na posição do grupo).
find / -type f -perm -4000
para encontrar todos os arquivos com permissão SUID
find / -type f -perm -2000
para encontrar todos os arquivos com permissão SGID
mkdir -p dir1/dir2/dir3
para criar mais de um diretório em um único comando.
touch meu-arquivo.txt
vai criar um arquivo vazio.
touch arquivo1.txt arquivo2.txt arquivo3.txt
pode criar mais de um arquivo por vez.
ls -l carta*
vai listar todos os arquivos que comecem com "carta...".
chmod xxx <arquivo ou diretório>
Altera as permissões do usuário, grupo ou outros usuários para ler, escrever ou executar o arquivo.
chmod -R xxx <diretório>
Altera a permissão de todos arquivos e diretórios que estão no diretório recursivamente.
000
0
Nenhum é ativado
001
1
Permissão de execução
010
2
Permissão de de gravação
011
3
Permissão de gravação e execução
100
4
Permissão de leitura
101
5
Permissão de leitura e execução
110
6
Permissão de de leitura e gravação
111
7
Permissão de leitura, gravação e execução
chmod 111 <arquivo>
Todos podem executar o arquivo.
chmod 222 <arquivo>
Todos podem gravar no arquivo.
chmod 700 <arquivo>
O dono do arquivo tem todas as permissões.
chmod 600 <arquivo>
O dono do arquivo pode ler e gravar.
chmod 777 <arquivo>
Todas as permissões para todos.
000
0
Nenhum é ativado
001
1
Ativa apenas o sticky
010
2
Ativa apenas o sgid
011
3
Ativa o sgid e sticky
100
4
Ativa apenas o suid
101
5
Ativa apenas o suid e sticky
110
6
Ativa o suid e sgid
111
7
Ativa todos, suid, sgid e sticky