bin/50331: Changing uid with pw causes duplicate username/uid pairs.
System Admin
kevin_stevens at pursued-with.net
Thu Mar 27 03:50:16 PST 2003
>Number: 50331
>Category: bin
>Synopsis: Changing uid with pw causes duplicate username/uid pairs.
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Mar 26 19:50:12 PST 2003
>Closed-Date:
>Last-Modified:
>Originator: kevin_stevens at pursued-with.net
>Release: FreeBSD 4.7-RELEASE i386
>Organization:
Sporadic
>Environment:
Duplicated in various x86 systems on both 4.7 and 5.0, probably others.
System: FreeBSD babelfish 4.7-RELEASE FreeBSD 4.7-RELEASE #0: Wed Oct 9 15:08:34 GMT 2002 root at builder.freebsdmall.com:/usr/obj/usr/src/sys/GENERIC i386
>Description:
After changing a user's uid with the pw command, files owned by the original uid still
show the previous username. Running id -P on both the new and old uids reports the
same username, when the old uid should no longer even exist. Running pwd_mkdb
/etc/master.passwd manually resolves the errors.
A suggestion from the freebsd-questions list when I posted this problem was:
pw may be too smart for its own good. I bet it calls "pwd_mkdb -u" to only
update a single user from /etc/passwd. The problem is when the uid changes,
pwd_mkdb will insert a new record into /etc/pwd.sb and spwd.db, but it doesn't
know about the previous uid, so that stays in the db.
>How-To-Repeat:
% sudo pw user add -n fred -u 1010 -m
% id -P fred
fred:*:1010:1010::0:0:User &:/home/fred:/bin/sh
% ls -lad /home/fred
drwxr-xr-x 2 fred fred 512 Mar 26 08:01 /home/fred/
% sudo pw user mod fred -u 1005
% id -P fred
fred:*:1005:1010::0:0:User &:/home/fred:/bin/sh
% ls -lad /home/fred
drwxr-xr-x 2 fred fred 512 Mar 26 08:01 /home/fred/
% id -P 1005
fred:*:1005:1010::0:0:User &:/home/fred:/bin/sh
% id -P 1010
fred:*:1010:1010::0:0:User &:/home/fred:/bin/sh
% sudo grep 1010 /etc/master.passwd
fred:*:1005:1010::0:0:User &:/home/fred:/bin/sh
However, running pwd_mkdb(8) seems to cure the problem very effectively:
% sudo pwd_mkdb /etc/master.passwd
% id -P fred
fred:*:1005:1010::0:0:User &:/home/fred:/bin/sh
% id -P 1005
fred:*:1005:1010::0:0:User &:/home/fred:/bin/sh
% id -P 1010
id: 1010: no such user
% ls -lad /home/fred
drwxr-xr-x 2 1010 fred 512 Mar 26 08:01 /home/fred/
>Fix:
As mentioned, manually running pwd_mkdb seems to resolve the problem.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list