diff --git a/useradmin/config.info b/useradmin/config.info index 5d3976799..6f5d1d098 100644 --- a/useradmin/config.info +++ b/useradmin/config.info @@ -4,7 +4,7 @@ user_files=Copy files into new home directories from,9,40,3 home_base=Automatic home directory base,3,Not set real_base=Real home directory base,3,Same as above home_style=Automatic home directory style,4,0-home/username,1-home/u/username,2-home/u/us/username,3-home/u/s/username,4-Just base directory,5-home/primary_group/username -selinux_con=SElinux context for new home directories,3,None +selinux_con=SElinux context for new home directories,10,-None,*-System default line2=New user options,11 base_uid=Lowest UID for new users,0,5 diff --git a/useradmin/user-lib.pl b/useradmin/user-lib.pl index 358703091..b8b978661 100755 --- a/useradmin/user-lib.pl +++ b/useradmin/user-lib.pl @@ -2632,8 +2632,16 @@ $home ||= $user->{'home'}; oct($config{'homedir_perms'}), $home) || &error(&text('usave_echmod', $!)); if ($config{'selinux_con'} && &is_selinux_enabled() && &has_command("chcon")) { - &system_logged("chcon ".quotemeta($config{'selinux_con'}). - " ".quotemeta($home)." >/dev/null 2>&1"); + if ($config{'selinux_con'} eq "*") { + # Restore default context + &system_logged("restorecon -r ". + quotemeta($home)." >/dev/null 2>&1"); + } + else { + # Use specific context + &system_logged("chcon ".quotemeta($config{'selinux_con'}). + " ".quotemeta($home)." >/dev/null 2>&1"); + } } &unlock_file($home); }