Commit Graph

218 Commits

Author SHA1 Message Date
christos
9b674959c3 More cleanups from Liam Foy:
- Fix error messages, some are completely incorrect
    - Asystem prints the error message so don't bother saving errno
    - Don't continue if a lock can't be obtained on /etc/group
    - Just pass struct passwd * to removehomedir, not its members
Some copyright maintenance:
    - Add Liam Foy.
    - Move Todd's copyright higher up.
    XXX: We should remove clause 3 and merge the two copyright groups.
2005-11-07 21:46:50 +00:00
christos
c81227bb08 call pw_abort() on failure (from Liam Foy) 2005-10-05 21:17:53 +00:00
rpaulo
ece51eabd5 PR 22469: user.c should use "pwd.h" include file for
_PATH_USERMGMT_CONF. By rpixley@vm-netbsd-161.nominum.com.
2005-09-19 00:43:17 +00:00
agc
c73a10fe94 Ensure that a consistent coding style is used.
s/1/EXIT_FAILURE/
2005-09-18 21:41:26 +00:00
christos
4471e7c6f5 From Liam Foy:
- Correct lenght for the username
- First character in the login name cannot be '-' (OpenBSD)
- Remove some #ifdef EXTENSIONS. find_group_info is always needed
- When printing change, if it's -1, place a correct string.
2005-09-18 14:15:53 +00:00
christos
c9d876ed6c Warn if the group being removed is still the primary group of an existing
user. From Liam Foy.
2005-09-12 15:45:03 +00:00
wiz
edd2c20bae Comment out /usr/share/examples/usermgmt -- dir does not exist. Fix macro typo.
From YOMURA Masanori in private mail.
2005-09-11 23:49:20 +00:00
wiz
ba3a0dadf1 Sync group* usages with man pages. 2005-09-09 22:04:09 +00:00
wiz
ac4e0a8127 Reformulate slightly to match other man pages. Use standard
EXIT STATUS section. Bump date.
2005-09-09 22:02:12 +00:00
wiz
a2bc89c87d Do not list all options for group* -- they are bound to get out of sync here.
Use standard EXIT STATUS section. Bump date.
2005-09-09 22:01:20 +00:00
wiz
f629e1e94e Sync user* usage with man pages. Bonus grammar fix in comment. 2005-09-09 21:48:10 +00:00
wiz
31e0e03316 Improve -p description in second case. 2005-09-09 21:43:42 +00:00
wiz
d0260f31e6 Reformulate slightly to match other man pages. 2005-09-09 21:31:25 +00:00
wiz
32587324af Use standard EXIT STATUS section.
Reformulate slightly to match other man pages. Bump date.
2005-09-09 21:31:00 +00:00
wiz
d48b71a0a8 Sort options and option descriptions. Use standard EXIT STATUS section.
Reformulate slightly to match other man pages. Bump date.
2005-09-09 21:30:31 +00:00
wiz
a431cb6155 Reformulate slightly to match other man pages. 2005-09-09 21:29:08 +00:00
wiz
42fd4ae9cd Do not list all options for user* -- they are bound
to get out of sync (as they currently are, for example). Use standard EXIT STATUS
section. End sentences with dots. Bump date.
2005-09-09 21:26:09 +00:00
wiz
e545853576 Sort option descriptions. 2005-09-09 20:48:16 +00:00
wiz
3a653a2ba9 Sort options and descriptions. Add standard EXIT STATUS section. Bump date. 2005-09-09 20:46:49 +00:00
hubertf
105b456cb7 Mention pwhash(1) in a few places,
suggested in PR 31125 by Stefan Schumacher.
2005-09-05 03:37:14 +00:00
he
1bb5735b5e Check the return value from mktime() and pass any error up.
*tp > LONG_MAX is never true, so replace that check with a test
for strtol() setting errno == ERANGE (oddly, some ports' build
swallowed this without warning).

There's no guarantee that a time_t stores the same number of bits
as a long, so check for an overflow there as well, and pass any
error up.

