@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Зачем нужен fakeroot, при сборке deb-пакета?

Почему в мануалах пишут так:
fakeroot dpkg-deb --build ./path
а вот так тоже работает:
dpkg-deb --build ./path

Зачем тут нужен fakeroot? Меняет права на "только чтение"? А для чего?
  • Вопрос задан
  • 5541 просмотр
Пригласить эксперта
Ответы на вопрос 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
fakeroot делает так, что приложение, которое не имеет прав рута, но ожидающее, что оно имеет эти права, не завершается с ошибкой из-за недостатка прав, при выполнении некоторых функций, а продолжает работать. Т.е. он "проглатывает" ошибки вызванные недостатком привилегий.

Например, обычный пользователь не может сделать chowh root:root для файла, которым он владеет:
$ chown root:root test ; echo $?
chown: changing ownership of 'test': Operation not permitted
1

fakeroot даёт приложению видимость того, что ошибки не происходит. Владелец файла при этом, конечно, не меняется:
$ fakeroot chown root:root test ; echo $?
0
$ ls -la test
-rw-rw-r--. 1 jcmvbkbc jcmvbkbc 1709 Jun  1  2011 test

Всё.

Это нужно для того, чтобы make install и подобные скрипты, меняющие права файлов, которые они устанавливают в систему, не завершались после первой ошибки при запуске под непривилегированным пользователем, а отрабатывали до конца. Правильность владельцев и разрешений устанавливаемых на файлы при этом должна обеспечиваться другими средствами.

Почему в мануалах пишут так:
fakeroot dpkg-deb --build ./path
а вот так тоже работает:
dpkg-deb --build ./path

Потому что во время сборки пакета не выполнялись команды, которым нужны привилегии, либо ошибки их выполнения были проигнорированы.

Андрей Буров, pfg21 всякие "песочницы", "не пускает во внешний мир", "скрипт может раскидать бинарники по системе, песочница его не выпустит" применительно к fakeroot -- это фантазия. Сборка пакетов может и должна производиться под обычным пользователем. Штатная система привилегий заботится о том, что приложение, запускаемое под непривилегированным пользователем ничего не сломало.
Ответ написан
BuriK666
@BuriK666
Компьютерный псих
если кратко и просто:
fakeroot не пускает сборщик во внешний мир
sandbox
Ответ написан
sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.
man fakeroot
- run a command in an environment faking root privileges for
file manipulation

dpkg-deb --build ./path
так он собирает пакет в твоём окружении и при установке/использовании возникнут проблемы с правами
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы