Permissões especiais no GNU/Linux

Continuando o post anterior sobre administração de usuários, aqui vamos falar sobre permissão especial.

Uma permissão especial, nada mais é do que um complemento das 3 permissões básicas (rwx); esse tipo de permissão afeta arquivos, arquivos executáveis ou diretórios.

As permissões especiais que temos são: stick bit, sgid bit e suid bit.

Assim como as permissões básicas possuem valores (r=4,w=2,x=1), as permissões especiais também possuem valores:

Stick bit – valor 1
Sgid bit – valor 2
Suid bit – valor 4

Vou falar sobre cada uma dessas permissões, dentro do problema que precisamos resolver. No post anterior, vimos que os usuários criaram os arquivos que herdaram as permissões do usuários tanto para dono quanto para grupo.

Então, precisamos de uma permissão especial para o grupo; no caso a SGID. Essa permissão é utilizada em diretórios; sua mágica é fazer com que tudo que for criado dentro do diretório onde definimos SGID seja do grupo do diretório e não do dono que está criando o arquivo!

Isso quer dizer que, quando definirmos o sgid bit no /mnt/private, trinity e neo vão criar os arquivos com o grupo private, pois o diretório private tem esse grupo.

Vamos adicionar então a permissão sgid no diretório:

# cd /mnt/

# chmod g+s private/

# ls -ld private/
drwxrws— 2 root private 1024 2009-03-29 02:12 private/

Acima, apenas acrescentei a permissão ‘s‘ no grupo; e o sistema trocou o x por s na permissão de grupo. Usei o comando chmod com a forma literal; mas se fosse usar a forma octal, o comando seria esse:

# chmod 2770 private/

# ls -ld private/
drwxrws— 2 root private 1024 2009-03-29 02:12 private/

Esse comando faz exatamente o que o comando ‘chmod g+s‘ faz; a diferença entre eles é que, quando uso a forma literal, preciso apenas acrescentar mais uma permissões às que já existem. Agora, quando ajusto as permissões de forma octal, tenho que falar todas as permissões (a permissão especial e as permissões que já existem).

Bem, vamos ver se funcionou! Vamos entrar no terminal onde a trinity está logada e fazer um teste!

$ cd /mnt/private

$ touch sentinelas.txt

$ ls -l
total 0
-rw-r–r– 1 neo     neo     0 2009-03-29 01:51 matrix.txt
-rw-r–r– 1 trinity trinity 0 2009-03-29 02:13 nmap.txt
-rw-r–r– 1 trinity private 0 2009-03-29 02:41 sentinelas.txt

Percebam a diferença! O primeiro arquivo que a trinity criou, o grupo está como sendo o pessoal dela! Depois da modificação que fizemos, agora o grupo do arquivo está como private!

Fazendo um teste com o usuário neo:

$ cd /mnt/private/

$ ls -l
total 0
-rw-r–r– 1 neo     private 0 2009-03-29 02:43 arquiteto.txt
-rw-r–r– 1 neo     neo     0 2009-03-29 01:51 matrix.txt
-rw-r–r– 1 trinity trinity 0 2009-03-29 02:13 nmap.txt
-rw-r–r– 1 trinity private 0 2009-03-29 02:41 sentinelas.txt

$ touch arquiteto.txt

De acordo com a saída do comando ls que o neo executou acima, agora está tudo correto: os arquivos sentinelas.txt e arquiteto.txt foram criados respeitando os donos e mantendo o grupo como sendo private.

Mas… (sempre tem um mas!) quando começamos a falar sobre adm de usuários, dissemos que o private ia ser um diretório público (para trinity e o neo).

E, quando falamos em diretório público, estamos dizendo que as permissões desse diretório será diferente das permissões que vem por padrão quando criamos um diretório (lembra que tivemos que mudar a permissão do private pra trinity e o neo poderem criar os arquivos?).

A permissão padrão do sistema, é chamada de umask. Quando criamos um diretório ou um arquivo, eles já saem criados com uma permissão padrão. O responsável por essa permissão, é nada mais nada menos do que a umask.

Se analisarmos as permissões dos arquivos que os usuários criaram, eles estão vindo com a permissão padrão… o dono pode ler e escrever, mas o grupo só pode ler!

Isso quer dizer que, mesmo que o usuário faça parte do grupo private, não pode escrever no arquivo, uma vez que os arquivos criados estão com permissão 644! Bem… precisamos corrigir isso!

No próximo post, vou comentar sobre a umask para resolver esse problema da permissão de escrita para grupo! Até la!😀

1 Response to “Permissões especiais no GNU/Linux”


  1. 1 sandro 07/08/2012 às 3:18 PM

    beleza me ajudou muito nume questão do curso que de adm. que faço. valeu!!!


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




Follow Nix on WordPress.com
maio 2009
S T Q Q S S D
« abr   jun »
 123
45678910
11121314151617
18192021222324
25262728293031

Flickr Photos

Fast-flying Falcon

Mais fotos

%d blogueiros gostam disto: