74

What is this folder: /run/user/1000 on my Fedora system and what does it do?

~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.2G   20K  1.2G   1% /run/user/1000
86

/run/user/$uid is created by pam_systemd and used for storing files used by running processes for that user. These might be things such as your keyring daemon, pulseaudio, etc.

Prior to systemd, these applications typically stored their files in /tmp. They couldn't use a location in /home/$user as home directories are often mounted over network filesystems, and these files should not be shared among hosts. /tmp was the only location specified by the FHS which is local, and writable by all users.

However storing all these files in /tmp is problematic as /tmp is writable by everyone, and while you can change the ownership & mode on the files being created, it's more difficult to work with.

So systemd came along and created /run/user/$uid. This directory is local to the system and only accessible by the target user. So applications looking to store their files locally no longer have to worry about access control.
It also keeps things nice and organized. When a user logs out, and no active sessions remain, pam_systemd will wipe the /run/user/$uid directory out. With various files scattered around /tmp, you couldn't do this.

  • 16
    Should mention that it is called $XDG_RUNTIME_DIR, documented at standards.freedesktop.org/basedir-spec/basedir-spec-latest.html – o11c Oct 19 '14 at 6:32
  • What if: I have started a "background" computation process with nohup, and it saves its intermediate results/data in a temp file. Can I count on it not being wiped while the process is running, or it will be wiped, and the process started with nohup will loose its data? – imz -- Ivan Zakharyaschev May 19 '15 at 9:39
  • It's unlikely to be wiped, but /run/user is a tmpfs filesystem in fedora, so it'll be limited to the amount of space allocated to it. See the df output above. – jsbillings Jul 4 '15 at 23:51
  • What if the pidfile is a service running under root. Should it's PID go under /var/run or /var/run/user/0 ? If since there is no active sessions will it be removed? – TSG Mar 25 '16 at 14:20
11

According to the latest draft of FHS (File Hierarchy Standard), /run:

This directory contains system information data describing the system since it was booted. Files under this directory must be cleared (removed or truncated as appropriate) at the beginning of the boot process.

The purposes of this directory were once served by /var/run. In general, programs may continue to use /var/run to fulfill the requirements set out for /run for the purposes of backwards compatibility. Programs which have migrated to use /run should cease their usage of /var/run, except as noted in the section on /var/run.

Programs may have a subdirectory of /run; this is encouraged for programs that use more than one run-time file. Users may also have a subdirectory of /run, although care must be taken to appropriately limit access rights to prevent unauthorized use of /run itself and other subdirectories.

In the case of the /run/user directory, is used by the different user services, like dconf, pulse, systemd, etc. that needs a place for their lock files and sockets. There are as many directories as different users UID's are logged in the system.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.