summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--move/move.pm11
1 files changed, 9 insertions, 2 deletions
diff --git a/move/move.pm b/move/move.pm
index f21a27498..6320cbea5 100644
--- a/move/move.pm
+++ b/move/move.pm
@@ -38,7 +38,8 @@ sub init {
foreach qw(encodings.dir app-defaults applnk fs lbxproxy proxymngr rstart wmsession.d xinit.d xinit xkb xserver xsm);
#- to be able to adduser, one need to have /etc/passwd and /etc/group writable
- system("cp /image/etc/{passwd,group} /etc");
+ #- sudoers must a file, not a symlink
+ system("cp /image/etc/{passwd,group,sudoers} /etc");
#- free up stage1 memory
fs::umount($_) foreach qw(/stage1/proc /stage1);
@@ -102,7 +103,13 @@ Continue at your own risk."), formatError($@) ]) if $@;
if (fork()) {
sleep 1;
log::l("DrakX waves bye-bye");
- exec 'su', 'mdk', 'startkde';
+
+ (undef, undef, my $uid, my $gid, undef, undef, undef, my $home) = getpwnam('mdk');
+ $( = $) = "$gid $gid";
+ $< = $> = $uid;
+ $ENV{LOGNAME} = $ENV{USER} = 'mdk';
+ $ENV{HOME} = $home;
+ exec 'startkde';
} else {
exec 'xwait' or c::_exit(0);
}