Discussed with christos, martin and mrg.
2005-08-12 21:40:35 +00:00
christos
91b1a8d112 patch from Liam Foy to add a -F option to force a user to change her's/his
password at the next login.
2005-08-12 16:22:05 +00:00
christos
c509b6a960 Fix reverse description of expiry/inactive. From Liam J. Foy. 2005-08-08 21:53:17 +00:00
christos
78a36d519b The language lawyers claim that it is invalid to test a freed pointer, so
don't!
2005-07-30 15:06:43 +00:00
christos
32a16509f3 If the class was not specified, don't print a warning. 2005-07-30 14:35:23 +00:00
christos
42ec3173f1 Don't make it fatal if the login class doe not exist. From Jukka Salmi. 2005-07-29 18:16:21 +00:00
wiz
54fa7b8a6b Various improvements. 2005-07-28 20:23:31 +00:00
peter
cea4f4ef79 Minor tweaks to the usage message:
- better layout for useradd.
- fix a small mistake in -u and wrap long line.
2005-07-27 23:32:02 +00:00
christos
9f01a2d031 Patches from Liam Foy:
- Add new -C option to 'usermod'. This allows a quick way to temporary
  lock a users account. This is similar to how FreeBSD do it using
  'adduser'. This function can be very handy to administrators!
- Import a function to check if the inputted class actually exists. It
  contains my modifications to test whether /etc/login.conf exists
  in the first place. -OpenBSD
2005-07-27 19:09:21 +00:00
christos
24e9d708ff Patches from Liam Foy:
- Add new -C option to 'usermod'. This allows a quick way to temporary
  lock a users account. This is similar to how FreeBSD do it using
  'adduser'. This function can be very handy to administrators!
- Import a function to check if the inputted class actually exists. It
  contains my modifications to test whether /etc/login.conf exists
  in the first place. -OpenBSD

While I am there:

- KNF (long wrapped lines, and spaces after void casts).
- Factor out some common code.
- Fix error messages.
	1. Consistently capitalize them.
	2. Fix err->errx and warn->warnx inappropriate uses.
	3. Use regerror where appropriate.
	4. Don't call warn()/err() to report errors after you trashed errno
	   by calling other syscalls. Save and restore the errno instead,
	   or in the warn() case, call warn() first.
- Fix size_t - int, uid_t - int confusion.
- Pass lint
2005-07-27 19:08:42 +00:00
agc
c426bea6d7 Commit changes from Liam J. Foy:
- system(), rmdir() sets errno, use it
- Use warnx() if strchr failed, not warn()
- Constify some arguments
- Fix cases when errx()/warnx() should be used instead of err()/warn()
  due to errno not being set.

Group code:
------------
- List members in a neat fashion, separated by commas
- groupmod(): Use find_group_info - consistency
2005-07-20 21:42:58 +00:00
agc
6fdfc9ef36 Be consistent when deleting a non-existent group - tell if the group is
non-existent.

Problem noted by Geert Hendrickx, fix from Liam J. Foy.
2005-06-14 18:29:58 +00:00
agc
8313edf555 Do some Common Subexpression Elimination when testing for valid characters
in login and group names.
2005-04-05 22:54:26 +00:00
peter
943430a954 Allow '_', '.' and '-' in group names, like in login names.
Fixes problem with groupadd(8) for _pflogd; pointed out by Jukka Salmi.

Approved by christos.
2005-04-05 22:03:57 +00:00
wiz
c81aaebd36 New sentence, new line. 2005-02-05 15:28:46 +00:00
wiz
e6ef4830c4 Be consistent in -r argument naming. 2005-02-05 15:26:50 +00:00
jmmv
bc6cd262e3 Add the -r flag to groupadd; it can be used to specify a gid range in which
new groups should be created.  This is similar to useradd's -r flag.

Closes my own PR bin/22791.  Patch by URA Hiroshi with some minor changes
by me.

No objections in tech-userlevel@ for multiple days.
2005-02-05 10:43:14 +00:00
agc
b186672660 Now that we have SHA1 passwords, modify useradd(8) so that it will accept
an encrypted SHA1 password on the command line.
2004-07-02 12:01:00 +00:00
agc
f8d5e607b8 Add -S argument to useradd, usermod and userdel, which allows the use of
a trailing '$' character in user names.

Requested in PR 23922 by Takahiro Kambe.

