Wo Rechte für Unterverzeichnis in /var/run festlegen?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
petrolman
Beiträge: 42
Registriert: 20.05.2010 14:54:22

Wo Rechte für Unterverzeichnis in /var/run festlegen?

Beitrag von petrolman » 31.08.2015 15:14:51

Hallo,
ich habe eine alte MySQL Version manuell installiert unter Debian 7.8. MySQL wird über /etc/init.d/mysql gestartet, und ist in den Runlevel 2-5 angemeldet, damit es auch nach einem Reboot gestartet wird. Socket- und Pidfile liegen in /var/run/mysqld/. Die Rechte für das Verzeichnis habe ich manuell eingestellt mit 755 . Jedesmal wenn ich den Server neu starte, stehen die Rechte allerdings immer auf 750, da die Verzeichnisse in /var/run ja erst beim Neustart angelegt werden. Woher holt sich Debian denn diese Information? Denn in /etc/init.d/mysql gibt es keine Anweisung zum Anlegen dieses Verzeichnisses mit diesen Rechten. Es wird ja nur in /etc/my.cnf das Verzeichnis angegeben: z.B. socket = /var/run/mysqld/mysqld.sock. Irgendwo müsste doch folgende Anweisung stehen?

[ -d /var/run/mysqld ] || install -m 755 -o mysql -g root -d /var/run/mysqld

Ein # egrep -r 'mkdir.*/var/run' /etc listet nur:
/etc/network/if-up.d/mountnfs: mkdir /var/run/network 2>/dev/null || true
/etc/network/if-up.d/mountnfs: if mkdir /var/run/network/mountnfs 2>/dev/null ; then
/etc/init.d/ssh: mkdir /var/run/sshd

Wo holt sich denn Debian die Standardrechte für die /var/run Unterzeichnisse und wie kann es für MySQL so einstellen, dass das Verzeichnis /var/run/mysqld/ mit 755 angelegt wird?

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Wo Rechte für Unterverzeichnis in /var/run festlegen?

Beitrag von uname » 31.08.2015 16:02:53

/etc/init.d/mysql ruft normalerweise /usr/bin/mysqld_safe auf (Wechsel root auf mysql). Dort wird unter anderem die "umask" für den Benutzer mysql gesetzt. Hier könnte irgendwo ein Fehler sein. Vergleiche mit dem Original Debianmysql-server-5.5

Benutzeravatar
petrolman
Beiträge: 42
Registriert: 20.05.2010 14:54:22

Beitrag von petrolman » 01.09.2015 11:21:22

Ich stoppe MySQL über /etc/init.de/mysql und lösche das Verzeichnis /run/mysqld. Dann starte ich MySQL erneut und /run/mysqld wird wieder mit den Rechten 750 (mysql.root) angelegt.
Ich weiß nicht, wo der Fehler sein soll. Ich habe jetzt einfach das chmod ins Start-Skript nach dem wait_for_pid eingetragen.

case "$mode" in
'start')
# Start daemon
if test -x $bindir/mysqld_safe
then
# Give extra arguments to mysqld with the my.cnf file. This script may
# be overwritten at next upgrade.
echo $echo_n "Starting MySQL"
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &
wait_for_pid created

chmod 0755 /run/mysqld
[...]

Antworten