NAME¶
fakeroot-ng - run a command while making it believe it is running as root
SYNOPSIS¶
fakeroot-ng [ 
-llogfile [-f] ] [
  -p persist_file ] [-d] command line
DESCRIPTION¶
This manual page documents the 
fakeroot-ng command.
Fakeroot-ng allows running a process without any change to the permissions, but
  fooling the process into thinking that it is running with root permissions.
  This typically involves intercepting certain system calls the process performs
  and manipulating their results. In order for the effect to be complete enough,
  previous manipulations have to be remembered, and consistent results returned.
The idea behind fakroot-ng was first implemented by a tool called fakeroot(1).
  This tool used LD_PRELOAD of the dynamic linking to glibc in order to
  intercept the system calls. While this approach is very rebust and very
  platform independent, it does suffer in scope. In particular, certain
  operations (mostly the 
open(2) system call) could not be intercepted, which
  caused emulating other operations (mainly the 
chroot(2) system call) to not be
  supported.
Fakeroot-ng strives to fill those gaps by using a totally different technology
  for system call interception. Instead of using LD_PRELOAD, 
ptrace(2) is being
  used.
PARAMETERS¶
  - -pstate_file
 
  - Before the first process is being run, loads from state_file the
      information needed in order to maintain a consistent view of file
      permissions and owners across fakeroot-ng runs. This image is also
      automatically saved when the last process exists. If more then one
      instance of fakeroot-ng is loaded simultaneously, both with the same
      state_file, then the two instances will share state and their
      processes will see the same picture at runtime.
 
  - -llog_file
 
  - Causes fakeroot-ng to dump to log_file internal state and
      processing information. This is mostly useful for cases where fakeroot-ng
      fails to act as expected.
 
  - -f
 
  - Causes the log file to be flushed after every print. Guarantees that the
      important hint as to why the crash happened will be in the actual file,
      but has non-negligent performance effect. Only has effect if -l is
      specified.
 
  - -d
 
  - Tells fakeroot-ng not to completely daemonize itself. This is mostly
      useful in case of crashes that cause a core dump, as the debugger would
      normally change directory to root, which would prevent a core file from
      being created.
 
  - -v
 
  - Print out the version number and copyright info and exit without doing
      anything.
 
  - -h
 
  - Print out a short help screen and exit.
 
SIGNALS¶
Sending the ALRM signal to the fakeroot-ng master process makes it dump to the
  log a complete list of all tracked processes, along with their parent and
  current state. This is, mostly, a debugging feature. The signal does nothing
  if 
-l is not active. Please note that no process executes any system
  calls while this takes place, so this feature essentially freezes all of the
  debugged processes for a few seconds.
ENVIRONMENT VARIABLES AND SHARED MEMORY¶
Some of the communication between fakeroot-ng and the program being fooled is
  done through a shared memory mechanism. In order to create it, fakeroot-ng
  creates a temporary file and maps it into memory as executable segment. Some
  systems have their /tmp folder mounted with the 
noexec flag. On those
  system, the mmap will fail and fakeroot-ng will not run.
There are two environment variables that allow fakeroot-ng to find a folder in
  which the shared memory files can be created. The first is 
TMPDIR. If
  it exists, fakeroot-ng will use it to create the temporary files, rather than
  /tmp. The problem with using 
TMPDIR for creating temporary files is
  that fakeroot-ng is not the only one to use it. For that reason, if the
  environment has a variable called 
FAEKROOT_TMPDIR, its value will
  override that of either 
TMPDIR or the default /tmp directory.
On Linux, it is usually entirely safe to point 
FAKEROOT_TMPDIR to
  
/dev/shm, which usually lives up to expectations regarding mount mode
  and writability.
SECURITY CONSIDERATIONS¶
Fakeroot-ng is a non-SUID executable, and does not modify any sensitive data.
  It, therefor, does not affect the overall security of the system. One may be
  tempted, however, to use fakeroot-ng as a security tool, for running processes
  with reduced privileges or inside a chroot jail. In addition to all the
  warnings that usually apply to using chroot jails as a security tool (in a
  nutshell - don't), the following should be understood.
Unlike previous implementations, fakeroot-ng uses a technology that leaves the
  traced process no choice regarding whether it will use fakeroot-ng's
  "services" or not. Compiling a program statically, directly calling
  the kernel and manipulating ones own address space are all techniques that can
  be trivially used to bypass LD_PRELOAD based control over a process, and do
  not apply to fakeroot-ng. It is, theoretically, possible to mold fakeroot-ng
  in such a way as to have total control over the traced process.
While it is theoretically possible, it has not been done. Fakeroot-ng does
  assume certain "nicely behaved" assumptions about the process being
  traced, and a process that break those assumptions may be able to, if not
  totally escape then at least circumvent some of the "fake"
  environment imposed on it by fakeroot-ng. As such, you are strongly warned
  against using fakeroot-ng as a security tool. Bug reports that claim that a
  process can deliberatly (as opposed to inadvertly) escape fakeroot-ng's
  control will either be closed as "not a bug" or marked as low
  priority.
It is possible that this policy be rethought in the future. For the time being,
  however, you have been warned.
BUGS¶
Plenty of those. See the "README" file for a list of known ones.
SEE ALSO¶
fakeroot(1), 
fakechroot(1), 
ptrace(2), 
ld.so(8),
  
chroot(1)
AUTHOR¶
Fakeroot-ng was written by Shachar Shemesh.
This manual page was written by Shachar Shemesh <shachar@debian.org>
PROJECT HOMEPAGE AND SUPPORT¶
http://fakeroot-ng.lingnu.com
Community support is available exclusively through the project's mailing list,
  at 
https://lists.sourceforge.net/lists/listinfo/fakerootng-devel.
Commercial support is available through Shachar's company, Lingnu Open Source
  Consulting Ltd., at 
http://www.lingnu.com