From KeS@pursued-with.net  Wed Mar 26 19:49:08 2003
Return-Path: <KeS@pursued-with.net>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 357D937B404
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 26 Mar 2003 19:49:08 -0800 (PST)
Received: from pursued-with.net (adsl-66-125-9-242.dsl.sndg02.pacbell.net [66.125.9.242])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 54DBA43FAF
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 26 Mar 2003 19:49:07 -0800 (PST)
	(envelope-from KeS@pursued-with.net)
Received: from babelfish.pursued-with.net (localhost [127.0.0.1])
	by pursued-with.net (8.12.6/8.12.8) with ESMTP id h2R3n6s7065608;
	Wed, 26 Mar 2003 19:49:06 -0800 (PST)
	(envelope-from KeS@babelfish.pursued-with.net)
Received: (from root@localhost)
	by babelfish.pursued-with.net (8.12.6/8.12.8/Submit) id h2R3n4sj065607;
	Wed, 26 Mar 2003 19:49:04 -0800 (PST)
	(envelope-from KeS)
Message-Id: <200303270349.h2R3n4sj065607@babelfish.pursued-with.net>
Date: Wed, 26 Mar 2003 19:49:04 -0800 (PST)
From: System Admin <kevin_stevens@pursued-with.net>
Reply-To: System Admin <kevin_stevens@pursued-with.net>
To: FreeBSD-gnats-submit@freebsd.org
Cc: kevin_stevens@pursued-with.net
Subject: Changing uid with pw causes duplicate username/uid pairs.
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>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:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 26 19:50:12 PST 2003
>Closed-Date:    Thu Mar 29 22:33:34 GMT 2007
>Last-Modified:  Thu Mar 29 22:33:34 GMT 2007
>Originator:     kevin_stevens@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@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:

From: "A. Blake Cooper" <blake@cluebie.net>
To: freebsd-gnats-submit@freebsd.org
Cc: kevin_stevens@pursued-with.net
Subject: Re: bin/50331 Changing uid with pw causes duplicate username/uid pairs.
Date: Thu, 27 Mar 2003 12:09:11 -0600

 As you mention it's a side-effect of how 'pwd_mkdb -u' functions.  If you
 want pw to completely rebuild the passwd db's on every run, then update
 the pw source file pwupd.c and change the '#define HAVE_PWDB_U 1' to
 '#define HAVE_PWDB_U 0'.
 
 Blake
 
 --                                                                         -
 A. Blake Cooper <blake@cluebie.net>

From: "Jason A. Young" <jyoung@power.doogles.com>
To: freebsd-gnats-submit@freebsd.org,
	<kevin_stevens@pursued-with.net>
Cc:  
Subject: Re: bin/50331: Changing uid with pw causes duplicate user name uid
 pairs.
Date: Wed, 3 Sep 2003 02:09:13 -0500 (CDT)

 This is not replicable on HEAD, probably since 4/28/03 with rev 1.42 of
 pwd_mkdb, which reworked the logic dealing with uid changes. The issue
 most likely still exists in 4.x.
 
 fury# pw user add -n fred -u 1010 -m
 fury# id -P fred
 fred:*:1010:1010::0:0:User &:/home/fred:/bin/sh
 fury# ls -lad /home/fred
 drwxr-xr-x  2 fred  fred  512 Sep  3 02:05 /home/fred
 fury# pw user mod fred -u 1005
 fury# id -P fred
 fred:*:1005:1010::0:0:User &:/home/fred:/bin/sh
 fury# ls -lad /home/fred
 drwxr-xr-x  2 1010  fred  512 Sep  3 02:05 /home/fred
 fury# id -P 1005
 fred:*:1005:1010::0:0:User &:/home/fred:/bin/sh
 fury# id -P 1010
 id: 1010: no such user
 fury# grep 1010 /etc/master.passwd 
 fred:*:1005:1010::0:0:User &:/home/fred:/bin/sh
 
 
 -- 
 Jason Young, CCIE #8607, MCSE
 Sr. Network Technician, WAN Technologies
 (314)817-0131
 http://www.wantec.com
 
State-Changed-From-To: open->closed 
State-Changed-By: le 
State-Changed-When: Thu Mar 29 22:33:20 UTC 2007 
State-Changed-Why:  
On -CURRENT, this is not an issue anymore. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=50331 
>Unformatted:
