Поскольку ответы трудно понять (для меня самого), и потребовалось некоторое время, чтобы понять их ( этот комментарий помог мне понять это), я собираюсь дать, надеюсь, лучшее объяснение.
1. Что происходит в fakeroot
Ничего больше, чем то, что происходит с вашим собственным пользователем. Абсолютно ничего больше. Если вы fakeroot
(который при вызове дает вам новую оболочку, вроде sudo
бы), сделаете вид, что делаете то, для чего вам нужно разрешение, и выйдите, абсолютно ничего не произойдет.
Если вы думаете об этом, это пустая трата времени. Почему вы делаете вещи, которые на самом деле не произойдут? Это безумие. Вы могли бы просто не делать ничего из этого, и не было бы никакой разницы, так как нет никаких следов этого.
Подождите минуту...
2. След от Fakeroot
Там может быть след остался 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. Итак ... Зачем тебе это снова?
Вы можете сказать, что мне не нужно было выдавать себя за root, чтобы создать этот список. Я мог бы просто создать список, а затем отредактировать его, чтобы отразить мое воображение. Вы правы, вам это не нужно fakeroot
. На самом деле, зная, что на fakeroot
самом деле ничего не делает, вы, возможно, не могли получить никакой способности, которой у вас не было раньше.
Но , и это fakeroot
главное, редактирование списка может быть нетривиальным. Как и в случае с пакетом, который может быть установлен в вашей системе, у вас есть tar
ed, gzip
ed, xz
ed, bzip2
ed или любой другой формат, который хранит ваши файлы вместе и запоминает их разрешения и владельцев. Вы можете легко изменить сжатый файл и отредактировать владельца файла? Я не знаю о вас, но я не могу придумать способ.
Может ли быть встроенный инструмент, который, после того как все будет сжато, изменяет сжатый файл и программно редактирует права собственности и разрешения? Да, может. Так что либо вы можете подделать владения до сжатия, либо поменять их после. Люди Debian решили, что с первым легче.
4. Почему бы просто не использовать sudo
?
Прежде всего, вам не нужны привилегии root для сборки программного обеспечения, и вам не нужны привилегии root для их сжатия. Так что если вам это не нужно, вам действительно нужно быть пользователем Windows, чтобы даже подумать о получении этого разрешения. Но сарказм в стороне, у вас может даже не быть пароля root.
Кроме того, допустим, у вас есть права root. Допустим, вы хотите сделать вид, что файл должен иметь доступ только для чтения к корню. Таким образом, вы sudo
, на самом деле, меняете владельца файла и права доступа root
, выходя из корневой оболочки и пытаясь упаковать все. Вы потерпели неудачу, потому что теперь вы не можете больше читать файл, так как у вас нет прав root. Таким образом, вы должны sudo
сжать и собрать пакет как root. По сути, вы должны делать все как root.
Это Плохая ТМ .
Как упаковщик, вам не нужны права root и вы не должны его получать. Когда вы устанавливаете пакет, вам может потребоваться установить некоторый файл ( A
) от имени пользователя root, и для этого вам нужны права root. Все fakeroot
это делает это возможным. Он позволяет пакетировщику перечислять A
как принадлежащий root для архиватора, так что, когда пакет распаковывается пользователем, архиватор требует разрешения root и создает A
как принадлежащий root.
sudo
илиsu
потому, что это ваша машина.fakeroot
имеет два применения: 1) обманывает программы, заставляя их верить, что вы действительно являетесь пользователем root, что может потребоваться некоторым плохо написанным проприетарным программам, даже если в этом нет необходимости (как правило, разработчик Windows - Linux), и 2) разрешать эмуляцию режима файла и изменений владельца, которые вы не захотите. в противном случае это можно сделать, главным образом, для созданияtar
файла с правильными разрешениями и владельцем, что полезно, например, при упаковке программного обеспечения.