Auth as ceo/admin for zfsaddhomedir
[public/pyceo-broken.git] / src / addhomedir.c
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <sys/acl.h>
6 #include <dirent.h>
7 #include <pwd.h>
8 #include <fcntl.h>
9 #include <assert.h>
10
11 #include "addhomedir.h"
12 #include "util.h"
13 #include "config.h"
14 #include "krb5.h"
15
16 int ceo_create_home(char *homedir, uid_t uid, gid_t gid, char *mode, char *acl) {
17     char uid_str[16], gid_str[16];
18     char *zfs_argv[] = { "ssh", "ceo@ginseng", "/usr/sbin/zfsaddhomedir", \
19         homedir, skeleton_dir, uid_str, gid_str, mode, acl, NULL };
20
21     assert(homedir[0]);
22     snprintf(uid_str, sizeof(uid_str), "%ld", (long)uid);
23     snprintf(gid_str, sizeof(gid_str), "%ld", (long)uid);
24     if(!acl[0]) acl = NULL;
25
26     ceo_krb5_auth(admin_bind_userid, admin_bind_keytab);
27
28     if(spawnv("/usr/bin/ssh", zfs_argv)) {
29         errorpe("failed calling zfsaddhomedir for %s", homedir);
30         return -1;
31     }
32
33     ceo_krb5_deauth();
34
35     return 0;
36 }