From: Kunhoon Baik Date: Thu, 1 Sep 2016 13:03:33 +0000 (+0900) Subject: User Session Helper : Enable slave propagation X-Git-Tag: submit/tizen/20160902.065241^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=412b82d9b3869bba6686146fe849bc953c38a067;p=platform%2Fadaptation%2Fsystem-plugin.git User Session Helper : Enable slave propagation Change-Id: I685442f33f6d6cedfd919b50a79723c1dceb107c --- diff --git a/packaging/system-plugin.spec b/packaging/system-plugin.spec index 3b7b4ae..858d295 100644 --- a/packaging/system-plugin.spec +++ b/packaging/system-plugin.spec @@ -302,7 +302,7 @@ mv %{_sysconfdir}/fstab_lazymnt %{_sysconfdir}/fstab %files -n systemd-user-helper %manifest systemd-user-helper.manifest -%caps(cap_sys_admin,cap_mac_admin,cap_setgid=ei) %{_bindir}/systemd_user_helper +%caps(cap_sys_admin,cap_mac_admin,cap_mac_override,cap_dac_override,cap_setgid=ei) %{_bindir}/systemd_user_helper %posttrans -n systemd-user-helper cp -a /usr/lib/systemd/system/user\@.service /usr/lib/systemd/system/__user@.service diff --git a/src/systemd-user-helper/systemd-user-helper.c b/src/systemd-user-helper/systemd-user-helper.c index 7291792..f6911d6 100644 --- a/src/systemd-user-helper/systemd-user-helper.c +++ b/src/systemd-user-helper/systemd-user-helper.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -27,7 +28,7 @@ #define LEGACY_CONTENTS_DIR "/opt/usr/media" -#define LAZYMOUNT_LIB "/usr/lib/liblazymount.so" +#define LAZYMOUNT_LIB "/usr/lib/liblazymount.so.0" #define CONTAINER_LIB "/usr/lib/security/pam_krate.so" #define LOAD_SYMBOL(handle, sym, name) \ @@ -49,6 +50,13 @@ static int normal_user_preprocess(char *username) fprintf(stderr,"unshare failed\n"); return r; } + + r = mount(NULL, "/", NULL, MS_SLAVE | MS_REC, NULL); + if (r < 0) { + fprintf(stderr,"Failed to change the propagation type of root to SLAVE\n"); + return r; + } + return 0; } @@ -58,7 +66,7 @@ static int normal_user_postprocess(char *username) r = mount(tzplatform_getenv(TZ_USER_CONTENT), LEGACY_CONTENTS_DIR, NULL, MS_BIND, NULL); if (r < 0) { - fprintf(stderr, "user content bind mount failed\n"); + fprintf(stderr, "user content bind mount failed - %d\n",errno); return r; } return 0; @@ -125,8 +133,10 @@ static int wait_condition(void) int (*wait_mount_user)(void); r = access(LAZYMOUNT_LIB,F_OK); - if (r < 0) + if (r < 0){ + fprintf(stderr, "cannot find lazymount module - No support lazymount\n"); return 0; + } h = dlopen(LAZYMOUNT_LIB, RTLD_LAZY); if (!h) { @@ -141,6 +151,7 @@ static int wait_condition(void) fprintf(stderr, "wait_mout_user failed\n"); return r; } + return 0; }