2015-11-19 6 views
-1

Эй, у меня проблемы с использованием chroot, и я не уверен, что это ограничение на Apple-машинах, или я просто делаю это неправильно. Вот код, что-то я проверяю, и я постоянно получаю запрос "chroot failed!: Operation not permitted"Сбои с chroot

system("mkdir workspace"); 
chdir("/workspace"); 
system("pwd"); // check if the mkdir worked. 
int result = chroot("/workspace"); 

if (result != 0) { 
    perror("chroot failed!"); 
    return 1; 
} 

Я даже пытался сделать это: chdir(getenv("PWD"));, но я получаю сообщение об ошибке. Спасибо

+1

Если вы проверить значение 'errno' может сказать вам более подробно, что проблема есть. – mathematician1975

+0

@ mathematician1975 То же самое: '' Operation not allowed '' – Perelan

+3

[man page] (http://linux.die.net/man/2/chroot) говорит:« Только привилегированный процесс (Linux: один с CAP_SYS_CHROOT) может вызвать chroot() ". Это относится к вам? – kaylum

ответ

0

Chroots - это просто боль, с которой приходится иметь дело ... я бы посоветовал использовать программу, которая автоматизирует настройку chroots для вас. Попробуйте использовать Coffer, он предназначен для контейнера файловой системы для разработки, но на самом деле это всего лишь обертка вокруг chroot. Требуется много тяжелой работы с созданием и входом в среду, и даже добавляет несколько полезных функций поверх нее.

https://github.com/Max00355/Coffer

+0

Может ли коффер быть запущен из контейнера докера? – Jonathan