---
name: "fakeroot-ng"
section: "1"
platform: "linux"
package: "fakeroot-ng"
version: "0.18-4.1"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/fakeroot-ng"
---

# fakeroot-ng(1)

run a command while making it believe it is running as root

## NAME

fakeroot-ng - run a command while making it believe it is running as root

## SYNOPSIS

**fakeroot-ng** \[ **-l***logfile* **\[-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)](/fakeroot/1.md). 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)](/open/2.md) system call) could not be intercepted, which caused** **emulating other operations (mainly the [chroot(2)](/chroot/2.md) 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)](/ptrace/2.md) is being used.**

## PARAMETERS

- **-p***state\_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.**

- **-l***log\_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)](/fakeroot/1.md), [**fakechroot**(1)](/fakechroot/1.md), [**ptrace**(2)](/ptrace/2.md), [**ld.so**(8)](/ld.so/8.md), [**chroot**(1)](/chroot/1.md)

## 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**
