Конфигурация Automake/autoconf для установки как SUID

Есть ли способ настроить двоичный файл для установки как «SUID» с помощью automake/autoconf? Есть ли какая-нибудь магия, которая может заставить make install установить бит suid данной двоичной цели?

ПРИМЕЧАНИЕ. Я запускаю «fakerooted» make install внутри скрипта для создания tar-файла.

Я старался:

# Makefile.am

bin_PROGRAMS = my_bin

#...

install-exec-hook:
    echo    "#### Setting SUID for my_bin. ####"
    ls -l $(DESTDIR)$(bindir)/my_bin
    chmod 4755 $(DESTDIR)$(bindir)/my_bin
    ls -l $(DESTDIR)$(bindir)/my_bin
    echo    "####-------------------------------####"

Но безуспешно.

Во время make install я вижу:

#### Setting SUID for sudo_script. ####
-rwxr-xr-x 1 root root 8704 Mar 28 13:30 /install.pak/usr/bin/my_bin
-rwsr-xr-x 1 root root 8704 Mar 28 13:30 /install.pak/usr/bin/my_bin
####-------------------------------####

Таким образом, можно подумать, что это проблема с fakeroot, но если я перенесу chmod из Makefile.am в свой сценарий упаковки, это сработает. Этого достаточно, чтобы убедить меня, что fakeroot выполняет свою работу.

Спасибо.


person j4x    schedule 28.03.2012    source источник


Ответы (1)


ГААХ!!

Кто-то неосознанно вставил в мой скрипт после $FAKEROOT make install:

$FAKEROOT chmod 755 $PAK_DIR/usr/bin/*

замена всех разрешений, написанных make install.

Удалив эту строку, install-exec-hook работает как положено, а бит SUID сохраняется...

(Куда я положил свой топор?...)

person j4x    schedule 28.03.2012
comment
Твой топор вон там, позади тебя, слева и под сумкой с динамитом! - person Jonathan Leffler; 28.03.2012