Segurança da Informação regras de acesso a arquivos e Diretórios.
Como aplicar as regras de permissões de arquivos e diretórios em sistemas Unix/Like, de uma forma mais abrangente, e acadêmica.
Gerenciamento
de Permissões no sistema de arquivos:
Como
sabemos o sistema Linux oferece um ambiente Multitarefa e
Multiusuário, onde uma mesma maquina pode executar vários
trabalhos por vários usuários simultaneamente, então e óbvio que
pra que se tenha uma certa organização e não cairmos num caos, é
preciso por ordem na casa, e é nesse ponto que entra em cena um
tópico que esta muito em alta atualmente e promete seguir chamando
ainda mais a atenção dos administradores e usuários de sistemas,
“A Segurança da Informação”, então é nesse cenário que
vamos abordar as regras de permissões de acesso a arquivos e
diretórios do sistema.
Como
num ambiente compartilhado não podemos deletar ou modificar qualquer
coisa à que tenhamos acesso, nada mais lógico e funcional que impor
regras de acessos aos arquivos e diretórios, evitando assim perdas e
transtornos indesejáveis aquilo que consideramos ser o bem mais
precioso de uma empresa, a nossa informação.
Essas
regras de acesso nada mais são que atributos dados aos arquivos e
diretórios, que determinam quem pode acessá-los, tendo em mente
três ações básicas, Leitura, Escrita e Execução, essas regras
podem ser definidas para Usuários e Grupos.
Permissao
|
Açao
|
NO
ARQUIVO
|
NO
DIRETORIO
|
---|---|---|---|
READ
(r) - 4
|
LEITURA
|
Pode
Ver Arquivo
|
Pode
ver Diretório
|
WRITE
(w) - 2
|
ESCRITA
|
Modificar
e Deletar
|
Criar
e Deletar
|
EXECUTE
(x) - 1
|
EXECUÇÃO
|
Execução
|
Navegar
Pelo Diretório
|
No
Linux aplicamos essas permissões a arquivos e diretórios, três
modos de acesso, Usuário , Grupo e Outros cada um pode receber até
três permissões; compondo uma string de 9 letras.
Ex:
rwx-r-w-x. Os três primeiros são permissões do usuário, grupo e
outros respectivamente.
Veja
o arquivo variáveis.odt
edson@edson-desktop:~/Documentos$
ls -la variáveis.odt
-rw-r--r--
1 edson edson 59587 Dez 26 16:31 variáveis.odt
O
usuário edson tem permissão de Leitura e Gravação o Grupo e Outro
só de Leitura.
Podemos
alterar essas permissões com o comando chmod em modo root.
edson@edson-desktop:~/Documentos#
chmod
ugo+wrx variáveis.odt
Agora
todos tem permissões de Leitura Gravação e Escrita.
edson@edson-desktop:~/Documentos$
ls -la variáveis.odt
-rwxrwxrwx
1 edson edson 59587 Dez 26 16:31 variáveis.odt
edson@edson-desktop:~/Documentos$
Também
podemos fazer uma representação numérica octal 3 dígitos..
Onde
:
4
= leitura.
2
= Escrita
1
= Execução
a
soma dos números agrega permissões.
Exemplo
775 , 640 , 555 etc.
Onde
7 = 4+2+1 Leitura gravação e Execução
onde
5 = 4 + 1 Leitura e Execução
onde
6 = 4 + 2 Leitura e Gravação
onde
3 = 2 + 1 Gravação e Execução.
Assim
por diante.
Da
mesma forma como trabalhamos antes podemos alterar as permissões
numérica com o comando chmod.
Chmod
777 arquivo → dá todas as permissões a todos os usuários
chmod
111 arquivo → dá permissão de execução a todos usuários.
Chmod
42l arquivo → Leitura para o dono escrita para o Grupo e Execução
outros
Pela
ordem primeiro dígito refere-se ao Usuário , segundo dígito ao
Grupo, terceiro dígito a outros que não Usuário e Grupo.
Acabamos
de ver as permissões de acesso para arquivos e diretórios, mas
além dessas atribuições ainda existe os bits de atributos
especiais,
- Sticky bit e usado nos diretórios para prevenir deleções não desejadas, ou seja deleções acidentais provocadas por não proprietário, ou seja essa regra se aplica aos arqivos.
- Setuid ou SUID, e aplicada ao campo de execução e permite a usuáios normais executarem a aplicação com se fossem os Proprietários, wSr.
- Setgid ou SGID tem o mesmo efeito que SUID apenas ue se aplica as permissões de grupo.
SUID
Esta regra se aplica somente para
arquivos executáveis (não tem efeito em diretórios).
Normalmente quem executa o programa é o dono do processo. Mas quando o arquivo tem a propriedade SUID ligada, o programa roda com o ID do proprietário do arquivo, e não com o ID de quem esta executando o programa. ou seja, quando um arquivo/programa executável tem o controle de acesso SUID, ele é executado como tivesse sido iniciado pelo próprio proprietário do arquivo/programa/processo.
A permissão de acesso especial SUID pode aparecer somente no campo Dono.
Exemplo:
O sistema Linux tem muitos arquivos com a propriedade SUID ligada, e isto obviamente tem um motivo lógico, é preciso ter muita cautela quando ligamos a permissão SUID, um exemplo é o arquivo /usr/bin/passwd. Ou seja, quando executamos o comando passwd com qualquer usuário normal, o processo é executado com ID do usuário root (como se o usuário root tivesse executado o comando passwd), pois somente o usuário root tem permissão para alterar o arquivo /etc/passwd.
# ls -lah /usr/bin/passwd
-rwsr-xr-x 1 root root 27K 2006-04-03 10:37 /usr/bin/passwd
Comandos:
Como ligar a opção SUID:
# chmod u+s exemplo.sh
# ls -lah exemplo.sh
-rwsr-xr-x 1 root edson 0 2009-09-29 12:37 exemplo.sh
Note que a letra S apareceu no campo do usuário com executavél
Utilizando formato octal (4):
# chmod 4750 exemplo.sh
# ls -lah exemplo.sh
-rwsr-xr-x 1 root edson 0 2009-09-29 12:37 exemplo.sh
Cpomo desligar o SUID:
# chmod u-s exemplo.sh
# ls -lah exemplo.sh
-rw-r-xr-x 1 root edson 0 2009-09-29 12:37 exemplo.sh
Normalmente quem executa o programa é o dono do processo. Mas quando o arquivo tem a propriedade SUID ligada, o programa roda com o ID do proprietário do arquivo, e não com o ID de quem esta executando o programa. ou seja, quando um arquivo/programa executável tem o controle de acesso SUID, ele é executado como tivesse sido iniciado pelo próprio proprietário do arquivo/programa/processo.
A permissão de acesso especial SUID pode aparecer somente no campo Dono.
Exemplo:
O sistema Linux tem muitos arquivos com a propriedade SUID ligada, e isto obviamente tem um motivo lógico, é preciso ter muita cautela quando ligamos a permissão SUID, um exemplo é o arquivo /usr/bin/passwd. Ou seja, quando executamos o comando passwd com qualquer usuário normal, o processo é executado com ID do usuário root (como se o usuário root tivesse executado o comando passwd), pois somente o usuário root tem permissão para alterar o arquivo /etc/passwd.
# ls -lah /usr/bin/passwd
-rwsr-xr-x 1 root root 27K 2006-04-03 10:37 /usr/bin/passwd
Comandos:
Como ligar a opção SUID:
# chmod u+s exemplo.sh
# ls -lah exemplo.sh
-rwsr-xr-x 1 root edson 0 2009-09-29 12:37 exemplo.sh
Note que a letra S apareceu no campo do usuário com executavél
Utilizando formato octal (4):
# chmod 4750 exemplo.sh
# ls -lah exemplo.sh
-rwsr-xr-x 1 root edson 0 2009-09-29 12:37 exemplo.sh
Cpomo desligar o SUID:
# chmod u-s exemplo.sh
# ls -lah exemplo.sh
-rw-r-xr-x 1 root edson 0 2009-09-29 12:37 exemplo.sh
Procurando SUID:
Por alguma ração você pode querer
procurar por arquivos SUID, para evitar transtornos.
Procurando por SUID em um arquivo executável utilizando formato simbólico (s):
Procurando por SUID em um arquivo executável utilizando formato simbólico (s):
Faça isso dentro de seus diretórios,
com já foi dito o linux tem inúmeros arquivos SUID.
Com o commando find com a opção -perm de permissão.
# find /home/edson -perm u=s
/home/edson/exemplo.sh
Utilizando o formato octal (4):
# find /home/edson -perm -4000
/home/edson/exemplo.sh
Com o commando find com a opção -perm de permissão.
# find /home/edson -perm u=s
/home/edson/exemplo.sh
Utilizando o formato octal (4):
# find /home/edson -perm -4000
/home/edson/exemplo.sh
SGID
A propriedade SGID tem a mesma
função que o SUID para arquivos executáveis. Mas a propriedade
SGID tem um efeito especial para os diretórios.
Quando SGID é aplicado em um diretório, os novos arquivos que são criados dentro do diretório assumem o mesmo ID de Grupo do diretório com a propriedade SGID aplicado.
A permissão de acesso especial SGID pode aparecer somente no campo Grupo.
Exemplo:
Se no diretório /home/edson tem o grupo progs e tem o SGID habilitado, então todos os arquivos dentro do diretório /home/edson serão criados com o grupo progs.
Assumindo que todos os arquivos compartilhados devem ter o mesmo grupo. A SGID se torna uma regrfa interessante.
Aplicando a propriedade SGID em um diretório executável utilizando formato simbólico (s):
# chmod g+s /home/progs
# ls -lah /home/progs
drwxr-sr-x 2 TI progs 48 2106-03-16 13:21 .
Utilizando o formato octal (2):
# chmod 2750 /home/progs
# ls -lah /home/progts
drwxr-s--- 2 TI progs 48 2006-09-26 23:21 .
Retirando SGID:
# chmod g-s /home/progs
# ls -lah /home/progs
drwxr-xr-x 2 TI progs 48 2016-01-16 13:21 .
Procurando SGID:
Procurando a propriedade SGID em um diretório executável utilizando formato simbólico (s):
# find /home -perm /g=s
/home/progs
Procurando a propriedade SUID em um diretório executável utilizando formato octal (2):
# find /home -perm -2000
/home/TI
Quando SGID é aplicado em um diretório, os novos arquivos que são criados dentro do diretório assumem o mesmo ID de Grupo do diretório com a propriedade SGID aplicado.
A permissão de acesso especial SGID pode aparecer somente no campo Grupo.
Exemplo:
Se no diretório /home/edson tem o grupo progs e tem o SGID habilitado, então todos os arquivos dentro do diretório /home/edson serão criados com o grupo progs.
Assumindo que todos os arquivos compartilhados devem ter o mesmo grupo. A SGID se torna uma regrfa interessante.
Aplicando a propriedade SGID em um diretório executável utilizando formato simbólico (s):
# chmod g+s /home/progs
# ls -lah /home/progs
drwxr-sr-x 2 TI progs 48 2106-03-16 13:21 .
Utilizando o formato octal (2):
# chmod 2750 /home/progs
# ls -lah /home/progts
drwxr-s--- 2 TI progs 48 2006-09-26 23:21 .
Retirando SGID:
# chmod g-s /home/progs
# ls -lah /home/progs
drwxr-xr-x 2 TI progs 48 2016-01-16 13:21 .
Procurando SGID:
Procurando a propriedade SGID em um diretório executável utilizando formato simbólico (s):
# find /home -perm /g=s
/home/progs
Procurando a propriedade SUID em um diretório executável utilizando formato octal (2):
# find /home -perm -2000
/home/TI
Sticky (Sticky bit)
Nos arquivos onde propriedade Sticky
e aplicada, faz com que o sistema tenha um comportamento diferente
mantendo uma cópia do programa na memória depois que o programa
finaliza.
Esta mudança melhora o desempenho,
com o implemento de um cache do programa para a memória dessa
forma acelera as próximas execuções .
A propriedade Sticky impede que os arquivos possam ser deletados ou alterados por outros usuarios. Isso extremamente desejável quando pensamos em seguranç,, com o diretório em modo append-only (somente incremente). somente o usuário que é Dono do arquivo, poderá modificar os arquivos dentro de um diretório com essa a propriedade aplicada.
A permissão especial Sticky e aplicável somente para outros usuários nas permissões de acesso.
Exemplo:
Em um diretório onde todos os usuários devem ter acesso para criar arquivos temporários, e interessante aplicar a propriedade Sticky, para evitar transtornos.
Aplicando a propriedade Sticky em um arquivo executável com o formato octal (1):
# chmod 1750 pesadelo.sh
# ls -lah pesadelo.sh
-rwxr-x--T 1 root root 2,2M 2016-01-12 12:45 pesadelo.sh
Aplicando a propriedade Sticky em um arquivo executável utilizando formato simbólico (t):
# chmod o+t pesadelo.sh
# ls -lah pesadelo.sh
-rwxr-x--T 1 root root 2,2M 2016-01-12 12:45 pesadelo.sh
Aplicando a propriedade Sticky em um diretório utilizando formato simbólico (t):
# chmod o+t /meu
# ls -lah /meu
drwxrwxrwt 8 root root 232 2016-01-13 00:22 .
Aplicando a propriedade Sticky em um diretório utilizando formato octal (1):
# chmod 1777 /meu
# ls -lah /meu
drwxrwxrwt 8 root root 233 2016-01-13 23:22 .
Retirando Sticky:
# chmod o-t /tmp
# ls -lah /tmp
drwxrwxrwt 8 root root 233 2016-01-13 23:22 .
Procurando Sticky:
Aplicando a propriedade Sticky em um diretório utilizando simbólico (t):
# find /home/edson/ -perm /o=t
Aplicando a propriedade Sticky em um diretório utilizando formato octal (1):
# find /home/edson/ -perm -1000
/home/edson/pesadelo.sh
A propriedade Sticky impede que os arquivos possam ser deletados ou alterados por outros usuarios. Isso extremamente desejável quando pensamos em seguranç,, com o diretório em modo append-only (somente incremente). somente o usuário que é Dono do arquivo, poderá modificar os arquivos dentro de um diretório com essa a propriedade aplicada.
A permissão especial Sticky e aplicável somente para outros usuários nas permissões de acesso.
Exemplo:
Em um diretório onde todos os usuários devem ter acesso para criar arquivos temporários, e interessante aplicar a propriedade Sticky, para evitar transtornos.
Aplicando a propriedade Sticky em um arquivo executável com o formato octal (1):
# chmod 1750 pesadelo.sh
# ls -lah pesadelo.sh
-rwxr-x--T 1 root root 2,2M 2016-01-12 12:45 pesadelo.sh
Aplicando a propriedade Sticky em um arquivo executável utilizando formato simbólico (t):
# chmod o+t pesadelo.sh
# ls -lah pesadelo.sh
-rwxr-x--T 1 root root 2,2M 2016-01-12 12:45 pesadelo.sh
Aplicando a propriedade Sticky em um diretório utilizando formato simbólico (t):
# chmod o+t /meu
# ls -lah /meu
drwxrwxrwt 8 root root 232 2016-01-13 00:22 .
Aplicando a propriedade Sticky em um diretório utilizando formato octal (1):
# chmod 1777 /meu
# ls -lah /meu
drwxrwxrwt 8 root root 233 2016-01-13 23:22 .
Retirando Sticky:
# chmod o-t /tmp
# ls -lah /tmp
drwxrwxrwt 8 root root 233 2016-01-13 23:22 .
Procurando Sticky:
Aplicando a propriedade Sticky em um diretório utilizando simbólico (t):
# find /home/edson/ -perm /o=t
Aplicando a propriedade Sticky em um diretório utilizando formato octal (1):
# find /home/edson/ -perm -1000
/home/edson/pesadelo.sh
Referência:
Linux
Guia
do Administrador do Sistema.
Editora
Novatec – Rio de Janeiro
Segunda
Edição – Revisada e Ampliada.
Author
- Rubem E. Ferreira
Certificação
LPI-1.
Editora
Linux New Media do Brasil Ltda – 2009
Author
– Luciano AntonioSiquieira.