Re: [gitec] Permissões especiais de shell

ishida ishida at camararibeiraopreto.sp.gov.br
Thu Aug 31 10:19:17 BRT 2006


Prezado Cristiano!!

Ja imrpimi e sera incorporado ans auals do Centro de inclusao digital@!!
PArabámns!

----- Original Message ----- 
From: ""Cristiano (CMTimóteo - MG)"" <cpd at camaradetimoteo.mg.gov.br>
To: "Grupo de Trabalho Interlegis de Tecnologia" 
<gitec at listas.interlegis.gov.br>
Sent: Wednesday, August 30, 2006 2:57 PM
Subject: [gitec] Permissões especiais de shell


> Bom gente, boa tarde!!!
>
> Outro dia enviei a lista um email com uma duvida sobre permissões 
> especiais. A questão era se alguem sabia que permissão deveria definir a 
> um arquivo para que ele durante a execução tivesse poderes de outro 
> usuário (root, por exemplo) e não o que estivesse executando. Bem, achei a 
> solução e vou compartilhar com os amigos (para quem quiser ler mais 
> detalhadamente esta no livro Programação Shell Script - Julio Cezar 
> Neves).
>
> Seguindo meu exemplo, as pastas de usuário (aqui na CMTimóteo) tem 
> permissão de leitura/escrita/e execução apenas para o dono da pasta. E se 
> alguém quiser copiar um arquivo diretamente para este usuário? De forma 
> normal não seria possível, já que a pasta teria a seguinte permissão:
>
> $ ls -ld /home/cristiano/
> drwx------  52 cristiano cpd 4096 2006-08-30 14:38 /home/cristiano/
>
> Bem, eu criei uma rotina que se chama transfere e ao final executei
>
> $ chmod 755 transfere
> $ ls -l transfere
> -rwxr-xr-x  1 root root 10458 2006-08-30 17:34 transfere
>
> Só que (apesar da rotina ser executável por qualquer usuário) durante a 
> execução da rotina recebo como erro não ter acesso a pasta do usuário que 
> desejo enviar um arquivo. Então segue como contornar o problema.
>
> $ chmod 4744 transfere # Observe que o chmod tem 4 algarismos para 
> determinar permissão
> $ ls -l transfere
> -rwsr-xr-x  1 root root 10458 2006-08-30 17:34 transfere  #agora observa a 
> permissão do arquivo.
>
> Ao executar esta rotina (e somente durante sua execução) o shell terá os 
> poderes de dono alterados para o root (já que o dono do arquivo é o root) 
> podendo então transferir um arquivo da minha pasta para a pasta de 
> qualquer usuário.
>
> Vale lembrar que o número adicional no chmod segue as seguintes regras:
>
> 1      Stick bit
> 2      Group-id bit
> 4      User-id bit
>
> Quando um programa esta com o *Stick bit* ligado, ele não sai da memória, 
> nem faz paginação, devendo ser usado com parcimônia e somente em rotinas 
> frequentemente usadas por muitos usuário simultaneamente.
>
> O *Group-id bit* comporta-se da mesma forma do *User-id bit*, exceto que o 
> usuário, durante a execução de um programa com o bit em questão ligado, 
> passa ter todos os direitos do grupo ao qual pertence este arquivo de 
> programa.
>
> E, obviamente, podemos ligar mais de um destes bits simultaneamente 
> obedecendo exatamente a mesma regra para o chmod normal, sendo:
>
> $ chmod 6755 transfere  # composição do primeiro bit = 4 (User-id bit) + 2 
> (Group-id bit)
> $ ls -l transfere
> -rwsr-sr-x  1 root root 10458 2006-08-30 17:34 /usr/bin/transfere*
>
> Por fim entenda que não são em todas as distros que aceitam tal recurso em 
> shell's scripts. Para as distros que não aceitam tal recurso é necessário 
> fazer um programa em C que chamará a rotina que deseja-se executar 
> passando-lhe os parametros devidos, e aplicar o chmod no programa em C
>
> -- 
> []'s
>
> Cristiano Lage Campos
> Analista - C.P.D.
> CMTimóteo - MG
> (31)3847-4093
> (31)9304-0665
>
> Mensageiro: cristiano Msn: cristiano_lc at msn.com
> JABBER ID: clcampos at jabber.org
>
> -- 
> Comunidade GITEC
> http://colab.interlegis.gov.br
> http://genesis.interlegis.gov.br
>
> Para pesquisar o histórico da lista visite:
> http://genesis.interlegis.gov.br/tecnologia/lista
>
> Para administrar sua conta visite:
> http://listas.interlegis.gov.br/mailman/listinfo/gitec
>
>
> -- 
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.1.405 / Virus Database: 268.11.7/433 - Release Date: 30/8/2006
>
> 



Mais detalhes sobre a lista de discussão Gitec