mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-22 13:33:56 +03:00
sysusers: make group shadow support configurable
Some distros (openSUSE) don't have group shadow support enabled. This can lead to the following error: # systemd-sysusers Creating group foofoo with gid 478. # systemd-sysusers # groupdel foofoo # systemd-sysusers Creating group foofoo with gid 478. Failed to write files: File exists This patch adds --disable-gshadow option to configure. If used, systemd-sysvusers won't consider /etc/gshadow.
This commit is contained in:
parent
b20b0b6606
commit
b14e1b4394
@ -1092,6 +1092,11 @@ if test "x$enable_sysusers" != "xno"; then
|
|||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(ENABLE_SYSUSERS, [test "$have_sysusers" = "yes"])
|
AM_CONDITIONAL(ENABLE_SYSUSERS, [test "$have_sysusers" = "yes"])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(gshadow, AS_HELP_STRING([--disable-gshadow], [disable shadow group support]))
|
||||||
|
AS_IF([test "x${enable_gshadow}" != "xno"], [
|
||||||
|
AC_DEFINE(ENABLE_GSHADOW, 1, [shadow group support is enabled])
|
||||||
|
])
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
have_firstboot=no
|
have_firstboot=no
|
||||||
AC_ARG_ENABLE(firstboot, AS_HELP_STRING([--disable-firstboot], [disable firstboot support]))
|
AC_ARG_ENABLE(firstboot, AS_HELP_STRING([--disable-firstboot], [disable firstboot support]))
|
||||||
|
@ -988,6 +988,7 @@ foreach pair : [['utmp', 'HAVE_UTMP'],
|
|||||||
['tpm', 'SD_BOOT_LOG_TPM'],
|
['tpm', 'SD_BOOT_LOG_TPM'],
|
||||||
['ima', 'HAVE_IMA'],
|
['ima', 'HAVE_IMA'],
|
||||||
['smack', 'HAVE_SMACK'],
|
['smack', 'HAVE_SMACK'],
|
||||||
|
['gshadow', 'ENABLE_GSHADOW'],
|
||||||
]
|
]
|
||||||
|
|
||||||
if get_option(pair[0])
|
if get_option(pair[0])
|
||||||
@ -2473,6 +2474,7 @@ foreach tuple : [
|
|||||||
['hibernate'],
|
['hibernate'],
|
||||||
['adm group', get_option('adm-group')],
|
['adm group', get_option('adm-group')],
|
||||||
['wheel group', get_option('wheel-group')],
|
['wheel group', get_option('wheel-group')],
|
||||||
|
['gshadow'],
|
||||||
['debug hashmap'],
|
['debug hashmap'],
|
||||||
['debug mmap cache'],
|
['debug mmap cache'],
|
||||||
]
|
]
|
||||||
|
@ -146,6 +146,8 @@ option('dev-kvm-mode', type : 'string', value : '0660',
|
|||||||
description : '/dev/kvm access mode')
|
description : '/dev/kvm access mode')
|
||||||
option('default-kill-user-processes', type : 'boolean',
|
option('default-kill-user-processes', type : 'boolean',
|
||||||
description : 'the default value for KillUserProcesses= setting')
|
description : 'the default value for KillUserProcesses= setting')
|
||||||
|
option('gshadow', type : 'boolean',
|
||||||
|
description : 'support for shadow group')
|
||||||
|
|
||||||
option('default-dnssec', type : 'combo',
|
option('default-dnssec', type : 'combo',
|
||||||
description : 'default DNSSEC mode',
|
description : 'default DNSSEC mode',
|
||||||
|
@ -292,6 +292,7 @@ static int putgrent_with_members(const struct group *gr, FILE *group) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_GSHADOW
|
||||||
static int putsgent_with_members(const struct sgrp *sg, FILE *gshadow) {
|
static int putsgent_with_members(const struct sgrp *sg, FILE *gshadow) {
|
||||||
char **a;
|
char **a;
|
||||||
|
|
||||||
@ -341,6 +342,7 @@ static int putsgent_with_members(const struct sgrp *sg, FILE *gshadow) {
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int sync_rights(FILE *from, FILE *to) {
|
static int sync_rights(FILE *from, FILE *to) {
|
||||||
struct stat st;
|
struct stat st;
|
||||||
@ -659,6 +661,7 @@ fail:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int write_temporary_gshadow(const char * gshadow_path, FILE **tmpfile, char **tmpfile_path) {
|
static int write_temporary_gshadow(const char * gshadow_path, FILE **tmpfile, char **tmpfile_path) {
|
||||||
|
#ifdef ENABLE_GSHADOW
|
||||||
_cleanup_fclose_ FILE *original = NULL, *gshadow = NULL;
|
_cleanup_fclose_ FILE *original = NULL, *gshadow = NULL;
|
||||||
_cleanup_free_ char *gshadow_tmp = NULL;
|
_cleanup_free_ char *gshadow_tmp = NULL;
|
||||||
bool group_changed = false;
|
bool group_changed = false;
|
||||||
@ -740,6 +743,9 @@ static int write_temporary_gshadow(const char * gshadow_path, FILE **tmpfile, ch
|
|||||||
fail:
|
fail:
|
||||||
unlink(gshadow_tmp);
|
unlink(gshadow_tmp);
|
||||||
return r;
|
return r;
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static int write_files(void) {
|
static int write_files(void) {
|
||||||
|
Loading…
Reference in New Issue
Block a user