Provided by: fakeroot_1.37.1.2-1_amd64 bug

NAMN

       fakeroot - utför ett kommando i en miljö som fejkar root-privilegier för filmanipulation

SYNOPSIS

       fakeroot  [-l|--lib  library] [--faked faked-binary] [-i load-file] [-s save-file] [-u|--unknown-is-real]
       [-b|--fd-base] [-h|--help] [-v|--version] [--] [command]

BESKRIVNING

       fakeroot utför ett kommando i en miljö där kommandot tror sig ha  root-privilegier  för  filmanipulering.
       Detta  är  användbart  för  att ge användare möjlighet att skapa arkiv (tar, ar, .deb osv) som innehåller
       filer med root-rättigheter/ägarskap. Utan fakeroot tvingas man att ha root-privilegier för att  skapa  de
       filer  arkivet består av med korrekt ägarskaps- och rättighetsinformation, alternativt konstruera arkiven
       manuellt utan att använda arkiveringsprogrammet.

       fakeroot works by replacing the file manipulation library functions (chmod(2), stat(2) etc.) by ones that
       simulate the effect the real library functions would have had, had  the  user  really  been  root.  These
       wrapper  functions  are  in  a  shared  library  /usr/lib/*/libfakeroot-*.so  or similar location on your
       platform. The shared object is loaded through the  LD_PRELOAD  mechanism  of  the  dynamic  loader.  (See
       ld.so(8))

       Om  du  planerar  att  bygga  paket  med  hjälp  av  fakeroot,  försök  först att bygga fakeroot-paketet:
       ”debian/rules build”-stadiet har ett par tester (som mestadels testar efter buggar i gamla  versioner  av
       fakeroot).  Om  dessa  tester misslyckas (till exempel på grund av att du har vissa libc5-program på ditt
       system) så är det troligt att du också kommer att misslyckas bygga andra paket, och det  är  möjligt  att
       dessa fel blir betydligt svårare att hitta.

       Also,  note  that  it's best not to do the building of the binaries themselves under fakeroot. Especially
       configure and friends don't like it when the system suddenly behaves differently from  what  they  expect
       (or, they randomly unset some environment variables, some of which fakeroot needs).

FLAGGOR

       -l bibliotek, --lib bibliotek
              Ange ett alternativt bibliotek med ersättningsfunktioner.

       --faked binär
              Ange en alternativ binär att använda istället för faked(1).

       [--] kommando
              Any command you want to be run as fakeroot. Use ‘--’ if in the command you have other options that
              may confuse fakeroot's option parsing.

       -s sparfil
              Spara  fakeroot-miljön  till  sparfil vid avslut. Denna fil kan användas för att senare återställa
              miljön med -i. Men om denna filen skulle läcka kommer fakeroot börja bete sig på konstiga sätt  om
              du  inte  låter  bli  filerna  som använts inuti fakeroot när du är utanför miljön. Detta kan dock
              fortfarande vara användbart. Det kan till exempel användas med rsync(1) för  att  säkerhetskopiera
              och  återställa  hela  katalogträd  kompletta  med användare, grupp och enhetsinformation utan att
              behöva vara root. Se /usr/share/doc/fakeroot/README.saving för vidare information.

       -i läsfil
              Läs in en fakeroot-miljö som tidigare sparats via -s från läsfil. Notera att detta  inte  implicit
              sparar  filen,  använd  -s också för det beteendet. Användning av samma fil för både -i och -s vid
              samma fakeroot-körning är säkert.

       -u, --unknown-is-real
              Använd det riktiga ägarskapet för filer som inte tidigare är kända av fakeroot  istället  för  att
              låtsas att de ägs av root:root.

       -b fd  Ange   fd-bas   (endast   TCP-läge).   fd  är  det  minsta  fildeskriptornummer  som  används  för
              TCP-anslutningar; detta kan vara viktigt för att  undvika  konflikter  med  fildeskriptorerna  som
              används av program som körs under fakeroot.

       -h     Visa hjälp.

       -v     Visa version.

EXEMPEL

       Här  är  ett  exempel  på  hur  fakeroot  kan  användas.  Notera  att i den fejkade root-miljön så lyckas
       filmanipulering som kräver root-privilegier, trots att den egentligen inte utförs.

       $  whoami
       joost
       $ fakeroot /bin/bash
       #  whoami
       root
       # mknod hda3 b 3 1
       # ls -ld hda3
       brw-r--r--   1 root     root       3,   1 Jul  2 22:58 hda3
       # chown joost:root hda3
       # ls -ld hda3
       brw-r--r--   1 joost    root       3,   1 Jul  2 22:58 hda3
       # ls -ld /
       drwxr-xr-x  20 root     root         1024 Jun 17 21:50 /
       # chown joost:users /
       # chmod a+w /
       # ls -ld /
       drwxrwxrwx  20 joost    users        1024 Jun 17 21:50 /
       # exit
       $ ls -ld /
       drwxr-xr-x  20 root     root         1024 Jun 17 21:50 //
       $ ls -ld hda3
       -rw-r--r--   1 joost    users           0 Jul  2 22:58 hda3

       Enbart de operationer som användaren joost skulle kunna ha genomfört som sig själv utförs på riktigt.

       fakeroot was specifically written to enable users to create Debian  GNU/Linux  packages  (in  the  deb(5)
       format)  without  giving  them  root  privileges.  This  can  be  done by commands like dpkg-buildpackage
       -rfakeroot or debuild -rfakeroot (actually, -rfakeroot is default in debuild nowadays, so you don't  need
       that argument).

SÄKERHETSASPEKTER

       fakeroot är ett vanligt program utan setuid. Det ger inte användaren några extra privilegier, och minskar
       inte systemets säkerhet.

FILER

       /usr/lib/*/libfakeroot-*.so The shared library containing the wrapper functions.

