Permissões de arquivos

Uma propriedade bastante importante do sistema de arquivos de sistemas operacionais próprios para servidores como o Linux é a existência dos conceitos de permissões de acesso, proprietário e grupos de proprietários para cada arquivo ou diretório existente. Vejamos o exemplo abaixo:

-rw-rw-r-- 1 aluno users 210670 2011-02-28 08:30 livro.pdf
drwxr-xr-x 2 aluno users   4096 2011-03-23 11:08 imagens

As primeiras colunas são formadas por um conjunto de letras ou traços indicando o tipo de arquivo e as permissões de acesso ao mesmo. A primeira letra indica o tipo de cada arquivo, podendo ser (entre outros):

Cada três conjuntos de letras (ou traços) seguintes indicam as permissões de leitura, escrita e execução (rwx) para o proprietário, grupo e outros usuários, respectivamente. A ausência de alguma permissão é indicada por um -. No exemplo anterior, o arquivo livro.pdf pode ser lido e escrito (rw-) pelo proprietário e grupo, e pode ser apenas lido (r–) por outros usuários. O proprietário e o grupo do arquivo são indicados na terceira e quarta coluna. No exemplo dado, o proprietário é aluno e o grupo é users.

Alterando permissões de arquivos

Para alterar as permissões de um ou mais arquivos usamos o comando chmod.

Sintaxe : chmod <permissões> <lista-de-arquivos>

As permissões podem ser definidas de dois modos, no primeiro, chamado de simbólico deve-se especificar, nesta ordem:

Conjunto de usuários
u : usuário
g : grupo
o : outros
a : todos
Tipo de alteração
+ : adiciona permissões
- : retira permissões
= : define permissões
Permissões
r : leitura
w : escrita
x : execução

Exemplos:

aluno@debian:~$ ls -l livro.pdf
-rw-r--r-- 1 aluno users 645467 2011-03-27 15:57 livro.pdf
aluno@debian:~$
aluno@debian:~$ chmod g+w livro.pdf
aluno@debian:~$
aluno@debian:~$ ls -l livro.pdf
-rw-rw-r-- 1 aluno users 645467 2011-03-27 15:57 livro.pdf
aluno@debian:~$ ls -l calculadora.c
-rw-rw-r-- 1 aluno users 2081 2011-03-27 15:50 calculadora.c
aluno@debian:~$
aluno@debian:~$ chmod g-rw,o-rw calculadora.c
aluno@debian:~$
aluno@debian:~$ ls -l calculadora.c
-rw------- 1 aluno users 2081 2011-03-27 15:50 calculadora.c
aluno@debian:~$ chmod u=rw,g=r,o= teste.txt
aluno@debian:~$
aluno@debian:~$ ls -l teste.txt
-rw-r----- 1 aluno users 281 2011-03-25 15:50 teste.txt
aluno@debian:~$ chmod a=rw memorando.doc
aluno@debian:~$
aluno@debian:~$ ls -l memorando.doc
-rw-rw-rw- 1 aluno users 20081 2011-02-25 12:50 memorando.doc
aluno@debian:~$ chmod a=,u=rx script.sh
aluno@debian:~$
aluno@debian:~$ ls -l script.sh
-r-x------ 1 aluno users 5812 2010-07-25 22:56 script.sh
aluno@debian:~$ chmod u+x testedir
aluno@debian:~$
aluno@debian:~$ ls -ld testedir
drwxr-xr-x 2 aluno users 4096 2011-03-27 16:08 testedir
aluno@debian:~$ chmod a=,u+rwx security
aluno@debian:~$
aluno@debian:~$ ls -ld security
drwx------ 2 aluno users 4096 2011-01-14 12:43 security

A outra forma de alterar permissões é chamada de modo octal. Nela as permissões são definidas através de três números que variam de 0 a 7, sendo o primeiro para o dono, o segundo para o grupo e o terceiro para os outros usuários. Cada número octal é formado somando os valores de cada permissão desejada, a saber:

4 : Leitura
2 : Escrita
1 : Execução

Desta forma, teremos

--- = 0
--x = 1
-w- = 2
-wx = 3
r-- = 4
r-x = 5
rw- = 6
rwx = 7

Exemplos:

aluno@debian:~$ chmod 600 nota.txt
aluno@debian:~$
aluno@debian:~$ ls -l nota.txt
-rw------- 2 aluno users 8146 2011-02-14 17:43 nota.txt
aluno@debian:~$ chmod 750 backup.sh
aluno@debian:~$
aluno@debian:~$ ls -l backup.sh
-rwxr-x--- 2 aluno users 1483 2009-07-26 11:13 backup.sh
aluno@debian:~$ chmod 644 monografia.doc
aluno@debian:~$
aluno@debian:~$ ls -l monografia.doc
-rw-r--r-- 2 aluno users 8146 2011-02-01 02:03 monografia.doc

Alterando o proprietário de arquivos

Para alterar o proprietário de um ou mais arquivos usamos o comando chown. Por questões de segurança, apenas administradores podem realizar este tipo de alteração.

Sintaxe : chown [opções] <novo-dono> <lista-de-arquivos>

Opções (principais):

-R : Altera o proprietário dos arquivos e diretórios recursivamente.

Exemplos:

root@debian:~/aula# chown maria teste.c
root@debian:~/aula# chown -R root /tmp

Alterando o grupo de arquivos

Para alterar o grupo de um ou mais arquivo usamos o comando chgrp. Por questões de segurança, apenas administradores podem realizar este tipo de alteração.

Sintaxe : chgrp [opções] <novo-grupo> <lista-de-arquivos>

Opções (principais):

-R : Altera o grupo dos arquivos e diretórios recursivamente.

Exemplos:

root@debian:~/aula# chgrp users teste.c
root@debian:~/aula# chgrp -R root /bin