proc_pid_root

proc_pid_root(5) File Formats Manual proc_pid_root(5)

NAME

   /proc/pid/root/ - symbolic link to root directory

DESCRIPTION

   /proc/pid/root/
          UNIX  and  Linux support the idea of a per-process root of the filesystem, set by the chroot(2) system call.  This file is a symbolic link that points to the process's root di‐
          rectory, and behaves in the same way as exe, and fd/*.

          Note however that this file is not merely a symbolic link.  It provides the same view of the filesystem (including namespaces and the set of per-process mounts) as the  process
          itself.  An example illustrates this point.  In one terminal, we start a shell in new user and mount namespaces, and in that shell we create some new mounts:

              $ PS1='sh1# ' unshare -Urnm
              sh1# mount -t tmpfs tmpfs /etc  # Mount empty tmpfs at /etc
              sh1# mount --bind /usr /dev     # Mount /usr at /dev
              sh1# echo $$
              27123

          In a second terminal window, in the initial mount namespace, we look at the contents of the corresponding mounts in the initial and new namespaces:

              $ PS1='sh2# ' sudo sh
              sh2# ls /etc | wc -l                  # In initial NS
              309
              sh2# ls /proc/27123/root/etc | wc -l  # /etc in other NS
              0                                     # The empty tmpfs dir
              sh2# ls /dev | wc -l                  # In initial NS
              205
              sh2# ls /proc/27123/root/dev | wc -l  # /dev in other NS
              11                                    # Actually bind
                                                    # mounted to /usr
              sh2# ls /usr | wc -l                  # /usr in initial NS
              11

          In a multithreaded process, the contents of the /proc/pid/root symbolic link are not available if the main thread has already terminated (typically by calling pthread_exit(3)).

          Permission to dereference or read (readlink(2)) this symbolic link is governed by a ptrace access mode PTRACE_MODE_READ_FSCREDS check; see ptrace(2).

SEE ALSO

   proc(5)

Linux man-pages 6.9.1 2024-05-02 proc_pid_root(5)