MILJÖ

       FAKEROOTKEY
              The  key  used  to  communicate  with  the  fakeroot  daemon.  Any  program started with the right
              LD_PRELOAD and a FAKEROOTKEY of a running daemon will automatically connect to  that  daemon,  and
              have  the  same  "fake"  view of the file system's permissions/ownerships (assuming the daemon and
              connecting program were started by the same user).

       LD_LIBRARY_PATH

       LD_PRELOAD
              fakeroot  is  implemented  by  wrapping  system   calls.   This   is   accomplished   by   setting
              LD_LIBRARY_PATH=/usr/lib/fakeroot  and  LD_PRELOAD=libfakeroot.so.0. That library is loaded before
              the system's C library, and so most of the library functions are intercepted by it. If you need to
              set either LD_LIBRARY_PATH or LD_PRELOAD from within a fakeroot  environment,  it  should  be  set
              relative to the given paths, as in LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/foo/bar/

BEGRÄNSNINGAR

       Biblioteksversioner
              Varje  kommando  som utförs inom fakeroot måste vara länkat mot samma version av libc som fakeroot
              självt.

       open()/create()
              fakeroot innehåller inga ersättningsfunktioner för open(), create(), osv. Så om  användaren  joost
              antingen utför

              touch foo
              fakeroot
              ls -al foo

              eller omvänt,

              fakeroot
              touch foo
              ls -al foo

              fakeroot  has  no  way  of knowing that in the first case, the owner of foo really should be joost
              while the second case it should have been root. For the Debian packaging, defaulting to giving all
              "unknown" files uid=gid=0, is always OK. The real way around this is to wrap open() and  create(),
              but  that  creates  other problems, as demonstrated by the libtricks package. This package wrapped
              many more functions, and tried to do a lot more than fakeroot . It turned out that a minor upgrade
              of libc (from one where the stat()  function didn't use open()  to one  with  a  stat()   function
              that  did  (in  some  cases) use open() ), would cause unexplainable segfaults (that is, the libc6
              stat()  called the wrapped open() , which would then call the libc6 stat()  ,  etc).  Fixing  them
              wasn't all that easy, but once fixed, it was just a matter of time before another function started
              to  use  open(),  never  mind trying to port it to a different operating system. Thus I decided to
              keep the number of functions wrapped by fakeroot as small as possible, to limit the likelihood  of
              ‘collisions’.

       GNU configure (and other such programs)
              fakeroot  ändrar  i  praktiken  hur  systemet  beter  sig. Program som försöker känna av systemets
              beteende (exempelvis GNU configure) kan bli förvirrade av detta (och även om de inte blir  det  så
              kan  fakeroot  bli  förvirrat).  Därför  är  det inte rekommenderat att utföra ”configure” inifrån
              fakeroot.  Då  configure  bör  anropas  av  ”debian/rules  build”,  så  borde   ”dpkg-buildpackage
              -rfakeroot” ta hand om detta på ett korrekt sätt.

BUGGAR

       fakeroot  har  ingen  ersättningsfunktion för open(). Detta i sig självt är inget fel, men om ett program
       utför open("fil", O_WRONLY, 000), försöker skriva till filen ”fil”, stänger den, och sedan  försöker  att
       läsa  filen,  så  misslyckas  detta  då  filen  kommer att ha rättigheterna 000. Felet består i att om en
       process med root-privilegier försöker sig på det  samma,  så  kommer  anropet  till  open()  att  lyckas,
       eftersom  filrättigheter inte kontrolleras alls för root. Jag valde att inte skriva ersättningsfunktioner
       för  open(),  eftersom  open()  används  av  många  andra  funktioner   i   libc   (även   de   som   har
       ersättningsfunktioner),  vilket  ger  upphov  till  cirkelreferenser eller potential för cirkelreferenser
       ifall implementationen av vissa funktioner i libc förändras).

LICENS

       fakeroot distribueras under GNU General Public License. (GPL 2.0 eller senare).

FÖRFATTARE

       joost witteveen
              <joostje@debian.org>

       Clint Adams
              <clint@debian.org>

       Timo Savola

ÖVERSÄTTNING

       David Weinehall <tao@kernel.org>

MANUALSIDA

       mostly by J.H.M. Dassen <jdassen@debian.org> with rather a lot of modsifications and additions  by  joost
       and Clint.

SE ÄVEN

       debuild(1), dpkg-buildpackage(1), faked(1), /usr/share/doc/fakeroot/DEBUG

Debian Project                                     2024-12-19                                        fakeroot(1)