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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> chroot, Проблемы с выполнением процесса 
V
    Опции темы
CPlusPlusFAN
Дата 5.6.2009, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте.
Есть текущая директория. В неё вложена директория root.
В директории root лежит программа a.out. Её исходник:
Код

#include <stdio.h>

int main( int argc, char * argv[] )
{

    FILE * f = fopen( "f.txt", "w" );
    fclose( f );

    f = fopen( "../f.txt", "w" );
    fclose( f );

    f = fopen( "foo/f.txt", "w" );
    fclose( f );

    return 0;
}


В текущей директории лежит программа с исходником:
Код

#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>

int main( int argc, char * argv[] )
{
    int status;
    int pid = fork();

    if ( pid == 0 )
    {
        chdir( "root" );
        
        int res = chroot( "." );
        if ( res == 0 )
            printf( "chroot is success!\n" );
        else
            printf( "error code: %d\n", errno );
        
        
        execl( "a.out", "a.out", NULL, NULL );
        
        exit( 0 );
    }
    
    waitpid( pid, &status, 0 );

    return 0;
}

Эта программа запускается от рута и chroot выполнется. Однако, программа root/a.out не создаёт ни один из файлов. Если вызвать не от рута, то создаются все файлы. Ведь chroot вызван для директории root. Так почему же он блокирует всё?

Спасибо за внимание.
PM MAIL ICQ Jabber   Вверх
MAKCim
Дата 5.6.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



execve вылетает с ошибкой - ENOENT
это связано с тем, что ядро не может найти динамический компоновщик (ld), который обычно лежит в /lib или /lib64


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

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


Опытный
**


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

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



MAKCim, и что делать тогда?
PM MAIL ICQ Jabber   Вверх
CPlusPlusFAN
Дата 5.6.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MAKCim, а можно те либы, которые подключаются на этапе исполнения, вшить в бинарник, чтоб запускалось?
Как её там? libstdc++.so или как-то так.
PM MAIL ICQ Jabber   Вверх
CPlusPlusFAN
Дата 5.6.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MAKCim, нашёл решение - компилить исполняемый файл так:
Код

g++ test.cpp -static


правда, бинарник, зараза, вырос. smile 

Это сообщение отредактировал(а) CPlusPlusFAN - 6.6.2009, 02:21
PM MAIL ICQ Jabber   Вверх
MAKCim
Дата 6.6.2009, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

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



CPlusPlusFAN
вопрос решен?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

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


Опытный
**


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

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



Цитата(MAKCim @  6.6.2009,  09:44 Найти цитируемый пост)
CPlusPlusFAN, 
вопрос решен? 


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

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

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


 




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


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

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