Russian Qt Forum
Ноябрь 22, 2024, 08:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: SUID запуск скрипта  (Прочитано 4654 раз)
ammaximus
Гость
« : Январь 21, 2014, 16:20 »

Делаю простой скрипт для настройки hosts. Вдруг оказалось, что suid-бит не работает! Никак не соображу что не так то??

Код:
#! bin/sh

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

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

Проверил на нескольких linux - доступ к hosts запрещен
Записан
Serr500
Гость
« Ответ #1 : Январь 21, 2014, 17:22 »

SUID к скриптам не применяется. Если кратко и упрощённо, то оболочка не может запустить скрипт с SUID, потому что ей надо вначале запустить интерпретатор под root, а у интерпретатора SUID нету.
Записан
ammaximus
Гость
« Ответ #2 : Январь 22, 2014, 08:23 »

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

через system все вызывается также, как обычный скрипт. Есть еще варианты?
Записан
Serr500
Гость
« Ответ #4 : Январь 22, 2014, 09:06 »

1) Бинарник, который будет всё делать сам.
2) Бинарник, который запустит командный интерпретатор со скриптом.
У бинарника выставляем SUID.
Записан
ammaximus
Гость
« Ответ #5 : Январь 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 - продолжает говорить неизвестная команда. В чем может быть дело?
« Последнее редактирование: Январь 22, 2014, 13:08 от ammaximus » Записан
Serr500
Гость
« Ответ #6 : Январь 22, 2014, 14:52 »

Х.з. Если Debian/Ubuntu/Mint можно попробовать напрямую:
Код:
/etc/init.d/networking restart
Записан
ammaximus
Гость
« Ответ #7 : Январь 23, 2014, 08:16 »

Спасибо, это помогло
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 21.