Miksi tarvitsemme komentoa fakeroot? Voimmeko ”t käyttää yksinkertaisesti komentoja sudo tai su?

Man-sivulla sanotaan:

fakeroot – Suorita komento ympäristössä, jossa fake root -oikeudet -tiedostojen käsittelyyn

About.com sanoo:

Antaa väärennetyn juuren Tämä paketti on tarkoitettu mahdollistamaan esimerkiksi dpkg-buildpackage -rfakeroot eli poistamaan tarve tulla juuriksi paketin koontiversiolle. Tämä tehdään asettamalla LD_PRELOADlibfakeroot.so, joka tarjoaa kääreitä getuid, chown, chmod, mknod, stat, …, mikä luo väärennetyn juuren ympäristön. Jos et ”Et ymmärrä mitään tästä, et tarvitse fakeroot!

Kysymykseni on, mitä sp ekotarkoitus ratkaiseeko se, että yksinkertainen su tai sudo ei ”t? Esimerkiksi kaikkien asennettujen pakettien uudelleen pakkaamiseksi ubuntuun annamme seuraavan komennon:

$ fakeroot -u dpkg-repack `dpkg --get-selections | grep install | cut -f1` 

Voimmeko tehdä yllä olevan komennon sudolla tai su: lla fakerootin sijaan:

$ sudo dpkg-repack `dpkg --get-selections | grep install | cut -f1` 

MUOKKAA:

Käynnissä:

$ sudo dpkg-repack `dpkg --get-selections | grep install | cut -f1` 

antaa minulle tämän virheen:

ohjaushakemistossa on virheelliset käyttöoikeudet 700 (täytyy olla> = 0755 ja < = 0775)

Mikä tahansa syy miksi?

Kommentit

  • turvallisuussyistä on hyvä välttää tekemästä pääkäyttäjänä kaikkea, mitä tavallisena käyttäjänä voidaan tehdä, vaikka pystytkin ajamaan sudo tai su, koska se on sinun koneesi. fakeroot: llä on kaksi käyttötapaa: 1) se huijaa ohjelmia uskomaan, että olet todellakin pääkäyttäjä, jota jotkut huonosti kirjoitetut omat ohjelmistot saattavat tarvita, vaikka niitä ei tarvita (yleensä Windows-kehittäjä on mennyt Linuxiksi) ja 2) se antaa mahdollisuuden jäljitellä tiedostotilaa ja omistajuuden muutoksia, joita ’ et muuten pystyisi tekemään, pääasiassa tar -tiedoston luomiseksi oikeilla oikeuksilla ja omistajuus, hyödyllinen esimerkiksi ohjelmistojen pakkaamisessa.
  • Luulen, että About.com-otteen otteessa oleva huomautus tiivistää sen: Jos et ’ Ymmärtääksesi tämän, et tarvitse fakeroot! Jos pystyt ’ ajattelemaan tilannetta, jossa fakeroot on hyödyllinen, niin kirjaimellisesti et ’ sitä tarvitse. Mutta ihmiset, jotka sitä todella tarvitsevat, ymmärtävät käyttötapauksen täysin.

Vastaa

Kuvittele, että olet kehittäjä / paketin ylläpitäjä jne., jotka työskentelevät etäpalvelimella. Haluat päivittää paketin sisällön ja rakentaa sen uudelleen, ladata ja mukauttaa ytimen kernel.org-palvelimelta ja rakentaa sen jne. Yritettäessä tehdä näitä asioita, huomaat, että joissakin vaiheissa tarvitaan root oikeudet (UID ja GID 0) eri syistä (turvallisuus, huomaamattomat oikeudet jne.). root -oikeuksia ei kuitenkaan voida saada, koska työskentelet etäkoneella (ja monilla muilla käyttäjillä on sama ongelma kuin sinulla). Tämä on tarkalleen fakeroot tekee: se teeskentelee 0: n tehokkaan UID ja GID 0 ympäristölle, joka niitä vaatii.

Käytännössä et koskaan saa todellisia root -oikeuksia (päinvastoin kuin su ja sudo, jonka mainitset).

Kommentit

  • niin, en voi ’ käyttää muuttaa järjestelmän asetuksia ?? cuz komento, jota ’ ll ajaa, ajattelee sen ’ käyvän root-nimisenä ja tekee mitä haluamme sen tekevän. voitti ’ t sen?
  • @mrid Huomaa ” Käytännössä et koskaan saa todellisia juurioikeuksia ”. Joten kysely ei ole

Vastaa

