Dúvida SUID/GUID [RESOLVIDO]

1. Dúvida SUID/GUID [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 17/03/2011 - 15:17h

Olá pessoal!

Estava estudando permissões no Linux e vi o conceito de SUID e GUID.
Pelo que entendi, o SUID permite a execução de um programa por qualquer usuário com as permissões do dono do programa. O Mesmo ocorre com o GUID, só que as permissões usadas são as do grupo do arquivo.

Então, fiz um teste:
Criei um script como root com a seguinte permissão: chmod 0700 meu_script.sh
Logo após, ativei o SUID do script: chmod u+s meu_script.sh

Logo após, desloguei do root e voltei a ser usuário normal.
Tentei então executar o script, mas mesmo assim o sistema acusou falta de permissão.

Talvez eu tenha entendido mal o conceito de SUID/GUID.

Alguém poderia explicar exatamente a função deles, com um exemplo prático se possível?
Outra dúvida é: se tenho o SUID e GUID ativos ao mesmo tempo, qual o resultado disso?

Grato pela atenção de todos!


  


2. Re: Dúvida SUID/GUID [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 17/03/2011 - 22:36h

Talvez esteja dando permissão negada por causa da pasta que o script se encontra (por exemplo no /root, onde só o root tem acesso).
Tenta colocar ele numa pasta que seu usuário possa usar e testa novamente.
Sobre o SUID e GUID não sei te explicar ainda, mas vou dar uma pesquisada, qualquer coisa te retorno.


3. Re: Dúvida SUID/GUID [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 17/03/2011 - 22:40h

Olá!

Obrigado pela resposta!

Acredito que esse não seja o problema, uma vez que o script foi criado pelo usuário root mas salvo no home do meu usuário regular, onde tenho permissão total por assim dizer.

Aguardo novas teorias :)


4. Re: Dúvida SUID/GUID [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 17/03/2011 - 23:20h

Tenho uma nova hipótese. Seu arquivo pode estar setado como SUID mas não tem permissão de execução. Testei aqui no meu linux e vi que quando o arquivo está setado somente com SUID sem permissão de execução ele fica com o S maiúsculo, e dá erro de acesso negado quando se tenta executá-lo. exemplo
http://www.dicas-l.com.br/arquivo/roteamento_avancado_linux_utilizando_iproute_e_iptables_load_balan...
-rwSr--r-- 1 n4t4n n4t4n 523 Mar 17 23:11 passwd
já quando está com permissão de execução o s fica minúsculo e executa normalmente
-rwsr--r-- 1 n4t4n n4t4n 523 Mar 17 23:11 passwd

Também li que o SUID é aplicado a arquivos, enquando o SGID é aplicado a diretórios.

http://www.guiadopc.com.br/artigos/365/prompt-do-linux-definindo-permissoes-de-arquivo.html


5. Re: Dúvida SUID/GUID [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 17/03/2011 - 23:46h

Ola novamente!

Tentei essa teoria, mas não fez muito sentido.

Pense comigo: Se o SUID é setado para dar permissao do dono para os outros usuário, qual a vantagem de tê-lo se preciso dar permissão de execucão para os outros?

Então, eu pensei em outra teria: vamos supor que o root eh o dono do script e deu a todos os usuarios permissao de execucao. Ok. Agora vamos supor que nesse script aja um comando para escrever no /bin/, que é permitido escrita apenas para o root. Todos poderao executar o plugin, mas soh o root conseguira escrever no /bin/.

Fiz esse teste e, mesmo com o SUID ligado, meu usuário normal não teve permissão de escrever no /bin/.

É realmente estranho! Não estou vendo a utilidade desse bit nas permissões.

Bom, vou continuar pesquisando e, caso encontre a resposta, posto aqui.

Obrigado!


6. Re: Dúvida SUID/GUID [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 17/03/2011 - 23:50h

Não é permissão de execução para os outros, é para o usuário mesmo. Depois de criar seu script faça
chmod u+x script.sh
chmod u+s script.sh

é estranho, mas testei aqui e verifiquei que mesmo setado com SUID ele não executa se não tiver execução.

Testa aí.


7. Re: Dúvida SUID/GUID [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 17/03/2011 - 23:54h

também tinha pensado nisso, no que o seu script é capaz de fazer, mas não tenho certeza a respeito disso.
Qual distro vc está usando em? pergunto isso porque no openSUSE tem umas proteções de segurança que impedem alguns acessos a arquivos do sistema. não sei se é o seu caso.


8. Re: Dúvida SUID/GUID [RESOLVIDO]

Mauricio Souza Klein
Hebang

(usa Arch Linux)

Enviado em 17/03/2011 - 23:58h

Encontrei a resposta! Segue o trecho:

"When a binary executable file has been given the setuid attribute, normal users on the system who have permission to execute this file gain the privileges of the user who owns the file (commonly root) within the created process. When root privileges have been gained within the process, the application can then perform tasks on the system that regular users normally would be restricted from doing. The invoking user will be prohibited by the system from altering the new process in any way, such as by using ptrace, LD_LIBRARY_PATH or sending signals to it (signals from the terminal will still be accepted, however). Due to the increased likelihood of security flaws[1], many operating systems ignore the setuid attribute when applied to executable shell scripts."
Fonte: http://en.wikipedia.org/wiki/Setuid

Alguns sistemas não aceitam o SUID em shell scripts. Fiz o mesmo teste de escrever no /bin/, porém agora usando um executável em C, e funcionou: Se o SUID estava desabilitado, dava erro de permissão. Ativando o SUID, consegui escrever sem problemas, mesmo como usuário regular.

Bom, espero que a minha dúvida tenha ajudado aos outros, e obrigado N4t4n pela ajuda em buscar a resposta.

Abraco a todos!


9. Re: Dúvida SUID/GUID [RESOLVIDO]

Natanael Henrique
n4t4n

(usa Arch Linux)

Enviado em 18/03/2011 - 00:02h

valeu mklein, mais uma que aprendi.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts