sysusers: preserve label of /etc/{passwd, group}
These files are specially labeled on SELinux systems, and we need to preserve that label.
This commit is contained in:
parent
3864c28549
commit
a334cbba72
|
@ -312,7 +312,11 @@ static int write_files(void) {
|
|||
_cleanup_fclose_ FILE *original = NULL;
|
||||
|
||||
group_path = fix_root("/etc/group");
|
||||
r = label_context_set("/etc/group", S_IFREG);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
r = fopen_temporary(group_path, &group, &group_tmp);
|
||||
label_context_clear();
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
|
@ -388,9 +392,14 @@ static int write_files(void) {
|
|||
_cleanup_fclose_ FILE *original = NULL;
|
||||
|
||||
passwd_path = fix_root("/etc/passwd");
|
||||
r = fopen_temporary(passwd_path, &passwd, &passwd_tmp);
|
||||
r = label_context_set("/etc/passwd", S_IFREG);
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
r = fopen_temporary(passwd_path, &passwd, &passwd_tmp);
|
||||
label_context_clear();
|
||||
if (r < 0) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
if (fchmod(fileno(passwd), 0644) < 0) {
|
||||
r = -errno;
|
||||
|
@ -1491,6 +1500,8 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
umask(0022);
|
||||
|
||||
label_init(NULL);
|
||||
|
||||
r = 0;
|
||||
|
||||
if (optind < argc) {
|
||||
|
|
Loading…
Reference in a new issue