Странное поведение strace и setuid: разрешение отклонено под strace, но не работает нормально

Это связано с этим вопросом .

У меня есть скрипт ( fix-permissions.sh ), который исправляет некоторые права доступа к файлам:

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

И небольшая программа для запуска этой программы, которая установлена:

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

Справочник:

 -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 

Если я это сделаю, все будет хорошо, и разрешения будут правильно исправлены:

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

Но если я использую strace, я получаю:

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

Интересно отметить, что я получаю то же разрешение, что и ошибка с идентичной настройкой (разрешения, c-программа), но другой скрипт, даже если он не использует strace. Это какое-то магическое поведение в мире, которое я раскрываю?

Как мне понять, что происходит?

Система – Ubuntu 10.04.2 LTS, Linux 2.6.32.26-kvm-i386-20101122 # 1 SMP

    Linux игнорирует бит setuid при запуске процесса в рамках strace или подобных программ.

    • Список рассылки Linux-Kernel, Re: 2.4.16 + strace 4.4 + программы setuid :

      От: Manfred Spraul
      Дата: Чт Дек 06 2001 – 12:25:53 EST

      Если вы хотите спрятать setuid вещи и иметь бит setuid, вы должны запустить strace как root с опцией -u.

      Нет, даже это невозможно. Setuid теперь всегда игнорируется, если процесс ptraced, даже если root является ptracing – это исправление для последнего использования ptrace root (2.4.1x).

    Что, вероятно, говорит о:

    • Linux Kernel 2.2.x – 2.4.x ptrace / kmod Локальная корневая эксплойт на Exploit-DB

      ( CVE-2003-0127 , OSVDB-4565 )

    • SANS: Часто задаваемые вопросы о вредоносном ПО: как работает эксплойт Ptrace в Linux?

    Давайте будем гением компьютера.