Nähdäksesi selkeästi eron fakerootin ja todellisen sudo / su: n välillä, tee vain:

$ 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 

Niin kauan kuin olet fakeroot-kuoressa, näyttää siltä, että olet root – niin kauan kuin et yritä tehdä mitään joka todella tarvitsee juurioikeuksia. Ja juuri tämän pakkaustyökalun on tehtävä paketeista, jotka ovat järkeviä kaikissa koneissa.

Itse asiassa, kun käytät fakerootia pakkaamiseen, haluat saavuttaa on saada fakeroot-sovelluksessa käyttämäsi työkalut nähdäksesi tiedostosi juuri omistamana. Ei enempää eikä vähempää. Joten su tai sudo ei toimi oikean tiedostomuodon saamiseksi.

Kommentit

  • Eikö väärentäjä ole vaarallinen? Jos luot tiedoston, jolla on suid-bitti ja rx-perm, tiedosto luodaan rootin omistamana, kenen tahansa suorittamana root-tiedostona! Tai ehkä suid-bitin asettaminen ei onnistu?
  • Ei hyvää. Kokeilin tämän itse. Ensisijainen syy fakerootille on hankkia omistajuusjuuri: root rakennettuihin paketteihin olematta itse juuria. Asennetuilla paketeilla on kuitenkin oikeat käyttöoikeudet.
  • Kaikki oli hyvin hämmentävää, kunnes luin @ ntzrmtthihu777 ’ s-kommentin!
  • Anteeksi, En ymmärrä kuvausta ’. Miksi et korjata työkaluja niin, että ne eivät ’ valittaa, jos et ole root? Aiheeseen liittyvänä kysymyksenä: Loppujen lopuksi fakeroot-sovelluksessa luomasi tiedostot eivät ole oikeastaan juuren omistuksessa. Eikö ’ t tarkoita, että kun asennan tällaisen .deb -tiedoston, kaikki /usr tiedostot omistaa kuka tahansa käyttäjä, nimeltään fakeroot?
  • @ JohannesSchaub-litb, ei se, että ’ on asia. Tiedostot eivät ole juuren omistuksessa, mutta fakeroot -kuoren sisällä ne näyttävät olevilta. Kun .deb-paketti luodaan tämän kuoren sisään, tiedoston omistaja luetaan tiedostojärjestelmästä (joka fakeroot sieppaa ja palauttaa root) ja säilytetään pakkauksessa. Pakettia asennettaessa dpkg vaatii sitten pääkäyttäjän oikeudet, koska paketti osoittaa, että tiedoston on oltava rootin omistuksessa.

Vastaa

Koska vastauksia on vaikea ymmärtää (itselleni) ja niiden ymmärtäminen vaati jonkin verran ajattelua ( tämä kommentti sai minut ymmärtämään sen), minä ”m annan toivottavasti paremman selityksen.

1. Mitä tapahtuu fakerootissa

Ei muuta kuin mitä tapahtuu oman käyttäjän kanssa. Ehdottomasti mitään muuta. Jos fakeroot (jota kutsutessasi saat uuden kuoren, kuten sudo tekisi), teeskennellä tekevänsä asioita, joille tarvitset luvan, ja poistua, mitään ei tapahdu.

Jos ajattelet sitä, se on ajanhukkaa. Miksi tekisit sellaista, mitä ei todellisuudessa tapahdu? Se on hullua. Et olisi yksinkertaisesti voinut tehdä mitään siitä, eikä eroa olisi ollut, koska siitä ei ole jälkiä.

Odota hetki …

2. Jälki fakeroot

fakeroot -kohdasta voi äljellä olla jälkeä. Tarkastellaan komennoja kohdassa MortenSickelin vastaus , joka on aika mukava ja ansaitsee ylimääräisen äänen:

$ 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 

Ensi silmäyksellä se näyttää jos olet käyttänyt fakeroot, se oli ajanhukkaa. Loppujen lopuksi, jos et olisi käyttänyt fakeroot, olisit saanut saman asia.

Tässä on hienovarainen asia:

$ cat root.tst Wow I have root access 

Tämä tarkoittaa, että tiedoston sisältö muistaa edelleen olevan juuri. Saatat sanoa, että fakeroot -toiminnon käyttämättä jättäminen olisi tuottanut samat tulokset. Olet oikeassa, tämä esimerkki on liian yksinkertainen.

Otetaan toinen esimerkki:

$ 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 

Katsotaan, mitä tapahtui. Teeskentelin olevani root, joka on täysin tehoton, ja loin x ja y. Teeskentelin x kuuluvan myuser ja y kuuluvaksi ryhmään root. Ne itse asiassa kuuluvat ryhmään myuser (kuten voimme nähdä lopulta), mutta minä vain teeskentelin sen olevan sellainen.

Sitten loin luettelon ja tallensin mielikuvituksen tiedostoon. Myöhemmin katsellessani tiedostoa näen kenen kuvittelin tiedostojen omistavan. Jälleen, he eivät todellakaan ole sellaisten ihmisten omistamia, joita kuvittelin, vaan vain kuvittelin sen.

3. Joten … Miksi haluat sen uudestaan?

Saatat sanoa, että minun ei oikeastaan tarvinnut väärennettyä pääkäyttäjää luomaan kyseistä luetteloa. Olisin voinut yksinkertaisesti luoda luettelon ja muokata sitä vastaamaan mielikuvitukseni. Olet oikeassa, et tarvinnut sitä varten fakeroot. Itse asiassa, kun tiedät, että fakeroot ei todellakaan tee mitään, et voi olla mahdollisesti hankkinut kykyä, jota sinulla ei ollut aiemmin.

Mutta , ja tästä fakeroot on kyse, luettelon muokkaaminen voi olla ei-triviaalia.Kuten järjestelmässäsi asennettavan paketin yhteydessä, sinulla on tar ed, gzip ed, xz ed, bzip2 ed tai jokin muu muoto, joka pitää tiedostosi yhdessä ja muistaa niiden oikeudet ja omistajat. Voitteko helposti muokata pakattua tiedostoa ja muokata tiedoston omistajuutta? En tiedä sinusta, mutta en voi ajatella tapaa.

Voisiko olla rakennettu työkalu, joka, kun kaikki on pakattu, se muokkaa pakattua tiedostoa ja muokkaa ohjelmallisesti omistajuuksia ja käyttöoikeuksia ? Kyllä voi. Joten joko voisit väärentää omistukset ennen pakkaamista tai muuttaa niitä sen jälkeen. Debianin ihmiset päättivät, että edellinen on helpompaa.

4. Miksi et käytä vain sudo?

Ensinnäkään, et tarvitse pääkäyttöoikeuksia ohjelmiston rakentamiseen ja et tarvitse pääkäyttöoikeuksia niiden pakkaamiseen. Joten jos et tarvitse sitä, sinun on todellakin oltava Windows-käyttäjä edes ajatellaksesi saada lupa. Mutta sarkasmi syrjään, sinulla ei ehkä edes ole juurisalasanaa.

Lisäksi sanotaan, että sinulla on juurioikeudet. Ja sanotaan, että haluat teeskennellä, että tiedostolla on oltava vain lukuoikeus juuri. Joten sinä sudo, vaihdat tiedoston omistajaksi ja oikeuksiksi root, pääset juurikuoresta ja yrität pakata kaiken. Epäonnistut, koska nyt et voi enää lukea tiedostoa, koska sinulla ei ole pääkäyttäjän oikeuksia. Joten sinun on sudo ja pakattava ja rakennettava paketti juurena. Tehokkaasti sinun on tehtävä kaikki pääkäyttäjänä.

Tämä on huono TM .

Pakkaajana et tarvitse pääkäyttäjän oikeuksia eikä sinun pitäisi hankkia sitä. Asennat paketin, sinun on ehkä asennettava jokin tiedosto (A) pääkäyttäjänä ja siellä tarvitset juuri käyttöoikeudet. Kaikki fakeroot tekee tämän mahdollistamiseksi. Sen avulla pakkausluettelo A kuuluu juurihakemistoon arkistoijalle, joten kun käyttäjä purkaa paketin, arkistoija tarvitsee juuriluvan ja luo A juuren omistuksessa.

Kommentit

  • Erinomainen kirjoitus, tämä tekee siitä selvän.
  • So either you could fake the ownerships before compressing, or change them after. Debian people decided the former is easier. Tämä auttoi minua ajatellessani jatkuvasti ’ miksi en muuttaisi sitä sen jälkeen? ’.
  • Kiitos, tämä puhdistaa hämmennyksen, joka minulla oli lukemisen jälkeen @Morten ’ s vastaus

vastaus

AFAIK, fakeroot suorittaa komennon ympäristössä, jossa sillä näyttää olevan root-oikeudet tiedostojen käsittelyyn. Tästä on hyötyä, kun käyttäjät voivat luoda arkistoja (tar, ar, .deb jne.), Joissa on tiedostoja, joilla on pääkäyttäjän oikeudet. Ilman fakerootia tarvitsisi juurioikeudet luoda arkistojen perustiedostot oikeilla oikeuksilla ja omistuksella ja pakata ne sitten, tai arkisto on rakennettava suoraan, ilman arkistointia.

