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