Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> chroot выполнение от имени юзера 
:(
    Опции темы
CPlusPlusFAN
Дата 21.8.2010, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Здравствуйте.

Программа запускается от имени юзера. Однако в ней требуется выполнить chroot в вызванном ей дочернем процессе. Пароль рута есть.
Если это сделать невозможно, тогда предложите альтернативный способ, чтобы потенциально опасная программа (выполняемая после chroot) не лазила за пределами своей директории, не читала конфиги, ничего нигде не меняла, ничего не запускала и т.д.

Заранее спасибо!
PM MAIL ICQ Jabber   Вверх
xvr
Дата 23.8.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(CPlusPlusFAN @  21.8.2010,  09:35 Найти цитируемый пост)
Однако в ней требуется выполнить chroot в вызванном ей дочернем процессе.
А чем стандартная последовательность fork->chroot->exec не устраивает?


PM MAIL   Вверх
CPlusPlusFAN
Дата 23.8.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Запускаю под юзером:

Код

#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <fstream>

int main(int, char **)
{
    int pid = fork();
    if (pid == 0)
    {
        chdir("testdir");
        chroot(".");

        std::ofstream os("../testfile.txt"); // пусть вместо exec будет создание файла

        exit(0);
    }

    int status;
    waitpid(pid, &status, 0);

    return 0;
}


testdir есть. testfile.txt в текущей директории создаётся. chroot не работает. От рута запускаю - файла нету. Но запускать от рута нет возможности.

Это сообщение отредактировал(а) CPlusPlusFAN - 23.8.2010, 18:14
PM MAIL ICQ Jabber   Вверх
JackYF
Дата 23.8.2010, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 3
Всего: 162



Цитата(CPlusPlusFAN @  23.8.2010,  17:13 Найти цитируемый пост)
chroot не работает

Системный вызов 'chroot' работает только от рута.

Соответственно, либо запускать от рута, либо использовать "*su*"-помощники (sudo, su etc.).


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
xvr
Дата 23.8.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(CPlusPlusFAN @  23.8.2010,  18:13 Найти цитируемый пост)
Но запускать от рута нет возможности.
Поставь своему exeнику пользователя root и бит set user ID. И в самом exeнике не забыть вернуть UID перед exec'ом назад


PM MAIL   Вверх
CPlusPlusFAN
Дата 23.8.2010, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Это возможно сделать программно?
PM MAIL ICQ Jabber   Вверх
xvr
Дата 24.8.2010, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(CPlusPlusFAN @ 23.8.2010,  21:16)
Это возможно сделать программно?

Да. Но первую часть:
Цитата

оставь своему exeнику пользователя root и бит set user ID.
лучше сделать с командной строки  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0767 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.