configure: add option to set default user

The default user is root by default, which disables root dropping by
default. The user directive or the -u option can still be used to set
the user.
This commit is contained in:
Miroslav Lichvar 2014-04-09 16:28:44 +02:00
parent 3edd3fe5a4
commit ff31702f74
5 changed files with 20 additions and 10 deletions

View file

@ -1028,8 +1028,9 @@ to work well, it relies on @code{chronyd} having been able to determine
accurate statistics for the difference between the real time clock and
system clock last time the computer was on.
@item -u <user>
When this option is used, chronyd will drop root privileges to the specified
user. So far, it works only on Linux when compiled with capabilities support.
This option sets the name of the user to which will @code{chronyd} switch to
drop root privileges if compiled with Linux capabilities support (default
@code{@DEFAULT_USER@}).
@item -q
When run in this mode, @code{chronyd} will set the system clock once
and exit. It will not detach from the terminal.
@ -2958,10 +2959,11 @@ be set to run 0.183ppm faster than it would be without the compensation, etc.
@node user directive
@subsection user
The @code{user} directive sets the name of the user to which will
@code{chronyd} drop root privileges after the initialisation. So far, it works
only on Linux when compiled with capabilities support.
@code{chronyd} switch on initialisation to drop root privileges.
So far, it works only on Linux when compiled with capabilities support.
Setting the name to root will disable it.
By default, root privileges are not dropped.
The default value is @code{@DEFAULT_USER@}.
@c }}}
@c }}}
@c {{{ S:Running chronyc

View file

@ -103,8 +103,9 @@ between the real time clock and system clock last time the
computer was on.
.TP
\fB\-u\fR \fIuser\fR
When this option is used, chronyd will drop root privileges to the specified
user. So far, it works only on Linux when compiled with capabilities support.
This option sets the name of the user to which will \fBchronyd\fR switch to
drop root privileges if compiled with Linux capabilities support (default
\fB@DEFAULT_USER@\fR).
.TP
.B \-q
When run in this mode, chronyd will set the system clock once

2
conf.c
View file

@ -203,7 +203,7 @@ static int lock_memory = 0;
static char *leapsec_tz = NULL;
/* Name of the user to which will be dropped root privileges. */
static char *user = NULL;
static char *user = DEFAULT_USER;
typedef struct {
NTP_Source_Type type;

9
configure vendored
View file

@ -113,6 +113,7 @@ For better control, use the options below.
--disable-rtc Don't include RTC even on Linux
--disable-linuxcaps Disable Linux capabilities support
--disable-forcednsretry Don't retry on permanent DNS error
--with-user=USER Specify default chronyd user [root]
--with-sendmail=PATH Path to sendmail binary [/usr/lib/sendmail]
--enable-debug Enable debugging support
@ -191,6 +192,7 @@ feat_pps=1
try_setsched=0
try_lockmem=0
feat_forcednsretry=1
default_user="root"
mail_program="/usr/lib/sendmail"
for option
@ -268,6 +270,9 @@ do
--disable-forcednsretry)
feat_forcednsretry=0
;;
--with-user=* )
default_user=`echo $option | sed -e 's/^.*=//;'`
;;
--with-sendmail=* )
mail_program=`echo $option | sed -e 's/^.*=//;'`
;;
@ -618,6 +623,7 @@ fi
add_def DEBUG $debug
add_def DEFAULT_CONF_FILE "\"$SYSCONFDIR/chrony.conf\""
add_def DEFAULT_USER "\"$default_user\""
add_def MAIL_PROGRAM "\"$mail_program\""
if [ -f version.txt ]; then
@ -649,7 +655,8 @@ do
s%@MANDIR@%${MANDIR}%;\
s%@INFODIR@%${INFODIR}%;\
s%@LOCALSTATEDIR@%${LOCALSTATEDIR}%;\
s%@CHRONYVARDIR@%${CHRONYVARDIR}%;"\
s%@CHRONYVARDIR@%${CHRONYVARDIR}%;\
s%@DEFAULT_USER@%${default_user}%;"\
< ${f}.in > $f
done

2
main.c
View file

@ -466,7 +466,7 @@ int main
if (!user) {
user = CNF_GetUser();
}
if (user) {
if (user && strcmp(user, "root")) {
SYS_DropRoot(user);
}