Also, fix a bug in the previous fix to usermod.
2004-01-14 09:35:33 +00:00
agc
e75d2f492c Fixes from Todd Miller in PR 24070.
Revert fgetln/asprintf changes from rev 1.26 - fgetln(3) does not return
a NUL-terminated string, so using strchr(3) is inappropriate. As the entry
from the password file is a known size, there's no need to use fgetln(3),
just use fgets(3) for consistency. This also means that an inappropriate
cast to int from asprintf(3) is unneeded, which was apparently causing
problems on OpenBSD's sparc64 port - just be consistent and use snprintf(3).
2004-01-14 08:25:30 +00:00
jmmv
b635f565e7 Homogenize usage messages: make the 'usage' word all lowercase, as this seems
to be the most common practice in our tree.
2004-01-05 23:23:32 +00:00
agc
68f1651086 Tidy up the previous isdigit(3) boolean check. 2003-10-21 06:34:26 +00:00
fvdl
1cb8eb7415 Don't compare an int to NULL. 2003-10-21 02:58:50 +00:00
wiz
dea83a9f43 Clarify that the user's full name (not username) goes into the GECOS field.
From Jeff Ross via jmc@openbsd.
2003-09-04 08:37:59 +00:00
agc
65feb98718 Some patches from Todd C. Miller:
1. Use REG_NEWLINE, rather than matching "\n".

2. Fix a bug where rm_user_from_groups would mangle group entries in
/etc/group when the user to be removed is the only member of the group,
by using substring matches.
2003-06-12 17:00:53 +00:00
agc
9878b0d124 The "default" case usually occurs at the end of all other options, so change
it to follow convention.

Add /* NOTREACHED */ comments, per share/misc/style.
2003-04-14 17:40:07 +00:00
dsl
238b338f74 Report usage() if getopt() returns '?'
Partial fix for bin/21146
2003-04-14 09:49:15 +00:00
jrf
151509e229 This addresses PR 20156. isalnum(), isdigit() and isspace() are used with
char as a parameter. On platforms with char signed by default, those are wrong.
Thanks to Christian Biere christianbiere@gmx.de for the patch he supplied.
I tested the patch and agc approved it for commit.
2003-03-14 16:56:39 +00:00
wiz
990562bfef .Nm does not need a dummy argument ("") before punctuation or
for correct formatting of the SYNOPSIS any longer.
2003-02-25 10:34:36 +00:00
grant
806593a806 The correct capitalisation of 'NetBSD.org' is (you
guessed it) 'NetBSD.org'.

some mdoc fixes.
2003-02-14 16:11:34 +00:00
perry
8a49ec08e4 "Utilize" has exactly the same meaning as "use," but it is more
difficult to read and understand. Most manuals of English style
therefore say that you should use "use".
2003-02-04 23:07:28 +00:00
agc
7cb1f145f5 Add a check for the length of the login name given by the user.
Provided by Ben Collver in PR 20154
2003-02-03 12:20:46 +00:00
jmmv
4c30a46c79 Fix typo in first form synopsis: -k does not require -r. Okay'ed by wiz. 2003-01-22 20:50:47 +00:00
wiz
7f3797c977 directory has a c. From Adrian Mrva. 2002-12-21 12:52:13 +00:00
agc
d6b0aed068 When deleting a user with preservation, use a password of
"*************" rather than a single asterisk - it's just as difficult
to hash to the longer password since the asterisk character itself is
not in its alphabet, and pwd_mkdb now thinks it's a valid DES password.
2002-11-08 11:53:20 +00:00
agc
7843f87c3d Factor out some common code. 2002-11-08 11:44:37 +00:00
wiz
40a72a2371 Undo last, on request by agc. 2002-10-02 17:30:08 +00:00
wiz
4fcce79872 utilize American spelling. 2002-10-02 15:45:32 +00:00
grant
7d8ff25974 new sentence, new line. 2002-10-02 13:49:11 +00:00
itojun
7cf12fa457 valid_password_length() is a boolean function, so there's no point in
having "> 0" in if clause.
2002-10-01 02:50:51 +00:00
agc
92ef00aeba Update previous to reflect reality. For blowfish passwords, the salt
can be a variable length field, so check the (fixed length) password
length, rather then the length of the whole password+salt+cipher.

Use a cipher type of "$2a" for blowfish.
2002-09-30 14:15:47 +00:00
agc
e7bdda1971 Handle PR 18474 in a more safe and scalable fashion - keep a table of
password types, and their associated lengths, and check in useradd or
usermod whether the given encrypted password has the correct length.

