A permissão de acesso protege o sistema de arquivos Linux do acesso indevido de pessoas ou programas não autorizados.
A permissão de acesso do GNU/Linux
também impede que um programa
mal intencionado, por exemplo, apague um arquivo que não deve, envie arquivos
para outra pessoa ou forneça acesso da rede para que outros usuários invadam o
sistema. O sistema GNU/Linux
é muito seguro e como qualquer outro
sistema seguro e confiável impede que usuários iniciantes (ou mal
intencionados) instalem programas enviados por terceiros sem saber para que
eles realmente servem e causem danos irreversíveis em seus arquivos, seu micro
ou sua empresa.
Esta seção pode se tornar um pouco difícil de se entender, então recomendo ler
e ao mesmo tempo prática-la para uma ótima compreensão. Não se preocupe,
também coloquei exemplos para ajuda-lo a entender o sistema de permissões de
acesso do ambiente GNU/Linux
.
O princípio da segurança no sistema de arquivos GNU/Linux
é
definir o acesso aos arquivos por donos, grupos e outros usuários:
GNU/Linux
. Somente o dono pode modificar as permissões de acesso
do arquivo.
As permissões de acesso do dono de um arquivo somente se aplicam ao dono do arquivo/diretório. A identificação do dono também é chamada de user id (UID).
A identificação de usuário e o nome do grupo que pertence são armazenadas
respectivamente nos arquivos /etc/passwd
e
/etc/group
. Estes são arquivos textos comuns e podem ser editados
em qualquer editor de texto, mas tenha cuidado para não modificar o campo que
contém a senha do usuário encriptada (que pode estar armazenada neste arquivo
caso não estiver usando senhas ocultas).
Por padrão, quando um novo usuário é criado, o grupo ele pertencerá será o
mesmo de seu grupo primário (exceto pelas condições que explicarei adiante)
(veja isto através do comando id
, veja id, Section 12.12). A identificação do grupo
é chamada de gid (group id).
Um usuário pode pertencer a um ou mais grupos. Para detalhes de como incluir o usuário em mais grupos veja Adicionando um novo grupo a um usuário, Section 12.10.
Cada um dos tipos acima possuem três tipos básicos de permissões de acesso que serão vistas na próxima seção.
Quanto aos tipos de permissões que se aplicam ao dono, grupo e outros usuários, temos 3 permissões básicas:
ls
, por exemplo).
Para que um arquivo/diretório possa ser apagado, é necessário o acesso a gravação.
cd
(veja cd, Section
8.2 para detalhes).
As permissões de acesso a um arquivo/diretório podem ser visualizadas com o uso do comando ls -la. Para maiores detalhes veja ls, Section 8.1. As 3 letras (rwx) são agrupadas da seguinte forma:
-rwxrwxrwx gleydson users teste
Virou uma bagunça não? Vou explicar cada parte para entender o que quer dizer as 10 letras acima (da esquerda para a direita):
teste
.
teste
.
teste
tem a permissão para ler, gravar e executar o
programa.
Veja o comando chmod, Section 13.7 para detalhes sobre a mudança das permissões de acesso de arquivos/diretórios.
O acesso a um arquivo/diretório é feito verificando primeiro se o usuário que acessará o arquivo é o seu dono, caso seja, as permissões de dono do arquivo são aplicadas. Caso não seja o dono do arquivo/diretório, é verificado se ele pertence ao grupo correspondente, caso pertença, as permissões do grupo são aplicadas. Caso não pertença ao grupo, são verificadas as permissões de acesso para os outros usuários que não são donos e não pertencem ao grupo correspondente ao arquivo/diretório.
Após verificar aonde o usuário se encaixa nas permissões de acesso do arquivo (se ele é o dono, pertence ao grupo, ou outros usuários), é verificado se ele terá permissão acesso para o que deseja fazer (ler, gravar ou executar o arquivo), caso não tenha, o acesso é negado, mostrando uma mensagem do tipo: "Permission denied" (permissão negada).
O que isto que dizer é que mesmo que você seja o dono do arquivo e definir o
acesso do dono (através do comando chmod
) como somente
leitura (r) mas o acesso dos outros usuários como leitura e gravação,
você somente poderá ler este arquivo mas os outros usuários poderão
ler/grava-lo.
As permissões de acesso (leitura, gravação, execução) para donos, grupos e outros usuários são independentes, permitindo assim um nível de acesso diferenciado. Para maiores detalhes veja Tipos de Permissões de acesso, Section 13.2.
Lembre-se: Somente o dono pode modificar um arquivo/diretório!
Para mais detalhes veja os comandos chown, Section 13.9 e chgrp, Section 13.8.
Abaixo dois exemplos práticos de permissão de acesso: Exemplo de acesso a um arquivo, Section 13.4.1 e a Exemplo de acesso a um diretório, Section 13.4.2. Os dois exemplos são explicados passo a passo para uma perfeita compreensão do assunto. Vamos a prática!
Abaixo um exemplo e explicação das permissões de acesso a um arquivo no
GNU/Linux
(obtido com o comando ls -la, explicarei
passo a passo cada parte:
-rwxr-xr-- 1 gleydson user 8192 nov 4 16:00 teste
teste
. Um conjunto
de 10 letras que especificam o tipo do arquivo, permissão do dono do arquivo,
grupo do arquivo e outros usuários. Veja a explicação detalhada sobre cada uma
abaixo:
cd
. Caso for um l é um link
simbólico para algum arquivo ou diretório no sistema (para detalhes veja o
comando ln, Section 10.4 . Um
- significa que é um arquivo normal.
teste
. O dono
(neste caso gleydson) tem a permissão para ler (r), gravar (w) e
executar (x) o arquivo teste
.
teste
. Os usuários que pertencem ao grupo user tem a
permissão somente para ler (r) e executar (x) o arquivo teste
não
podendo modifica-lo ou apaga-lo.
teste
e que
não pertencem ao grupo user. Neste caso, estas
pessoas somente terão a permissão para ver o conteúdo do arquivo
teste
.
teste
.
teste
pertence.
teste
Abaixo um exemplo com explicações das permissões de acesso a um diretório no
GNU/Linux
:
drwxr-x--- 2 gleydson user 1024 nov 4 17:55 exemplo
exemplo
. É um conjunto de 10
letras que especificam o tipo de arquivo, permissão do dono do diretório, grupo
que o diretório pertence e permissão de acesso a outros usuários. Veja as
explicações abaixo:
exemplo
. O dono do diretório (neste
caso gleydson) tem a permissão para listar arquivos do diretório (r),
gravar arquivos no diretório (w) e entrar no diretório (x).
exemplo
.
exemplo
e
que não pertencem ao grupo user. Com as permissões
acima, nenhum usuário que se encaixe nas condições de dono e
grupo do diretório tem a permissão de acessa-lo.
exemplo
.
exemplo
pertence.
exemplo
Para detalhes de como alterar o dono/grupo de um arquivo/diretório, veja os comandos chmod, Section 13.7, chgrp, Section 13.8 e chown, Section 13.9.
OBSERVAÇÕES:
rm
).
Isto mostra que é levado mais em consideração a permissão de acesso do diretório do que as permissões dos arquivos e sub-diretórios que ele contém. Este ponto é muitas vezes ignorado por muitas pessoas e expõem seu sistema a riscos de segurança. Imagine o problema que algum usuário que não tenha permissão de gravação em um arquivo mas que a tenha no diretório pode causar em um sistema mal administrado.
Em adição as três permissões básicas (rwx), existem permissões de acesso especiais (stX) que afetam arquivos executáveis e diretórios:
Quando s é usado na permissão de acesso do Grupo, ajusta a identificação efetiva do grupo do processo durante a execução de um programa, chamado de bit setgid. É identificado pela letra s no lugar da permissão de execução do grupo do arquivo/diretório. Em diretórios, força que os arquivos criados dentro dele pertençam ao mesmo grupo do diretório, ao invés do grupo primário que o usuário pertence.
Ambos setgid e setuid podem aparecer ao mesmo tempo no mesmo arquivo/diretório. A permissão de acesso especial s somente pode aparecer no campo Dono e Grupo.
Em diretórios, impede que outros usuários removam arquivos dos quais não são
donos. Isto é chamado de colocar o diretório em modo append-only.
Um exemplo de diretório que se encaixa perfeitamente nesta condição é o
/tmp
, todos os usuários devem ter acesso para que seus programas
possam criar os arquivos temporários lá, mas nenhum pode apagar arquivos dos
outros. A permissão especial t, pode ser especificada somente no
campo outros usuários das permissões de acesso.
teste
(digitando touch teste) e
defina sua permissão para rw-rw-r-- (chmod ug=rw,o=r
teste ou chmod 664 teste).
teste
tem permissão de execução
(confira digitando ls -l).
Em diretórios, a permissão de acesso especial X funciona da mesma forma que x, até mesmo se o diretório não tiver nenhuma permissão de acesso (x).
Esta seção foi retirada do Manual de Instalação da Debian.
A conta root é também chamada de super usuário, este é um login que não possui restrições de segurança. A conta root somente deve ser usada para fazer a administração do sistema, e usada o menor tempo possível.
Qualquer senha que criar deverá conter de 6 a 8 caracteres, e também poderá conter letras maiúsculas e minúsculas, e também caracteres de pontuação. Tenha um cuidado especial quando escolher sua senha root, porque ela é a conta mais poderosa. Evite palavras de dicionário ou o uso de qualquer outros dados pessoais que podem ser adivinhados.
Se qualquer um lhe pedir senha root, seja extremamente cuidadoso. Você normalmente nunca deve distribuir sua conta root, a não ser que esteja administrando um computador com mais de um administrador do sistema.
Utilize uma conta de usuário normal ao invés da conta root para operar seu sistema. Porque não usar a conta root? Bem, uma razão para evitar usar privilégios root é por causa da facilidade de se cometer danos irreparáveis como root. Outra razão é que você pode ser enganado e rodar um programa Cavalo de Tróia -- que é um programa que obtém poderes do super usuário para comprometer a segurança do seu sistema sem que você saiba.
Muda a permissão de acesso a um arquivo ou diretório. Com este comando você pode escolher se usuário ou grupo terá permissões para ler, gravar, executar um arquivo ou arquivos. Sempre que um arquivo é criado, seu dono é o usuário que o criou e seu grupo é o grupo do usuário (exceto para diretórios configurados com a permissão de grupo "s", será visto adiante).
chmod [opções] [permissões] [diretório/arquivo]
Onde:
chmod
não muda permissões de links simbólicos, as permissões devem
ser mudadas no arquivo alvo do link. Também podem ser usados códigos numéricos
octais para a mudança das permissões de acesso a arquivos/diretórios. Para
detalhes veja Modo de permissão octal,
Section 13.10.
DICA: É possível copiar permissões de acesso do arquivo/diretório, por exemplo,
se o arquivo teste.txt
tiver a permissão de acesso
r-xr----- e você digitar chmod o=u, as permissões de
acesso dos outros usuários (o) serão idênticas ao do dono (u). Então a nova
permissão de acesso do arquivo teste.txt
será
r-xr--r-x
Exemplos de permissões de acesso:
teste.txt
para os
outros usuários (usuários que não são donos e não pertencem ao grupo do arquivo
teste.txt
).
teste.txt
para o
dono e outros usuários do arquivo.
teste.txt
para o
dono, grupo e outros usuários.
teste.txt
.
Muda o grupo de um arquivo/diretório.
chgrp [opções] [grupo] [arquivo/diretório]
Onde:
Muda dono de um arquivo/diretório. Opcionalmente pode também ser usado para mudar o grupo.
chown [opções] [dono.grupo] [diretório/arquivo]
onde:
O dono.grupo pode ser especificado usando o nome de grupo ou o código numérico correspondente ao grupo (GID).
Você deve ter permissões de gravação no diretório/arquivo para alterar seu dono/grupo.
teste.txt
para joao.
teste.txt
para joao e seu grupo para
users.
Ao invés de utilizar os modos de permissão +r, -r, etc, pode ser usado o modo octal para se alterar a permissão de acesso a um arquivo. O modo octal é um conjunto de oito números onde cada número define um tipo de acesso diferente.
É mais flexível gerenciar permissões de acesso usando o modo octal ao invés do comum, pois você especifica diretamente a permissão do dono, grupo, outros ao invés de gerenciar as permissões de cada um separadamente. Abaixo a lista de permissões de acesso octal:
O uso de um deste números define a permissão de acesso do dono, grupo ou outros usuários. Um modo fácil de entender como as permissões de acesso octais funcionam, é através da seguinte tabela:
1 = Executar 2 = Gravar 4 = Ler * Para Dono e Grupo, multiplique as permissões acima por x100 e x10.
e para as permissões de acesso especiais:
1000 = Salva imagem do texto no dispositivo de troca 2000 = Ajusta o bit setgid na execução 4000 = Ajusta o bit setuid na execução
Basta agora fazer o seguinte:
Vamos a prática com alguns exemplos:
"chmod 764 teste"
Os números são interpretados da direita para a esquerda como
permissão de acesso aos outros usuários (4), grupo (6), e
dono (7). O exemplo acima faz os outros usuários (4) terem
acesso somente leitura (r) ao arquivo teste
, o grupo (6)
ter a permissão de leitura e gravação (w), e o dono (7) ter permissão
de leitura, gravação e execução (rwx) ao arquivo teste
.
Outro exemplo:
"chmod 40 teste"
O exemplo acima define a permissão de acesso dos outros usuários (0) como nenhuma, e define a permissão de acesso do grupo (4) como somente leitura (r). Note usei somente dois números e então a permissão de acesso do dono do arquivo não é modificada (leia as permissões de acesso da direita para a esquerda!). Para detalhes veja a lista de permissões de acesso em modo octal no inicio desta seção.
"chmod 752 teste"
O exemplo acima define a permissão de acesso dos outros usuários (2) para somente execução (x), o acesso do grupo (5) como leitura e execução (rx) e o acesso do dono (7) como leitura, gravação e execução (rwx).
"chmod 4752 teste"
O exemplo acima define a permissão de acesso dos outros usuários (2)
para somente execução (x), acesso do grupo (4) como leitura e execução
(rx), o acesso do dono (7) como leitura, gravação e execução (rwx) e
ajusta o bit setgid (4) para o arquivo teste
.
A umask (user mask) são 3 números que definem as permissões iniciais do dono, grupo e outros usuários que o arquivo/diretório receberá quando for criado ou copiado. Digite umask sem parâmetros para retornar o valor de sua umask atual.
A umask tem efeitos diferentes caso o arquivo que estiver sendo criado for binário (um programa executável) ou texto . Veja a tabela a seguir para ver qual é a mais adequada a sua situação:
--------------------------------------------- | | ARQUIVO | DIRETÓRIO | | UMASK |----------------------| | | | Binário | Texto | | |------------------------------|------------| | 0 | r-x | rw- | rwx | | 1 | r-- | rw- | rw- | | 2 | r-x | r-- | r-x | | 3 | r-- | r-- | r-- | | 4 | --x | -w- | -wx | | 5 | --- | -w- | -w- | | 6 | --x | --- | --x | | 7 | --- | --- | --- | ---------------------------------------------
Um arquivo texto criado com o comando umask 012;touch texto.txt receberá as permissões -rw-rw-r--, pois 0 (dono) terá permissões rw-, 1 (grupo), terá permissões rw- e 2 (outros usuários) terão permissões r--. Um arquivo binário copiado com o comando umask 012;cp /bin/ls /tmp/ls receberá as permissões -r-xr--r-x (confira com a tabela acima).
Por este motivo é preciso um pouco de atenção antes de escolher a umask, um valor mal escolhido poderia causar problemas de acesso a arquivos, diretórios ou programas não sendo executados. O valor padrão da umask na maioria das distribuições atuais é 022. A umask padrão no sistema Debian é a 022 .
A umask é de grande utilidade para programas que criam arquivos/diretórios
temporários, desta forma pode-se bloquear o acesso de outros usuários desde a
criação do arquivo, evitando recorrer ao chmod
.
Guia Foca GNU/Linux
Versão 5.20 - Sunday, 03 de November de 2002gleydson@cipsga.org.br