9.19.2012

Permissões em Linux


Num sistema Linux existem 3 níveis de utilizadores do sistema:

1. Utilizador (User) representado pela letra u refere-se ao dono do ficheiro .
2. Grupo ( Group) representado pela letra g, refere-se ao grupo de utilizadores .
3. Outros (Other) representado pela letra  o, refere-se a todos os outros utilizadores.

Para além disso existe outro nível de representação que engloba todos os utilizadores, representado pela letra a (ALL)
Refira-se igualmente os níveis de permissões:

1. Leitura (Read), representado pela letra r
2. Escrita (Write), representado pela letra w
3. Execução ( Execute), representado pela letra x

Os operadores ariteméticos “+”, “-“ e “=” permitem efetuar as operações de atribuição das permissões aos ficheiros.  O “+” e p “-“ atribuem e removem atribuições e o “=” define mandatoriamente as permissões removendo as existentes.

A mera listagem dos ficheiros com o comando ls não nos permite verificar as permissões. Para tal devemos colocar o switch –l , executando o comando ls –s

[marco@pweb _Temp]$ ls –l
total 0
-rw-rw-r--. 1 marco marco 0 Sep  9 01:57 exp1.txt

Pelo output do comando, verificamos que o Utilizador ou dono do ficheiro possui permissões de leitura e escrita, assim como os membros do grupo. Os restantes utilizadores apenas possuem permissões de leitura do ficheiro.

Suponhamos que temos determinado ficheiro que pretendemos executar, por exemplo, um scipt para realizar determinada tarefa. O ficheiro apenas tem permissões por defeito

[marco@pweb _Temp]$ ls –l
total 0
-rw-rw-r--. 1 marco marco 0 Sep  9 02:05 programa
[marco@pweb _Temp]$ chmod u+x programa
[marco@pweb _Temp]$ ls -l
total 0
-rwxrw-r--. 1 marco marco 0 Sep  9 02:05 programa

Neste momento, apenas o dono do ficheiro poderá executar o ficheiro. Na maioria das distribuições os ficheiros executáveis apresentam uma cor diferenciada dos restantes.
Se quisermos remover todas as permissões a todos os restantes utilizadores bastaria

[marco@pweb _Temp]$ chmod go-rwx programa
[marco@pweb _Temp]$ ls -l
total 0
-rwx------. 1 marco marco 0 Sep  9 02:05 programa

Para além deste método podemos mudar as permissões em modo octal , sendo este sistema mais direto e simples quando compreendido e dominado.
Para tal, estudem-se as seguintes tabelas:

User 
Group
Other
r
w
x
r
w
x
r
w
x
4
2
1
4
2
1
4
2
1

0
---
Sem permissões
1
--x
Execução
2
-w-
Somente escrita
3
-wx
Escrita e execução
4
r--
Leitura
5
r-x
Leitura e execução
6
rw-
Leitura e escrita
7
rwx
Leitura, escrita e execução

Suponhamos que pretendemos que o ficheiro tenha todas as permissões para o seu dono e nenhumas para o grupo e para os outros utilizadores. 

[marco@pweb _Temp]$ chmod 700 programa
[marco@pweb _Temp]$ ls -l
total 0
-rwx------. 1 marco marco 0 Sep  9 02:05 programa

Colocamos 700 (4+2+1, 0, 0), contemplando assim as operações de execução, leitura e escrita em todos os utilizadores. 
Vejamos agora qual o comando a executar para que o dono do ficheiro tenha todas as permissões, o grupo apenas possa ler e executar, e todos os restantes utilizadores apenas executar. 

[marco@pweb _Temp]$ chmod 751 programa
[marco@pweb _Temp]$ ls -l
total 0
-rwxr-x--x. 1 marco marco 0 Sep  9 02:05 programa