This removes the (duplicated) hardcoded lengths which had crept in
with the last commit, and also checks the length of the given password
against the expected length.
2002-09-30 10:32:40 +00:00
itojun
84237f231a support MD5/blowfish password. PR 18474. 2002-09-30 04:05:22 +00:00
agc
2f14b22182 Describe what this utility does a bit better. Pointed out by Curt Sampson. 2002-09-06 08:59:25 +00:00
agc
18e50dcd89 Use syslog(3) to log new users and groups, deletions of users and groups,
and modification of user and group information.

Syslog priority is LOG_INFO, facility is LOG_USER (there is no need to
do this via LOG_AUTH, since the password and group files are world
readable).

Suggested by Hubert Feyrer, after a similar facility in Linux.
2002-08-27 12:38:02 +00:00
agc
051f76f577 Generalise the function which checks if a user is local to work for groups
as well.

Use the new function when modifying a group's information.
2002-08-27 11:25:29 +00:00
wiz
aea5088350 Set the default password (if not specified) to a single star instead
of PasswordLength stars.
2002-08-07 14:24:52 +00:00
agc
b35288ab0c Add a function is_local_user(), and use it in moduser(), to check that
the user is not found through NIS.

Completes fix of PR 17849, from Grant Beattie (grant@netbsd.org).

Also, don't cast return type of pw_abort(3) to void, as it already is void.
2002-08-06 11:56:26 +00:00
agc
569d79bd84 Remove the /etc/ptmp file via pw_abort(3) if the pw_mkdb(3) call fails.
Addresses part of PR 17849 from Grant Beattie, grant@netbsd.org.
2002-08-06 09:03:55 +00:00
grant
eda9e509bb sweep of errx/warnx, remove unnecessary trailing \n 2002-07-20 08:40:16 +00:00
wiz
7c42d2fdaf Clean up last (no spaces before parentheses). 2002-07-09 14:13:18 +00:00
tron
4a3185f506 Get rid of __P() here. The rest of the sources doesn't use it, too. 2002-07-09 10:34:44 +00:00
tron
cb35c09756 Fix build problem probably caused by some toolchain change. 2002-07-09 10:34:16 +00:00
agc
c24c69434f Remove user from supplementary groups when deleting a user and not
preserving information.

Remove BUGS section from userdel(8) accordingly.

Make this utility compile with WARNS=3 - add const-poisoning and
shadow variable name resolution.
2002-07-08 22:17:47 +00:00
wiz
2e935ec638 Don't xref ourselves, use Nm. 2002-06-24 18:22:37 +00:00
wiz
d4144f2137 Drop trailing whitespace and sort sections. 2002-06-24 18:20:54 +00:00
grant
551a65be7c add BUGS section (1 entry from bin/11244) 2002-06-24 17:28:07 +00:00
grant
091e72dbd4 be more explicit about creation of /etc/usermgmt.conf 2002-06-10 08:33:05 +00:00
grant
ef33e31e46 mention that -D creates defaults file if it doesn't already exist and if
we are running as root.
2002-06-10 07:53:48 +00:00
wiz
aa912aee09 Sort SEE ALSO. 2002-06-01 09:21:21 +00:00
wiz
eb6d65caac Widen tag for list. 2002-06-01 09:21:11 +00:00
grant
9210200e15 add usermgmt.conf man page.
user -e and -f now accepts "month day year" (ala chpass(1)) and
seconds-since-epoch.
correct man pages accordingly.
2002-06-01 06:28:06 +00:00
grant
787bbf3204 fix typo 2002-05-28 04:39:08 +00:00
agc
0a602aa3de Handle multiple ranges on the command line and in the defaults file,
based on some code from Todd C.  Miller, which in turn was based on a
patch from Brian Poole <raj@cerias.purdue.edu>.

Look first in any uid ranges specified on the command line, in the order
they were given on the command line, and then in any ranges specified in
the defaults file.

With thanks to Brian for nudging me a number of times to fix this.
2002-05-03 10:31:14 +00:00
agc
2de2bc02d6 Fix for skeleton directory changes to defaults file from Brian Poole
<raj@cerias.purdue.edu>

Previous behaviour as follows:

