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 sudozrobił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 fakerootbył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 fakerootprzyniosł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 xi y. Udawałem, xże należę myuseri ynależę 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 fakeroottego. W rzeczywistości, wiedząc, że fakeroottak naprawdę nic nie robi, nie możesz zdobyć żadnej zdolności, której wcześniej nie miałeś.
Ale i o to w tym fakerootwszystkim chodzi, edycja listy może nie być łatwa. Podobnie jak w przypadku pakietu, który można zainstalować w systemie, masz tared, gziped, xzed, bzip2ed 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 sudowł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 sudoskompresować 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 fakerootto, aby było to możliwe. Pozwala to liście programów pakujących Ajako posiadanej przez root dla archiwizatora, tak że gdy użytkownik dekompresuje pakiet, archiwizator wymaga uprawnień roota i tworzy Ajako root.
sudolubsuponieważ jest to twój komputer.fakerootma 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 utworzeniatarpliku z prawidłowymi uprawnieniami i prawem własności, przydatnego na przykład podczas pakowania oprogramowania.