|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
From 2d258d4a029f43d22050cab56c3dfae36a8ace45 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
From: Colin Walters <walters@verbum.org>
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
Date: Sun, 13 Jul 2014 13:35:33 -0700
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
Subject: [PATCH] sysusers: preserve label of /etc/{passwd, group}
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
These files are specially labeled on SELinux systems, and we need to
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
preserve that label.
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
(cherry picked from commit a334cbba7222d3d7d886c17c828fa4227c656535)
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
src/sysusers/sysusers.c | 13 ++++++++++++-
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
1 file changed, 12 insertions(+), 1 deletion(-)
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
index 61c9bb5efb..6ec22ccc73 100644
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
--- a/src/sysusers/sysusers.c
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+++ b/src/sysusers/sysusers.c
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
@@ -312,7 +312,11 @@ static int write_files(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
_cleanup_fclose_ FILE *original = NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
group_path = fix_root("/etc/group");
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ r = label_context_set("/etc/group", S_IFREG);
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ goto finish;
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
r = fopen_temporary(group_path, &group, &group_tmp);
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ label_context_clear();
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
goto finish;
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
@@ -388,9 +392,14 @@ static int write_files(void) {
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
_cleanup_fclose_ FILE *original = NULL;
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
passwd_path = fix_root("/etc/passwd");
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
- r = fopen_temporary(passwd_path, &passwd, &passwd_tmp);
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ r = label_context_set("/etc/passwd", S_IFREG);
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
goto finish;
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ r = fopen_temporary(passwd_path, &passwd, &passwd_tmp);
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ label_context_clear();
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ if (r < 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ goto finish;
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
if (fchmod(fileno(passwd), 0644) < 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
r = -errno;
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
@@ -1527,6 +1536,8 @@ int main(int argc, char *argv[]) {
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
umask(0022);
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+ label_init(NULL);
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
r = 0;
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
|
|
Zbigniew Jędrzejewski-Szmek |
43ff24 |
if (optind < argc) {
|