No inicio deste capítulo, quando você tentou mudar um de diretório para o diretório /root, logado como usuário comum, você recebeu a seguinte mensagem:
cd /root bash: /root: Permission denied |
Aquela era uma demonstração de segurança do Linux. Tanto o Linux, como o UNIX, é um sistema multi-usuário, e as permissões de arquivo tem a função de proteger o sistema contra alguma alteração maliciosa.
O caminho para acessar um arquivo quando sua permissão é negada é o comando su com ele você estará temporiamente logado como super usuário (root), como foi explicado anteriormente. Isto ocorre pois quem souber a senha do root terá acesso completo.
Mas logar como super usuário nem sempre é conveniente ou recomendado, sendo que uma alteração equivocada em um arquivo do sistema pode provocar sérios danos ao sistema.
Todos os arquivos e diretórios tem permissão especial para a pessoa que o criou. Anteriormente você criou o arquivo dia.txt (veja Utilizando o Redirecionador na Seção 12.9.1 ) em seu diretório home, assim o diretório dia.txt lhe pertence.
Isso significa que você pode definir qual o tipo de permissão dos outros usuários sobre aquele arquivo, essa permissão pode ser referente aos seguintes ítens; ler, escrever, ou (se for uma aplicação em vez de um arquivo de texto) executá-lo.
A leitura, a escrita e a execução são os três ajustes principais nas permissões. Desde que os usuários estiverem organizados em grupo, você pode também especificar se determinados grupos podem ler, escrever ou executar um arquivo.
Faça uma análise do arquivo dia.txt utilizando o comando ls -l (veja Figura 12-11).
Há muitos detalhes fornecidos. Você pode ver quem pode ler (r), escrever (w) e executar (x) o arquivo, quem criou o arquivo (root), e a que grupo o proprietário pertence (root).

