Strange Strange e comportamento setuid: permissão negada sob strace, mas não funcionando normalmente

1

Isso está relacionado a esta pergunta .

Eu tenho um script ( fix-permissions.sh ) que corrige algumas permissões de arquivo:

#! /bin/bash 
sudo chown -R person:group /path/
sudo chmod -R g+rw /path/

E um pequeno programa c para executar isso, que é setuid ed:

#include "sys/types.h"
#include "unistd.h"
int main(){
    setuid(geteuid());
    return system("/path/fix-permissions.sh");
}

Diretório:

-rwsr-xr-x  1 root  root  7228 Feb 19 17:33 fix-permissions
-rwx--x--x  1 root  root   112 Feb 19 13:38 fix-permissions.sh

Se eu fizer isso, tudo parece bem e as permissões são corrigidas corretamente:

       james $ sudo su someone-else
someone-else $ ./fix-permissions

mas se eu usar strace, recebo:

someone-else $ strace ./fix-permissions
/bin/bash: /path/fix-permissions.sh: Permission denied

É interessante notar que recebo a mesma permissão negada de erro com uma configuração idêntica (permissões, programa c), mas um script diferente, mesmo quando não estou usando strace. Isso é algum tipo de comportamento de magia heurustica no cenário que estou descobrindo?

Como devo descobrir o que está acontecendo?

O sistema é o Ubuntu 10.04.2 LTS, Linux 2.6.32.26-kvm-i386-20101122 # 1 SMP

    
por James 19.02.2011 / 19:44

1 resposta

4

O Linux ignora o bit setuid ao executar um processo em strace ou programas similares.

  • Lista de discussão Linux-Kernel, Re: 2.4.16 + strace 4.4 + setuid programs :

    From: Manfred Spraul
    Date: Thu Dec 06 2001 - 12:25:53 EST

    If you want to strace setuid things and have the setuid bit honored, you have to run strace as root with the -u option.

         

    Não, nem isso é mais possível.   setuid agora é sempre ignorado se um processo for ptraced, mesmo se o root   é ptracing - essa é a correção para a mais recente exploração de root ptrace   (2.4.1x).

que provavelmente está falando:

por 20.02.2011 / 16:01