Em 2/10/2010 09:50, Leonardo Carneiro escreveu:
Salve galera, estou com uma dúvida meio básica. Para mim, sempre foi
meio nebuloso a questão de SUID e SGID, portanto resolvi ler algum
material e fazer alguns testes.
A minha dúvida é: quando eu seto o SGID em um executável, e outro
usuário do mesmo grupo for executar, esse processo vai rodar como se
fosse o usuário original ou só vai ter as permissões do outro usuário?
Criei dois usuários: dilma e serra, e coloquei eles dentro do mesmo
grupo brasil. (ok, esse não foi o nome dos usuários, só to colocando
assim pra enxer o saco).
Com a dilma, criei o seguinte script:
#!/bin/bash
whoami
touch PAC2
exit 0
as permissões deste script são: rwsr-sr-- e o user e group owner são
dilma:brasil
E coloquei setei os bits de execução para o usuário, o grupo, e tb
SUID e SGID. Quando eu executo com o usuário dilma, o whoami mostra
dilma, e o owner e group owner do arquivo PAC2 é dilma:brasil. Quando
executo com o serra, o whoami mostra serra, e os user e group owner
são serra:brasil.
Fiz mais um teste e coloquei o serra em mais um grupo, o psdb, e setei
este grupo como primário, mas mantive o serra dentro do grupo brasil.
agora quando eu executo o script, o arquivo PAC2 mostra serra:psdb, e
não serra:brasil, como eu esperava.
Resumindo, o que SUID e SGID fazem? sendo que o usuário ainda executa
como ele mesmo e os arquivos criados ainda são do grupo principal do
usuário, e não do grupo do arquivo.
Então,
Quando um diretório tem o SGID todos os novos arquivos criados terão
como grupo o grupo do diretório independente do usuário que criar.
Sobre o SUID, ele só funciona com binários não com scripts em bash, pois
você está setando essa permissão para o script bash porém quando você
coloca o hashbang no cabeçalho do arquivo ele vai executar com o
interpretador do bash e utilizar o arquivo como parâmtero, ex:
/bin/bash /opt/meuscript.sh
Ou seja, estária executando o "bash" e não o script. Neste caso, para
funcionar você deveria setar o SUID para o "bash" porém já da pra
imaginar o tamanho do transtorno, assim você comprometeria o sistema
inteiro visto que o bash seria executado com permissões daquele usuário
por todos.
O ideal seria escrever o aplicativo com uma linguagem compilada ou gerar
um binário apartir do script (com uma busca rápida no google apareceu o
"shc compiler", não sei se funciona mas dependendo do caso vale uma olhada).
A[]'s
--
To UNSUBSCRIBE, email to debian-user-portuguese-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/4ca731a0.3000...@yahoo.com.br