Figura
12-11. Permissões para dia.txt
A outra informação à
direita do grupo inclui o tamanho do arquivo, a data e a hora da
criação do arquivo, e o nome do arquivo.
A primeira coluna mostra permissões atuais; possui dez campos. O primeiro campo representa o tipo de arquivo. Os nove campos restantes são três combinações de permissões para três categorias diferentes de usuários.
Exemplo:
- rw-rw-r -- |
A primeira combinação refere-se ao proprietário do arquivo, a segunda refere-se ao grupo que o proprietário do arquivo pertence, e o último refere-se aos outros usuários do sistema.
- (r w -) (r w -) (r - - ) 1 root root | | | | tipo Proprietário grupo outros |
O primeiro campo, que especifica o tipo do arquivo, pode mostrar uma das seguintes definições:
d - diretório
- (traço) - um arquivo normal
l - um link simbólico a um outro programa ou arquivo em outro local no sistema
Além do primeiro campo, em cada uma das três seguintes combinações, você verá um das definições:
r - o arquivo pode ser lido
w - o arquivo pode ser escrito
x - o arquivo pode ser executado (caso seja um programa)
Quando você vê um traço em uma das combinações, proprietário, no grupo, ou em outros, significa que a permissão não foi concedida. Olhe outra vez na primeira coluna de dia.txt e identifique suas permissões.
ls -l dia.txt -rw-r--r-- 1 root root 146 Mai 11 15:04 dia.txt |
O proprietário do arquivo (neste caso, root) tem a permissão de ler e escrever o arquivo. O grupo, root, tem a permissão de ler e escrever o arquivo dia.txt, também, os outros tem permissão apenas para ler o arquivo, não podendo escrever. Este arquivo não é um programa, sendo assim nem o proprietário nem o seu grupo nem os outros usuários tem permissão para executá-la.
Use o comando chmod para alterar as permissões. Este exemplo mostra como mudar as permissões do arquivo dia.txt com o comando chmod.
O aquivo original está como o exemplo a seguir, com suas permissões iniciais :
ls -l dia.txt -rw-r--r-- 1 root root 146 Mai 11 15:04 dia.txt |
Se você for o proprietário do arquivo ou estiver logado como usuário root, você pode mudar todas as permissões para o proprietário, grupo, e outros.
|
|
Cuidado |
|---|---|
|
|
Lembre-se que as permissões de arquivos são uma característica de segurança. Sempre que você permite que um usuário; leia, escreva e execute arquivos, você está aumentando o risco dos arquivos que poderão ser alterado ou apagados dependendo do tipo de permissão. Em geral, você deve somente conceder a permissão de leitura e escrita àqueles que realmente necessitam. |
No seguinte exemplo, você irá conceder permissão de escrita a todos, assim todos poderão ler o arquivo, escrever notas nele, e salvá-lo. Isso significa que você terá que mudar a combinação de permissões de "outros", sendo que o proprietário e o seu grupo já possuem esta permissão.
Faça uma análise do arquivo. No prompt do shell, digite:
ls - l dia.txt |
Este comando indicara as seguintes informações do arquivo:
-rw-r--r-- 1 root root 146 Mai 11 15:04 dia.txt |
Agora, digite o seguinte comando para alterar a permissão:
chmod o+w dia.txt |
O comando o+w diz ao sistema que você quer alterar a permissão de “outros” para permitir que também tenham permissão de escrita. Para verificar os resultados, liste os detalhes do arquivo outra vez. Agora, verifique a modificação nas combinações de permissões:
-rw-r--rw- 1 root root 146 Mai 11 15:04 dia.txt |
Agora, todos podem ler e escrever o arquivo.
Para remover a permissão de ler e escrever do grupo e dos outros usuários sobre o arquivo dia.txt, utilize da seguinte forma o comando chmod.
chmod go-rw dia.txt |
Digitando go-rw, você está dizendo ao sistema para remover as permissões de ler e escrever do grupo e dos outros usuários sobre arquivo dia.txt.
O resultado será como este:
-rw------- 1 root root 146 Mai 11 15:04 dia.txt |
Pense nesses ajustes como um atalho para modificar as permissões com chmod, pois tudo o que você realmente tem que fazer é lembrar alguns símbolos e opções que o comando chmod utiliza.
A seguir há uma lista de atalhos que podem ser utilizados na alteração de permissões:
Para testar suas habilidades com permissões? Remova todas as permissões de dia.txt.
chmod a-rwx dia.txt |
Agora, veja se você tem permissão para ler o arquivo com o comando cat dia.txt, deverá retornar a seguinte mensagem:
cat: dia.txt: Permissão negada |
Ao remover todas as permissões, nem mesmo o proprietário poderá acessa-lo Mas é permitido ao proprietário realizar novas modificações nas permissões, sendo assim com o comando abaixo o proprietário do arquivo poderá novamente visualizar o arquivo:
chmod u+rw dia.txt |
Utilize o comando cat dia.txt para verificar se realmente você tem permissão para visualizar o arquivo. A seguir a alguns comando utilizados na alteração de permissões de um arquivo com o comando chmod.
g+w - Concede permissão de escrita aos usuários do mesmo grupo do proprietário do arquivo.
o-rwx - remove todas as permissões dos outros usuários do sistema que não fazem parte do mesmo grupo do usuário proprietário.
u+x - permite que o proprietário do arquivo execute o arquivo.
a+rw - Concede permissão de leitura e escrita a todos.
ug+r - permite que o proprietário e o grupo leiam o arquivo.
g=rx - permite que somente o grupo leia e execute (sem permissão de escrita)
Adicionando a opção -R, você poderá mudar as permissões de uma árvore inteira de diretórios.
Quando você adiciona ou remove a permissão de executar para um diretório, você está permitindo (ou negando) a permissão de acesso a este diretório.
Se você não permitir que outros tenham permissão para executar o diretório documentos, não importará se tem permissão de leitura ou escrita. Ninguém poderá acessar o diretório a menos que saibam o nome exato do arquivo dentro dele.
Para remover a permissão de execução sobre o diretório documentos, digite:
chmod a-x documentos |
Agora tente acessar o diretório tigger e veja o que acontece.
cd documentos bash: documentos: Permissão negada |
Em seguida, iremos permitir acesso comente ao proprietário e a seu grupo:
chmod ug+x documentos |
Agora, se você verificar as permissões com o comando ls -l você verá que somente os outros usuários estão sem permissão de execução, tendo assim o seu acesso ao diretório negado.
Está é uma outra forma de alterar as permissões.
Volte as permissões do arquivo dia.txt para as permissões originais:
-rw-rw-r-- 1 root root 146 Mai 11 15:04 dia.txt |
Cada tipo de permissão pode ser representado por um valor numérico:
r = 4
w = 2
x = 1
- = 0
Para utiliza-los para definir as permissões soma-se os valores das permissões que deseja conceder e coloca-se o total para definir a permissão que será dada. Exemplo, se você deseja permissão de leitura e escrita, você teria o valor 6; 4 (leitura)+ 2 (escrita) = 6.
Para dia.txt, estão a seguir os valores numéricos de suas permissões:
- (rw -) (rw -) (r--)
| | |
4+2+0 4+2+0 4+0+0
|
O total para o proprietário é seis, o total para o grupo é seis, e o total para os outros usuários é quatro. A permissão desse arquivo é 664.
Se você quiser alterar as permissões do arquivo dia.txt para que o grupo do proprietário só tenha permissão, retire a permissão de escrita (2), ou seja se a permissão para o grupo era de valor 6, retirando o acesso a escrita (2), o valor da permissão do grupo será 4.
Os valores de permissões,ficariam então seis, quatro, e quatro (644).
Para executar esta mudança, digite:
chmod 644 dia.txt |
Verifique agora as mudanças listando o arquivo:
ls -l dia.txt |
As permissões do arquivo ficaram assim:
-rw-r--r-- 1 root root 146 Mai 11 15:04 dia.txt |
Agora, nem o grupo nem os outros usuários têm permissão de escrita sobre o arquivo dia.txt. Para conceder novamente ao grupo permissão de escrita some ao valor da permissão dele o valor referente a escrita(2), ficando o comando assim:
chmod 664 dia.txt |
|
|
Aviso |
|---|---|
|
|
Configurar as permissões em 666 concederá a todos permissão de escrita e leitura a um arquivo ou diretório. Configurar permissões em 777 concederá a todos permissão de escrita leitura e execução sobre um arquivo ou diretório. Estas permissões permitem a qualquer pessoa a alterar os arquivos, isso não é aconselhável, pois uma alteração em um arquivo de sistema por exemplo poderá causar sérios danos. |
A lista a seguir contém algumas configurações comuns de valores numéricos e suas conseqüências:
- rw (600) - Somente o proprietário te permissão de leitura e escrita.
- rw-r--r-- (644) - O proprietário tem permissão de leitura e escrita e o seu grupo e os demais usuários tem apenas permissão de leitura.
- rwx- - - - - - (700) - Somente o proprietário tem permissão de leitura, escrita e execução.
- rwxr-xr-x (755) - O proprietário tem permissão de leitura, escrita e execução; o grupo e os outros usuários somente tem permissão de leitura e execução.
- rwx--x--x (711) - O proprietário tem permissão de leitura, escrita e execução; o grupo e os outros usuários tem permissão apenas para executar.
- rw-rw-rw- (666) - Todos tem permissão de leitura e escrita sobre arquivo.
- rwxrwxrwx (777) - Todos tem permissão de leitura, escrita e execução.
Estão aqui algumas combinações de permissões para diretórios:
drwx------ (700) - Somente o usuário proprietário te permissão de leitura, escrita e execução sobre o diretório.
drwxr-xr-x (755) - Todos tem permissão de leitura, escrita e execução sobre o diretório.