pyceo/src/addhomedir.c

36 lines
968 B
C
Raw Normal View History

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/acl.h>
#include <dirent.h>
#include <pwd.h>
#include <fcntl.h>
2008-03-15 02:22:08 -04:00
#include <assert.h>
#include "addhomedir.h"
#include "util.h"
#include "config.h"
2008-05-20 18:49:51 -04:00
#include "krb5.h"
2008-05-28 02:01:24 -04:00
int ceo_create_home(char *homedir, char *refquota, uid_t uid, gid_t gid, char *mode, char *acl) {
2008-03-15 02:22:08 -04:00
char uid_str[16], gid_str[16];
char *zfs_argv[] = { "ssh", "ceo@ginseng", "/usr/sbin/zfsaddhomedir", \
2008-05-28 02:01:24 -04:00
homedir, refquota, skeleton_dir, uid_str, gid_str, mode, acl, NULL };
2008-05-20 18:59:05 -04:00
int ret = 0;
2008-03-15 02:22:08 -04:00
assert(homedir[0]);
snprintf(uid_str, sizeof(uid_str), "%ld", (long)uid);
snprintf(gid_str, sizeof(gid_str), "%ld", (long)uid);
if(!acl[0]) acl = NULL;
2008-05-20 18:49:51 -04:00
ceo_krb5_auth(admin_bind_userid, admin_bind_keytab);
2008-03-15 02:22:08 -04:00
if(spawnv("/usr/bin/ssh", zfs_argv)) {
errorpe("failed calling zfsaddhomedir for %s", homedir);
2008-05-20 18:59:05 -04:00
ret = -1;
}
2008-05-20 18:49:51 -04:00
ceo_krb5_deauth();
2008-05-20 18:59:05 -04:00
return ret;
}