Escolar Documentos
Profissional Documentos
Cultura Documentos
Permissão de Arquivos Linux
Permissão de Arquivos Linux
d => diretório
b => arquivo de bloco
c => arquivo especial de caractere
p => canal
s => socket
- => arquivo normal
Muitas vezes a pessoa não sabe o que está fazendo quando dá uma
permissão 777 ou 455 para um arquivo. Vou explicar mais a fundo o
funcionamento do chmod.
Para mostrar como essa combinação é feita, vamos supor que você deseje
adicionar permissão de gravação no arquivo teste.old para um usuário.
Então o comando a ser digitado será:
chmod u+w teste.old
O ?u? indica que a permissão será dada a um usuário, o sinal de adição (+)
indica que está sendo adicionada a permissão e ?w? indica que a
permissão que está sendo dada é de gravação.
Caso você queira dar permissões de leitura e execução ao seu grupo, o
comando será:
chmod g+rw teste.old
Status
Estar letras que aparecem junto com as permissoes (chmod u=rwx), são
chamadas de status. Abaixo segue algumas dicas interessantes a respeito
dos tipos de status. Para maiores informaçoes, você pode acessar a
manpage stat.
é o mesmo que
chown fulano.fulano -R /home/fulano
chmod 740 -R /home/fulano
chgrp
Muda o grupo de um arquivo/diretório.
chgrp [opções] [grupo] [arquivo/diretório]
Onde:
grupo
Novo grupo do arquivo/diretório.
arquivo/diretório
Arquivo/diretório que terá o grupo alterado.
opções
-c, --changes
Somente mostra os arquivos/grupos que forem alterados.
-f, --silent
Não mostra mensagens de erro para arquivos/diretórios que não puderam
ser alterados.
-v, --verbose
Mostra todas as mensagens e arquivos sendo modificados.
-R, --recursive
Altera os grupos de arquivos/sub-diretórios do diretório atual.
chown
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:
dono.grupo
Nome do dono.grupo que será atribuído ao diretório/arquivo. O grupo é
opcional.
diretório/arquivo
Diretório/arquivo que o dono.grupo será modificado.
opções
-v, --verbose
Mostra os arquivos enquanto são alterados.
-f, --supress
Não mostra mensagens de erro durante a execução do programa.
-c, --changes
Mostra somente arquivos que forem alterados.
-R, --recursive
Altera dono e grupo de arquivos no diretório atual e sub-diretórios.
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.
chown joao teste.txt - Muda o dono do arquivo teste.txt para joao.
chown joao.users teste.txt - Muda o dono do arquivo teste.txt para joao e
seu grupo para users.
chown -R joao.users * - Muda o dono/grupo dos arquivos do diretório atual e
sub-diretórios para joao/users (desde que você tenha permissões de
gravação no diretórios e sub-diretórios).
UMASK
[usuario@localhost]# umask
002
Se você quiser alterar este valor você deve usar o comando umask com o
valor da máscara como argumento:
[usuario@localhost]# umask
222
Para descobrir como o comando umask funciona você deve observar os bits
da máscara, e não somente o número octal.
Você deve oberservar que o bit 0 liga uma permissão e que o bit 1 desliga
uma permissão. Mas você deve ter notado que o bit "x" foi desligado,
mesmo tendo a permissão 0. Isso é uma proteção do Linux, que não deixa
criar nenhum arquivo com a permissão de executável. Se você quiser criar
um arquivo executável deverá fazê-lo através do comando chmod. Isso é
uma proteção muito boa, pois evita que vírus ataquem o sistema.
Para descobrir como o comando umask funciona você deve observar os bits
da máscara, e não somente o número octal.
A umask tem efeitos diferentes caso o arquivo que estiver sendo criado for
binário (um programa executável) ou texto (Arquivo texto e binário, Seção
2.2.3) . 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 | --- | --- | --- |
---------------------------------------------
UID e GID
Permissoes Especiais
SUID
Se este bit estiver ligado em um arquivo executável, isso indica que que ele
vai rodar com as permissões do seu dono (o proprietário do arquivo) e não
com as permissões do usuário que o executou.
SGUID
Faz o mesmo que o SUID, mas agora o arquivo executado vai rodar com as
permissões do grupo do arquivo. Se aplicado a um diretório, força os
arquivos/diretórios criados dentro dele a ter o mesmo grupo do diretório pai,
ao invés do grupo primário do usuário que o criou.
Agora, para ativar o bit SGID, utilizamos o chmod na forma octal ou literal:
# chmod 2755 /sbin/shutdown
Ou
# chmod g+s /sbin/shutdown
No formato octal, veja que o número 2 corresponde ao bit SGID, enquanto
os outros 3 números correspondem às permissões normais do arquivo. Já
no formato literal, utilizamos g+s para ativar (+) a permissão especial de
execução (s) para o grupo (g).
STICKY
Se este bit for ativado, faz com que arquivos criados em um determinado
diretório só possam ser apagados por quem o criou (dono) ou pelo super-
usuário do sistema. Um exemplo de uso do STICKY é o diretório /tmp.
Para ligar o bit STICKY num diretório, utilizamos o chmod no formato octal
ou literal. Como exemplo, vamos ligar o bit STICKY no diretório
documentos/.
$ chmod 1755 documentos
Ou
$ chmod o+t documentos
No formato octal, o número 1 corresponde ao bit STICKY, enquanto os
outros 3 dígitos correspondem às permissões simples do diretório. No
formato literal, utilizamos o+t, para ativar (+) a restrição da exclusão de
arquivos (t) para os outros usuários (o).
Observe agora as novas permissões do diretório tmp/:
$ ls -ld documentos
drwxr-xr-t 2 renato 160 2005-03-11 10:43 teste
Observe que o bit "x" das permissões dos outros usuários foi substituído por
um "t", indicando que o bit STICKY está ligado.
Agora, basta dar permissão de escrita para os outros usuários, para que
eles possam criar arquivos dentro desse diretório:
$ chmod o+w tmp