summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-06-17 16:29:03 +0200
committerLennart Poettering <lennart@poettering.net>2015-06-17 16:29:03 +0200
commit9e281beb8ebff96366eff63bd54087681706c803 (patch)
tree1b316486fb827fb73af90ac097d430e205569d97 /src
parent1542c01b1dd5e34bfc2355aba603131e458ee0da (diff)
logind: apply selinux label to XDG_RUNTIME_DIR
As discussed in #257: we should ensure the selinux label is correctly applied to each user's XDG_RUNTIME_DIR.
Diffstat (limited to 'src')
-rw-r--r--src/login/logind-user.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index 6720899def..738e69cced 100644
--- a/src/login/logind-user.c
+++ b/src/login/logind-user.c
@@ -36,9 +36,10 @@
#include "bus-error.h"
#include "conf-parser.h"
#include "clean-ipc.h"
-#include "logind-user.h"
#include "smack-util.h"
#include "formats-util.h"
+#include "label.h"
+#include "logind-user.h"
User* user_new(Manager *m, uid_t uid, gid_t gid, const char *name) {
User *u;
@@ -323,7 +324,7 @@ static int user_mkdir_runtime_path(User *u) {
if (path_is_mount_point(p, 0) <= 0) {
_cleanup_free_ char *t = NULL;
- (void) mkdir(p, 0700);
+ (void) mkdir_label(p, 0700);
if (mac_smack_use())
r = asprintf(&t, "mode=0700,smackfsroot=*,uid=" UID_FMT ",gid=" GID_FMT ",size=%zu", u->uid, u->gid, u->manager->runtime_dir_size);
@@ -351,6 +352,10 @@ static int user_mkdir_runtime_path(User *u) {
goto fail;
}
}
+
+ r = label_fix(p, false, false);
+ if (r < 0)
+ log_warning_errno(r, "Failed to fix label of '%s', ignoring: %m", p);
}
u->runtime_path = p;