fakeroot toimii korvaamalla tiedostojen manipulointikirjastofunktiot (chmod (), stat () jne.) sellaisilla, jotka jäljittelevät todellisten kirjastotoimintojen vaikutusta, jos käyttäjä olisi ollut juuri root.

Yhteenveto:

 fakeroot [-l|--lib library] [--faked faked-binary] [--] [command] 

Tarkista lisää täältä: fakeroot

Kommentit

  • @MaskTheSmokin: Joten fakeroot antaa sinulle superkäyttäjävoimaa vain tiedostojen manipulointiin.
  • Se ei todellakaan anna superkäyttäjäteho, se vain väärentää sen – siinä käynnissä oleva ohjelma ajattelee, että sillä on pääkäyttöoikeudet, vaikka se todella käyttää käyttäjän ’ normaaleja käyttöoikeuksia.
  • Missä on ero the program running in it thinks it has root privileges ja pääkäyttöoikeuksien omaavan ohjelman välillä? Jos osaan tehdä rm -rf / ja ohjelman, sen suorittaminen ajattelee, että minulla on juurioikeudet …
  • @userunknown Voit ehkä ohittaa rm ’ tarkistaa, että sinulla on riittävät käyttöoikeudet, mutta ydin itsessään ei halua ’ antaa sinun tehdä sen ; unlink -järjestelmäkutsu epäonnistuu. ’ ei ole yksin sovelluksen tehtävä käsitellä käyttöoikeuksia, tai voit ’ pystyä kirjoittamaan oman sovelluksesi, joka ei ole ’ t tarkista käyttöoikeudet ja tee sen kanssa mitä haluat
  • Esimerkki fakeroot tarpeen selvittämisestä olisi fantastinen. Näen fakerootin käyttötarkoitukset, mutta en ymmärrä miksi ihmiset eivät ’ pysty kiertämään juurioikeuksia siinä määrin kuin se ’ on helpompi väärentää se.

vastaus

Olen käyttänyt sitä pakettien rakennuskomentosarjoihin. En ollut varma, että komentosarjalla on juuritason käyttöoikeus, mutta komentosarjan oli silti luotava tar-tiedosto, joka sisälsi root-tiedostoja. Yksinkertaisin tapa tehdä se oli suorittaa paketinrakennuskomentosarja fakerootin alla, joka huijasi arkistoijan uskomaan, että tiedostot kuuluvat juurihakemistoon ja pakattu ne sellaisenaan arkiston sisään. Tällä tavalla, kun paketti purettiin kohdekoneeseen (kokonaan eri koneella), tiedostot eivät kuuluneet oudoille tai olemattomille käyttäjille. / p>

Kun ajattelen sitä, ainoa paikka, jonka olen nähnyt, oli jonkinlaisen arkiston rakentaminen: sulautettujen järjestelmien rootfit, tar.gz-arkistot, rpm-paketit, .deb-paketit jne.

Kommentit

  • fakeroot on kiertotyökalu viallisille pakkausohjelmistoille: luomiseen ei ole mitään syytä olla pääkäyttäjä tällaiset pakkaukset, b ut, koska ne ’ eivät salli sinun määrittää tiedostojen käyttöoikeuksia millään muulla tavalla kuin asettamalla ne suoraan tiedostojärjestelmään etukäteen, sinulla ei ole valinnanvaraa

Vastaus

Yksi yleinen käyttö on selvittää, mihin tiedostoihin vikaantunut binääri todella halusi päästä. Eli kovien koodattujen polkujen ja virheellisen poikkeusten käsittelyn aiheuttamien virheiden selvittäminen ja korjaaminen tai niiden kiertäminen.

Vastaa

Voit käytä fakerootia ilman juurioikeuksia. Jos sinulla olisi su ja / tai sudo, voit tuhota järjestelmän yksinkertaisella rm -rf /, mutta enintään fakeroot-sovelluksella poistat kotihakemistosi.

Kommentit

  • Se ei ole ’ t selittää tarpeen käyttää fakeroot. Voit poistaa kotihakemiston itse.

Vastaa

Yksinkertainen vastaus:

su ja sudo ajaa komennot juurina. fakeroot ei osittaisen hiekkalaatikkojärjestelmänsä ulkopuolella.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *