Ponieważ odpowiedzi są trudne do zrozumienia (dla siebie) i zastanowienie się nad tym zajęło trochę czasu ( ten komentarz sprawił, że zrozumiałem), mam nadzieję, że wyjaśnię to lepiej.
1. Co dzieje się w Fakeroot
Nic więcej niż to, co dzieje się z własnym użytkownikiem. Absolutnie nic więcej. Jeśli ty fakeroot
(który po wywołaniu daje ci nową powłokę, tak jak sudo
zrobiłbyś), udajesz, że robisz rzeczy, na które potrzebujesz pozwolenia, i wychodzisz, absolutnie nic by się nie wydarzyło.
Jeśli się nad tym zastanowić, to całkowita strata czasu. Dlaczego miałbyś robić rzeczy, które tak naprawdę by się nie wydarzyły? To niesamowite. Mógłbyś po prostu tego nie zrobić i nie byłoby różnicy, ponieważ nie ma na to śladu.
Poczekaj minutę...
2. Ślad fakeroot
Nie mogło być śladu lewej fakeroot
. Spójrzmy na polecenia w odpowiedzi MortenSickel, która jest całkiem ładna i zasługuje na głosowanie:
$ 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
Na pierwszy rzut oka wygląda na to, że korzystanie z niego fakeroot
było całkowitą stratą czasu. W końcu, gdybyś nie używał fakeroot
, miałbyś to samo.
Subtelna rzecz jest tutaj:
$ cat root.tst
Wow I have root access
Co oznacza, że zawartość pliku nadal pamięta, że jest rootem. Można powiedzieć, że nieużywanie fakeroot
przyniosłoby takie same wyniki. Masz rację, ten przykład jest zbyt prosty.
Weźmy inny przykład:
$ 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
Zobaczmy co się stało. Udawałem, że jestem root
, co jest całkowicie nieskuteczne, i stworzyłem x
i y
. Udawałem, x
że należę myuser
i y
należę root
. Oba należą do myuser
(jak widzimy na końcu), ale udawałem, że tak właśnie jest.
Następnie stworzyłem listę i zapisałem moją wyobraźnię w pliku. Później, gdy patrzę wstecz na plik, widzę, kto według mnie powinien być właścicielem plików. Znów nie są własnością ludzi, których sobie wyobrażałem, po prostu sobie to wyobraziłem.
3. Więc ... Dlaczego tego chcesz ponownie?
Możesz powiedzieć, że tak naprawdę nie musiałem udawać, że jesteś rootem, aby utworzyć tę listę. Mogłem po prostu utworzyć listę, a następnie edytować ją, aby odzwierciedlić moją wyobraźnię. Masz rację, nie potrzebujesz fakeroot
tego. W rzeczywistości, wiedząc, że fakeroot
tak naprawdę nic nie robi, nie możesz zdobyć żadnej zdolności, której wcześniej nie miałeś.
Ale i o to w tym fakeroot
wszystkim chodzi, edycja listy może nie być łatwa. Podobnie jak w przypadku pakietu, który można zainstalować w systemie, masz tar
ed, gzip
ed, xz
ed, bzip2
ed lub inny format, który utrzymuje pliki razem i zapamiętuje ich uprawnienia i właścicieli. Czy możesz łatwo zmodyfikować skompresowany plik i edytować własność pliku? Nie wiem o tobie, ale nie mogę wymyślić sposobu.
Czy może istnieć narzędzie, które po skompresowaniu wszystkiego modyfikuje skompresowany plik i programowo edytuje prawa własności i uprawnienia? Tak, może. Możesz więc sfałszować własność przed kompresją lub zmienić ją później. Ludzie Debiana uznali, że to pierwsze jest łatwiejsze.
4. Dlaczego nie po prostu użyć sudo
?
Przede wszystkim nie potrzebujesz uprawnień roota do tworzenia oprogramowania i nie potrzebujesz uprawnień roota do ich kompresji. Więc jeśli go nie potrzebujesz, naprawdę musisz być użytkownikiem systemu Windows, aby nawet pomyśleć o uzyskaniu tego pozwolenia. Pomijając sarkazm, możesz nawet nie mieć hasła roota.
Poza tym powiedzmy, że masz uprawnienia roota. Powiedzmy, że chcesz udawać, że plik powinien mieć dostęp tylko do odczytu do katalogu głównego. Więc sudo
właściwie zmieniasz właściciela pliku i uprawnienia root
, wychodzisz z powłoki roota i próbujesz spakować wszystko. Niepowodzenie, ponieważ teraz nie możesz już odczytać pliku, ponieważ nie masz dostępu do konta root. Musisz więc sudo
skompresować i zbudować pakiet jako root. W efekcie musisz zrobić wszystko jako root.
To jest Zła TM .
Jako program pakujący nie potrzebujesz uprawnień roota i nie powinieneś go otrzymywać. Podczas instalowania pakietu może być konieczne zainstalowanie pliku file ( A
) jako root i tam potrzebujesz uprawnień roota. Wszystko po fakeroot
to, aby było to możliwe. Pozwala to liście programów pakujących A
jako posiadanej przez root dla archiwizatora, tak że gdy użytkownik dekompresuje pakiet, archiwizator wymaga uprawnień roota i tworzy A
jako root.
sudo
lubsu
ponieważ jest to twój komputer.fakeroot
ma dwa zastosowania 1) oszuka programy, które uważają, że rzeczywiście jesteś użytkownikiem root, czego może wymagać niektóre źle napisane oprogramowanie prawnie zastrzeżone, nawet jeśli nie jest potrzebne (zwykle deweloper Windows nie ma Linuksa) oraz 2) pozwala na emulację zmian trybu plików i własności, których nie w przeciwnym razie można to zrobić, głównie w celu utworzeniatar
pliku z prawidłowymi uprawnieniami i prawem własności, przydatnego na przykład podczas pakowania oprogramowania.