Оскільки відповіді важко зрозуміти (самому), і для того, щоб зрозуміти це, потрібно було трохи думати ( цей коментар змусив мене зрозуміти це), я збираюся дати пояснення краще.
1. Що відбувається у підробці
Нічого іншого, ніж те, що відбувається з вашим власним користувачем. Абсолютно нічого більше. Якщо ви fakeroot
(який при дзвінку дає вам нову оболонку, як sudo
би хотіли), робите вигляд, що робите речі, на які вам потрібен дозвіл та виходите, абсолютно нічого не трапиться.
Якщо ви подумаєте про це, це повна марна трата часу. Чому б ти робив речі, які насправді не відбудуться? Це божевільно. Ви могли просто не зробити нічого з цього, і різниці не було б, оскільки про це немає і сліду.
Почекай хвилинку...
2. Слід фальшивки
Тут може залишитися і слід fakeroot
. Давайте подивимось на команди у відповіді MortenSickel, які є досить приємними та заслуговують на підсумок:
$ fakeroot
# echo "Wow I have root access" > root.tst
# ls -l root.tst
-rw-rw-r-- 1 root root 23 Oct 25 12:13 root.tst
# ls -l /root
ls: cannot open directory /root: Permission denied
# exit
$ ls -l root.tst
-rw-rw-r-- 1 ubuntu ubuntu 23 Oct 25 12:13 root.tst
З першого погляду, схоже, що використання fakeroot
було цілком марною тратою часу. Зрештою, якби ти не використовував fakeroot
, ти отримав би те саме.
Тут найтонше:
$ cat root.tst
Wow I have root access
Що означає, що вміст файлу все ще пам’ятає, що він є коренем. Ви можете сказати, що не використання fakeroot
дало б однакові результати. Ви праві, цей приклад занадто простий.
Візьмемо ще один приклад:
$ fakeroot
# touch x
# touch y
# chown myuser:myuser x
# ls -l > listing
# exit
$ ls -l
total 4
-rw-rw-r-- 1 myuser myuser 152 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 y
$ cat listing
total 0
-rw-rw-r-- 1 root root 0 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 root root 0 Jan 7 21:39 y
Подивимося, що сталося. Я робив вигляд root
, що абсолютно неефективний, і створив x
і y
. Я робив вигляд, x
що належу myuser
і y
належу root
. Вони насправді належать обом myuser
(як ми бачимо врешті-решт), але я просто робив вигляд, що це таке.
Потім я створив список і зберег свою уяву до файлу. Пізніше, коли я оглянувся на файл, я можу побачити, хто я уявив, якими файлами повинні володіти. Знову ж таки, насправді вони не належать людям, яких я уявляв, я просто це просто уявляв.
3. Отже ... Чому ти хочеш цього знову?
Ви можете сказати, що мені не потрібно було підробляти корінь для створення цього списку. Я міг просто створити лістинг, а потім відредагував його, щоб відобразити мою уяву. Ви маєте рацію, вам цього не потрібно було fakeroot
. Насправді, знаючи, що fakeroot
насправді нічого не робить, ви, можливо, не здобули жодної здатності, якої не мали раніше.
Але , і це fakeroot
все, про що йдеться, редагування списку може бути нетривіальним. Як і у випадку з пакетом, який можна встановити у вашій системі, у вас є tar
ed, gzip
ed, xz
ed, bzip2
ed або будь-який інший формат, який зберігає ваші файли разом і пам’ятає їх права та власники. Чи можете ви легко змінити стислий файл і відредагувати право власності на файл? Я не знаю про тебе, але я не можу придумати спосіб.
Чи може бути створений інструмент, який, коли все стискається, він змінює стислий файл і програмно редагує права власності та дозволи? Так, могли. Тож ви можете підробити права власності перед тим, як стиснути, або змінити їх після. Люди Debian вирішили, що колись простіше.
4. Чому не просто використовувати sudo
?
Перш за все, вам не потрібні кореневі привілеї для створення програмного забезпечення, і вам не потрібні привілеї root для їх стиснення. Тож якщо він вам не потрібен, вам доведеться справді бути користувачем Windows, щоб навіть думати про отримання цього дозволу. Але в бік сарказму, можливо, у вас навіть немає пароля root.
Крім того, скажімо, у вас є кореневі дозволи. Скажімо, ви хочете зробити вигляд, що файл повинен мати доступ для читання лише до кореня. Отже, ви sudo
фактично змінюєте власника файлу та дозволи на нього root
, виходите з кореневої оболонки і намагаєтесь упакувати все. Помилка, оскільки тепер ви вже не можете прочитати файл, оскільки у вас немає доступу до кореня. Тож вам доведеться sudo
стиснути і скласти пакет як корінь. Ефективно, ви повинні робити все як root.
Це погана ТМ .
Як пакувальник, вам не потрібні кореневі дозволи, і ви не повинні їх отримувати. Під час встановлення пакета вам може знадобитися встановити якийсь файл ( A
) як root, і саме там вам потрібні дозволи root. Все fakeroot
, щоб зробити це можливим. Це дозволяє списку пакувальників A
як власника root для архіватора, так що, коли пакунок декомпресується користувачем, архіватор вимагає кореневого дозволу і створює A
як належить root.
sudo
абоsu
тому, що це ваша машина.fakeroot
є два звичаї 1) він обдурює програми, вважаючи, що ви дійсно користувач root, що може знадобитися навіть некоректно власному програмному забезпеченню, навіть якщо воно не потрібне (як правило, розробник Windows відійшов у Linux), і 2) це дозволяє емулювати режим файлів та зміни власності, які ви б не хотіли ' t в іншому випадку не в змозі це зробити, головним чином, створитиtar
файл з правильними дозволами та правом власності, корисний, наприклад, при упаковці програмного забезпечення.