diff --git a/src/addhomedir.c b/src/addhomedir.c index a5cd27339..aa4e7b49a 100644 --- a/src/addhomedir.c +++ b/src/addhomedir.c @@ -16,7 +16,7 @@ int ceo_create_home(char *homedir, char *refquota, uid_t uid, gid_t gid, char *mode, char *acl) { char uid_str[16], gid_str[16]; char *zfs_argv[] = { "ssh", "ceo@ginseng", "/usr/sbin/simpleaddhomedir", \ - homedir, refquota, skeleton_dir, uid_str, gid_str, mode, acl, NULL }; + homedir, skeleton_dir, uid_str, gid_str, mode, NULL }; int ret = 0; assert(homedir[0]); diff --git a/src/simpleaddhomedir.c b/src/simpleaddhomedir.c index f4089a6a9..2e3086755 100644 --- a/src/simpleaddhomedir.c +++ b/src/simpleaddhomedir.c @@ -16,13 +16,12 @@ int main(int argc, char *argv[]) { char *homedir = argv[1]; char *skeldir = argv[2]; - char *mode = argv[5]; uid_t uid, gid; char *mkdir_bin = "/bin/mkdir"; char *chmod_bin = "/bin/chmod"; char *dataset = homedir; char *create_argv[] = { "mkdir", dataset, NULL }; - char *mode_argv[] = { "chmod", mode, homedir, NULL }; + char *mode_argv[] = { "chmod", "0755", homedir, NULL }; DIR *skel; struct dirent *skelent; @@ -30,6 +29,9 @@ int main(int argc, char *argv[]) { uid = atol(argv[3]); gid = atol(argv[4]); + if (setreuid(0, 0)) + fatalpe("ogawd"); + if(spawnv(mkdir_bin, create_argv)) return 1; //Quotas are ignored now, or so I'm told.