Russian Qt Forum

Компиляторы и платформы => Linux => Тема начата: ammaximus от Январь 21, 2014, 16:20



Название: SUID запуск скрипта
Отправлено: ammaximus от Январь 21, 2014, 16:20
Делаю простой скрипт для настройки hosts. Вдруг оказалось, что suid-бит не работает! Никак не соображу что не так то??

Код:
#! bin/sh

echo "Start"
echo "Hello" >> /etc/hosts

владелец root
права 106755

Проверил на нескольких linux - доступ к hosts запрещен


Название: Re: SUID запуск скрипта
Отправлено: Serr500 от Январь 21, 2014, 17:22
SUID к скриптам не применяется. Если кратко и упрощённо, то оболочка не может запустить скрипт с SUID, потому что ей надо вначале запустить интерпретатор под root, а у интерпретатора SUID нету.


Название: Re: SUID запуск скрипта
Отправлено: ammaximus от Январь 22, 2014, 08:23
Действительно, спасибо.
А что если написать сишное приложение, которое будет вызывать команды через System, это будет исполняться из под рута или как тогда?
Мне нужно править hosts и service network restart


Название: Re: SUID запуск скрипта
Отправлено: ammaximus от Январь 22, 2014, 08:47
через system все вызывается также, как обычный скрипт. Есть еще варианты?


Название: Re: SUID запуск скрипта
Отправлено: Serr500 от Январь 22, 2014, 09:06
1) Бинарник, который будет всё делать сам.
2) Бинарник, который запустит командный интерпретатор со скриптом.
У бинарника выставляем SUID.


Название: Re: SUID запуск скрипта
Отправлено: ammaximus от Январь 22, 2014, 13:07
2. System("/bin/sh /usr/local/bin/test") ?

3. Чтобы сделать все более грамотно начал рассматривать sudoers

Код:
Cmnd_Alias CMDS=/usr/local/bin/tryit

test  ALL=NOPASSWD: CMDS

Благодаря этой записи из под учетки test начал работать скрипт sudo tryit без запроса пароля
Код:
#! bin/sh

echo "Start"
echo "Hello" >> /etc/hosts

Но если добавить туда service network restart - продолжает говорить неизвестная команда. В чем может быть дело?


Название: Re: SUID запуск скрипта
Отправлено: Serr500 от Январь 22, 2014, 14:52
Х.з. Если Debian/Ubuntu/Mint можно попробовать напрямую:
Код:
/etc/init.d/networking restart


Название: Re: SUID запуск скрипта
Отправлено: ammaximus от Январь 23, 2014, 08:16
Спасибо, это помогло