Where is the next uid from adduser pulled from?

Jonathan McKeown jonathan at hst.org.za
Thu Dec 13 07:25:10 PST 2007


On Wednesday 12 December 2007 20:04, Andrew Pantyukhin wrote:
> On Wed, Dec 12, 2007 at 12:00:06PM -0500, Francisco Reyes wrote:
> > I have scripts to add new users. However, after that any port that
> > installs a user creates it with a UID after the ones I made.
> >
> > For example I want all employees to have uids starting at 5000, but I
> > would like too port installed uids to be 2000 and up. After I add some
> > users (ie say last user is 5008), the next port that installs a user and
> > doesn't specify uid.. then will get 5009.
> >
> > Tried looking for the adduser program, but could not find adduser.c
>
> It's pw(8) that selects default uids and it just takes the last
> one (numerically) and uses the next one.
>
> Create a placeholder user with uid 5000 and let ports use uids
> 5000+, but when creating new users, specify uids manually (both
> pw and adduser allow that).

Alternatively, create/edit /etc/pw.conf including

minuid 2000
maxuid 4999
reuseuids yes

This will cause automatic uses of pw(8) (such as port installations) to use 
uids between 2000 and 4999, and to ``fill in the gaps''.

When adding a user by hand, use

pw -C /dev/null

to tell pw to ignore pw.conf(5) and get the default behaviour (which is to use 
the uid one higher than the highest ever used).

adduser(8) should just DTRT, but you can make sure by adding to the flags -u 
uid_start which will use the next available uid after uid_start (which it 
identifies by testing each uid in turn for existence, not by just using pw 
usernext).

Jonathan


More information about the freebsd-questions mailing list