Miért van szükségünk egyáltalán a fakeroot
parancsra? Nem használhatjuk egyszerűen a sudo
vagy su
parancsokat?
A man oldal így szól:
fakeroot – parancs futtatása olyan környezetben, amely gyökérjogosultságokat hamisít a fájlkezeléshez
Az About.com webhelye szerint:
Hamis gyökért ad környezet. Ez a csomag valami olyasmit kíván engedélyezni, mint:
dpkg-buildpackage -rfakeroot
, azaz megszünteti a csomaggyártás gyökérré válásának szükségességét. Ez aLD_PRELOAD
-tőllibfakeroot.so
, amely agetuid
,chown
,chmod
,mknod
,stat
, …, hamis gyökérkörnyezetet hozva létre. Ha nem “ebből semmit sem ért, nincs szükségefakeroot
!
Kérdésem az, hogy mi sp ökológiai cél megoldja-e, hogy egy egyszerű su
vagy sudo
ne “t”? Például az összes telepített csomag újbóli csomagolásához a következő parancsot adjuk meg:
$ fakeroot -u dpkg-repack `dpkg --get-selections | grep install | cut -f1`
Megtehetjük a fenti parancsot sudo-val vagy su-val a fakeroot helyett, mint ez:
$ sudo dpkg-repack `dpkg --get-selections | grep install | cut -f1`
SZERKESZTÉS:
Futás:
$ sudo dpkg-repack `dpkg --get-selections | grep install | cut -f1`
ezt a hibát adja:
a vezérlőkönyvtár rendelkezik rossz jogosultságok 700 (ezeknek> = 0755 és < = 0775 kell lenniük)
Van valami oka ennek?
megjegyzések
Válasz
Képzelje el, hogy Ön távoli szerveren dolgozó fejlesztő / csomag karbantartó stb. Frissíteni kívánja a csomag tartalmát és újjáépíti, letölti és testreszabja a rendszermagot a kernel.org webhelyről és felépíti stb. Miközben megpróbálja végrehajtani ezeket a dolgokat, megtudja, hogy egyes lépésekhez meg kell adnia a root
jogok (UID
és GID
0) különböző okokból (biztonság, figyelmen kívül hagyott engedélyek stb.). De nem lehet root
jogokat megszerezni, mivel távoli gépen dolgozik (és sok más felhasználónak ugyanaz a problémája, mint neked). Pontosan ez az, ami fakeroot
ezt teszi: úgy tesz, mintha egy hatékony UID
és GID
0-t mutatna be az őket igénylő környezetnek.
A gyakorlatban soha nem kap igazi root
kiváltságokat (szemben a su
és sudo
, amit megemlít).
Megjegyzések
- így ‘ nem használhatom a a rendszerbeállítások módosításához ?? mert a ‘ általunk futtatott parancs úgy fogja gondolni, hogy ‘ gyökérként fut, és bármit megteszünk, amit akar. elnyerte ‘ t?
- @mrid Vegye figyelembe a ” gyakorlatban soha nem kap valódi root jogosultságokat “. Tehát az anwser nem
Válasz
Ha egyértelműen látni szeretné a fakeroot és a valódi sudo / su közötti különbséget, csak tedd:
$ 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
Mindaddig, amíg a fakeroot héjban tartózkodsz, úgy tűnik, hogy root vagy – amíg nem próbálsz megtenni semmit amihez valóban root jogosultságokra van szükség. És pontosan erre van szükség egy csomagolóeszköznek ahhoz, hogy olyan csomagokat készítsen, amelyeknek értelme lesz minden gépen.
Valójában, amikor a fakerootot használja a csomagoláshoz, azt akarja elérni, hogy a fakeroot alatt futtatott eszközöket úgy állítsa be, hogy a fájlok a root tulajdonában legyenek. Se több, se kevesebb. Tehát valójában a su vagy a sudo nem fog megfelelő fájl tulajdonjogot szerezni.
Megjegyzések
- Nem veszélyes a hamisítvány? Ha létrehozok egy fájlt a suid bit és az rx perm használatával, akkor a fájlt root tulajdonában hozza létre, bárki futtathatja rootként! Vagy lehet, hogy a suid bit beállítása nem fog menni?
- Nem jó. Ezt magam is kipróbáltam. A fakeroot elsődleges oka a tulajdonosi root megszerzése: root beépített csomagokba, anélkül, hogy valójában root lenne. A telepített csomagoknak azonban megfelelő permaik lesznek.
- Mindez nagyon zavaró volt, amíg el nem olvastam a @ ntzrmtthihu777 ‘ s megjegyzést!
- Sajnálom, Nem értem a leírást ‘. Miért ne javíthatná az eszközöket úgy, hogy ‘ ne panaszkodjanak, ha nem vagy root? Kapcsolódó kérdésként: Végül is a fakeroot alatt létrehozott fájlok tulajdonképpen nem a root tulajdonában vannak valójában . Nem ‘ t ez azt jelentené, hogy amikor egy ilyen
.deb
fájlt telepítek, az összes/usr
a fájlok tulajdonosa annak a felhasználónak a tulajdonában van, akifakeroot
? - @ JohannesSchaub-litb nevet viseli, nem ez a ‘ s a lényeg. A fájlok nem a root tulajdonában vannak, de egy
fakeroot
shellben kinéznek . Amikor a .deb csomag létrejön ebben a héjban, a fájl tulajdonosát beolvassa a fájlrendszerből (amelyetfakeroot
elfog és visszaadroot
) és a csomagban tárolják. A csomag telepítésekor a dpkg root hozzáférést igényel, mert a csomag azt jelzi, hogy a fájlnak a root tulajdonában kell lennie.
Válasz
Mivel a válaszokat (magamnak) nehéz megérteni, és némi gondolkodás kellett hozzá, hogy megértsem ( ez a megjegyzés megértette velem), ezért “m remélhetőleg jobb magyarázatot ad.
1. Mi történik a fakerootban
Semmi más, mint ami a saját felhasználóval történik. Abszolút semmi több. Ha fakeroot
(amely hívásakor új héjat kap, például sudo
), úgy tesz, mintha olyan dolgokat csinálna, amelyekhez engedélyre van szüksége, és kilép, semmi sem fog történni.
Ha belegondolsz, az teljesen pazarolja az időt. Miért csinálnál olyan dolgokat, amelyek valójában nem fognak történni? Ez őrület. Egyszerűen nem tehette volna meg egyiket sem, és nem lett volna különbség, mivel nyoma sincs.
Várjon egy percet …
2. A nyom a fakeroot
nyoma nyom maradhat fakeroot
fájlból. Nézzük meg a MortenSickel válasza , amely nagyon szép és megérdemli a pozitív szavazatot:
$ 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
Első pillantásra úgy néz ki, hogy az fakeroot
használata teljesen időpazarlás volt. Végül, ha nem használta volna a fakeroot
-t, akkor ugyanazt kapta volna dolog.
A finom dolog itt a következő:
$ cat root.tst Wow I have root access
Ami azt jelenti, hogy a fájl tartalma még mindig úgy emlékszik, hogy gyökér. Azt mondhatja, hogy ha nem használja a fakeroot
alkalmazást, ugyanazok az eredmények születtek volna. Igazad van, ez a példa túl egyszerű.
Vegyünk egy másik példát:
$ 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
Lássuk, mi történt. Úgy tettem, mintha root
lennék, ami teljesen hatástalan, és létrehoztam a következőt: x
és y
. Úgy tettem, mintha x
a myuser
és a y
root
. Valójában mindkettő a myuser
csoportba tartozik (amint a végén láthatjuk), de én csak úgy tettem, mintha ilyen lenne.
Ezután létrehoztam egy listát, és fájlba mentettem a képzeletemet. Később, amikor visszatekintek az aktára, láthatom, kinek képzeltem a fájlokat. Ismét tulajdonképpen nem olyan emberek tulajdonában vannak, akiket elképzeltem, egyszerűen csak elképzeltem.
3. Tehát … Miért akarja ezt megint?
Mondhatja, hogy nem igazán kellett volna hamisítanom a root-t a lista létrehozásához. Egyszerűen létrehozhattam volna a listát, majd szerkeszthettem, hogy tükrözze képzeletem. Igazad van, ehhez nem kellett fakeroot
. Valójában annak tudatában, hogy fakeroot
valójában nem csinál semmit, valószínűleg nem szerezhet olyan képességet, amellyel korábban nem rendelkezett.
De , és erről szól az fakeroot
, a lista szerkesztése nem triviális.A rendszerére telepíthető csomaghoz hasonlóan van tar
ed, gzip
ed, xz
ed, bzip2
ed vagy bármilyen más formátum, amely összetartja a fájlokat, és emlékezik azok engedélyeire és tulajdonosaira. Könnyen módosíthatja a tömörített fájlt és szerkesztheti a fájl tulajdonjogát? Nem tudok rólad, de nem tudok valamire gondolni.
Lehet-e olyan eszközt építeni, amely, miután mindent összenyomtak, módosítja a tömörített fájlt, és programozatosan szerkeszti a tulajdonjogokat és engedélyeket. ? Igen, lehet. Tehát vagy hamisíthatja a tulajdonjogokat a tömörítés előtt, vagy megváltoztathatja azokat. A Debian emberei úgy döntöttek, hogy az előbbi könnyebb.
4. Miért ne használhatja csak a sudo
szolgáltatást?
Először is, nincs szükség root jogosultságokra a szoftver felépítéséhez, és nincs szükség root jogosultságokra a tömörítéshez. Tehát, ha nincs rá szüksége, akkor valóban Windows-felhasználónak kell lenned ahhoz, hogy még gondolkodj is ezen engedély megszerzéséről. De félretéve a szarkazmust, lehet, hogy még root jelszó sincs.
Emellett mondjuk azt, hogy root jogosultságokkal rendelkezik. És mondjuk azt, hogy úgy akarsz tenni, mintha egy fájlnak csak olvasási hozzáférése lenne a gyökér. Tehát sudo
, valójában megváltoztatja a fájl tulajdonosát és jogosultságait root
-re, kiszabadul a root shellből, és megpróbál mindent csomagolni. Nem sikerül, mert most már nem tudja elolvasni a fájlt, mivel nem rendelkezik root hozzáféréssel. Tehát sudo
kell és tömörítenie kell, és rootként kell építenie a csomagot. Hatékonyan meg kell tennie mindent gyökérként.
Ez rossz TM .
Csomagolóként nincs szükség root engedélyekre, és nem kell megszerezned. csomagot telepít, előfordulhat, hogy telepítenie kell egy fájlt (A
) gyökérként, és ahol root jogosultságokra van szüksége. Mindössze fakeroot
ezt teszi lehetővé. Lehetővé teszi a csomagolók listájának A
tulajdonosát az archiváló gyökér tulajdonában, így amikor a csomagot a felhasználó kicsomagolja, az archiváló root engedélyt igényel, és létrehozza a A
a root tulajdonában van.
Megjegyzések
- Kiváló írás, ez világossá teszi.
-
So either you could fake the ownerships before compressing, or change them after. Debian people decided the former is easier.
Ez segített nekem, miközben folyamatosan gondoltam ‘ miért nem módosítom utána? ‘. - Köszönöm, ez kitisztítja a zavart, ami @Morten ‘ válaszának elolvasása után volt
Válasz
AFAIK, a fakeroot egy olyan környezetben futtat egy parancsot, amelyben úgy tűnik, hogy root jogosultságokkal rendelkezik a fájlkezeléshez. Ez akkor hasznos, ha lehetővé teszik a felhasználók számára, hogy archívumokat (tar, ar, .deb stb.) Hozzanak létre fájlokkal root jogokkal / tulajdonjoggal. A fakeroot nélkül gyökérjogosultságokkal kell rendelkeznie ahhoz, hogy a megfelelő jogosultságokkal és tulajdonjoggal létrehozhassa az archívum alkotó fájljait, majd összecsomagolhassa őket, különben közvetlenül az archívumot kell készítenie az archiváló használata nélkül.
A fakeroot úgy működik, hogy a fájlkezelő könyvtár függvényeit (chmod (), stat () stb.) lecseréli olyanokra, amelyek szimulálják azt a hatást, amelyet a valós könyvtári függvények gyakoroltak volna, ha a felhasználó valóban root lenne.
Szinopszis:
fakeroot [-l|--lib library] [--faked faked-binary] [--] [command]
További információ itt: fakeroot
Megjegyzések
- @MaskTheSmokin: A fakeroot tehát szuper felhasználói hatalmat ad csak fájlkezelési műveletekhez, igaz.
- Ez nem igazán ad szuper felhasználói erő, csak hamisítja – a benne futó program úgy gondolja, hogy rendelkezik root jogosultságokkal, miközben valóban továbbra is használja a felhasználó ‘ szokásos jogosultságait.
- Hol van a különbség
the program running in it thinks it has root privileges
és a root jogosultságokkal rendelkező program között? Ha meg tudok csinálni egyrm -rf /
és a programot, akkor a futtatásával úgy gondolom, hogy van root jogosultságom … - @userunknown Lehet, hogy megkerülheti a
rm
‘ s ellenőrizze, hogy van-e elegendő engedélye, de maga a kern nem engedné meg, hogy ‘ ; aunlink
rendszerhívás meghiúsul. ‘ nem csak az alkalmazás feladata az engedélyek kezelése, vagy ‘ képes megírni a saját alkalmazását, amely nem felel meg a ‘ t ellenőrizze az engedélyeket, és bármit tegyen vele, - fantasztikus lenne egy példa az
fakeroot
szükségességének megvilágítására. Látom a fakeroot használatát, de nem tudom, hogy ‘ miért nem tudják az emberek ‘ megkerülni a root jogosultságokat addig a pontig, ‘ könnyebb hamisítani.
Válasz
Csomagépítő szkriptekhez használtam. Nem voltam biztos benne, hogy a A parancsfájl root szintű hozzáféréssel rendelkezik, de a parancsfájlnak még mindig létre kellett hoznia egy tar fájlot, amely a root fájlokat tartalmazta. Ennek legegyszerűbb módja a csomagépítő szkript futtatása volt fakeroot alatt, ami az archiválót elhitette azzal, hogy a A fájlok a gyökérhez tartoznak, és önmagukban csomagolják őket az archívumba. Így, amikor a csomagot kibontották a célgépre (teljesen egy másik gépen), a fájlok nem tartoztak furcsa vagy nem létező felhasználókhoz.
Ha belegondolok, az egyetlen hely, ahol valamilyen archívumot építettem fel: beágyazott rendszerek rootfjai, tar.gz archívumok, rpm csomagok, .deb csomagok stb.
Megjegyzések
-
fakeroot
egy megoldás a hibás csomagolószoftverekhez: nincs ok, amelynek létrehozásához rootnak kell lenned ilyen csomagok, b ut, mivel nem engedik, hogy ‘ bármilyen más módon megadják a fájlengedélyeket, mint hogy közvetlenül a fájlrendszerbe állítsák be őket, akkor nincs más választásuk
Válasz
Az egyik általános használat, hogy megtudja, hogy egy meghibásodott bináris fájl milyen fájlokat szeretett volna elérni. Vagyis a kódolt utak és a helytelen kivételkezelés által okozott hibák felderítése és kijavítása, illetve azok kiküszöbölése.
Válasz
Megteheti használd a fakeroot-ot anélkül, hogy ténylegesen rendelkeznél root jogosultságokkal. Ha volna su
és / vagy sudo
, akkor egy egyszerű rm -rf /
, de legfeljebb fakeroot esetén eltávolítaná az otthoni könyvtárat.
Megjegyzések
- Ez nem ‘ t magyarázza az
fakeroot
szükségességét. Eltávolíthatja saját könyvtárát önmagában.
Válasz
Az egyszerű válasz:
su és sudo futtassa a parancsokat root-ként. a fakeroot nem, azon kívül a részleges homokozó-elrendezésen.
sudo
vagysu
, mert ez a te géped. Afakeroot
kétféle felhasználási lehetőséggel rendelkezik: 1) becsapja a programokat, és úgy gondolja, hogy Ön valóban root felhasználó, amire néhány rosszul írt, saját szoftver akkor is szükség lehet, ha nincs rá szükség (általában a Windows fejlesztője elment Linuxba), és 2) lehetővé teszi a fájlmód és a tulajdonjog megváltoztatásának emulálását, amelyekre egyébként ‘ nem lenne képes, főleg egytar
fájl létrehozásához megfelelő engedélyekkel és tulajdonjog, hasznos például szoftverek csomagolásakor.fakeroot
! Ha ‘ nem tud olyan helyzetre gondolni, aholfakeroot
hasznos, akkor szó szerint nem kell ‘. De azok, akiknek valóban szükségük van rá, teljesen megértik a felhasználási esetet.