Lines Matching full:pwd
40 #include <pwd.h>
73 static int print_user(struct passwd *pwd, bool pretty, bool v7);
145 create_and_populate_homedir(struct userconf *cnf, struct passwd *pwd, in create_and_populate_homedir() argument
151 mkdir_home_parents(conf.rootfd, pwd->pw_dir); in create_and_populate_homedir()
159 copymkdir(conf.rootfd, pwd->pw_dir, skelfd, homemode, pwd->pw_uid, in create_and_populate_homedir()
160 pwd->pw_gid, 0); in create_and_populate_homedir()
162 pwd->pw_name, (uintmax_t)pwd->pw_uid, pwd->pw_dir); in create_and_populate_homedir()
166 pw_set_passwd(struct passwd *pwd, int fd, bool precrypted, bool update) in pw_set_passwd() argument
175 if (!pwd->pw_passwd || *pwd->pw_passwd != '*') { in pw_set_passwd()
176 pwd->pw_passwd = "*"; /* No access */ in pw_set_passwd()
192 pwd->pw_name); in pw_set_passwd()
215 pwd->pw_passwd = strdup(line); in pw_set_passwd()
217 lc = login_getpwclass(pwd); in pw_set_passwd()
222 pwd->pw_passwd = pw_pwcrypt(line); in pw_set_passwd()
228 perform_chgpwent(const char *name, struct passwd *pwd, char *nispasswd) in perform_chgpwent() argument
235 nispwd = pw_dup(pwd); in perform_chgpwent()
237 rc = chgpwent(name, pwd); in perform_chgpwent()
239 errx(EX_IOERR, "user '%s' does not exist (NIS?)", pwd->pw_name); in perform_chgpwent()
246 warn("User '%s' not found in NIS passwd", pwd->pw_name); in perform_chgpwent()
272 struct passwd *pwd = NULL; in pw_userlock() local
287 pwd = GETPWNAM(pw_checkname(name, 0)); in pw_userlock()
288 if (pwd == NULL && id != (uid_t)-1) { in pw_userlock()
289 pwd = GETPWUID(id); in pw_userlock()
290 if (pwd != NULL) in pw_userlock()
291 name = pwd->pw_name; in pw_userlock()
293 if (pwd == NULL) { in pw_userlock()
300 name = pwd->pw_name; in pw_userlock()
302 if (strncmp(pwd->pw_passwd, locked_str, sizeof(locked_str) -1) == 0) in pw_userlock()
305 errx(EX_DATAERR, "user '%s' is already locked", pwd->pw_name); in pw_userlock()
307 errx(EX_DATAERR, "user '%s' is not locked", pwd->pw_name); in pw_userlock()
310 asprintf(&passtmp, "%s%s", locked_str, pwd->pw_passwd); in pw_userlock()
313 pwd->pw_passwd = passtmp; in pw_userlock()
315 pwd->pw_passwd += sizeof(locked_str)-1; in pw_userlock()
318 perform_chgpwent(name, pwd, NULL); in pw_userlock()
327 struct passwd *pwd; in pw_uidpolicy() local
337 if ((pwd = GETPWUID(uid)) != NULL && conf.checkduplicate) in pw_uidpolicy()
339 (uintmax_t)pwd->pw_uid); in pw_uidpolicy()
358 while ((pwd = GETPWENT()) != NULL) in pw_uidpolicy()
359 if (pwd->pw_uid >= (uid_t) cnf->min_uid && pwd->pw_uid <= (uid_t) cnf->max_uid) in pw_uidpolicy()
360 bm_setbit(&bm, pwd->pw_uid - cnf->min_uid); in pw_uidpolicy()
546 print_user(struct passwd * pwd, bool pretty, bool v7) in print_user() argument
550 struct group *grp = GETGRGID(pwd->pw_gid); in print_user()
557 p = v7 ? pw_make_v7(pwd) : pw_make(pwd); in print_user()
563 if ((p = strtok(pwd->pw_gecos, ",")) != NULL) { in print_user()
579 int l = strlen(pwd->pw_name); in print_user()
583 memmove(p, pwd->pw_name, l); in print_user()
586 if (pwd->pw_expire > (time_t)0 && (tptr = localtime(&pwd->pw_expire)) != NULL) in print_user()
588 if (pwd->pw_change > (time_t)0 && (tptr = localtime(&pwd->pw_change)) != NULL) in print_user()
595 "Acc Expire: %-26.26s Pwd Expire: %s\n", in print_user()
596 pwd->pw_name, (uintmax_t)pwd->pw_uid, in print_user()
597 grp ? grp->gr_name : "(invalid)", (uintmax_t)pwd->pw_gid, in print_user()
598 uname, pwd->pw_dir, pwd->pw_class, in print_user()
599 pwd->pw_shell, office, wphone, hphone, in print_user()
607 if (strcmp(grp->gr_mem[i], pwd->pw_name)==0) { in print_user()
755 struct passwd *pwd = NULL; in pw_user_show() local
812 while ((pwd = GETPWENT()) != NULL) in pw_user_show()
813 print_user(pwd, pretty, v7); in pw_user_show()
821 pwd = (name != NULL) ? GETPWNAM(pw_checkname(name, 0)) : GETPWUID(id); in pw_user_show()
822 if (pwd == NULL) { in pw_user_show()
824 pwd = &fakeuser; in pw_user_show()
833 return (print_user(pwd, pretty, v7)); in pw_user_show()
840 struct passwd *pwd = NULL; in pw_user_del() local
905 pwd = (name != NULL) ? GETPWNAM(pw_checkname(name, 0)) : GETPWUID(id); in pw_user_del()
906 if (pwd == NULL) { in pw_user_del()
913 ((pwd->pw_fields & _PWF_SOURCE) != _PWF_FILES)) { in pw_user_del()
914 if ((pwd->pw_fields & _PWF_SOURCE) == _PWF_NIS) { in pw_user_del()
924 id = pwd->pw_uid; in pw_user_del()
926 name = pwd->pw_name; in pw_user_del()
928 if (strcmp(pwd->pw_name, "root") == 0) in pw_user_del()
933 snprintf(file, sizeof(file), "/var/cron/tabs/%s", pwd->pw_name); in pw_user_del()
938 pwd->pw_name, in pw_user_del()
954 * Save these for later, since contents of pwd may be in pw_user_del()
957 snprintf(file, sizeof(file), "%s/%s", _PATH_MAILDIR, pwd->pw_name); in pw_user_del()
958 strlcpy(home, pwd->pw_dir, sizeof(home)); in pw_user_del()
959 gr = GETGRGID(pwd->pw_gid); in pw_user_del()
965 rc = delpwent(pwd); in pw_user_del()
967 err(EX_IOERR, "user '%s' does not exist", pwd->pw_name); in pw_user_del()
975 pwd->pw_name); in pw_user_del()
1197 struct passwd *pwd; in pw_user_add() local
1399 pwd = &fakeuser; in pw_user_add()
1400 pwd->pw_name = name; in pw_user_add()
1401 pwd->pw_class = cmdcnf->default_class ? cmdcnf->default_class : ""; in pw_user_add()
1402 pwd->pw_uid = pw_uidpolicy(cmdcnf, id); in pw_user_add()
1403 pwd->pw_gid = pw_gidpolicy(cnf, grname, pwd->pw_name, in pw_user_add()
1404 (gid_t) pwd->pw_uid, dryrun); in pw_user_add()
1408 pwd->pw_change = cmdcnf->password_days; in pw_user_add()
1410 pwd->pw_expire = cmdcnf->expire_days; in pw_user_add()
1412 pwd->pw_dir = pw_homepolicy(cmdcnf, homedir, pwd->pw_name); in pw_user_add()
1413 pwd->pw_shell = pw_shellpolicy(cmdcnf); in pw_user_add()
1414 lc = login_getpwclass(pwd); in pw_user_add()
1418 pwd->pw_passwd = pw_password(cmdcnf, pwd->pw_name); in pw_user_add()
1419 if (pwd->pw_uid == 0 && strcmp(pwd->pw_name, "root") != 0) in pw_user_add()
1421 "(superuser access!)", pwd->pw_name); in pw_user_add()
1423 pwd->pw_gecos = gecos; in pw_user_add()
1426 pw_set_passwd(pwd, fd, precrypted, false); in pw_user_add()
1429 return (print_user(pwd, pretty, false)); in pw_user_add()
1431 if ((rc = addpwent(pwd)) != 0) { in pw_user_add()
1434 pwd->pw_name); in pw_user_add()
1440 rc = addnispwent(cmdcnf->nispasswd, pwd); in pw_user_add()
1443 pwd->pw_name); in pw_user_add()
1453 if (grp_has_member(grp, pwd->pw_name)) in pw_user_add()
1455 grp = gr_add(grp, pwd->pw_name); in pw_user_add()
1469 pwd = GETPWNAM(name); in pw_user_add()
1470 if (pwd == NULL) in pw_user_add()
1473 grp = GETGRGID(pwd->pw_gid); in pw_user_add()
1475 pwd->pw_name, (uintmax_t)pwd->pw_uid, in pw_user_add()
1478 pwd->pw_gecos, pwd->pw_dir, pwd->pw_shell); in pw_user_add()
1487 pwd->pw_name); in pw_user_add()
1490 fchownat(conf.rootfd, path + 1, pwd->pw_uid, pwd->pw_gid, in pw_user_add()
1499 if (PWALTDIR() != PWF_ALT && createhome && pwd->pw_dir && in pw_user_add()
1500 *pwd->pw_dir == '/' && pwd->pw_dir[1]) in pw_user_add()
1501 create_and_populate_homedir(cmdcnf, pwd, cmdcnf->dotdir, in pw_user_add()
1510 "Subject: Welcome!\n\n", pwd->pw_name); in pw_user_add()
1517 pwd->pw_name, (uintmax_t)pwd->pw_uid); in pw_user_add()
1532 struct passwd *pwd; in pw_user_mod() local
1673 pwd = (name != NULL) ? GETPWNAM(pw_checkname(name, 0)) : GETPWUID(id); in pw_user_mod()
1674 if (pwd == NULL) { in pw_user_mod()
1682 name = pwd->pw_name; in pw_user_mod()
1688 ((pwd->pw_fields & _PWF_SOURCE) != _PWF_FILES)) { in pw_user_mod()
1689 if ((pwd->pw_fields & _PWF_SOURCE) == _PWF_NIS) { in pw_user_mod()
1700 if (strcmp(pwd->pw_name, "root") == 0) in pw_user_mod()
1702 if (strcmp(pwd->pw_name, newname) != 0) { in pw_user_mod()
1703 pwd->pw_name = pw_checkname(newname, 0); in pw_user_mod()
1708 if (id >= 0 && pwd->pw_uid != id) { in pw_user_mod()
1709 pwd->pw_uid = id; in pw_user_mod()
1711 if (pwd->pw_uid != 0 && strcmp(pwd->pw_name, "root") == 0) in pw_user_mod()
1713 if (pwd->pw_uid == 0 && strcmp(pwd->pw_name, "root") != 0) in pw_user_mod()
1715 "(superuser access!)", pwd->pw_name); in pw_user_mod()
1718 if (grname && pwd->pw_uid != 0) { in pw_user_mod()
1722 if (grp->gr_gid != pwd->pw_gid) { in pw_user_mod()
1723 pwd->pw_gid = grp->gr_gid; in pw_user_mod()
1729 if (password_time >= 0 && pwd->pw_change != password_time) { in pw_user_mod()
1730 pwd->pw_change = password_time; in pw_user_mod()
1734 if (expire_time >= 0 && pwd->pw_expire != expire_time) { in pw_user_mod()
1735 pwd->pw_expire = expire_time; in pw_user_mod()
1743 if (strcmp(shell, pwd->pw_shell) != 0) { in pw_user_mod()
1744 pwd->pw_shell = shell; in pw_user_mod()
1749 if (class && strcmp(pwd->pw_class, class) != 0) { in pw_user_mod()
1750 pwd->pw_class = class; in pw_user_mod()
1754 if (homedir && strcmp(pwd->pw_dir, homedir) != 0) { in pw_user_mod()
1755 pwd->pw_dir = homedir; in pw_user_mod()
1757 if (fstatat(conf.rootfd, pwd->pw_dir, &st, 0) == -1) { in pw_user_mod()
1760 pwd->pw_dir); in pw_user_mod()
1763 pwd->pw_dir); in pw_user_mod()
1768 lc = login_getpwclass(pwd); in pw_user_mod()
1774 pwd->pw_passwd = pw_password(cnf, pwd->pw_name); in pw_user_mod()
1778 if (gecos && strcmp(pwd->pw_gecos, gecos) != 0) { in pw_user_mod()
1779 pwd->pw_gecos = gecos; in pw_user_mod()
1784 edited = pw_set_passwd(pwd, fd, precrypted, true); in pw_user_mod()
1787 return (print_user(pwd, pretty, false)); in pw_user_mod()
1790 perform_chgpwent(name, pwd, nis ? nispasswd : NULL); in pw_user_mod()
1811 grp = gr_add(grp, pwd->pw_name); in pw_user_mod()
1834 /* go get a current version of pwd */ in pw_user_mod()
1837 pwd = GETPWNAM(name); in pw_user_mod()
1838 if (pwd == NULL) in pw_user_mod()
1840 grp = GETGRGID(pwd->pw_gid); in pw_user_mod()
1842 pwd->pw_name, (uintmax_t)pwd->pw_uid, in pw_user_mod()
1845 pwd->pw_gecos, pwd->pw_dir, pwd->pw_shell); in pw_user_mod()
1852 if (PWALTDIR() != PWF_ALT && createhome && pwd->pw_dir && in pw_user_mod()
1853 *pwd->pw_dir == '/' && pwd->pw_dir[1]) { in pw_user_mod()
1858 create_and_populate_homedir(cnf, pwd, skel, homemode, true); in pw_user_mod()