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 a LD_PRELOAD -től libfakeroot.so, amely a getuid, chown, chmod, mknod, stat, …, hamis gyökérkörnyezetet hozva létre. Ha nem “ebből semmit sem ért, nincs szüksége fakeroot!

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

  • biztonsági okokból célszerű elkerülni, hogy root felhasználóként tegyenek meg mindent, amit normál felhasználóként meg lehet tenni, még akkor is, ha futtatni tudod sudo vagy su, mert ez a te géped. A fakeroot 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 egy tar fájl létrehozásához megfelelő engedélyekkel és tulajdonjog, hasznos például szoftverek csomagolásakor.
  • Úgy gondolom, hogy az About.com kivonatának megjegyzése ezt foglalja össze: Ha nem ‘ ebből semmit sem ért, akkor nincs szüksége fakeroot! Ha ‘ nem tud olyan helyzetre gondolni, ahol fakeroot 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.

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, aki fakeroot?
  • @ 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 (amelyet fakeroot elfog és visszaad root) é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 egy rm -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 ‘ ; a unlink 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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük