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 -- это фантазия. Сборка пакетов может и должна производиться под обычным пользователем. Штатная система привилегий заботится о том, что приложение, запускаемое под непривилегированным пользователем ничего не сломало.