pkgsrc-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
mysqld rc.d script
The mysqld rc.d script has two problems when launching logger
a) it requires su -m which runs it in a subprocess using root's login
shell
b) it keeps stderr open as a pipe which can lead to blocking when
launching from some scripts
For a) we can use perl to change the effective uid directly with $>=
For b) we can close stderr
I propose changing:
/usr/pkg/bin/perl -e 'use POSIX qw(setsid); setsid(); { exec (@ARGV) }' /usr/bin/su -m ${mysqld_user} -c 'logger -t nbmysqld_safe'
to:
uid=`id -u ${mysql_user}`
/usr/pkg/bin/perl -e 'use POSIX qw(setsid); setsid(); { $>='$uid'; exec (@ARGV) }' logger -t nbmysqld_safe 2>&-
Before:
# ps ax | grep logger
888 ? I 0:00.01 logger -t nbmysqld_safe
1287 ? Is 0:00.18 _tcsh -m -c logger -t nbmysqld_safe (tcsh)
# ls -l /proc/`pgrep logger`/fd/2
prw------- 1 root wheel 0 Apr 10 15:56 /proc/888/fd/2
After:
# ps ax | grep logger
11106 ? Is 0:00.07 logger -t nbmysqld_safe
# ls -l /proc/`pgrep logger`/fd/2
crw-rw-rw- 1 root wheel 2, 2 Apr 10 14:53 /proc/11106/fd/2
# ls -l /dev/null
crw-rw-rw- 1 root wheel 2, 2 Apr 10 15:50 /dev/null
Any reason for me not to commit this change?
--
Stephen
Home |
Main Index |
Thread Index |
Old Index