(Vielen Dank an @Zulakis und eine Antwort auf Serverfault für den Hinweis, dass diese Antwort nicht mit Ubuntus laufender Entwicklung Schritt gehalten hat.)
Mit der Annahme der systemd
ab 15.04 , gibt es jetzt einen zentralen Mechanismus für die Erstellung von temporären Dateien und Verzeichnisse wie diese. Ein Dienst wollen diese Methode verwenden , können entfernen mkdir
Befehle in seinem eigenen Startskript und stattdessen eine platzieren .conf
Datei in /etc/tmpfiles.d
, /run/tmpfiles.d
oder /usr/lib/tmpfiles.d
, mit Ubuntu Dienste die letzte Option zu bevorzugen scheinen. Zum Beispiel hat mein System jetzt:
$ egrep -r /var/run /usr/lib/tmpfiles.d
/usr/lib/tmpfiles.d/var.conf:L /var/run - - - - ../run
/usr/lib/tmpfiles.d/sudo.conf:d /var/run/sudo 0711 root root
/usr/lib/tmpfiles.d/sudo.conf:D /var/run/sudo/ts 0700 root root
/usr/lib/tmpfiles.d/postgresql.conf:d /var/run/postgresql 2775 postgres postgres - -
/usr/lib/tmpfiles.d/sshd.conf:d /var/run/sshd 0755 root root
/usr/lib/tmpfiles.d/screen-cleanup.conf:d /var/run/screen 0775 root utmp
Das d
Mittel, um ein Verzeichnis zu erstellen, wenn es noch nicht existiert, ist der Pfad, und der Rest sind die Berechtigungen, Benutzer und Gruppen. Diese Verzeichnisse werden unabhängig davon erstellt, ob der entsprechende Dienst jemals gestartet wurde.
Eine vollständige Dokumentation finden Sie unter man tmpfiles.d
.
ALTE ANTWORT VOR DEM SYSTEM:
Sieht so aus, als würden sie beim Start dynamisch von einzelnen Diensten erstellt:
$ sudo egrep -r 'mkdir.*/var/run' /etc
/etc/init.d/ssh: mkdir /var/run/sshd
/etc/init.d/bind9: mkdir -p /var/run/named
/etc/init.d/timidity: mkdir -p /var/run/timidity
/etc/init.d/bzflag: mkdir -p /var/run/bzflag
/etc/init.d/dns-clean:mkdir /var/run/pppconfig >/dev/null 2>&1 || true
/etc/init/winbind.conf: mkdir -p /var/run/samba/winbindd_privileged
/etc/init/dbus.conf: mkdir -p /var/run/dbus
/etc/init/ssh.conf: mkdir -p -m0755 /var/run/sshd
/etc/init/libvirt-bin.conf: mkdir -p /var/run/libvirt
/etc/init/cups.conf: mkdir -p /var/run/cups/certs
Ich glaube, das ist derjenige, der mit mysqld umgeht:
[ -d /var/run/mysqld ] || install -m 755 -o mysql -g root -d /var/run/mysqld
/lib/init/apparmor-profile-load usr.sbin.mysqld
man install
sagt, dass das -d Formular "alle Komponenten der angegebenen Verzeichnisse erstellt".