# useradd -D -k /foo/bar
group           users
base_dir        /home
skel_dir        /foo/bar
shell           /bin/csh
class
inactive        0
expire          Null (unset)
range           10200..10300
range           10600..10700
# useradd -D
group           users
base_dir        /home
skel_dir        /etc/skel
shell           /bin/csh
class
inactive        0
expire          Null (unset)
range           10200..10300
range           10600..10700
2002-05-03 10:11:16 +00:00
agc
3db3295859 Fix from Brian Poole <raj@cerias.purdue.edu> for improper handling of
UID ranges. Previous behaviour is demonstrated below...

# useradd -D
group           users
base_dir        /home
skel_dir        /etc/skel
shell           /bin/csh
class
inactive        0
expire          Null (unset)
range           10200..10300
# useradd -D -r 10200..10300 -r 10400..10500
# useradd -D
group           users
base_dir        /home
skel_dir        /etc/skel
shell           /bin/csh
class
inactive        0
expire          Null (unset)
range           10400..10500

The second command should have put 2 ranges back into the config file,
but it really only put one because the first range on the command line
was marked as a duplicate (but when it got to writing the config file,
it only wrote command line ranges, so the 10200 got skipped).  Fix
this by initializing defrc to 0 and then only looking after defrc for
duplicate ranges.
2002-05-03 10:05:28 +00:00
agc
00ee66cd54 Modifications from Brian Poole <raj@cerias.purdue.edu>, via OpenBSD:
+ if the cd built-in fails, don't try to copy the directory hierarchy
  with pax - s/;/&&/ in a shell command
+ clean up after ourselves if a rename fails - remove the newly-created
  group file.
2002-05-03 08:07:02 +00:00
agc
3387a6a54e Do the previous differently. Run through the possible ranges for uids in
the command line order, then check the default range after that, if none
has yet been found.

Prompted by Brian Poole <raj@cerias.purdue.edu>.
2002-03-31 21:31:10 +00:00
mason
3b5b0345cc Make wording and intent clearer. "Real-world" users have expressed confusion,
and the former wording didn't help.
2002-02-27 17:42:41 +00:00
ross
2a76afae02 Generate <>& symbolically. I'm avoiding .../dist/... directories for now. 2002-02-08 01:36:18 +00:00
agc
bf3822aec1 Search uid ranges properly, using command line ranges if provided, and
using the default range last.

Problem reported by Cillian Sharkey <cns@redbrick.dcu.ie>
2002-02-05 19:18:29 +00:00
wiz
32344167c3 Sort SEE ALSO, use standard headers. 2002-02-02 02:07:01 +00:00
wiz
23455e9072 Use standard headers. 2002-02-02 02:06:50 +00:00
wiz
97e18ab0bb Fix typo in date, sort SEE ALSO, use standard headers. 2002-02-02 02:06:23 +00:00
wiz
b75432a4bf Use standard headers. 2002-02-02 02:05:29 +00:00
wiz
a2d753e3ef Whitespace nits. 2002-01-19 11:44:57 +00:00
agc
cd27040c88 + add backwards compatibility hook for old pw_mkdb() calls with no args
+ remove some unused code in a comment.

+ add F_SHELL flag in userdel

+ use a separate local declaration for a temporary variable, rather
than overloading a variable that's used for something else.
2001-10-22 11:00:05 +00:00
agc
c94b91a672 Update documentation to reflect reality - "userdel -p" replaces the login
shell with /sbin/nologin, rather than /usr/bin/false.
2001-10-16 08:17:07 +00:00
wiz
4c99916337 va_{start,end} audit:
Make sure that each va_start has one and only one matching va_end,
especially in error cases.
If the va_list is used multiple times, do multiple va_starts/va_ends.
If a function gets va_list as argument, don't let it use va_end (since
it's the callers responsibility).

Improved by comments from enami and christos -- thanks!

Heimdal/krb4/KAME changes already fed back, rest to follow.

Inspired by, but not not based on, OpenBSD.
2001-09-24 13:22:25 +00:00
hubertf
5653bfc431 if creategid() fails, don't try to print system error message (use errx()
instead of err()), as all error cases in creategid() are already commented
properly from inside creategid().

This prevents funny errors like:

	miyu# groupadd test2
	miyu# groupadd test2
	groupadd: group `test2' already exists
	groupadd: can't add group: problems with /etc/group file: Inappropriate ioctl for device
2001-09-16 18:08:37 +00:00