>> In a previous message, someone said:

?> Here are 5 sets of binaries.  The first has UIDs 792-799, and GIDs 798
?> 799.  Next has UIDs 1792-1799, and GIDs 1798 1799.  Next has UIDs
?> 2792-2799, etc etc.
?> 
?> An install script decides which is the first UID/GID combo which is
?> open, and installs that set of binaries.

>> On Fri, 5 Feb 1999 08:06:05 -0600, 
>> Mate Wierdl <[EMAIL PROTECTED]> said:

M> Again, what if
M> UID 794 1794 2794 are taken?

   Here's a short script I use to find open user/group ID ranges for qmail.

-- 
Karl Vogel
ASC/YCOA, Wright-Patterson AFB, OH 45433, USA
[EMAIL PROTECTED]

-----------------------------------------------------------------------------
#!/bin/sh
#
# $Id: avail-ids,v 1.1 1999/02/05 20:49:28 vogelke Exp $
# $Source: /src/mail/mta/qmail/qmail-local/RCS/avail-ids,v $
#
# NAME:
#       avail-ids
#
# SYNOPSIS:
#       avail-ids
#
# DESCRIPTION:
#       Look for a nice range of open ids in /etc/passwd and /etc/group.
#
#       We only check for stuff over userid or groupid 100; if nothing
#       is found, then we don't have any user/group ids that high, so
#       we just print the first seven after 100.
#
#       The resulting commands should look something like this:
#             groupadd -g 1000 nofiles
#             groupadd -g 1001 qmail
#
#             useradd -g nofiles -u 1000 -d /var/qmail/alias alias
#             useradd -g nofiles -u 1001 -d /var/qmail qmaild
#             useradd -g nofiles -u 1002 -d /var/qmail qmaill
#             useradd -g nofiles -u 1003 -d /var/qmail qmailp
#
#             useradd -g qmail -u 1004 -d /var/qmail qmailq
#             useradd -g qmail -u 1005 -d /var/qmail qmailr
#             useradd -g qmail -u 1006 -d /var/qmail qmails
#
# OPTIONS:
#       None.
#
# AUTHOR:
#       Karl Vogel <[EMAIL PROTECTED]>
#       Sumaria Systems, Inc.

PATH=/bin:/usr/bin
export PATH

getrange () {
        awk '{
                cur = $1
                match = 0
                if (cur > 100 && cur - prev > 8)
                {
                        for (k = 7; k >= 1; --k)
                        {
                                match = 1
                                print cur-k
                        }
                        exit
                }
                prev = cur
        } END {
                if (match == 0)
                {
                        print "101 102 103 104 105 106 107"
                }
        }'
}

#
# Print groupadd commands.
#

set `cut -f3 -d: /etc/group | sort -nu | getrange`
echo groupadd -g $1 nofiles
echo groupadd -g $2 qmail

#
# Print useradd commands.
#

set `cut -f3 -d: /etc/passwd | sort -nu | getrange`
echo useradd -g nofiles -u $1 -d /var/qmail/alias alias
echo useradd -g nofiles -u $2 -d /var/qmail qmaild
echo useradd -g nofiles -u $3 -d /var/qmail qmaill
echo useradd -g nofiles -u $4 -d /var/qmail qmailp

echo useradd -g qmail -u $5 -d /var/qmail qmailq
echo useradd -g qmail -u $6 -d /var/qmail qmailr
echo useradd -g qmail -u $7 -d /var/qmail qmails

exit 0

Reply via email to