Lines Matching full:pwd

40 #include <pwd.h>
73 static int print_user(struct passwd *pwd, bool pretty, bool v7);
133 create_and_populate_homedir(struct userconf *cnf, struct passwd *pwd, in create_and_populate_homedir() argument
139 mkdir_home_parents(conf.rootfd, pwd->pw_dir); in create_and_populate_homedir()
147 copymkdir(conf.rootfd, pwd->pw_dir, skelfd, homemode, pwd->pw_uid, in create_and_populate_homedir()
148 pwd->pw_gid, 0); in create_and_populate_homedir()
150 pwd->pw_name, (uintmax_t)pwd->pw_uid, pwd->pw_dir); in create_and_populate_homedir()
154 pw_set_passwd(struct passwd *pwd, int fd, bool precrypted, bool update) in pw_set_passwd() argument
163 if (!pwd->pw_passwd || *pwd->pw_passwd != '*') { in pw_set_passwd()
164 pwd->pw_passwd = "*"; /* No access */ in pw_set_passwd()
180 pwd->pw_name); in pw_set_passwd()
203 pwd->pw_passwd = strdup(line); in pw_set_passwd()
205 lc = login_getpwclass(pwd); in pw_set_passwd()
210 pwd->pw_passwd = pw_pwcrypt(line); in pw_set_passwd()
216 perform_chgpwent(const char *name, struct passwd *pwd, char *nispasswd) in perform_chgpwent() argument
223 nispwd = pw_dup(pwd); in perform_chgpwent()
225 rc = chgpwent(name, pwd); in perform_chgpwent()
227 errx(EX_IOERR, "user '%s' does not exist (NIS?)", pwd->pw_name); in perform_chgpwent()
234 warn("User '%s' not found in NIS passwd", pwd->pw_name); in perform_chgpwent()
253 struct passwd *pwd = NULL; in pw_userlock() local
269 pwd = GETPWNAM(pw_checkname(name, 0)); in pw_userlock()
270 if (pwd == NULL && id != (uid_t)-1) { in pw_userlock()
271 pwd = GETPWUID(id); in pw_userlock()
272 if (pwd != NULL) in pw_userlock()
273 name = pwd->pw_name; in pw_userlock()
275 if (pwd == NULL) { in pw_userlock()
282 name = pwd->pw_name; in pw_userlock()
284 if (strncmp(pwd->pw_passwd, locked_str, sizeof(locked_str) -1) == 0) in pw_userlock()
287 errx(EX_DATAERR, "user '%s' is already locked", pwd->pw_name); in pw_userlock()
289 errx(EX_DATAERR, "user '%s' is not locked", pwd->pw_name); in pw_userlock()
292 asprintf(&passtmp, "%s%s", locked_str, pwd->pw_passwd); in pw_userlock()
295 pwd->pw_passwd = passtmp; in pw_userlock()
297 pwd->pw_passwd += sizeof(locked_str)-1; in pw_userlock()
300 perform_chgpwent(name, pwd, NULL); in pw_userlock()
309 struct passwd *pwd; in pw_uidpolicy() local
319 if ((pwd = GETPWUID(uid)) != NULL && conf.checkduplicate) in pw_uidpolicy()
321 (uintmax_t)pwd->pw_uid); in pw_uidpolicy()
340 while ((pwd = GETPWENT()) != NULL) in pw_uidpolicy()
341 if (pwd->pw_uid >= (uid_t) cnf->min_uid && pwd->pw_uid <= (uid_t) cnf->max_uid) in pw_uidpolicy()
342 bm_setbit(&bm, pwd->pw_uid - cnf->min_uid); in pw_uidpolicy()
528 print_user(struct passwd * pwd, bool pretty, bool v7) in print_user() argument
532 struct group *grp = GETGRGID(pwd->pw_gid); in print_user()
539 p = v7 ? pw_make_v7(pwd) : pw_make(pwd); in print_user()
545 if ((p = strtok(pwd->pw_gecos, ",")) != NULL) { in print_user()
561 int l = strlen(pwd->pw_name); in print_user()
565 memmove(p, pwd->pw_name, l); in print_user()
568 if (pwd->pw_expire > (time_t)0 && (tptr = localtime(&pwd->pw_expire)) != NULL) in print_user()
570 if (pwd->pw_change > (time_t)0 && (tptr = localtime(&pwd->pw_change)) != NULL) in print_user()
577 "Acc Expire: %-26.26s Pwd Expire: %s\n", in print_user()
578 pwd->pw_name, (uintmax_t)pwd->pw_uid, in print_user()
579 grp ? grp->gr_name : "(invalid)", (uintmax_t)pwd->pw_gid, in print_user()
580 uname, pwd->pw_dir, pwd->pw_class, in print_user()
581 pwd->pw_shell, office, wphone, hphone, in print_user()
589 if (strcmp(grp->gr_mem[i], pwd->pw_name)==0) { in print_user()
737 struct passwd *pwd = NULL; in pw_user_show() local
794 while ((pwd = GETPWENT()) != NULL) in pw_user_show()
795 print_user(pwd, pretty, v7); in pw_user_show()
803 pwd = (name != NULL) ? GETPWNAM(pw_checkname(name, 0)) : GETPWUID(id); in pw_user_show()
804 if (pwd == NULL) { in pw_user_show()
806 pwd = &fakeuser; in pw_user_show()
815 return (print_user(pwd, pretty, v7)); in pw_user_show()
822 struct passwd *pwd = NULL; in pw_user_del() local
887 pwd = (name != NULL) ? GETPWNAM(pw_checkname(name, 0)) : GETPWUID(id); in pw_user_del()
888 if (pwd == NULL) { in pw_user_del()
895 ((pwd->pw_fields & _PWF_SOURCE) != _PWF_FILES)) { in pw_user_del()
896 if ((pwd->pw_fields & _PWF_SOURCE) == _PWF_NIS) { in pw_user_del()
906 id = pwd->pw_uid; in pw_user_del()
908 name = pwd->pw_name; in pw_user_del()
910 if (strcmp(pwd->pw_name, "root") == 0) in pw_user_del()
915 snprintf(file, sizeof(file), "/var/cron/tabs/%s", pwd->pw_name); in pw_user_del()
920 pwd->pw_name, in pw_user_del()
936 * Save these for later, since contents of pwd may be in pw_user_del()
939 snprintf(file, sizeof(file), "%s/%s", _PATH_MAILDIR, pwd->pw_name); in pw_user_del()
940 strlcpy(home, pwd->pw_dir, sizeof(home)); in pw_user_del()
941 gr = GETGRGID(pwd->pw_gid); in pw_user_del()
947 rc = delpwent(pwd); in pw_user_del()
949 err(EX_IOERR, "user '%s' does not exist", pwd->pw_name); in pw_user_del()
957 pwd->pw_name); in pw_user_del()
1179 struct passwd *pwd; in pw_user_add() local
1381 pwd = &fakeuser; in pw_user_add()
1382 pwd->pw_name = name; in pw_user_add()
1383 pwd->pw_class = cmdcnf->default_class ? cmdcnf->default_class : ""; in pw_user_add()
1384 pwd->pw_uid = pw_uidpolicy(cmdcnf, id); in pw_user_add()
1385 pwd->pw_gid = pw_gidpolicy(cnf, grname, pwd->pw_name, in pw_user_add()
1386 (gid_t) pwd->pw_uid, dryrun); in pw_user_add()
1390 pwd->pw_change = cmdcnf->password_days; in pw_user_add()
1392 pwd->pw_expire = cmdcnf->expire_days; in pw_user_add()
1394 pwd->pw_dir = pw_homepolicy(cmdcnf, homedir, pwd->pw_name); in pw_user_add()
1395 pwd->pw_shell = pw_shellpolicy(cmdcnf); in pw_user_add()
1396 lc = login_getpwclass(pwd); in pw_user_add()
1400 pwd->pw_passwd = pw_password(cmdcnf, pwd->pw_name); in pw_user_add()
1401 if (pwd->pw_uid == 0 && strcmp(pwd->pw_name, "root") != 0) in pw_user_add()
1403 "(superuser access!)", pwd->pw_name); in pw_user_add()
1405 pwd->pw_gecos = gecos; in pw_user_add()
1408 pw_set_passwd(pwd, fd, precrypted, false); in pw_user_add()
1411 return (print_user(pwd, pretty, false)); in pw_user_add()
1413 if ((rc = addpwent(pwd)) != 0) { in pw_user_add()
1416 pwd->pw_name); in pw_user_add()
1422 rc = addnispwent(cmdcnf->nispasswd, pwd); in pw_user_add()
1425 pwd->pw_name); in pw_user_add()
1435 if (grp_has_member(grp, pwd->pw_name)) in pw_user_add()
1437 grp = gr_add(grp, pwd->pw_name); in pw_user_add()
1451 pwd = GETPWNAM(name); in pw_user_add()
1452 if (pwd == NULL) in pw_user_add()
1455 grp = GETGRGID(pwd->pw_gid); in pw_user_add()
1457 pwd->pw_name, (uintmax_t)pwd->pw_uid, in pw_user_add()
1460 pwd->pw_gecos, pwd->pw_dir, pwd->pw_shell); in pw_user_add()
1469 pwd->pw_name); in pw_user_add()
1472 fchownat(conf.rootfd, path + 1, pwd->pw_uid, pwd->pw_gid, in pw_user_add()
1481 if (PWALTDIR() != PWF_ALT && createhome && pwd->pw_dir && in pw_user_add()
1482 *pwd->pw_dir == '/' && pwd->pw_dir[1]) in pw_user_add()
1483 create_and_populate_homedir(cmdcnf, pwd, cmdcnf->dotdir, in pw_user_add()
1492 "Subject: Welcome!\n\n", pwd->pw_name); in pw_user_add()
1499 pwd->pw_name, (uintmax_t)pwd->pw_uid); in pw_user_add()
1514 struct passwd *pwd; in pw_user_mod() local
1655 pwd = (name != NULL) ? GETPWNAM(pw_checkname(name, 0)) : GETPWUID(id); in pw_user_mod()
1656 if (pwd == NULL) { in pw_user_mod()
1664 name = pwd->pw_name; in pw_user_mod()
1670 ((pwd->pw_fields & _PWF_SOURCE) != _PWF_FILES)) { in pw_user_mod()
1671 if ((pwd->pw_fields & _PWF_SOURCE) == _PWF_NIS) { in pw_user_mod()
1682 if (strcmp(pwd->pw_name, "root") == 0) in pw_user_mod()
1684 if (strcmp(pwd->pw_name, newname) != 0) { in pw_user_mod()
1685 pwd->pw_name = pw_checkname(newname, 0); in pw_user_mod()
1690 if (id >= 0 && pwd->pw_uid != id) { in pw_user_mod()
1691 pwd->pw_uid = id; in pw_user_mod()
1693 if (pwd->pw_uid != 0 && strcmp(pwd->pw_name, "root") == 0) in pw_user_mod()
1695 if (pwd->pw_uid == 0 && strcmp(pwd->pw_name, "root") != 0) in pw_user_mod()
1697 "(superuser access!)", pwd->pw_name); in pw_user_mod()
1700 if (grname && pwd->pw_uid != 0) { in pw_user_mod()
1704 if (grp->gr_gid != pwd->pw_gid) { in pw_user_mod()
1705 pwd->pw_gid = grp->gr_gid; in pw_user_mod()
1711 if (password_time >= 0 && pwd->pw_change != password_time) { in pw_user_mod()
1712 pwd->pw_change = password_time; in pw_user_mod()
1716 if (expire_time >= 0 && pwd->pw_expire != expire_time) { in pw_user_mod()
1717 pwd->pw_expire = expire_time; in pw_user_mod()
1725 if (strcmp(shell, pwd->pw_shell) != 0) { in pw_user_mod()
1726 pwd->pw_shell = shell; in pw_user_mod()
1731 if (class && strcmp(pwd->pw_class, class) != 0) { in pw_user_mod()
1732 pwd->pw_class = class; in pw_user_mod()
1736 if (homedir && strcmp(pwd->pw_dir, homedir) != 0) { in pw_user_mod()
1737 pwd->pw_dir = homedir; in pw_user_mod()
1739 if (fstatat(conf.rootfd, pwd->pw_dir, &st, 0) == -1) { in pw_user_mod()
1742 pwd->pw_dir); in pw_user_mod()
1745 pwd->pw_dir); in pw_user_mod()
1750 lc = login_getpwclass(pwd); in pw_user_mod()
1756 pwd->pw_passwd = pw_password(cnf, pwd->pw_name); in pw_user_mod()
1760 if (gecos && strcmp(pwd->pw_gecos, gecos) != 0) { in pw_user_mod()
1761 pwd->pw_gecos = gecos; in pw_user_mod()
1766 edited = pw_set_passwd(pwd, fd, precrypted, true); in pw_user_mod()
1769 return (print_user(pwd, pretty, false)); in pw_user_mod()
1772 perform_chgpwent(name, pwd, nis ? nispasswd : NULL); in pw_user_mod()
1793 grp = gr_add(grp, pwd->pw_name); in pw_user_mod()
1816 /* go get a current version of pwd */ in pw_user_mod()
1819 pwd = GETPWNAM(name); in pw_user_mod()
1820 if (pwd == NULL) in pw_user_mod()
1822 grp = GETGRGID(pwd->pw_gid); in pw_user_mod()
1824 pwd->pw_name, (uintmax_t)pwd->pw_uid, in pw_user_mod()
1827 pwd->pw_gecos, pwd->pw_dir, pwd->pw_shell); in pw_user_mod()
1834 if (PWALTDIR() != PWF_ALT && createhome && pwd->pw_dir && in pw_user_mod()
1835 *pwd->pw_dir == '/' && pwd->pw_dir[1]) { in pw_user_mod()
1840 create_and_populate_homedir(cnf, pwd, skel, homemode, true); in pw_user_mod()