[svn-upgrade] Integrating new upstream version, shadow (20000826)

This commit is contained in:
nekral-guest 2007-10-07 11:44:14 +00:00
parent 446e664caa
commit efd7efa9f1
196 changed files with 7676 additions and 9088 deletions

View File

@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
AUTOMAKE_OPTIONS = 1.0 foreign ansi2knr
AUTOMAKE_OPTIONS = 1.0 foreign
SUBDIRS = intl po man lib libmisc src \
contrib debian doc etc old redhat
contrib debian doc etc redhat # old

View File

@ -79,6 +79,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
@ -101,18 +102,17 @@ VERSION = @VERSION@
YACC = @YACC@
l = @l@
AUTOMAKE_OPTIONS = 1.0 foreign ansi2knr
AUTOMAKE_OPTIONS = 1.0 foreign
SUBDIRS = intl po man lib libmisc src contrib debian doc etc old redhat
SUBDIRS = intl po man lib libmisc src contrib debian doc etc redhat # old
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
DIST_COMMON = ./stamp-h.in ABOUT-NLS Makefile.am Makefile.in acconfig.h \
aclocal.m4 ansi2knr.1 ansi2knr.c config.guess config.h.in config.sub \
configure configure.in install-sh ltconfig ltmain.sh missing \
mkinstalldirs
aclocal.m4 config.guess config.h.in config.sub configure configure.in \
install-sh ltconfig ltmain.sh missing mkinstalldirs
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)

View File

@ -1,36 +0,0 @@
.TH ANSI2KNR 1 "19 Jan 1996"
.SH NAME
ansi2knr \- convert ANSI C to Kernighan & Ritchie C
.SH SYNOPSIS
.I ansi2knr
[--varargs] input_file [output_file]
.SH DESCRIPTION
If no output_file is supplied, output goes to stdout.
.br
There are no error messages.
.sp
.I ansi2knr
recognizes function definitions by seeing a non-keyword identifier at the left
margin, followed by a left parenthesis, with a right parenthesis as the last
character on the line, and with a left brace as the first token on the
following line (ignoring possible intervening comments). It will recognize a
multi-line header provided that no intervening line ends with a left or right
brace or a semicolon. These algorithms ignore whitespace and comments, except
that the function name must be the first thing on the line.
.sp
The following constructs will confuse it:
.br
- Any other construct that starts at the left margin and follows the
above syntax (such as a macro or function call).
.br
- Some macros that tinker with the syntax of the function header.
.sp
The --varargs switch is obsolete, and is recognized only for
backwards compatibility. The present version of
.I ansi2knr
will always attempt to convert a ... argument to va_alist and va_dcl.
.SH AUTHOR
L. Peter Deutsch <ghost@aladdin.com> wrote the original ansi2knr and
continues to maintain the current version; most of the code in the current
version is his work. ansi2knr also includes contributions by Francois
Pinard <pinard@iro.umontreal.ca> and Jim Avera <jima@netcom.com>.

View File

@ -1,609 +0,0 @@
/* Copyright (C) 1989, 1997, 1998 Aladdin Enterprises. All rights reserved. */
/*$Id: ansi2knr.c,v 1.10 1998/12/02 12:42:23 tromey Exp $*/
/* Convert ANSI C function definitions to K&R ("traditional C") syntax */
/*
ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY. No author or distributor accepts responsibility to anyone for the
consequences of using it or for whether it serves any particular purpose or
works at all, unless he says so in writing. Refer to the GNU General Public
License (the "GPL") for full details.
Everyone is granted permission to copy, modify and redistribute ansi2knr,
but only under the conditions described in the GPL. A copy of this license
is supposed to have been given to you along with ansi2knr so you can know
your rights and responsibilities. It should be in a file named COPYLEFT,
or, if there is no file named COPYLEFT, a file named COPYING. Among other
things, the copyright notice and this notice must be preserved on all
copies.
We explicitly state here what we believe is already implied by the GPL: if
the ansi2knr program is distributed as a separate set of sources and a
separate executable file which are aggregated on a storage medium together
with another program, this in itself does not bring the other program under
the GPL, nor does the mere fact that such a program or the procedures for
constructing it invoke the ansi2knr executable bring any other part of the
program under the GPL.
*/
/*
* Usage:
ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]]
* --filename provides the file name for the #line directive in the output,
* overriding input_file (if present).
* If no input_file is supplied, input is read from stdin.
* If no output_file is supplied, output goes to stdout.
* There are no error messages.
*
* ansi2knr recognizes function definitions by seeing a non-keyword
* identifier at the left margin, followed by a left parenthesis,
* with a right parenthesis as the last character on the line,
* and with a left brace as the first token on the following line
* (ignoring possible intervening comments), except that a line
* consisting of only
* identifier1(identifier2)
* will not be considered a function definition unless identifier2 is
* the word "void". ansi2knr will recognize a multi-line header provided
* that no intervening line ends with a left or right brace or a semicolon.
* These algorithms ignore whitespace and comments, except that
* the function name must be the first thing on the line.
* The following constructs will confuse it:
* - Any other construct that starts at the left margin and
* follows the above syntax (such as a macro or function call).
* - Some macros that tinker with the syntax of the function header.
*/
/*
* The original and principal author of ansi2knr is L. Peter Deutsch
* <ghost@aladdin.com>. Other authors are noted in the change history
* that follows (in reverse chronological order):
lpd 1998-11-09 added further hack to recognize identifier(void)
as being a procedure
lpd 1998-10-23 added hack to recognize lines consisting of
identifier1(identifier2) as *not* being procedures
lpd 1997-12-08 made input_file optional; only closes input and/or
output file if not stdin or stdout respectively; prints
usage message on stderr rather than stdout; adds
--filename switch (changes suggested by
<ceder@lysator.liu.se>)
lpd 1996-01-21 added code to cope with not HAVE_CONFIG_H and with
compilers that don't understand void, as suggested by
Tom Lane
lpd 1996-01-15 changed to require that the first non-comment token
on the line following a function header be a left brace,
to reduce sensitivity to macros, as suggested by Tom Lane
<tgl@sss.pgh.pa.us>
lpd 1995-06-22 removed #ifndefs whose sole purpose was to define
undefined preprocessor symbols as 0; changed all #ifdefs
for configuration symbols to #ifs
lpd 1995-04-05 changed copyright notice to make it clear that
including ansi2knr in a program does not bring the entire
program under the GPL
lpd 1994-12-18 added conditionals for systems where ctype macros
don't handle 8-bit characters properly, suggested by
Francois Pinard <pinard@iro.umontreal.ca>;
removed --varargs switch (this is now the default)
lpd 1994-10-10 removed CONFIG_BROKETS conditional
lpd 1994-07-16 added some conditionals to help GNU `configure',
suggested by Francois Pinard <pinard@iro.umontreal.ca>;
properly erase prototype args in function parameters,
contributed by Jim Avera <jima@netcom.com>;
correct error in writeblanks (it shouldn't erase EOLs)
lpd 1989-xx-xx original version
*/
/* Most of the conditionals here are to make ansi2knr work with */
/* or without the GNU configure machinery. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdio.h>
#include <ctype.h>
#if HAVE_CONFIG_H
/*
For properly autoconfiguring ansi2knr, use AC_CONFIG_HEADER(config.h).
This will define HAVE_CONFIG_H and so, activate the following lines.
*/
# if STDC_HEADERS || HAVE_STRING_H
# include <string.h>
# else
# include <strings.h>
# endif
#else /* not HAVE_CONFIG_H */
/* Otherwise do it the hard way */
# ifdef BSD
# include <strings.h>
# else
# ifdef VMS
extern int strlen(), strncmp();
# else
# include <string.h>
# endif
# endif
#endif /* not HAVE_CONFIG_H */
#if STDC_HEADERS
# include <stdlib.h>
#else
/*
malloc and free should be declared in stdlib.h,
but if you've got a K&R compiler, they probably aren't.
*/
# ifdef MSDOS
# include <malloc.h>
# else
# ifdef VMS
extern char *malloc();
extern void free();
# else
extern char *malloc();
extern int free();
# endif
# endif
#endif
/*
* The ctype macros don't always handle 8-bit characters correctly.
* Compensate for this here.
*/
#ifdef isascii
# undef HAVE_ISASCII /* just in case */
# define HAVE_ISASCII 1
#else
#endif
#if STDC_HEADERS || !HAVE_ISASCII
# define is_ascii(c) 1
#else
# define is_ascii(c) isascii(c)
#endif
#define is_space(c) (is_ascii(c) && isspace(c))
#define is_alpha(c) (is_ascii(c) && isalpha(c))
#define is_alnum(c) (is_ascii(c) && isalnum(c))
/* Scanning macros */
#define isidchar(ch) (is_alnum(ch) || (ch) == '_')
#define isidfirstchar(ch) (is_alpha(ch) || (ch) == '_')
/* Forward references */
char *skipspace();
int writeblanks();
int test1();
int convert1();
/* The main program */
int
main(argc, argv)
int argc;
char *argv[];
{ FILE *in = stdin;
FILE *out = stdout;
char *filename = 0;
#define bufsize 5000 /* arbitrary size */
char *buf;
char *line;
char *more;
char *usage =
"Usage: ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]]\n";
/*
* In previous versions, ansi2knr recognized a --varargs switch.
* If this switch was supplied, ansi2knr would attempt to convert
* a ... argument to va_alist and va_dcl; if this switch was not
* supplied, ansi2knr would simply drop any such arguments.
* Now, ansi2knr always does this conversion, and we only
* check for this switch for backward compatibility.
*/
int convert_varargs = 1;
while ( argc > 1 && argv[1][0] == '-' ) {
if ( !strcmp(argv[1], "--varargs") ) {
convert_varargs = 1;
argc--;
argv++;
continue;
}
if ( !strcmp(argv[1], "--filename") && argc > 2 ) {
filename = argv[2];
argc -= 2;
argv += 2;
continue;
}
fprintf(stderr, "Unrecognized switch: %s\n", argv[1]);
fprintf(stderr, usage);
exit(1);
}
switch ( argc )
{
default:
fprintf(stderr, usage);
exit(0);
case 3:
out = fopen(argv[2], "w");
if ( out == NULL ) {
fprintf(stderr, "Cannot open output file %s\n", argv[2]);
exit(1);
}
/* falls through */
case 2:
in = fopen(argv[1], "r");
if ( in == NULL ) {
fprintf(stderr, "Cannot open input file %s\n", argv[1]);
exit(1);
}
if ( filename == 0 )
filename = argv[1];
/* falls through */
case 1:
break;
}
if ( filename )
fprintf(out, "#line 1 \"%s\"\n", filename);
buf = malloc(bufsize);
line = buf;
while ( fgets(line, (unsigned)(buf + bufsize - line), in) != NULL )
{
test: line += strlen(line);
switch ( test1(buf) )
{
case 2: /* a function header */
convert1(buf, out, 1, convert_varargs);
break;
case 1: /* a function */
/* Check for a { at the start of the next line. */
more = ++line;
f: if ( line >= buf + (bufsize - 1) ) /* overflow check */
goto wl;
if ( fgets(line, (unsigned)(buf + bufsize - line), in) == NULL )
goto wl;
switch ( *skipspace(more, 1) )
{
case '{':
/* Definitely a function header. */
convert1(buf, out, 0, convert_varargs);
fputs(more, out);
break;
case 0:
/* The next line was blank or a comment: */
/* keep scanning for a non-comment. */
line += strlen(line);
goto f;
default:
/* buf isn't a function header, but */
/* more might be. */
fputs(buf, out);
strcpy(buf, more);
line = buf;
goto test;
}
break;
case -1: /* maybe the start of a function */
if ( line != buf + (bufsize - 1) ) /* overflow check */
continue;
/* falls through */
default: /* not a function */
wl: fputs(buf, out);
break;
}
line = buf;
}
if ( line != buf )
fputs(buf, out);
free(buf);
if ( out != stdout )
fclose(out);
if ( in != stdin )
fclose(in);
return 0;
}
/* Skip over space and comments, in either direction. */
char *
skipspace(p, dir)
register char *p;
register int dir; /* 1 for forward, -1 for backward */
{ for ( ; ; )
{ while ( is_space(*p) )
p += dir;
if ( !(*p == '/' && p[dir] == '*') )
break;
p += dir; p += dir;
while ( !(*p == '*' && p[dir] == '/') )
{ if ( *p == 0 )
return p; /* multi-line comment?? */
p += dir;
}
p += dir; p += dir;
}
return p;
}
/*
* Write blanks over part of a string.
* Don't overwrite end-of-line characters.
*/
int
writeblanks(start, end)
char *start;
char *end;
{ char *p;
for ( p = start; p < end; p++ )
if ( *p != '\r' && *p != '\n' )
*p = ' ';
return 0;
}
/*
* Test whether the string in buf is a function definition.
* The string may contain and/or end with a newline.
* Return as follows:
* 0 - definitely not a function definition;
* 1 - definitely a function definition;
* 2 - definitely a function prototype (NOT USED);
* -1 - may be the beginning of a function definition,
* append another line and look again.
* The reason we don't attempt to convert function prototypes is that
* Ghostscript's declaration-generating macros look too much like
* prototypes, and confuse the algorithms.
*/
int
test1(buf)
char *buf;
{ register char *p = buf;
char *bend;
char *endfn;
int contin;
if ( !isidfirstchar(*p) )
return 0; /* no name at left margin */
bend = skipspace(buf + strlen(buf) - 1, -1);
switch ( *bend )
{
case ';': contin = 0 /*2*/; break;
case ')': contin = 1; break;
case '{': return 0; /* not a function */
case '}': return 0; /* not a function */
default: contin = -1;
}
while ( isidchar(*p) )
p++;
endfn = p;
p = skipspace(p, 1);
if ( *p++ != '(' )
return 0; /* not a function */
p = skipspace(p, 1);
if ( *p == ')' )
return 0; /* no parameters */
/* Check that the apparent function name isn't a keyword. */
/* We only need to check for keywords that could be followed */
/* by a left parenthesis (which, unfortunately, is most of them). */
{ static char *words[] =
{ "asm", "auto", "case", "char", "const", "double",
"extern", "float", "for", "if", "int", "long",
"register", "return", "short", "signed", "sizeof",
"static", "switch", "typedef", "unsigned",
"void", "volatile", "while", 0
};
char **key = words;
char *kp;
int len = endfn - buf;
while ( (kp = *key) != 0 )
{ if ( strlen(kp) == len && !strncmp(kp, buf, len) )
return 0; /* name is a keyword */
key++;
}
}
{
char *id = p;
int len;
/*
* Check for identifier1(identifier2) and not
* identifier1(void).
*/
while ( isidchar(*p) )
p++;
len = p - id;
p = skipspace(p, 1);
if ( *p == ')' && (len != 4 || strncmp(id, "void", 4)) )
return 0; /* not a function */
}
/*
* If the last significant character was a ), we need to count
* parentheses, because it might be part of a formal parameter
* that is a procedure.
*/
if (contin > 0) {
int level = 0;
for (p = skipspace(buf, 1); *p; p = skipspace(p + 1, 1))
level += (*p == '(' ? 1 : *p == ')' ? -1 : 0);
if (level > 0)
contin = -1;
}
return contin;
}
/* Convert a recognized function definition or header to K&R syntax. */
int
convert1(buf, out, header, convert_varargs)
char *buf;
FILE *out;
int header; /* Boolean */
int convert_varargs; /* Boolean */
{ char *endfn;
register char *p;
/*
* The breaks table contains pointers to the beginning and end
* of each argument.
*/
char **breaks;
unsigned num_breaks = 2; /* for testing */
char **btop;
char **bp;
char **ap;
char *vararg = 0;
/* Pre-ANSI implementations don't agree on whether strchr */
/* is called strchr or index, so we open-code it here. */
for ( endfn = buf; *(endfn++) != '('; )
;
top: p = endfn;
breaks = (char **)malloc(sizeof(char *) * num_breaks * 2);
if ( breaks == 0 )
{ /* Couldn't allocate break table, give up */
fprintf(stderr, "Unable to allocate break table!\n");
fputs(buf, out);
return -1;
}
btop = breaks + num_breaks * 2 - 2;
bp = breaks;
/* Parse the argument list */
do
{ int level = 0;
char *lp = NULL;
char *rp;
char *end = NULL;
if ( bp >= btop )
{ /* Filled up break table. */
/* Allocate a bigger one and start over. */
free((char *)breaks);
num_breaks <<= 1;
goto top;
}
*bp++ = p;
/* Find the end of the argument */
for ( ; end == NULL; p++ )
{ switch(*p)
{
case ',':
if ( !level ) end = p;
break;
case '(':
if ( !level ) lp = p;
level++;
break;
case ')':
if ( --level < 0 ) end = p;
else rp = p;
break;
case '/':
p = skipspace(p, 1) - 1;
break;
default:
;
}
}
/* Erase any embedded prototype parameters. */
if ( lp )
writeblanks(lp + 1, rp);
p--; /* back up over terminator */
/* Find the name being declared. */
/* This is complicated because of procedure and */
/* array modifiers. */
for ( ; ; )
{ p = skipspace(p - 1, -1);
switch ( *p )
{
case ']': /* skip array dimension(s) */
case ')': /* skip procedure args OR name */
{ int level = 1;
while ( level )
switch ( *--p )
{
case ']': case ')': level++; break;
case '[': case '(': level--; break;
case '/': p = skipspace(p, -1) + 1; break;
default: ;
}
}
if ( *p == '(' && *skipspace(p + 1, 1) == '*' )
{ /* We found the name being declared */
while ( !isidfirstchar(*p) )
p = skipspace(p, 1) + 1;
goto found;
}
break;
default:
goto found;
}
}
found: if ( *p == '.' && p[-1] == '.' && p[-2] == '.' )
{ if ( convert_varargs )
{ *bp++ = "va_alist";
vararg = p-2;
}
else
{ p++;
if ( bp == breaks + 1 ) /* sole argument */
writeblanks(breaks[0], p);
else
writeblanks(bp[-1] - 1, p);
bp--;
}
}
else
{ while ( isidchar(*p) ) p--;
*bp++ = p+1;
}
p = end;
}
while ( *p++ == ',' );
*bp = p;
/* Make a special check for 'void' arglist */
if ( bp == breaks+2 )
{ p = skipspace(breaks[0], 1);
if ( !strncmp(p, "void", 4) )
{ p = skipspace(p+4, 1);
if ( p == breaks[2] - 1 )
{ bp = breaks; /* yup, pretend arglist is empty */
writeblanks(breaks[0], p + 1);
}
}
}
/* Put out the function name and left parenthesis. */
p = buf;
while ( p != endfn ) putc(*p, out), p++;
/* Put out the declaration. */
if ( header )
{ fputs(");", out);
for ( p = breaks[0]; *p; p++ )
if ( *p == '\r' || *p == '\n' )
putc(*p, out);
}
else
{ for ( ap = breaks+1; ap < bp; ap += 2 )
{ p = *ap;
while ( isidchar(*p) )
putc(*p, out), p++;
if ( ap < bp - 1 )
fputs(", ", out);
}
fputs(") ", out);
/* Put out the argument declarations */
for ( ap = breaks+2; ap <= bp; ap += 2 )
(*ap)[-1] = ';';
if ( vararg != 0 )
{ *vararg = 0;
fputs(breaks[0], out); /* any prior args */
fputs("va_dcl", out); /* the final arg */
fputs(bp[0], out);
}
else
fputs(breaks[0], out);
}
free((char *)breaks);
return 0;
}

View File

@ -260,9 +260,15 @@
/* Define if you have the initgroups function. */
#undef HAVE_INITGROUPS
/* Define if you have the lchown function. */
#undef HAVE_LCHOWN
/* Define if you have the lckpwdf function. */
#undef HAVE_LCKPWDF
/* Define if you have the lstat function. */
#undef HAVE_LSTAT
/* Define if you have the memcpy function. */
#undef HAVE_MEMCPY

242
configure vendored
View File

@ -723,7 +723,7 @@ fi
PACKAGE=shadow
VERSION=19990827
VERSION=20000826
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
{ echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
@ -3231,7 +3231,7 @@ else
fi
done
for ac_func in gettimeofday getusershell getutent initgroups lckpwdf
for ac_func in gettimeofday getusershell getutent initgroups lchown lckpwdf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:3238: checking for $ac_func" >&5
@ -3286,7 +3286,7 @@ else
fi
done
for ac_func in memcpy memset setgroups sigaction strchr updwtmp updwtmpx
for ac_func in lstat memcpy memset setgroups sigaction strchr updwtmp updwtmpx
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:3293: checking for $ac_func" >&5
@ -4410,17 +4410,58 @@ fi
fi
if test "$with_libskey" = "yes"; then
echo $ac_n "checking for MD5Init in -lmd""... $ac_c" 1>&6
echo "configure:4417: checking for MD5Init in -lmd" >&5
ac_lib_var=`echo md'_'MD5Init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lmd $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4425 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char MD5Init();
int main() {
MD5Init()
; return 0; }
EOF
if { (eval echo configure:4436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=no"
fi
rm -f conftest*
LIBS="$ac_save_LIBS"
fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
LIBMD=-lmd
else
echo "$ac_t""no" 1>&6
fi
echo $ac_n "checking for skeychallenge in -lskey""... $ac_c" 1>&6
echo "configure:4416: checking for skeychallenge in -lskey" >&5
echo "configure:4457: checking for skeychallenge in -lskey" >&5
ac_lib_var=`echo skey'_'skeychallenge | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_save_LIBS="$LIBS"
LIBS="-lskey $LIBCRYPT $LIBS"
LIBS="-lskey $LIBMD $LIBCRYPT $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4424 "configure"
#line 4465 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -4431,7 +4472,7 @@ int main() {
skeychallenge()
; return 0; }
EOF
if { (eval echo configure:4435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:4476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -4456,7 +4497,7 @@ fi
elif test "$with_libopie" = "yes"; then
echo $ac_n "checking for opiechallenge in -lopie""... $ac_c" 1>&6
echo "configure:4460: checking for opiechallenge in -lopie" >&5
echo "configure:4501: checking for opiechallenge in -lopie" >&5
ac_lib_var=`echo opie'_'opiechallenge | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -4464,7 +4505,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lopie $LIBCRYPT $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4468 "configure"
#line 4509 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -4475,7 +4516,7 @@ int main() {
opiechallenge()
; return 0; }
EOF
if { (eval echo configure:4479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:4520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -4503,7 +4544,7 @@ fi
if test "$with_libtcfs" = "yes"; then
echo $ac_n "checking for tcfs_encrypt_key in -ltcfs""... $ac_c" 1>&6
echo "configure:4507: checking for tcfs_encrypt_key in -ltcfs" >&5
echo "configure:4548: checking for tcfs_encrypt_key in -ltcfs" >&5
ac_lib_var=`echo tcfs'_'tcfs_encrypt_key | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -4511,7 +4552,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ltcfs -lgdbm $LIBS"
cat > conftest.$ac_ext <<EOF
#line 4515 "configure"
#line 4556 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -4522,7 +4563,7 @@ int main() {
tcfs_encrypt_key()
; return 0; }
EOF
if { (eval echo configure:4526: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:4567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -4558,19 +4599,19 @@ if test "$with_libpam" = "yes"; then
EOF
echo $ac_n "checking whether pam_strerror needs two arguments""... $ac_c" 1>&6
echo "configure:4562: checking whether pam_strerror needs two arguments" >&5
echo "configure:4603: checking whether pam_strerror needs two arguments" >&5
if eval "test \"`echo '$''{'ac_cv_pam_strerror_needs_two_args'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4567 "configure"
#line 4608 "configure"
#include "confdefs.h"
#include <security/pam_appl.h>
int main() {
pam_handle_t *pamh; pam_strerror(pamh, PAM_SUCCESS);
; return 0; }
EOF
if { (eval echo configure:4574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:4615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_pam_strerror_needs_two_args=yes
else
@ -4597,21 +4638,21 @@ LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'`
echo $ac_n "checking for inline""... $ac_c" 1>&6
echo "configure:4601: checking for inline" >&5
echo "configure:4642: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
#line 4608 "configure"
#line 4649 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
if { (eval echo configure:4615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:4656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@ -4637,12 +4678,12 @@ EOF
esac
echo $ac_n "checking for size_t""... $ac_c" 1>&6
echo "configure:4641: checking for size_t" >&5
echo "configure:4682: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4646 "configure"
#line 4687 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@ -4672,19 +4713,19 @@ fi
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
echo "configure:4676: checking for working alloca.h" >&5
echo "configure:4717: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4681 "configure"
#line 4722 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
if { (eval echo configure:4688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:4729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@ -4705,12 +4746,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
echo "configure:4709: checking for alloca" >&5
echo "configure:4750: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4714 "configure"
#line 4755 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@ -4738,7 +4779,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
if { (eval echo configure:4742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:4783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@ -4770,12 +4811,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
echo "configure:4774: checking whether alloca needs Cray hooks" >&5
echo "configure:4815: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4779 "configure"
#line 4820 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@ -4800,12 +4841,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:4804: checking for $ac_func" >&5
echo "configure:4845: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4809 "configure"
#line 4850 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -4828,7 +4869,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:4832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:4873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -4855,7 +4896,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
echo "configure:4859: checking stack direction for C alloca" >&5
echo "configure:4900: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -4863,7 +4904,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
#line 4867 "configure"
#line 4908 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@ -4882,7 +4923,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
if { (eval echo configure:4886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:4927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@ -4907,17 +4948,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:4911: checking for $ac_hdr" >&5
echo "configure:4952: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4916 "configure"
#line 4957 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:4921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:4962: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -4946,12 +4987,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:4950: checking for $ac_func" >&5
echo "configure:4991: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 4955 "configure"
#line 4996 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -4974,7 +5015,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:4978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -4999,7 +5040,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
echo "configure:5003: checking for working mmap" >&5
echo "configure:5044: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -5007,7 +5048,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
#line 5011 "configure"
#line 5052 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@ -5147,7 +5188,7 @@ main()
}
EOF
if { (eval echo configure:5151: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
if { (eval echo configure:5192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@ -5175,17 +5216,17 @@ unistd.h sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:5179: checking for $ac_hdr" >&5
echo "configure:5220: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5184 "configure"
#line 5225 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:5189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:5230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -5215,12 +5256,12 @@ done
strdup __argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:5219: checking for $ac_func" >&5
echo "configure:5260: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5224 "configure"
#line 5265 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -5243,7 +5284,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:5247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -5272,12 +5313,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:5276: checking for $ac_func" >&5
echo "configure:5317: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5281 "configure"
#line 5322 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -5300,7 +5341,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:5304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -5334,19 +5375,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
echo "configure:5338: checking for LC_MESSAGES" >&5
echo "configure:5379: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5343 "configure"
#line 5384 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
if { (eval echo configure:5350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@ -5367,7 +5408,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
echo "configure:5371: checking whether NLS is requested" >&5
echo "configure:5412: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@ -5387,7 +5428,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
echo "configure:5391: checking whether included gettext is requested" >&5
echo "configure:5432: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@ -5406,17 +5447,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
echo "configure:5410: checking for libintl.h" >&5
echo "configure:5451: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5415 "configure"
#line 5456 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:5420: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:5461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -5433,19 +5474,19 @@ fi
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
echo "configure:5437: checking for gettext in libc" >&5
echo "configure:5478: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5442 "configure"
#line 5483 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
if { (eval echo configure:5449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@ -5461,7 +5502,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
echo "configure:5465: checking for bindtextdomain in -lintl" >&5
echo "configure:5506: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -5469,7 +5510,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
#line 5473 "configure"
#line 5514 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -5480,7 +5521,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
if { (eval echo configure:5484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -5496,12 +5537,12 @@ fi
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
echo "configure:5500: checking for gettext in libintl" >&5
echo "configure:5541: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
echo "configure:5505: checking for gettext in -lintl" >&5
echo "configure:5546: checking for gettext in -lintl" >&5
ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -5509,7 +5550,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
#line 5513 "configure"
#line 5554 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -5520,7 +5561,7 @@ int main() {
gettext()
; return 0; }
EOF
if { (eval echo configure:5524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -5559,7 +5600,7 @@ EOF
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:5563: checking for $ac_word" >&5
echo "configure:5604: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -5593,12 +5634,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
echo "configure:5597: checking for $ac_func" >&5
echo "configure:5638: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5602 "configure"
#line 5643 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -5621,7 +5662,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:5625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -5648,7 +5689,7 @@ done
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:5652: checking for $ac_word" >&5
echo "configure:5693: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -5684,7 +5725,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:5688: checking for $ac_word" >&5
echo "configure:5729: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -5716,7 +5757,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
#line 5720 "configure"
#line 5761 "configure"
#include "confdefs.h"
int main() {
@ -5724,7 +5765,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
if { (eval echo configure:5728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@ -5747,7 +5788,7 @@ fi
if test "$CATOBJEXT" = "NONE"; then
echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6
echo "configure:5751: checking whether catgets can be used" >&5
echo "configure:5792: checking whether catgets can be used" >&5
# Check whether --with-catgets or --without-catgets was given.
if test "${with_catgets+set}" = set; then
withval="$with_catgets"
@ -5760,7 +5801,7 @@ fi
if test "$nls_cv_use_catgets" = "yes"; then
echo $ac_n "checking for main in -li""... $ac_c" 1>&6
echo "configure:5764: checking for main in -li" >&5
echo "configure:5805: checking for main in -li" >&5
ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -5768,14 +5809,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-li $LIBS"
cat > conftest.$ac_ext <<EOF
#line 5772 "configure"
#line 5813 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
if { (eval echo configure:5779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -5803,12 +5844,12 @@ else
fi
echo $ac_n "checking for catgets""... $ac_c" 1>&6
echo "configure:5807: checking for catgets" >&5
echo "configure:5848: checking for catgets" >&5
if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 5812 "configure"
#line 5853 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char catgets(); below. */
@ -5831,7 +5872,7 @@ catgets();
; return 0; }
EOF
if { (eval echo configure:5835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:5876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_catgets=yes"
else
@ -5853,7 +5894,7 @@ EOF
# Extract the first word of "gencat", so it can be a program name with args.
set dummy gencat; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:5857: checking for $ac_word" >&5
echo "configure:5898: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -5889,7 +5930,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:5893: checking for $ac_word" >&5
echo "configure:5934: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -5926,7 +5967,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:5930: checking for $ac_word" >&5
echo "configure:5971: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -5961,7 +6002,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:5965: checking for $ac_word" >&5
echo "configure:6006: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -6019,7 +6060,7 @@ fi
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:6023: checking for $ac_word" >&5
echo "configure:6064: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -6053,7 +6094,7 @@ fi
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:6057: checking for $ac_word" >&5
echo "configure:6098: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -6089,7 +6130,7 @@ fi
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:6093: checking for $ac_word" >&5
echo "configure:6134: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -6182,7 +6223,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
echo "configure:6186: checking for catalogs to be installed" >&5
echo "configure:6227: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@ -6210,17 +6251,17 @@ echo "configure:6186: checking for catalogs to be installed" >&5
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
echo "configure:6214: checking for linux/version.h" >&5
echo "configure:6255: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 6219 "configure"
#line 6260 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:6224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:6265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -6386,7 +6427,8 @@ done
ac_given_srcdir=$srcdir
ac_given_INSTALL="$INSTALL"
trap 'rm -fr `echo "libmisc/Makefile man/Makefile lib/Makefile src/Makefile Makefile
trap 'rm -fr `echo "libmisc/Makefile man/Makefile man/pl/Makefile
lib/Makefile src/Makefile Makefile
contrib/Makefile debian/Makefile doc/Makefile etc/Makefile
intl/Makefile intl/po2tbl.sed po/Makefile.in
etc/pam.d/Makefile old/Makefile
@ -6457,6 +6499,7 @@ s%@LIBOBJS@%$LIBOBJS%g
s%@LIBCRYPT@%$LIBCRYPT%g
s%@LIBCRACK@%$LIBCRACK%g
s%@LIBSKEY@%$LIBSKEY%g
s%@LIBMD@%$LIBMD%g
s%@LIBTCFS@%$LIBTCFS%g
s%@LIBPAM@%$LIBPAM%g
s%@LTLIBOBJS@%$LTLIBOBJS%g
@ -6523,7 +6566,8 @@ EOF
cat >> $CONFIG_STATUS <<EOF
CONFIG_FILES=\${CONFIG_FILES-"libmisc/Makefile man/Makefile lib/Makefile src/Makefile Makefile
CONFIG_FILES=\${CONFIG_FILES-"libmisc/Makefile man/Makefile man/pl/Makefile
lib/Makefile src/Makefile Makefile
contrib/Makefile debian/Makefile doc/Makefile etc/Makefile
intl/Makefile intl/po2tbl.sed po/Makefile.in
etc/pam.d/Makefile old/Makefile

View File

@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(lib/dialchk.c)
AM_INIT_AUTOMAKE(shadow, 19990827)
AM_INIT_AUTOMAKE(shadow, 20000826)
AM_CONFIG_HEADER(config.h)
dnl Some hacks...
@ -111,8 +111,8 @@ AC_FUNC_STRFTIME
dnl Disabled for now, strtoday.c has problems with year 2000 or later
dnl AC_CHECK_FUNCS(strptime)
AC_CHECK_FUNCS(a64l fchmod fchown fsync getgroups gethostname getspnam)
AC_CHECK_FUNCS(gettimeofday getusershell getutent initgroups lckpwdf)
AC_CHECK_FUNCS(memcpy memset setgroups sigaction strchr updwtmp updwtmpx)
AC_CHECK_FUNCS(gettimeofday getusershell getutent initgroups lchown lckpwdf)
AC_CHECK_FUNCS(lstat memcpy memset setgroups sigaction strchr updwtmp updwtmpx)
AC_REPLACE_FUNCS(mkdir putgrent putpwent putspent rename rmdir)
AC_REPLACE_FUNCS(sgetgrent sgetpwent sgetspent)
@ -259,8 +259,10 @@ if test "$with_libcrack" != "no"; then
fi
AC_SUBST(LIBSKEY)
AC_SUBST(LIBMD)
if test "$with_libskey" = "yes"; then
AC_CHECK_LIB(skey, skeychallenge, AC_DEFINE(SKEY) LIBSKEY=-lskey, , $LIBCRYPT)
AC_CHECK_LIB(md, MD5Init, LIBMD=-lmd)
AC_CHECK_LIB(skey, skeychallenge, AC_DEFINE(SKEY) LIBSKEY=-lskey, , $LIBMD $LIBCRYPT)
elif test "$with_libopie" = "yes"; then
AC_CHECK_LIB(opie, opiechallenge, AC_DEFINE(OPIE) LIBSKEY=-lopie, , $LIBCRYPT)
fi
@ -299,7 +301,8 @@ dnl AC_SUBST(LTALLOCA)
AM_GNU_GETTEXT
dnl AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl)
AC_OUTPUT(libmisc/Makefile man/Makefile lib/Makefile src/Makefile Makefile
AC_OUTPUT(libmisc/Makefile man/Makefile man/pl/Makefile
lib/Makefile src/Makefile Makefile
contrib/Makefile debian/Makefile doc/Makefile etc/Makefile
intl/Makefile intl/po2tbl.sed po/Makefile.in
etc/pam.d/Makefile old/Makefile

View File

@ -2,4 +2,5 @@
# and also cooperate to make a distribution for `make dist'
EXTRA_DIST = README adduser.c adduser-old.c adduser.sh adduser2.sh \
atudel pwdauth.c rpasswd.c shadow-anonftp.patch udbachk.v012.tgz
atudel groupmems.shar pwdauth.c rpasswd.c shadow-anonftp.patch \
udbachk.v012.tgz

View File

@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
@ -104,7 +105,7 @@ VERSION = @VERSION@
YACC = @YACC@
l = @l@
EXTRA_DIST = README adduser.c adduser-old.c adduser.sh adduser2.sh atudel pwdauth.c rpasswd.c shadow-anonftp.patch udbachk.v012.tgz
EXTRA_DIST = README adduser.c adduser-old.c adduser.sh adduser2.sh atudel groupmems.shar pwdauth.c rpasswd.c shadow-anonftp.patch udbachk.v012.tgz
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h

546
contrib/groupmems.shar Normal file
View File

@ -0,0 +1,546 @@
#!/bin/sh
# This is a shell archive (produced by GNU sharutils 4.2.1).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 2000-05-25 14:41 CDT by <gk4@gnu.austin.ibm.com>.
# Source directory was `/home/gk4/src/groupmem'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 1960 -rw-r--r-- Makefile
# 6348 -rw-r--r-- groupmems.c
# 3372 -rw------- groupmems.8
#
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=FAILED
locale_dir=FAILED
first_param="$1"
for dir in $PATH
do
if test "$gettext_dir" = FAILED && test -f $dir/gettext \
&& ($dir/gettext --version >/dev/null 2>&1)
then
set `$dir/gettext --version 2>&1`
if test "$3" = GNU
then
gettext_dir=$dir
fi
fi
if test "$locale_dir" = FAILED && test -f $dir/shar \
&& ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
then
locale_dir=`$dir/shar --print-text-domain-dir`
fi
done
IFS="$save_IFS"
if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
then
echo=echo
else
TEXTDOMAINDIR=$locale_dir
export TEXTDOMAINDIR
TEXTDOMAIN=sharutils
export TEXTDOMAIN
echo="$gettext_dir/gettext -s"
fi
if touch -am -t 200112312359.59 $$.touch >/dev/null 2>&1 && test ! -f 200112312359.59 -a -f $$.touch; then
shar_touch='touch -am -t $1$2$3$4$5$6.$7 "$8"'
elif touch -am 123123592001.59 $$.touch >/dev/null 2>&1 && test ! -f 123123592001.59 -a ! -f 123123592001.5 -a -f $$.touch; then
shar_touch='touch -am $3$4$5$6$1$2.$7 "$8"'
elif touch -am 1231235901 $$.touch >/dev/null 2>&1 && test ! -f 1231235901 -a -f $$.touch; then
shar_touch='touch -am $3$4$5$6$2 "$8"'
else
shar_touch=:
echo
$echo 'WARNING: not restoring timestamps. Consider getting and'
$echo "installing GNU \`touch', distributed in GNU File Utilities..."
echo
fi
rm -f 200112312359.59 123123592001.59 123123592001.5 1231235901 $$.touch
#
if mkdir _sh10937; then
$echo 'x -' 'creating lock directory'
else
$echo 'failed to create lock directory'
exit 1
fi
# ============= Makefile ==============
if test -f 'Makefile' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'Makefile' '(file already exists)'
else
$echo 'x -' extracting 'Makefile' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'Makefile' &&
/*
# Copyright 2000, International Business Machines, Inc.
# All rights reserved.
#
# original author: George Kraft IV, gk4@us.ibm.com
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of International Business Machines, Inc., nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY INTERNATIONAL BUSINESS MACHINES, INC. AND
# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
# INTERNATIONAL BUSINESS MACHINES, INC. OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
X
all: groupmems
X
groupmems: groupmems.c
X cc -g -o groupmems groupmems.c -L. -lshadow
X
install: groupmems
X -/usr/sbin/groupadd groups
X install -o root -g groups -m 4770 groupmems /usr/bin
X
install.man: groupmems.8
X install -o root -g root -m 644 groupmems.8 /usr/man/man8
X
SHAR_EOF
(set 20 00 05 25 14 40 28 'Makefile'; eval "$shar_touch") &&
chmod 0644 'Makefile' ||
$echo 'restore of' 'Makefile' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'Makefile:' 'MD5 check failed'
b46cf7ef8d59149093c011ced3f3103c Makefile
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'Makefile'`"
test 1960 -eq "$shar_count" ||
$echo 'Makefile:' 'original size' '1960,' 'current size' "$shar_count!"
fi
fi
# ============= groupmems.c ==============
if test -f 'groupmems.c' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'groupmems.c' '(file already exists)'
else
$echo 'x -' extracting 'groupmems.c' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'groupmems.c' &&
/*
X * Copyright 2000, International Business Machines, Inc.
X * All rights reserved.
X *
X * original author: George Kraft IV, gk4@us.ibm.com
X *
X * Redistribution and use in source and binary forms, with or without
X * modification, are permitted provided that the following conditions
X * are met:
X *
X * 1. Redistributions of source code must retain the above copyright
X * notice, this list of conditions and the following disclaimer.
X * 2. Redistributions in binary form must reproduce the above copyright
X * notice, this list of conditions and the following disclaimer in the
X * documentation and/or other materials provided with the distribution.
X * 3. Neither the name of International Business Machines, Inc., nor the
X * names of its contributors may be used to endorse or promote products
X * derived from this software without specific prior written permission.
X *
X * THIS SOFTWARE IS PROVIDED BY INTERNATIONAL BUSINESS MACHINES, INC. AND
X * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
X * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
X * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
X * INTERNATIONAL BUSINESS MACHINES, INC. OR CONTRIBUTORS BE LIABLE
X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
X * SUCH DAMAGE.
X */
/*
**
** Utility "groupmem" adds and deletes members from a user's group.
**
** Setup (as "root"):
**
** groupadd -r groups
** chmod 2770 groupmems
** chown root.groups groupmems
** groupmems -g groups -a gk4
**
** Usage (as "gk4"):
**
** groupmems -a olive
** groupmems -a jordan
** groupmems -a meghan
** groupmems -a morgan
** groupmems -a jake
** groupmems -l
** groupmems -d jake
** groupmems -l
*/
X
#include <stdio.h>
#include <pwd.h>
#include <grp.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "defines.h"
#include "groupio.h"
X
/* Exit Status Values */
X
#define EXIT_SUCCESS 0 /* success */
#define EXIT_USAGE 1 /* invalid command syntax */
#define EXIT_GROUP_FILE 2 /* group file access problems */
#define EXIT_NOT_ROOT 3 /* not super user */
#define EXIT_NOT_EROOT 4 /* not effective super user */
#define EXIT_NOT_PRIMARY 5 /* not primary owner of group */
#define EXIT_NOT_MEMBER 6 /* member of group does not exist */
#define EXIT_MEMBER_EXISTS 7 /* member of group already exists */
X
#define TRUE 1
#define FALSE 0
X
/* Globals */
X
extern int optind;
extern char *optarg;
static char *adduser = NULL;
static char *deluser = NULL;
static char *thisgroup = NULL;
static int purge = FALSE;
static int list = FALSE;
static int exclusive = 0;
X
static int isroot(void) {
X return getuid() ? FALSE : TRUE;
}
X
static int isgroup(void) {
X gid_t g = getgid();
X struct group *grp = getgrgid(g);
X
X return TRUE;
}
X
static char *whoami(void) {
X struct group *grp = getgrgid(getgid());
X struct passwd *usr = getpwuid(getuid());
X
X if (0 == strcmp(usr->pw_name, grp->gr_name)) {
X return (char *)strdup(usr->pw_name);
X } else {
X return NULL;
X }
}
X
static void
addtogroup(char *user, char **members) {
X int i;
X char **pmembers;
X
X for (i = 0; NULL != members[i]; i++ ) {
X if (0 == strcmp(user, members[i])) {
X fprintf(stderr, "Member already exists\n");
X exit(EXIT_MEMBER_EXISTS);
X }
X }
X
X if (0 == i) {
X pmembers = (char **)calloc(2, sizeof(char *));
X } else {
X pmembers = (char **)realloc(members, sizeof(char *)*(i+1));
X }
X
X *members = *pmembers;
X members[i] = user;
X members[i+1] = NULL;
}
X
static void
rmfromgroup(char *user, char **members) {
X int i;
X int found = FALSE;
X
X i = 0;
X while (!found && NULL != members[i]) {
X if (0 == strcmp(user, members[i])) {
X found = TRUE;
X } else {
X i++;
X }
X }
X
X while (found && NULL != members[i]) {
X members[i] = members[++i];
X }
X
X if (!found) {
X fprintf(stderr, "Member to remove could not be found\n");
X exit(EXIT_NOT_MEMBER);
X }
}
X
static void
nomembers(char **members) {
X int i;
X
X for (i = 0; NULL != members[i]; i++ ) {
X members[i] = NULL;
X }
}
X
static void
members(char **members) {
X int i;
X
X for (i = 0; NULL != members[i]; i++ ) {
X printf("%s ", members[i]);
X
X if (NULL == members[i+1]) {
X printf("\n");
X } else {
X printf(" ");
X }
X }
}
X
static void usage(void) {
X fprintf(stderr, "usage: groupmems -a username | -d username | -D | -l [-g groupname]\n");
X exit(EXIT_USAGE);
}
X
main(int argc, char **argv) {
X int arg, i;
X char *name;
X struct group *grp;
X
X while ((arg = getopt(argc, argv, "a:d:g:Dl")) != EOF) {
X switch (arg) {
X case 'a':
X adduser = strdup(optarg);
X ++exclusive;
X break;
X case 'd':
X deluser = strdup(optarg);
X ++exclusive;
X break;
X case 'g':
X thisgroup = strdup(optarg);
X break;
X case 'D':
X purge = TRUE;
X ++exclusive;
X break;
X case 'l':
X list = TRUE;
X ++exclusive;
X break;
X default:
X usage();
X }
X }
X
X if (exclusive > 1 || optind < argc) {
X usage();
X }
X
X if (!isroot() && NULL != thisgroup) {
X fprintf(stderr, "Only root can add members to different groups\n");
X exit(EXIT_NOT_ROOT);
X } else if (isroot() && NULL != thisgroup) {
X name = thisgroup;
X } else if (!isgroup()) {
X fprintf(stderr, "Group access is required\n");
X exit(EXIT_NOT_EROOT);
X } else if (NULL == (name = whoami())) {
X fprintf(stderr, "Not primary owner of current group\n");
X exit(EXIT_NOT_PRIMARY);
X }
X
X if (!gr_lock()) {
X fprintf(stderr, "Unable to lock group file\n");
X exit(EXIT_GROUP_FILE);
X }
X
X if (!gr_open(O_RDWR)) {
X fprintf(stderr, "Unable to open group file\n");
X exit(EXIT_GROUP_FILE);
X }
X
X grp = (struct group *)gr_locate(name);
X
X if (NULL != adduser) {
X addtogroup(adduser, grp->gr_mem);
X gr_update(grp);
X } else if (NULL != deluser) {
X rmfromgroup(deluser, grp->gr_mem);
X gr_update(grp);
X } else if (purge) {
X nomembers(grp->gr_mem);
X gr_update(grp);
X } else if (list) {
X members(grp->gr_mem);
X }
X
X if (!gr_close()) {
X fprintf(stderr, "Cannot close group file\n");
X exit(EXIT_GROUP_FILE);
X }
X
X gr_unlock();
X
X exit(EXIT_SUCCESS);
}
X
/* EOF */
SHAR_EOF
(set 20 00 05 25 14 36 38 'groupmems.c'; eval "$shar_touch") &&
chmod 0644 'groupmems.c' ||
$echo 'restore of' 'groupmems.c' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'groupmems.c:' 'MD5 check failed'
f0dd68f8d762d89d24d3ce1f4141f981 groupmems.c
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'groupmems.c'`"
test 6348 -eq "$shar_count" ||
$echo 'groupmems.c:' 'original size' '6348,' 'current size' "$shar_count!"
fi
fi
# ============= groupmems.8 ==============
if test -f 'groupmems.8' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'groupmems.8' '(file already exists)'
else
$echo 'x -' extracting 'groupmems.8' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'groupmems.8' &&
X.\"
X.\" Copyright 2000, International Business Machines, Inc.
X.\" All rights reserved.
X.\"
X.\" original author: George Kraft IV, gk4@us.ibm.com
X.\"
X.\" Redistribution and use in source and binary forms, with or without
X.\" modification, are permitted provided that the following conditions
X.\" are met:
X.\"
X.\" 1. Redistributions of source code must retain the above copyright
X.\" notice, this list of conditions and the following disclaimer.
X.\" 2. Redistributions in binary form must reproduce the above copyright
X.\" notice, this list of conditions and the following disclaimer in the
X.\" documentation and/or other materials provided with the distribution.
X.\" 3. Neither the name of International Business Machines, Inc., nor the
X.\" names of its contributors may be used to endorse or promote products
X.\" derived from this software without specific prior written permission.
X.\"
X.\" THIS SOFTWARE IS PROVIDED BY INTERNATIONAL BUSINESS MACHINES, INC. AND
X.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
X.\" BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
X.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
X.\" INTERNATIONAL BUSINESS MACHINES, INC. OR CONTRIBUTORS BE LIABLE
X.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
X.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
X.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
X.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
X.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
X.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
X.\" SUCH DAMAGE.
X.\"
X.\" $Id: groupmems.shar,v 1.1 2000/08/26 18:37:32 marekm Exp $
X.\"
X.TH GROUPMEMS 8
X.SH NAME
groupmems \- Administer members of a user's primary group
X.SH SYNOPSIS
X.B groupmems
\fB-a\fI user_name \fR |
\fB-d\fI user_name \fR |
\fB-l\fR |
\fB-D\fR |
[\fB-g\fI group_name \fR]
X.SH DESCRIPTION
The \fBgroupmems\fR utility allows a user to administer his/her own
group membership list without the requirement of super user privileges.
The \fBgroupmems\fR utility is for systems that configure its users to
be in their own name sake primary group (i.e., guest / guest).
X.P
Only the super user, as administrator, can use \fBgroupmems\fR to alter
the memberships of other groups.
X.IP "\fB-a \fIuser_name\fR"
Add a new user to the group membership list.
X.IP "\fB-d \fIuser_name\fR"
Delete a user from the group membership list.
X.IP "\fB-l\fR"
List the group membership list.
X.IP "\fB-D\fR"
Delete all users from the group membership list.
X.IP "\fB-g \fIgroup_name\fR"
The super user can specify which group membership list to modify.
X.SH SETUP
The \fBgroupmems\fR executable should be in mode \fB2770\fR as user \fBroot\fR
and in group \fBgroups\fR. The system administrator can add users to
group groups to allow or disallow them using the \fBgroupmems\fR utility
to manager their own group membership list.
X.P
X $ groupadd -r groups
X.br
X $ chmod 2770 groupmems
X.br
X $ chown root.groups groupmems
X.br
X $ groupmems -g groups -a gk4
X.SH FILES
/etc/group
X.br
/etc/gshadow
X.SH SEE ALSO
X.BR chfn (1),
X.BR chsh (1),
X.BR useradd (8),
X.BR userdel (8),
X.BR usermod (8),
X.BR passwd (1),
X.BR groupadd (8),
X.BR groupdel (8)
X.SH AUTHOR
George Kraft IV (gk4@us.ibm.com)
X.\" EOF
SHAR_EOF
(set 20 00 05 25 14 38 23 'groupmems.8'; eval "$shar_touch") &&
chmod 0600 'groupmems.8' ||
$echo 'restore of' 'groupmems.8' 'failed'
if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'groupmems.8:' 'MD5 check failed'
181e6cd3a3c9d3df320197fa2cde2b4a groupmems.8
SHAR_EOF
else
shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'groupmems.8'`"
test 3372 -eq "$shar_count" ||
$echo 'groupmems.8:' 'original size' '3372,' 'current size' "$shar_count!"
fi
fi
rm -fr _sh10937
exit 0

1
debian/Makefile.in vendored
View File

@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@

View File

@ -32,7 +32,7 @@ SUCH DAMAGE.
This source code is currently archived on ftp.uu.net in the
comp.sources.misc portion of the USENET archives. You may also contact
the author, Julianne F. Haugh, at jfh@bga.com if you have
the author, Julianne F. Haugh, at jfh@austin.ibm.com if you have
any questions regarding this package.
THIS SOFTWARE IS BEING DISTRIBUTED AS-IS. THE AUTHORS DISCLAIM ALL

View File

@ -32,7 +32,7 @@ SUCH DAMAGE.
This source code is currently archived on ftp.uu.net in the
comp.sources.misc portion of the USENET archives. You may also contact
the author, Julianne F. Haugh, at jfh@bga.com if you have
the author, Julianne F. Haugh, at jfh@austin.ibm.com if you have
any questions regarding this package.
THIS SOFTWARE IS BEING DISTRIBUTED AS-IS. THE AUTHORS DISCLAIM ALL

View File

@ -31,7 +31,7 @@ SUCH DAMAGE.
This source code is currently archived on ftp.uu.net in the
comp.sources.misc portion of the USENET archives. You may also contact
the author, Julianne F. Haugh, at jfh@bga.com if you have
the author, Julianne F. Haugh, at jfh@austin.ibm.com if you have
any questions regarding this package.
THIS SOFTWARE IS BEING DISTRIBUTED AS-IS. THE AUTHORS DISCLAIM ALL

View File

@ -1,4 +1,4 @@
$Id: ANNOUNCE,v 1.3 1998/01/29 23:22:25 marekm Exp $
$Id: ANNOUNCE,v 1.4 2000/08/26 18:27:09 marekm Exp $
[ This is the original comp.os.linux.announce posting (only the
author's name and e-mail address has been updated), kept here
@ -10,7 +10,7 @@ $Id: ANNOUNCE,v 1.3 1998/01/29 23:22:25 marekm Exp $
This is a new beta release of the Shadow Password Suite for Linux.
Many bugs have been reported (and fixed!), and the package is now
under a BSD-style copyright. It was written by Julianne F. Haugh
<jfh@tab.com>, and the Linux port is now maintained by me.
<jfh@austin.ibm.com>, and the Linux port is now maintained by me.
Again, this is beta software which may still have some bugs, please
treat it as such. Please don't install it if you don't know what
@ -34,7 +34,7 @@ Version: 3.3.3-951218
Entered-date: 18DEC95
Description:
Keywords: login passwd security shadow
Author: jfh@tab.com (Julie Haugh)
Author: jfh@austin.ibm.com (Julie Haugh)
Maintained-by: marekm@i17linuxb.ists.pwr.wroc.pl (Marek Michalkiewicz)
Primary-site: sunsite.unc.edu /pub/Linux/system/Admin
220K shadow-951218.tar.gz

View File

@ -1,4 +1,23 @@
$Id: CHANGES,v 1.28 1999/08/27 19:02:50 marekm Exp $
$Id: CHANGES,v 1.29 2000/08/26 18:27:09 marekm Exp $
shadow-19990827 => shadow-20000826
WARNING: this release is not tested (other than that it compiles for me),
please be careful. Previous release was a year ago, so it is really time
to release something and start looking for a new, better maintainer...
(I've been extremely busy recently. Credit for most of the real work,
such as complete PAM support, should go to Ben Collins <bcollins@debian.org>
who maintains this package for Debian.)
- merged most of the changes from Debian (not all of them yet, PAM support
should be complete but is not tested - need to upgrade to potato first)
- added Polish translations of manual pages from PLD
- change sulog() to not depend on global variables oldname, name
- try to not follow symbolic links when deleting files recursively
in userdel (still not perfect, safest to do it in single user mode)
- removed workarounds for ancient (pre-ANSI) C compilers - use gcc!
(a few ANSI C constructs were used already, and no one complained)
- updated author's e-mail address (jfh@bga.com -> jfh@austin.ibm.com)
shadow-19990709 => shadow-19990827

View File

@ -1,17 +1,17 @@
Begin3
Title: Shadow Password Suite
Version: 19990827
Entered-date: 27AUG99
Version: 20000826
Entered-date: 26AUG00
Description: Shadow password file utilities. This package includes
the programs necessary to convert traditional V7 UNIX
password files to the SVR4 shadow password format, and
additional tools to maintain password and group files
(that work with both shadow and non-shadow passwords).
Keywords: login passwd security shadow
Author: jfh@bga.com (Julianne F. Haugh)
Author: jfh@austin.ibm.com (Julianne F. Haugh)
Maintained-by: marekm@linux.org.pl (Marek Michalkiewicz)
Primary-site: piast.t19.ds.pwr.wroc.pl /pub/linux/shadow/
707K shadow-19990827.tar.gz
717K shadow-20000826.tar.gz
Alternate-site: ftp.ists.pwr.wroc.pl /pub/linux/shadow/
Original-site: ftp.uu.net ?
Platforms: Linux, SunOS, ...

View File

@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@

View File

@ -1,4 +1,4 @@
[ $Id: README,v 1.3 1998/12/28 20:34:27 marekm Exp $ ]
[ $Id: README,v 1.4 2000/08/26 18:27:09 marekm Exp $ ]
This is the explanatory document for Julianne Frances Haugh's login
replacement, release 3. This document was last updated 16 Feb 1997.
@ -32,7 +32,7 @@ SUCH DAMAGE.
This source code is currently archived on ftp.uu.net in the
comp.sources.misc portion of the USENET archives. You may also contact
the author, Julianne F. Haugh, at jfh@bga.com if you have any questions
the author, Julianne F. Haugh, at jfh@austin.ibm.com if you have any questions
regarding this package.
THIS SOFTWARE IS BEING DISTRIBUTED AS-IS. THE AUTHORS DISCLAIM ALL

View File

@ -1,4 +1,4 @@
$Id: README.linux,v 1.19 1999/06/07 16:40:44 marekm Exp $
$Id: README.linux,v 1.20 2000/08/26 18:27:09 marekm Exp $
This is the shadow suite hacked a bit for Linux. See CHANGES for
short description of changes. See also WISHLIST if you have too
@ -66,7 +66,7 @@ The code feels like stabilizing now - while still BETA, it should
work quite well. Many bugs have been fixed, but there may be still
a few lurking. Again, please test it and report any problems.
Thanks to Julianne Frances Haugh <jfh@bga.com> who wrote the thing
Thanks to Julianne Frances Haugh <jfh@austin.ibm.com> who wrote the thing
in the first place, sent me the latest version, and released it under
a "free" BSD-style license, so that it can be included in Linux
distributions (at least Debian 1.3 and Slackware 3.2 are already
@ -75,6 +75,9 @@ the standard source tree). David Frey <David.Frey@lugs.ch>, Michael
Meskes <meskes@topsystem.de> and Guy Maor <maor@debian.org> have
done a lot of work to integrate shadow passwords into Debian Linux.
Ben Collins <bcollins@debian.org> maintains this package for Debian
and added complete PAM support, now available in Debian 2.2.
Thanks to Bradley Glonka <bradley@123.net> of Linux System Labs
(http://www.lsl.com/) for sending me a free Red Hat 4.2 CD-ROM,
making it possible to test this package on this distribution.
@ -110,6 +113,7 @@ Judd Bourgeois <shagboy@bluesky.net>
Ulisses Alonso Camaro <ulisses@pusa.eleinf.uv.es>
Ed Carp <ecarp@netcom.com>
Rani Chouha <ranibey@smartec.com>
Ben Collins <bcollins@debian.org>
Joshua Cowan <jcowan@hermit.reslife.okstate.edu>
Alan Curry <pacman@tardis.mars.net>
Frank Denis <j@4u.net>

View File

@ -19,10 +19,12 @@ Working mirrors that I know of, sorted by country (note: I removed
a few mirrors that didn't work when I tried to access them several
times - if any of them are still alive, please let me know):
(XXX - list may be out of date now.)
Brazil:
ftp://ftp.athena.del.ufrj.br/pub/linux/shadow_password/
Rafael Jorge Csura Szendrodi <szendro@santuario.del.ufrj.br>
ftp://ftp.athena.pads.ufrj.br/pub/linux/shadow/
Rafael Jorge Csura Szendrodi <szendro@santuario.pads.ufrj.br>
Czech Republic:

View File

@ -1,18 +1,24 @@
About PAM support in the Shadow Password Suite
Warning: this code is still considered ALPHA. It is still incomplete,
and needs more testing. Please let me know if it works, or if something
doesn't work.
Warning: this code is still considered BETA. It needs more testing.
Please let me know if it works, or if something doesn't work.
Use "./configure --with-libpam" to enable PAM support. Right now it only
works for the passwd and su applications. PAM support still needs to be
implemented in login.
Use "./configure --with-libpam" to enable PAM support in the login,
passwd and su applications.
When compiled with PAM support enabled, the following traditional features
of the shadow suite are not implemented directly in the applications -
instead, they should be implemented in the PAM modules.
login:
- /etc/login.access
- /etc/porttime
- resource limits
- console groups
- password expiration / password strength checks
- /etc/motd and mail check
passwd:
- administrator defined authentication methods
- TCFS support
@ -27,10 +33,3 @@ su:
- time restrictions
- resource limits
Known problems:
- the pam_limits module doesn't work with su - it should be changed
to set the limits in pam_setcred() instead of pam_open_session()
(this version of su doesn't open any new sessions, like Solaris su
and unlike SimplePAMApps su)
- PAM support still needs to be implemented in login

View File

@ -1,4 +1,4 @@
$Id: WISHLIST,v 1.23 1999/08/27 19:02:50 marekm Exp $
$Id: WISHLIST,v 1.24 2000/08/26 18:27:09 marekm Exp $
This is my wishlist for the shadow suite, in no particular order. Feel
free to do anything from this list and mail me the diffs :-).
@ -16,7 +16,6 @@ New ideas to add to this list are welcome, too. --marekm
- update man pages to reflect all the changes (real programmers ... :-)
- patch for rlogind/telnetd to create utmp entry and fill in ut_addr
- fix the usermod -l bug properly [for now it's OK - #undef AUTH_METHODS]
- IMPORTANT: finish PAM support (passwd, su - done, untested; login - started)
- option to specify encrypted password in passwd (for yppasswdd, so it
doesn't need to know about shadow/non-shadow); should probably use a pipe
(less insecure than command line arguments)
@ -28,7 +27,7 @@ New ideas to add to this list are welcome, too. --marekm
- poppassd (remote password change for eudora etc.)
- add support for passwd/shadow db files (glibc)
- better documentation
- su -l, -m, -p, -s options (as in GNU su)
- su -l, -m, -p, -s options (as in GNU su) - done in the Debian patches
- vipw: check password files for errors after editing
- clean up login utmp(x) handling code
- add "maximum time users allowed to stay logged in" limit option to logoutd
@ -46,10 +45,7 @@ New ideas to add to this list are welcome, too. --marekm
(and use UID_MIN, UID_MAX from login.defs)
- newusers should be able to copy /etc/skel to the new home directory
(like useradd)
- include i18n files in Debian packages
- integrate the latest upstream version into the Debian distribution
(as of this writing, they still have shadow-980403 with huge diff,
and many bugs have been fixed since then)
- integrate the changes from Debian (complete PAM support, bug fixes)
- add directories where other packages can add hooks for package-specific
per-user configuration, to be executed with run-parts. Some hooks should
be executed at package install time for existing users, likewise for

View File

@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@

View File

@ -1,7 +1,7 @@
#
# /etc/login.defs - Configuration control definitions for the login package.
#
# $Id: login.defs.hurd,v 1.1 1999/08/27 19:02:50 marekm Exp $
# $Id: login.defs.hurd,v 1.2 2000/08/26 18:27:10 marekm Exp $
#
# One item must be defined: MAIL_DIR.
# If unspecified, some arbitrary (and possibly incorrect) value will
@ -137,5 +137,7 @@ CHFN_RESTRICT rwh
# (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is
# the same as gid, and username is the same as the primary group name.
#
# This also enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

View File

@ -1,7 +1,7 @@
#
# /etc/login.defs - Configuration control definitions for the login package.
#
# $Id: login.defs.linux,v 1.11 1999/08/27 19:02:50 marekm Exp $
# $Id: login.defs.linux,v 1.12 2000/08/26 18:27:10 marekm Exp $
#
# Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH.
# If unspecified, some arbitrary (and possibly incorrect) value will
@ -364,5 +364,7 @@ ENVIRON_FILE /etc/environment
# (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is
# the same as gid, and username is the same as the primary group name.
#
# This also enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes

View File

@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@

View File

@ -45,7 +45,7 @@ libdir = ${exec_prefix}/lib
#lib_PROGRAMS = libshadow.la
lib_LTLIBRARIES = libshadow.la
libshadow_la_SOURCES = ${libshadow_a_SOURCES}
#libshadow_la_LIBADD = @LTLIBOBJS@
libshadow_la_LIBADD = @LTLIBOBJS@
#libshadow_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir)
libshadow_la_LDFLAGS = -version-info 0:0:0

View File

@ -78,6 +78,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
@ -138,7 +139,7 @@ libdir = ${exec_prefix}/lib
#lib_PROGRAMS = libshadow.la
lib_LTLIBRARIES = libshadow.la
libshadow_la_SOURCES = ${libshadow_a_SOURCES}
#libshadow_la_LIBADD = @LTLIBOBJS@
libshadow_la_LIBADD = @LTLIBOBJS@
#libshadow_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir)
libshadow_la_LDFLAGS = -version-info 0:0:0
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@ -156,7 +157,7 @@ rad64.o sgroupio.o shadow.o shadowio.o utent.o tcfsio.o
AR = ar
LTLIBRARIES = $(lib_LTLIBRARIES)
libshadow_la_LIBADD =
libshadow_la_DEPENDENCIES = @LTLIBOBJS@
libshadow_la_OBJECTS = commonio.lo dialchk.lo dialup.lo encrypt.lo \
fputsx.lo getdef.lo getpass.lo groupio.lo gshadow.lo lockpw.lo port.lo \
pwauth.lo pwio.lo rad64.lo sgroupio.lo shadow.lo shadowio.lo utent.lo \
@ -335,14 +336,17 @@ gshadow.lo gshadow.o : gshadow.c ../config.h rcsid.h prototypes.h \
defines.h gshadow_.h
lockpw.lo lockpw.o : lockpw.c ../config.h
port.lo port.o : port.c ../config.h rcsid.h defines.h gshadow_.h port.h
putgrent.o: putgrent.c ../config.h prototypes.h defines.h gshadow_.h
putgrent.lo putgrent.o : putgrent.c ../config.h prototypes.h defines.h \
gshadow_.h
pwauth.lo pwauth.o : pwauth.c ../config.h rcsid.h prototypes.h defines.h \
gshadow_.h pwauth.h getdef.h
pwio.lo pwio.o : pwio.c ../config.h rcsid.h prototypes.h defines.h \
gshadow_.h commonio.h pwio.h
rad64.lo rad64.o : rad64.c ../config.h rcsid.h
sgetgrent.o: sgetgrent.c ../config.h rcsid.h defines.h gshadow_.h
sgetpwent.o: sgetpwent.c ../config.h rcsid.h defines.h gshadow_.h
sgetgrent.lo sgetgrent.o : sgetgrent.c ../config.h rcsid.h defines.h \
gshadow_.h
sgetpwent.lo sgetpwent.o : sgetpwent.c ../config.h rcsid.h defines.h \
gshadow_.h
sgroupio.lo sgroupio.o : sgroupio.c ../config.h rcsid.h prototypes.h \
defines.h gshadow_.h commonio.h sgroupio.h
shadowio.lo shadowio.o : shadowio.c ../config.h rcsid.h prototypes.h \

View File

@ -2,7 +2,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: commonio.c,v 1.14 1998/07/23 22:13:15 marekm Exp $")
RCSID("$Id: commonio.c,v 1.15 2000/08/26 18:27:17 marekm Exp $")
#include "defines.h"
#include <sys/stat.h>
@ -19,15 +19,15 @@ RCSID("$Id: commonio.c,v 1.14 1998/07/23 22:13:15 marekm Exp $")
#include "commonio.h"
/* local function prototypes */
static int check_link_count P_((const char *));
static int do_lock_file P_((const char *, const char *));
static FILE *fopen_set_perms P_((const char *, const char *, const struct stat *));
static int create_backup P_((const char *, FILE *));
static void free_linked_list P_((struct commonio_db *));
static void add_one_entry P_((struct commonio_db *, struct commonio_entry *));
static int name_is_nis P_((const char *));
static int write_all P_((const struct commonio_db *));
static struct commonio_entry *find_entry_by_name P_((struct commonio_db *, const char *));
static int check_link_count(const char *);
static int do_lock_file(const char *, const char *);
static FILE *fopen_set_perms(const char *, const char *, const struct stat *);
static int create_backup(const char *, FILE *);
static void free_linked_list(struct commonio_db *);
static void add_one_entry(struct commonio_db *, struct commonio_entry *);
static int name_is_nis(const char *);
static int write_all(const struct commonio_db *);
static struct commonio_entry *find_entry_by_name(struct commonio_db *, const char *);
#ifdef HAVE_LCKPWDF
static int lock_count = 0;
@ -199,8 +199,8 @@ free_linked_list(struct commonio_db *db)
if (p->line)
free(p->line);
if (p->entry)
db->ops->free(p->entry);
if (p->eptr)
db->ops->free(p->eptr);
free(p);
}
@ -354,26 +354,26 @@ name_is_nis(const char *n)
#if KEEP_NIS_AT_END
/* prototype */
static void add_one_entry_nis P_((struct commonio_db *, struct commonio_entry *));
static void add_one_entry_nis(struct commonio_db *, struct commonio_entry *);
static void
add_one_entry_nis(struct commonio_db *db, struct commonio_entry *new)
add_one_entry_nis(struct commonio_db *db, struct commonio_entry *newp)
{
struct commonio_entry *p;
for (p = db->head; p; p = p->next) {
if (name_is_nis(p->entry ? db->ops->getname(p->entry) : p->line)) {
new->next = p;
new->prev = p->prev;
if (name_is_nis(p->eptr ? db->ops->getname(p->eptr) : p->line)) {
newp->next = p;
newp->prev = p->prev;
if (p->prev)
p->prev->next = new;
p->prev->next = newp;
else
db->head = new;
p->prev = new;
db->head = newp;
p->prev = newp;
return;
}
}
add_one_entry(db, new);
add_one_entry(db, newp);
}
#endif /* KEEP_NIS_AT_END */
@ -385,7 +385,7 @@ commonio_open(struct commonio_db *db, int mode)
char *cp;
char *line;
struct commonio_entry *p;
void *entry;
void *eptr;
int flags = mode;
mode &= ~O_CREAT;
@ -425,10 +425,10 @@ commonio_open(struct commonio_db *db, int mode)
goto cleanup;
if (name_is_nis(line)) {
entry = NULL;
} else if ((entry = db->ops->parse(line))) {
entry = db->ops->dup(entry);
if (!entry)
eptr = NULL;
} else if ((eptr = db->ops->parse(line))) {
eptr = db->ops->dup(eptr);
if (!eptr)
goto cleanup_line;
}
@ -436,7 +436,7 @@ commonio_open(struct commonio_db *db, int mode)
if (!p)
goto cleanup_entry;
p->entry = entry;
p->eptr = eptr;
p->line = line;
p->changed = 0;
@ -447,8 +447,8 @@ commonio_open(struct commonio_db *db, int mode)
return 1;
cleanup_entry:
if (entry)
db->ops->free(entry);
if (eptr)
db->ops->free(eptr);
cleanup_line:
free(line);
cleanup:
@ -464,12 +464,12 @@ static int
write_all(const struct commonio_db *db)
{
const struct commonio_entry *p;
void *entry;
void *eptr;
for (p = db->head; p; p = p->next) {
if (p->changed) {
entry = p->entry;
if (db->ops->put(entry, db->fp))
eptr = p->eptr;
if (db->ops->put(eptr, db->fp))
return -1;
} else if (p->line) {
if (db->ops->fputs(p->line, db->fp) == EOF)
@ -581,7 +581,7 @@ find_entry_by_name(struct commonio_db *db, const char *name)
void *ep;
for (p = db->head; p; p = p->next) {
ep = p->entry;
ep = p->eptr;
if (ep && strcmp(db->ops->getname(ep), name) == 0)
break;
}
@ -590,7 +590,7 @@ find_entry_by_name(struct commonio_db *db, const char *name)
int
commonio_update(struct commonio_db *db, const void *entry)
commonio_update(struct commonio_db *db, const void *eptr)
{
struct commonio_entry *p;
void *nentry;
@ -599,14 +599,14 @@ commonio_update(struct commonio_db *db, const void *entry)
errno = EINVAL;
return 0;
}
if (!(nentry = db->ops->dup(entry))) {
if (!(nentry = db->ops->dup(eptr))) {
errno = ENOMEM;
return 0;
}
p = find_entry_by_name(db, db->ops->getname(entry));
p = find_entry_by_name(db, db->ops->getname(eptr));
if (p) {
db->ops->free(p->entry);
p->entry = nentry;
db->ops->free(p->eptr);
p->eptr = nentry;
p->changed = 1;
db->cursor = p;
@ -621,7 +621,7 @@ commonio_update(struct commonio_db *db, const void *entry)
return 0;
}
p->entry = nentry;
p->eptr = nentry;
p->line = NULL;
p->changed = 1;
@ -676,8 +676,8 @@ commonio_remove(struct commonio_db *db, const char *name)
if (p->line)
free(p->line);
if (p->entry)
db->ops->free(p->entry);
if (p->eptr)
db->ops->free(p->eptr);
return 1;
}
@ -698,7 +698,7 @@ commonio_locate(struct commonio_db *db, const char *name)
return NULL;
}
db->cursor = p;
return p->entry;
return p->eptr;
}
@ -717,7 +717,7 @@ commonio_rewind(struct commonio_db *db)
const void *
commonio_next(struct commonio_db *db)
{
void *entry;
void *eptr;
if (!db->isopen) {
errno = EINVAL;
@ -729,9 +729,9 @@ commonio_next(struct commonio_db *db)
db->cursor = db->cursor->next;
while (db->cursor) {
entry = db->cursor->entry;
if (entry)
return entry;
eptr = db->cursor->eptr;
if (eptr)
return eptr;
db->cursor = db->cursor->next;
}

View File

@ -1,11 +1,11 @@
/* $Id: commonio.h,v 1.4 1998/01/29 23:22:27 marekm Exp $ */
/* $Id: commonio.h,v 1.5 2000/08/26 18:27:17 marekm Exp $ */
/*
* Linked list entry.
*/
struct commonio_entry {
char *line;
void *entry; /* struct passwd, struct spwd, ... */
void *eptr; /* struct passwd, struct spwd, ... */
struct commonio_entry *prev, *next;
int changed:1;
};
@ -18,37 +18,37 @@ struct commonio_ops {
* Make a copy of the object (for example, struct passwd)
* and all strings pointed by it, in malloced memory.
*/
void * (*dup) P_((const void *));
void *(*dup)(const void *);
/*
* free() the object including any strings pointed by it.
*/
void (*free) P_((void *));
void (*free)(void *);
/*
* Return the name of the object (for example, pw_name
* for struct passwd).
*/
const char * (*getname) P_((const void *));
const char *(*getname)(const void *);
/*
* Parse a string, return object (in static area -
* should be copied using the dup operation above).
*/
void * (*parse) P_((const char *));
void *(*parse)(const char *);
/*
* Write the object to the file (this calls putpwent()
* for struct passwd, for example).
*/
int (*put) P_((const void *, FILE *));
int (*put)(const void *, FILE *);
/*
* fgets and fputs (can be replaced by versions that
* understand line continuation conventions).
*/
char * (*fgets) P_((char *, int, FILE *));
int (*fputs) P_((const char *, FILE *));
char *(*fgets)(char *, int, FILE *);
int (*fputs)(const char *, FILE *);
};
/*
@ -85,17 +85,17 @@ struct commonio_db {
int use_lckpwdf:1;
};
extern int commonio_setname P_((struct commonio_db *, const char *));
extern int commonio_present P_((const struct commonio_db *));
extern int commonio_lock P_((struct commonio_db *));
extern int commonio_lock_nowait P_((struct commonio_db *));
extern int commonio_open P_((struct commonio_db *, int));
extern const void *commonio_locate P_((struct commonio_db *, const char *));
extern int commonio_update P_((struct commonio_db *, const void *));
extern int commonio_remove P_((struct commonio_db *, const char *));
extern int commonio_rewind P_((struct commonio_db *));
extern const void *commonio_next P_((struct commonio_db *));
extern int commonio_close P_((struct commonio_db *));
extern int commonio_unlock P_((struct commonio_db *));
extern void commonio_del_entry P_((struct commonio_db *, const struct commonio_entry *));
extern int commonio_setname(struct commonio_db *, const char *);
extern int commonio_present(const struct commonio_db *);
extern int commonio_lock(struct commonio_db *);
extern int commonio_lock_nowait(struct commonio_db *);
extern int commonio_open(struct commonio_db *, int);
extern const void *commonio_locate(struct commonio_db *, const char *);
extern int commonio_update(struct commonio_db *, const void *);
extern int commonio_remove(struct commonio_db *, const char *);
extern int commonio_rewind(struct commonio_db *);
extern const void *commonio_next(struct commonio_db *);
extern int commonio_close(struct commonio_db *);
extern int commonio_unlock(struct commonio_db *);
extern void commonio_del_entry(struct commonio_db *, const struct commonio_entry *);

View File

@ -1,4 +1,4 @@
/* $Id: defines.h,v 1.15 1999/08/27 19:02:50 marekm Exp $ */
/* $Id: defines.h,v 1.16 2000/08/26 18:27:17 marekm Exp $ */
/* some useful defines */
#ifndef _DEFINES_H_
@ -29,14 +29,6 @@
# define _(Text) Text
#endif
#ifndef P_
# ifdef PROTOTYPES
# define P_(x) x
# else
# define P_(x) ()
# endif
#endif
#if STDC_HEADERS
# include <stdlib.h>
# include <string.h>
@ -194,7 +186,25 @@ char *strchr(), *strrchr(), *strtok();
#ifdef STAT_MACROS_BROKEN
# define S_ISDIR(x) ((x) & S_IFMT) == S_IFDIR)
# define S_ISREG(x) ((x) & S_IFMT) == S_IFREG)
# define S_ISLNK(x) ((x) & S_IFMT) == S_IFLNK)
# ifdef S_IFLNK
# define S_ISLNK(x) ((x) & S_IFMT) == S_IFLNK)
# endif
#endif
#ifndef S_ISLNK
#define S_ISLNK(x) (0)
#endif
#if HAVE_LCHOWN
#define LCHOWN lchown
#else
#define LCHOWN chown
#endif
#if HAVE_LSTAT
#define LSTAT lstat
#else
#define LSTAT stat
#endif
#if HAVE_TERMIOS_H

View File

@ -1,4 +1,4 @@
/* $Id: dialchk.h,v 1.1 1997/12/07 23:26:49 marekm Exp $ */
/* $Id: dialchk.h,v 1.2 2000/08/26 18:27:17 marekm Exp $ */
#ifndef _DIALCHK_H_
#define _DIALCHK_H_
@ -11,6 +11,6 @@
* line. If so, a dialup password may be required if the shell
* is listed as one which requires a second password.
*/
extern int dialcheck P_((const char *tty, const char *sh));
extern int dialcheck(const char *, const char *);
#endif

View File

@ -41,7 +41,7 @@
* lines. Each line consists of the last component of the path
* name. The leading "/dev/" string is removed.
*
* $Id: dialup.h,v 1.2 1997/05/01 23:14:39 marekm Exp $
* $Id: dialup.h,v 1.3 2000/08/26 18:27:17 marekm Exp $
*/
#ifndef _DIALUP_H
@ -52,13 +52,13 @@ struct dialup {
char *du_passwd;
};
extern void setduent P_((void));
extern void endduent P_((void));
extern struct dialup *fgetduent P_((FILE *));
extern struct dialup *getduent P_((void));
extern struct dialup *getdushell P_((const char *));
extern int putduent P_((const struct dialup *, FILE *));
extern int isadialup P_((const char *));
extern void setduent(void);
extern void endduent(void);
extern struct dialup *fgetduent(FILE *);
extern struct dialup *getduent(void);
extern struct dialup *getdushell(const char *);
extern int putduent(const struct dialup *, FILE *);
extern int isadialup(const char *);
#define DIALPWD "/etc/d_passwd"
#define DIALUPS "/etc/dialups"

View File

@ -30,13 +30,13 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: encrypt.c,v 1.6 1999/03/07 19:14:35 marekm Exp $")
RCSID("$Id: encrypt.c,v 1.7 2000/08/26 18:27:17 marekm Exp $")
#include "prototypes.h"
#include "defines.h"
extern char *crypt();
extern char *libshadow_md5_crypt P_((const char *, const char *));
extern char *libshadow_md5_crypt(const char *, const char *);
char *
pw_encrypt(const char *clear, const char *salt)

View File

@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: getdef.c,v 1.13 1999/08/27 19:02:51 marekm Exp $")
RCSID("$Id: getdef.c,v 1.14 2000/08/26 18:27:17 marekm Exp $")
#include "prototypes.h"
#include "defines.h"
@ -55,6 +55,9 @@ struct itemdef {
static struct itemdef def_table[] = {
{ "CHFN_AUTH", NULL },
{ "CHFN_RESTRICT", NULL },
#ifdef USE_PAM
{ "CLOSE_SESSIONS", NULL },
#endif
{ "CONSOLE", NULL },
{ "CONSOLE_GROUPS", NULL },
{ "CRACKLIB_DICTPATH", NULL },
@ -63,7 +66,8 @@ static struct itemdef def_table[] = {
{ "DIALUPS_CHECK_ENAB", NULL },
{ "ENVIRON_FILE", NULL },
{ "ENV_HZ", NULL },
{ "ENV_PATH" , NULL },
{ "ENV_PATH", NULL },
{ "ENV_ROOTPATH", NULL }, /* SuSE compatibility? */
{ "ENV_SUPATH", NULL },
{ "ENV_TZ", NULL },
{ "ERASECHAR", NULL },
@ -130,8 +134,8 @@ static int def_loaded = 0; /* are defs already loaded? */
extern long strtol();
/* local function prototypes */
static struct itemdef *def_find P_((const char *));
static void def_load P_((void));
static struct itemdef *def_find(const char *);
static void def_load(void);
/*

View File

@ -2,10 +2,10 @@
#define _GETDEF_H
/* getdef.c */
extern int getdef_bool P_((const char *));
extern long getdef_long P_((const char *, long));
extern int getdef_num P_((const char *, int));
extern char *getdef_str P_((const char *));
extern int putdef_str P_((const char *, const char *));
extern int getdef_bool(const char *);
extern long getdef_long(const char *, long);
extern int getdef_num(const char *, int);
extern char *getdef_str(const char *);
extern int putdef_str(const char *, const char *);
#endif /* _GETDEF_H */

View File

@ -2,7 +2,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: groupio.c,v 1.7 1998/01/29 23:22:28 marekm Exp $")
RCSID("$Id: groupio.c,v 1.8 2000/08/26 18:27:17 marekm Exp $")
#include "prototypes.h"
#include "defines.h"
@ -10,8 +10,8 @@ RCSID("$Id: groupio.c,v 1.7 1998/01/29 23:22:28 marekm Exp $")
#include "commonio.h"
#include "groupio.h"
extern int putgrent P_((const struct group *, FILE *));
extern struct group *sgetgrent P_((const char *));
extern int putgrent(const struct group *, FILE *);
extern struct group *sgetgrent(const char *);
struct group *
__gr_dup(const struct group *grent)

View File

@ -1,12 +1,12 @@
extern struct group *__gr_dup P_((const struct group *));
extern void __gr_set_changed P_((void));
extern int gr_close P_((void));
extern const struct group *gr_locate P_((const char *));
extern int gr_lock P_((void));
extern int gr_name P_((const char *));
extern const struct group *gr_next P_((void));
extern int gr_open P_((int));
extern int gr_remove P_((const char *));
extern int gr_rewind P_((void));
extern int gr_unlock P_((void));
extern int gr_update P_((const struct group *));
extern struct group *__gr_dup(const struct group *);
extern void __gr_set_changed(void);
extern int gr_close(void);
extern const struct group *gr_locate(const char *);
extern int gr_lock(void);
extern int gr_name(const char *);
extern const struct group *gr_next(void);
extern int gr_open(int);
extern int gr_remove(const char *);
extern int gr_rewind(void);
extern int gr_unlock(void);
extern int gr_update(const struct group *);

View File

@ -6,7 +6,7 @@
* Juha Virtanen, <jiivee@hut.fi>; November 1995
*/
/*
* $Id: prototypes.h,v 1.13 1999/07/09 18:02:43 marekm Exp $
* $Id: prototypes.h,v 1.14 2000/08/26 18:27:17 marekm Exp $
*
* Added a macro to work around ancient (non-ANSI) compilers, just in case
* someone ever tries to compile this with SunOS cc... --marekm
@ -23,191 +23,206 @@
#include "defines.h"
/* addgrps.c */
extern int add_groups P_((const char *));
extern void add_cons_grps P_((void));
extern int add_groups(const char *);
extern void add_cons_grps(void);
/* age.c */
#ifdef SHADOWPWD
extern void agecheck P_((const struct passwd *pw, const struct spwd *sp));
extern int expire P_((const struct passwd *pw, const struct spwd *sp));
extern int isexpired P_((const struct passwd *pw, const struct spwd *sp));
extern void agecheck(const struct passwd *, const struct spwd *);
extern int expire(const struct passwd *, const struct spwd *);
extern int isexpired(const struct passwd *, const struct spwd *);
#else
extern void agecheck P_((const struct passwd *pw));
extern int expire P_((const struct passwd *pw));
extern int isexpired P_((const struct passwd *pw));
extern void agecheck(const struct passwd *);
extern int expire(const struct passwd *);
extern int isexpired(const struct passwd *);
#endif
/* basename() renamed to Basename() to avoid libc name space confusion */
/* basename.c */
extern char *Basename P_((char *str));
extern char *Basename(char *str);
/* chkshell.c */
extern int check_shell P_((const char *));
extern int check_shell(const char *);
/* chowndir.c */
extern int chown_tree P_((const char *, uid_t, uid_t, gid_t, gid_t));
extern int chown_tree(const char *, uid_t, uid_t, gid_t, gid_t);
/* chowntty.c */
extern void chown_tty P_((const char *, const struct passwd *));
extern void chown_tty(const char *, const struct passwd *);
/* console.c */
extern int console P_((const char *tty));
extern int is_listed P_((const char *cfgin, const char *tty, int def));
extern int console(const char *);
extern int is_listed(const char *, const char *, int);
/* copydir.c */
extern int copy_tree P_((const char *, const char *, uid_t, gid_t));
extern int remove_tree P_((const char *));
extern int copy_tree(const char *, const char *, uid_t, gid_t);
extern int remove_tree(const char *);
/* encrypt.c */
extern char *pw_encrypt P_((const char *, const char *));
extern char *pw_encrypt(const char *, const char *);
/* entry.c */
extern void entry P_((const char *name, struct passwd *pwent));
extern void pw_entry(const char *, struct passwd *);
/* env.c */
extern void addenv P_((const char *, const char *));
extern void initenv P_((void));
extern void set_env P_((int, char * const *));
extern void sanitize_env P_((void));
extern void addenv(const char *, const char *);
extern void initenv(void);
extern void set_env(int, char * const *);
extern void sanitize_env(void);
/* fields.c */
extern void change_field P_((char *buf, size_t maxsize, const char *prompt));
extern int valid_field P_((const char *field, const char *illegal));
extern void change_field(char *, size_t, const char *);
extern int valid_field(const char *, const char *);
/* fputsx.c */
extern char *fgetsx P_((char *, int, FILE *));
extern int fputsx P_((const char *, FILE *));
extern char *fgetsx(char *, int, FILE *);
extern int fputsx(const char *, FILE *);
/* grdbm.c */
extern int gr_dbm_remove P_((const struct group *gr));
extern int gr_dbm_update P_((const struct group *gr));
extern int gr_dbm_present P_((void));
extern int gr_dbm_remove(const struct group *);
extern int gr_dbm_update(const struct group *);
extern int gr_dbm_present(void);
/* grent.c */
extern int putgrent P_((const struct group *, FILE *));
extern int putgrent(const struct group *, FILE *);
/* grpack.c */
extern int gr_pack P_((const struct group *group, char *buf));
extern int gr_unpack P_((char *buf, int len, struct group *group));
extern int gr_pack(const struct group *, char *);
extern int gr_unpack(char *, int, struct group *);
#ifdef SHADOWGRP
/* gsdbm.c */
extern int sg_dbm_remove P_((const char *name));
extern int sg_dbm_update P_((const struct sgrp *sgr));
extern int sg_dbm_present P_((void));
extern int sg_dbm_remove(const char *);
extern int sg_dbm_update(const struct sgrp *);
extern int sg_dbm_present(void);
/* gspack.c */
extern int sgr_pack P_((const struct sgrp *sgrp, char *buf));
extern int sgr_unpack P_((char *buf, int len, struct sgrp *sgrp));
extern int sgr_pack(const struct sgrp *, char *);
extern int sgr_unpack(char *, int, struct sgrp *);
#endif
/* hushed.c */
extern int hushed P_((const struct passwd *pw));
extern int hushed(const struct passwd *);
/* limits.c */
extern void setup_limits P_((const struct passwd *));
extern void setup_limits(const struct passwd *);
/* list.c */
extern char **add_list P_((char **list, const char *member));
extern char **del_list P_((char **list, const char *member));
extern char **dup_list P_((char * const *list));
extern int is_on_list P_((char * const *list, const char *member));
extern char **comma_to_list P_((const char *comma));
extern char **add_list(char **, const char *);
extern char **del_list(char **, const char *);
extern char **dup_list(char * const *);
extern int is_on_list(char * const *, const char *);
extern char **comma_to_list(const char *);
/* login.c */
extern void login_prompt P_((const char *, char *, int));
extern void login_prompt(const char *, char *, int);
/* login_desrpc.c */
extern int login_desrpc P_((const char *));
extern int login_desrpc(const char *);
/* mail.c */
extern void mailcheck P_((void));
extern void mailcheck(void);
/* motd.c */
extern void motd P_((void));
extern void motd(void);
/* myname.c */
extern struct passwd *get_my_pwent P_((void));
extern struct passwd *get_my_pwent(void);
/* obscure.c */
extern int obscure P_((const char *, const char *, const struct passwd *));
extern int obscure(const char *, const char *, const struct passwd *);
/* pam_pass.c */
extern int do_pam_passwd P_((const char *, int, int));
extern int do_pam_passwd(const char *, int, int);
/* port.c */
extern int isttytime P_((const char *, const char *, time_t));
extern int isttytime(const char *, const char *, time_t);
/* pwd2spwd.c */
#ifdef SHADOWPWD
extern struct spwd *pwd_to_spwd P_((const struct passwd *pw));
extern struct spwd *pwd_to_spwd(const struct passwd *);
#endif
/* pwdcheck.c */
extern void passwd_check P_((const char *, const char *, const char *));
extern void passwd_check(const char *, const char *, const char *);
/* pwd_init.c */
extern void pwd_init P_((void));
extern void pwd_init(void);
/* pwdbm.c */
extern int pw_dbm_remove P_((const struct passwd *pw));
extern int pw_dbm_update P_((const struct passwd *pw));
extern int pw_dbm_present P_((void));
extern int pw_dbm_remove(const struct passwd *);
extern int pw_dbm_update(const struct passwd *);
extern int pw_dbm_present(void);
/* pwpack.c */
extern int pw_pack P_((const struct passwd *passwd, char *buf));
extern int pw_unpack P_((char *buf, int len, struct passwd *passwd));
extern int pw_pack(const struct passwd *, char *);
extern int pw_unpack(char *, int, struct passwd *);
/* rad64.c */
extern int c64i P_((char c));
extern int i64c P_((int i));
extern int c64i(int);
extern int i64c(int);
/* rlogin.c */
extern int do_rlogin P_((const char *, char *, int, char *, int));
extern int do_rlogin(const char *, char *, int, char *, int);
/* salt.c */
extern char *crypt_make_salt(void);
/* setugid.c */
extern int setup_groups P_((const struct passwd *));
extern int change_uid P_((const struct passwd *));
extern int setup_uid_gid P_((const struct passwd *, int));
extern int setup_groups(const struct passwd *);
extern int change_uid(const struct passwd *);
extern int setup_uid_gid(const struct passwd *, int);
/* setup.c */
extern void setup P_((struct passwd *info));
extern void setup(struct passwd *);
/* setupenv.c */
extern void setup_env P_((struct passwd *));
extern void setup_env(struct passwd *);
/* shell.c */
extern void shell P_((const char *file, const char *arg));
extern void shell(const char *, const char *);
#ifdef SHADOWPWD
/* spdbm.c */
extern int sp_dbm_remove P_((const char *user));
extern int sp_dbm_update P_((const struct spwd *sp));
extern int sp_dbm_present P_((void));
extern int sp_dbm_remove(const char *);
extern int sp_dbm_update(const struct spwd *);
extern int sp_dbm_present(void);
/* sppack.c */
extern int spw_pack P_((const struct spwd *spwd, char *buf));
extern int spw_unpack P_((char *buf, int len, struct spwd *spwd));
extern int spw_pack(const struct spwd *, char *);
extern int spw_unpack(char *, int, struct spwd *);
#endif
/* strtoday.c */
extern long strtoday P_((const char *str));
extern long strtoday(const char *);
/* suauth.c */
extern int check_su_auth(const char *, const char *);
/* sulog.c */
extern void sulog(const char *, int, const char *, const char *);
/* sub.c */
extern void subsystem(const struct passwd *);
/* ttytype.c */
extern void ttytype P_((const char *line));
extern void ttytype(const char *);
/* tz.c */
extern char *tz(const char *);
/* ulimit.c */
extern void set_filesize_limit P_((int));
extern void set_filesize_limit(int);
/* utmp.c */
extern void checkutmp P_((int));
extern void setutmp P_((const char *, const char *, const char *));
extern void checkutmp(int);
extern void setutmp(const char *, const char *, const char *);
/* valid.c */
extern int valid P_((const char *, const struct passwd *));
extern int valid(const char *, const struct passwd *);
/* xmalloc.c */
extern char *xmalloc P_((size_t size));
extern char *xstrdup P_((const char *str));
extern char *xmalloc(size_t);
extern char *xstrdup(const char *);
#endif /* _PROTOTYPES_H */

View File

@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: pwauth.c,v 1.10 1999/08/27 19:02:51 marekm Exp $")
RCSID("$Id: pwauth.c,v 1.11 2000/08/26 18:27:17 marekm Exp $")
#include <sys/types.h>
#include <signal.h>
@ -68,7 +68,7 @@ extern char *getpass_with_echo();
struct method {
char *name;
int (*func) P_((const char *, int, const char *));
int (*func)(const char *, int, const char *);
};
#ifdef PAD_AUTH

View File

@ -2,7 +2,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: pwio.c,v 1.9 1998/01/29 23:22:31 marekm Exp $")
RCSID("$Id: pwio.c,v 1.10 2000/08/26 18:27:17 marekm Exp $")
#include "prototypes.h"
#include "defines.h"
@ -12,8 +12,8 @@ RCSID("$Id: pwio.c,v 1.9 1998/01/29 23:22:31 marekm Exp $")
#include "commonio.h"
#include "pwio.h"
extern struct passwd *sgetpwent P_((const char *));
extern int putpwent P_((const struct passwd *, FILE *));
extern struct passwd *sgetpwent(const char *);
extern int putpwent(const struct passwd *, FILE *);
struct passwd *
__pw_dup(const struct passwd *pwent)

View File

@ -1,12 +1,12 @@
extern struct passwd *__pw_dup P_((const struct passwd *));
extern void __pw_set_changed P_((void));
extern int pw_close P_((void));
extern const struct passwd *pw_locate P_((const char *));
extern int pw_lock P_((void));
extern int pw_name P_((const char *));
extern const struct passwd *pw_next P_((void));
extern int pw_open P_((int));
extern int pw_remove P_((const char *));
extern int pw_rewind P_((void));
extern int pw_unlock P_((void));
extern int pw_update P_((const struct passwd *));
extern struct passwd *__pw_dup(const struct passwd *);
extern void __pw_set_changed(void);
extern int pw_close(void);
extern const struct passwd *pw_locate(const char *);
extern int pw_lock(void);
extern int pw_name(const char *);
extern const struct passwd *pw_next(void);
extern int pw_open(int);
extern int pw_remove(const char *);
extern int pw_rewind(void);
extern int pw_unlock(void);
extern int pw_update(const struct passwd *);

View File

@ -30,14 +30,14 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: rad64.c,v 1.4 1997/12/07 23:26:56 marekm Exp $")
RCSID("$Id: rad64.c,v 1.5 2000/08/26 18:27:17 marekm Exp $")
/*
* c64i - convert a radix 64 character to an integer
*/
int
c64i(char c)
c64i(int c)
{
if (c == '.')
return (0);
@ -117,7 +117,7 @@ a64l(const char *s)
long shift = 0;
for (i = 0, value = 0L;i < 6 && *s;s++) {
value += (c64i (*s) << shift);
value += (c64i ((int) *s) << shift);
shift += 6;
}
return (value);

View File

@ -4,7 +4,7 @@
#ifdef SHADOWGRP
#include "rcsid.h"
RCSID("$Id: sgroupio.c,v 1.9 1998/01/29 23:22:31 marekm Exp $")
RCSID("$Id: sgroupio.c,v 1.10 2000/08/26 18:27:17 marekm Exp $")
#include "prototypes.h"
#include "defines.h"
@ -12,8 +12,8 @@ RCSID("$Id: sgroupio.c,v 1.9 1998/01/29 23:22:31 marekm Exp $")
#include "commonio.h"
#include "sgroupio.h"
extern int putsgent P_((const struct sgrp *, FILE *));
extern struct sgrp *sgetsgent P_((const char *));
extern int putsgent(const struct sgrp *, FILE *);
extern struct sgrp *sgetsgent(const char *);
struct sgrp *
__sgr_dup(const struct sgrp *sgent)

View File

@ -1,13 +1,13 @@
extern struct sgrp *__sgr_dup P_((const struct sgrp *));
extern void __sgr_set_changed P_((void));
extern int sgr_close P_((void));
extern int sgr_file_present P_((void));
extern const struct sgrp *sgr_locate P_((const char *));
extern int sgr_lock P_((void));
extern int sgr_name P_((const char *));
extern const struct sgrp *sgr_next P_((void));
extern int sgr_open P_((int));
extern int sgr_remove P_((const char *));
extern int sgr_rewind P_((void));
extern int sgr_unlock P_((void));
extern int sgr_update P_((const struct sgrp *));
extern struct sgrp *__sgr_dup(const struct sgrp *);
extern void __sgr_set_changed(void);
extern int sgr_close(void);
extern int sgr_file_present(void);
extern const struct sgrp *sgr_locate(const char *);
extern int sgr_lock(void);
extern int sgr_name(const char *);
extern const struct sgrp *sgr_next(void);
extern int sgr_open(int);
extern int sgr_remove(const char *);
extern int sgr_rewind(void);
extern int sgr_unlock(void);
extern int sgr_update(const struct sgrp *);

View File

@ -1,13 +1,13 @@
extern struct spwd *__spw_dup P_((const struct spwd *));
extern void __spw_set_changed P_((void));
extern int spw_close P_((void));
extern int spw_file_present P_((void));
extern const struct spwd *spw_locate P_((const char *));
extern int spw_lock P_((void));
extern int spw_name P_((const char *));
extern const struct spwd *spw_next P_((void));
extern int spw_open P_((int));
extern int spw_remove P_((const char *));
extern int spw_rewind P_((void));
extern int spw_unlock P_((void));
extern int spw_update P_((const struct spwd *));
extern struct spwd *__spw_dup(const struct spwd *);
extern void __spw_set_changed(void);
extern int spw_close(void);
extern int spw_file_present(void);
extern const struct spwd *spw_locate(const char *);
extern int spw_lock(void);
extern int spw_name(const char *);
extern const struct spwd *spw_next(void);
extern int spw_open(int);
extern int spw_remove(const char *);
extern int spw_rewind(void);
extern int spw_unlock(void);
extern int spw_update(const struct spwd *);

View File

@ -3,12 +3,12 @@ struct tcfspwd {
char tcfsorig[200]; /* old password */
};
extern int tcfs_close P_((void));
extern int tcfs_file_present P_((void));
extern tcfspwdb *tcfs_locate P_((char *));
extern int tcfs_lock P_((void));
extern int tcfs_name P_((char *));
extern int tcfs_open P_((int));
extern int tcfs_remove P_((char *));
extern int tcfs_unlock P_((void));
extern int tcfs_update P_((char *, struct tcfspwd *));
extern int tcfs_close(void);
extern int tcfs_file_present(void);
extern tcfspwdb *tcfs_locate(char *);
extern int tcfs_lock(void);
extern int tcfs_name(char *);
extern int tcfs_open(int);
extern int tcfs_remove(char *);
extern int tcfs_unlock(void);
extern int tcfs_update(char *, struct tcfspwd *);

View File

@ -78,6 +78,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
@ -339,8 +340,8 @@ suauth.o: suauth.c ../config.h ../lib/prototypes.h ../lib/defines.h \
../lib/gshadow_.h
sub.o: sub.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h
sulog.o: sulog.c ../config.h ../lib/rcsid.h ../lib/defines.h \
../lib/gshadow_.h ../lib/getdef.h
sulog.o: sulog.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/getdef.h
ttytype.o: ttytype.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \
../lib/defines.h ../lib/gshadow_.h ../lib/getdef.h
tz.o: tz.c ../config.h ../lib/rcsid.h ../lib/defines.h ../lib/gshadow_.h \

View File

@ -1,4 +1,4 @@
/* $Id: chkname.h,v 1.1 1997/12/07 23:27:00 marekm Exp $ */
/* $Id: chkname.h,v 1.2 2000/08/26 18:27:17 marekm Exp $ */
#ifndef _CHKNAME_H_
#define _CHKNAME_H_
@ -9,7 +9,7 @@
#include "defines.h"
extern int check_user_name P_((const char *));
extern int check_group_name P_((const char *name));
extern int check_user_name(const char *);
extern int check_group_name(const char *name);
#endif

View File

@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: chowndir.c,v 1.5 1998/04/16 19:57:43 marekm Exp $")
RCSID("$Id: chowndir.c,v 1.6 2000/08/26 18:27:17 marekm Exp $")
#include <sys/types.h>
#include <sys/stat.h>
@ -94,10 +94,11 @@ chown_tree(const char *root, uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t
snprintf(new_name, sizeof new_name, "%s/%s", root, ent->d_name);
if (stat (new_name, &sb) == -1)
/* Don't follow symbolic links! */
if (LSTAT(new_name, &sb) == -1)
continue;
if (S_ISDIR(sb.st_mode)) {
if (S_ISDIR(sb.st_mode) && !S_ISLNK(sb.st_mode)) {
/*
* Do the entire subdirectory.
@ -107,8 +108,13 @@ chown_tree(const char *root, uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t
old_gid, new_gid)))
break;
}
#ifndef HAVE_LCHOWN
/* don't use chown (follows symbolic links!) */
if (S_ISLNK(sb.st_mode))
continue;
#endif
if (sb.st_uid == old_uid)
chown (new_name, new_uid,
LCHOWN(new_name, new_uid,
sb.st_gid == old_gid ? new_gid:sb.st_gid);
}
closedir (dir);
@ -119,7 +125,7 @@ chown_tree(const char *root, uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t
if (! stat (root, &sb)) {
if (sb.st_uid == old_uid)
chown (root, new_uid,
LCHOWN(root, new_uid,
sb.st_gid == old_gid ? new_gid:sb.st_gid);
}
return rc;

View File

@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: copydir.c,v 1.6 1998/06/25 22:10:42 marekm Exp $")
RCSID("$Id: copydir.c,v 1.7 2000/08/26 18:27:17 marekm Exp $")
#include <sys/stat.h>
@ -192,11 +192,7 @@ copy_tree(const char *src_root, const char *dst_root, uid_t uid, gid_t gid)
}
snprintf(dst_name, sizeof dst_name, "%s/%s", dst_root, ent->d_name);
#ifdef S_IFLNK
if (lstat (src_name, &sb) == -1)
#else
if (stat (src_name, &sb) == -1)
#endif
if (LSTAT(src_name, &sb) == -1)
continue;
if (S_ISDIR(sb.st_mode)) {
@ -380,11 +376,7 @@ remove_tree(const char *root)
break;
}
snprintf(new_name, sizeof new_name, "%s/%s", root, ent->d_name);
#ifdef S_IFLNK
if (lstat (new_name, &sb) == -1)
#else
if (stat (new_name, &sb) == -1)
#endif
if (LSTAT(new_name, &sb) == -1)
continue;
if (S_ISDIR(sb.st_mode)) {

View File

@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: entry.c,v 1.3 1997/12/07 23:27:03 marekm Exp $")
RCSID("$Id: entry.c,v 1.4 2000/08/26 18:27:17 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
@ -38,10 +38,10 @@ RCSID("$Id: entry.c,v 1.3 1997/12/07 23:27:03 marekm Exp $")
#include "defines.h"
#include <pwd.h>
struct passwd *fgetpwent ();
extern struct passwd *fgetpwent ();
void
entry(const char *name, struct passwd *pwent)
pw_entry(const char *name, struct passwd *pwent)
{
struct passwd *passwd;
#ifdef SHADOWPWD

View File

@ -1,4 +1,4 @@
/* $Id: failure.h,v 1.1 1997/12/07 23:27:04 marekm Exp $ */
/* $Id: failure.h,v 1.2 2000/08/26 18:27:17 marekm Exp $ */
#ifndef _FAILURE_H_
#define _FAILURE_H_
@ -12,7 +12,7 @@
* failure() creates a new (struct faillog) entry or updates an
* existing one with the current failed login information.
*/
extern void failure P_((uid_t, const char *, struct faillog *));
extern void failure(uid_t, const char *, struct faillog *);
/*
* failcheck - check for failures > allowable
@ -22,7 +22,7 @@ extern void failure P_((uid_t, const char *, struct faillog *));
* returns FALSE to indicate that the login should be denied even though
* the password is valid.
*/
extern int failcheck P_((uid_t, struct faillog *, int));
extern int failcheck(uid_t, struct faillog *, int);
/*
* failprint - print line of failure information
@ -30,7 +30,7 @@ extern int failcheck P_((uid_t, struct faillog *, int));
* failprint takes a (struct faillog) entry and formats it into a
* message which is displayed at login time.
*/
extern void failprint P_((const struct faillog *));
extern void failprint(const struct faillog *);
/*
* failtmp - update the cummulative failure log
@ -38,7 +38,7 @@ extern void failprint P_((const struct faillog *));
* failtmp updates the (struct utmp) formatted failure log which
* maintains a record of all login failures.
*/
extern void failtmp P_((const struct utmp *));
extern void failtmp(const struct utmp *);
#endif

View File

@ -4,5 +4,5 @@
#include <config.h>
#include "defines.h"
time_t get_date P_((const char *p, const time_t *now));
time_t get_date(const char *, const time_t *);
#endif

View File

@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: hushed.c,v 1.3 1997/12/07 23:27:05 marekm Exp $")
RCSID("$Id: hushed.c,v 1.4 2000/08/26 18:27:17 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
@ -68,7 +68,7 @@ hushed(const struct passwd *pw)
*/
if (hushfile[0] != '/') {
strcat(strcat(strcpy(buf, pw->pw_dir), "/"), hushfile);
snprintf(buf, sizeof(buf), "%s/%s", pw->pw_dir, hushfile);
return (access(buf, F_OK) == 0);
}

View File

@ -30,7 +30,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: loginprompt.c,v 1.5 1998/04/16 19:57:44 marekm Exp $")
RCSID("$Id: loginprompt.c,v 1.6 2000/08/26 18:27:17 marekm Exp $")
#include <stdio.h>
#include <signal.h>
@ -62,9 +62,9 @@ login_prompt(const char *prompt, char *name, int namesize)
char *cp;
int i;
FILE *fp;
RETSIGTYPE (*sigquit) P_((int));
RETSIGTYPE (*sigquit)(int);
#ifdef SIGTSTP
RETSIGTYPE (*sigtstp) P_((int));
RETSIGTYPE (*sigtstp)(int);
#endif
/*

View File

@ -34,7 +34,7 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: setupenv.c,v 1.9 1999/03/07 19:14:41 marekm Exp $")
RCSID("$Id: setupenv.c,v 1.10 2000/08/26 18:27:17 marekm Exp $")
#include <sys/types.h>
#include <sys/stat.h>
@ -235,8 +235,21 @@ setup_env(struct passwd *info)
* Create the PATH environmental variable and export it.
*/
cp = getdef_str( info->pw_uid == 0 ? "ENV_SUPATH" : "ENV_PATH" );
cp = getdef_str((info->pw_uid == 0) ? "ENV_SUPATH" : "ENV_PATH");
#if 0
addenv(cp ? cp : "PATH=/bin:/usr/bin", NULL);
#else
if (!cp) {
/* not specified, use a minimal default */
addenv("PATH=/bin:/usr/bin", NULL);
} else if (strchr(cp, '=')) {
/* specified as name=value (PATH=...) */
addenv(cp, NULL);
} else {
/* only value specified without "PATH=" */
addenv("PATH", cp);
}
#endif
/*
* Export the user name. For BSD derived systems, it's "USER", for
@ -269,9 +282,11 @@ setup_env(struct passwd *info)
#endif
}
#ifndef USE_PAM
/*
* Read environment from optional config file. --marekm
*/
if ((envf = getdef_str("ENVIRON_FILE")))
read_env_file(envf);
#endif
}

View File

@ -23,10 +23,10 @@
* strings output to the user or the syslog. -- chris
*/
static int applies P_((const char *, char *));
static int applies(const char *, char *);
int check_su_auth P_((const char *, const char *));
int isgrp P_((const char *, const char *));
int check_su_auth(const char *, const char *);
int isgrp(const char *, const char *);
static int lines = 0;

View File

@ -30,25 +30,22 @@
#include <config.h>
#include "rcsid.h"
RCSID("$Id: sulog.c,v 1.4 1998/04/02 21:51:51 marekm Exp $")
RCSID("$Id: sulog.c,v 1.5 2000/08/26 18:27:17 marekm Exp $")
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <time.h>
#include "prototypes.h"
#include "defines.h"
#include "getdef.h"
extern char name[];
extern char oldname[];
extern struct tm *localtime ();
/*
* sulog - log a SU command execution result
*/
void
sulog(const char *tty, int success)
sulog(const char *tty, int success, const char *oldname, const char *name)
{
char *sulog_file;
time_t now;

View File

@ -1,10 +1,12 @@
AUTOMAKE_OPTIONS = 1.0 foreign
SUBDIRS = pl
man_MANS = chage.1 chfn.1 chsh.1 gpasswd.1 \
login.1 newgrp.1 passwd.1 su.1 \
shadow.3 \
faillog.5 limits.5 login.access.5 login.defs.5 \
dialups.5 faillog.5 limits.5 login.access.5 login.defs.5 \
passwd.5 porttime.5 shadow.5 suauth.5 \
chpasswd.8 dpasswd.8 faillog.8 \
groupadd.8 groupdel.8 groupmod.8 \
@ -12,21 +14,8 @@ man_MANS = chage.1 chfn.1 chsh.1 gpasswd.1 \
pwck.8 pwconv.8 shadowconfig.8 \
useradd.8 userdel.8 usermod.8 vipw.8
# XXX - for some reason "make dist" no longer distributes man_MANS
# automatically after upgrade to automake-1.2 (it worked with 1.0).
# So they are now all listed in EXTRA_DIST. --marekm
#
#EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8
EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 ${man_MANS}
EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 \
chage.1 chfn.1 chsh.1 gpasswd.1 \
login.1 newgrp.1 passwd.1 su.1 \
shadow.3 \
faillog.5 limits.5 login.access.5 login.defs.5 \
passwd.5 porttime.5 shadow.5 suauth.5 \
chpasswd.8 dpasswd.8 faillog.8 \
groupadd.8 groupdel.8 groupmod.8 \
grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 \
pwck.8 pwconv.8 shadowconfig.8 \
useradd.8 userdel.8 usermod.8 vipw.8
# subdirectories for translated manual pages
SUBDIRS = pl

View File

@ -79,6 +79,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
@ -103,17 +104,13 @@ l = @l@
AUTOMAKE_OPTIONS = 1.0 foreign
man_MANS = chage.1 chfn.1 chsh.1 gpasswd.1 login.1 newgrp.1 passwd.1 su.1 shadow.3 faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 porttime.5 shadow.5 suauth.5 chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwck.8 pwconv.8 shadowconfig.8 useradd.8 userdel.8 usermod.8 vipw.8
# subdirectories for translated manual pages
SUBDIRS = pl
man_MANS = chage.1 chfn.1 chsh.1 gpasswd.1 login.1 newgrp.1 passwd.1 su.1 shadow.3 dialups.5 faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 porttime.5 shadow.5 suauth.5 chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwck.8 pwconv.8 shadowconfig.8 useradd.8 userdel.8 usermod.8 vipw.8
# XXX - for some reason "make dist" no longer distributes man_MANS
# automatically after upgrade to automake-1.2 (it worked with 1.0).
# So they are now all listed in EXTRA_DIST. --marekm
#
#EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8
EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 chage.1 chfn.1 chsh.1 gpasswd.1 login.1 newgrp.1 passwd.1 su.1 shadow.3 faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 porttime.5 shadow.5 suauth.5 chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwck.8 pwconv.8 shadowconfig.8 useradd.8 userdel.8 usermod.8 vipw.8
EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 ${man_MANS}
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
@ -280,9 +277,95 @@ uninstall-man:
@$(NORMAL_UNINSTALL)
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1 uninstall-man3 uninstall-man5 \
uninstall-man8
tags: TAGS
TAGS:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
@SET_MAKE@
all-recursive install-data-recursive install-exec-recursive \
installdirs-recursive install-recursive uninstall-recursive \
check-recursive installcheck-recursive info-recursive dvi-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@set fnord $(MAKEFLAGS); amf=$$2; \
dot_seen=no; \
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
rev="$$subdir $$rev"; \
test "$$subdir" = "." && dot_seen=yes; \
done; \
test "$$dot_seen" = "no" && rev=". $$rev"; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $$unique $(LISP)
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
@ -299,30 +382,41 @@ distdir: $(DISTFILES)
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
for subdir in $(SUBDIRS); do \
if test "$$subdir" = .; then :; else \
test -d $(distdir)/$$subdir \
|| mkdir $(distdir)/$$subdir \
|| exit 1; \
chmod 777 $(distdir)/$$subdir; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \
|| exit 1; \
fi; \
done
info-am:
info: info-am
info: info-recursive
dvi-am:
dvi: dvi-am
dvi: dvi-recursive
check-am: all-am
check: check-am
check: check-recursive
installcheck-am:
installcheck: installcheck-am
installcheck: installcheck-recursive
install-exec-am:
install-exec: install-exec-am
install-exec: install-exec-recursive
install-data-am: install-man
install-data: install-data-am
install-data: install-data-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
install: install-recursive
uninstall-am: uninstall-man
uninstall: uninstall-am
uninstall: uninstall-recursive
all-am: Makefile $(MANS)
all-redirect: all-am
all-redirect: all-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
installdirs: installdirs-recursive
installdirs-am:
$(mkinstalldirs) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man3 \
$(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man8
@ -336,33 +430,40 @@ distclean-generic:
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-generic
mostlyclean-am: mostlyclean-tags mostlyclean-generic
mostlyclean: mostlyclean-am
mostlyclean: mostlyclean-recursive
clean-am: clean-generic mostlyclean-am
clean-am: clean-tags clean-generic mostlyclean-am
clean: clean-am
clean: clean-recursive
distclean-am: distclean-generic clean-am
distclean-am: distclean-tags distclean-generic clean-am
-rm -f libtool
distclean: distclean-am
distclean: distclean-recursive
maintainer-clean-am: maintainer-clean-generic distclean-am
maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \
distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-am
maintainer-clean: maintainer-clean-recursive
.PHONY: install-man1 uninstall-man1 install-man3 uninstall-man3 \
install-man5 uninstall-man5 install-man8 uninstall-man8 install-man \
uninstall-man tags distdir info-am info dvi-am dvi check check-am \
installcheck-am installcheck install-exec-am install-exec \
install-data-am install-data install-am install uninstall-am uninstall \
all-redirect all-am all installdirs mostlyclean-generic \
distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean
uninstall-man install-data-recursive uninstall-data-recursive \
install-exec-recursive uninstall-exec-recursive installdirs-recursive \
uninstalldirs-recursive all-recursive check-recursive \
installcheck-recursive info-recursive dvi-recursive \
mostlyclean-recursive distclean-recursive clean-recursive \
maintainer-clean-recursive tags tags-recursive mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
install-exec install-data-am install-data install-am install \
uninstall-am uninstall all-redirect all-am all installdirs-am \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: chage.1,v 1.5 1999/03/07 19:14:45 marekm Exp $
.\" $Id: chage.1,v 1.6 2000/08/26 18:27:17 marekm Exp $
.\"
.TH CHAGE 1
.SH NAME
@ -106,4 +106,4 @@ The current value is displayed between a pair of \fB[ ]\fR marks.
.BR passwd (5),
.BR shadow (5)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: chfn.1,v 1.4 1998/12/28 20:34:58 marekm Exp $
.\" $Id: chfn.1,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH CHFN 1
.SH NAME
@ -63,4 +63,4 @@ Without options, chfn prompts for the current user account.
.SH SEE ALSO
.BR passwd (5)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: chpasswd.8,v 1.5 1998/12/28 20:34:59 marekm Exp $
.\" $Id: chpasswd.8,v 1.6 2000/08/26 18:27:17 marekm Exp $
.\"
.TH CHPASSWD 8
.SH NAME
@ -59,4 +59,4 @@ The input file must be protected if it contains unencrypted passwords.
.BR useradd (8),
.BR newusers (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: chsh.1,v 1.4 1998/12/28 20:35:01 marekm Exp $
.\" $Id: chsh.1,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH CHSH 1
.SH NAME
@ -63,4 +63,4 @@ The current value is displayed between a pair of \fB[ ]\fR marks.
.BR chfn (1),
.BR passwd (5)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

22
man/dialups.5 Normal file
View File

@ -0,0 +1,22 @@
.TH DIALUPS 5 "03 Oct 1999"
.SH NAME
d_passwd \- The dialup shell password file
.br
dialups \- List of dialup lines
.SH DESCRIPTION
The \fBd_passwd\fR file contains the names of login shells which require
dialup passwords. Each line contains the fully qualified path name
for the shell, followed by an optional password. Each field is separated
by a '\fB:\fR'.
.PP
The \fBdialups\fR file contains the names of ports which may be dialup
lines. Each line consists of the last component of the path name. The
leading "\fB/dev/\fR" string is removed.
.SH FILES
/etc/d_passwd \- dialup shell password file
.br
/etc/dialups \- dialup line list
.SH SEE ALSO
.BR login (1),
.SH AUTHOR
Ben Collins <bcollins@debian.org>

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: dpasswd.8,v 1.4 1998/12/28 20:35:02 marekm Exp $
.\" $Id: dpasswd.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH DPASSWD 8
.SH NAME
@ -52,4 +52,4 @@ program.
.SH SEE ALSO
.BR login (1)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: faillog.5,v 1.4 1998/12/28 20:35:03 marekm Exp $
.\" $Id: faillog.5,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH FAILLOG 5
.SH NAME
@ -56,4 +56,4 @@ The structure of the file is
.SH SEE ALSO
.BR faillog (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: faillog.8,v 1.6 1999/07/09 18:02:43 marekm Exp $
.\" $Id: faillog.8,v 1.7 2000/08/26 18:27:17 marekm Exp $
.\"
.TH FAILLOG 8
.SH NAME
@ -97,4 +97,4 @@ Some systems may replace /var/log with /var/adm or /usr/adm.
.BR login (1),
.BR faillog (5)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: groupadd.8,v 1.4 1998/12/28 20:35:05 marekm Exp $
.\" $Id: groupadd.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH GROUPADD 8
.SH NAME
@ -61,4 +61,4 @@ Values between 0 and 99 are typically reserved for system accounts.
.BR groupdel (8),
.BR groupmod (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: groupdel.8,v 1.4 1998/12/28 20:35:06 marekm Exp $
.\" $Id: groupdel.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH GROUPDEL 8
.SH NAME
@ -57,4 +57,4 @@ You must remove the user before you remove the group.
.BR groupadd (8),
.BR groupmod (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: groupmod.8,v 1.4 1998/12/28 20:35:07 marekm Exp $
.\" $Id: groupmod.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH GROUPMOD 8
.SH NAME
@ -63,4 +63,4 @@ The name of the group will be changed from \fIgroup\fR to
.BR groupadd (8),
.BR groupdel (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: groups.1,v 1.4 1998/12/28 20:35:08 marekm Exp $
.\" $Id: groups.1,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH GROUPS 1
.SH NAME
@ -54,4 +54,4 @@ effective group ID.
.BR getgid (2),
.BR getgroups (2)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: grpck.8,v 1.4 1998/12/28 20:35:09 marekm Exp $
.\" $Id: grpck.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH GRPCK 1
.SH NAME
@ -98,4 +98,4 @@ Cannot lock group files
.IP 5 5
Cannot update group files
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: id.1,v 1.4 1998/12/28 20:35:10 marekm Exp $
.\" $Id: id.1,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH ID 1
.SH NAME
@ -51,4 +51,4 @@ support multiple concurrent group membership.
.BR getgid (2),
.BR getgroups (2)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -26,7 +26,7 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)lastlog.8 3.3 08:24:58 29 Sep 1993 (National Guard Release)
.\" $Id: lastlog.8,v 1.5 1998/12/28 20:35:11 marekm Exp $
.\" $Id: lastlog.8,v 1.6 2000/08/26 18:27:17 marekm Exp $
.\"
.TH LASTLOG 8
.SH NAME
@ -34,15 +34,15 @@ lastlog \- examine lastlog file
.SH SYNOPSIS
.B lastlog
.RB [ -u
.IR uid ]
.IR login-name ]
.RB [ -t
.IR days ]
.SH DESCRIPTION
\fBlastlog\fR formats and prints the contents of the last login log,
\fI/var/log/lastlog\fR. The \fBlogin-name\fR, \fBport\fR, and \fBlast login
time\fR will be printed.
The default (no flags) causes lastlog entries to be printed in UID
order.
The default (no flags) causes lastlog entries to be printed, sorted
by the numerical UID.
Entering \fB-u \fIlogin-name\fR flag will
cause the lastlog record for \fIlogin-name\fR only to be printed.
Entering \fB-t \fIdays\fR will cause only the
@ -58,6 +58,6 @@ Large gaps in uid numbers will cause the lastlog program to run longer with
no output to the screen (i.e. if mmdf=800 and last uid=170, program will
appear to hang as it processes uid 171-799).
.SH AUTHORS
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)
.br
Phillip Street

View File

@ -25,15 +25,17 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: login.1,v 1.6 1999/06/07 16:40:44 marekm Exp $
.\" $Id: login.1,v 1.7 2000/08/26 18:27:17 marekm Exp $
.\"
.TH LOGIN 1
.SH NAME
login \- Begin session on the system
.SH SYNOPSIS
.B login
.RI [ username " [" environmental-variables ]]
.\" XXX - document -f -h -p -r options
\fBlogin\fR [\fB-p\fR] [\fIusername\fR] [\fIENV=VAR ...\fR]
.br
\fBlogin\fR [\fB-p\fR] [\fB-h\fR \fIhost\fR] [\fB-f\fR \fIusername\fR]
.br
\fBlogin\fR [\fB-p\fR] \fB-r\fR \fIhost\fR
.SH DESCRIPTION
.B login
is used to establish a new session with the system.
@ -94,6 +96,25 @@ An initialization script for your command interpreter may also be
executed.
Please see the appropriate manual section for more information on
this function.
.PP
A subsystem login is indicated by the presense of a "*" as the first
character of the login shell. The given home directory will be used as
the root of a new filesystem which the user is actually logged into.
.SH OPTIONS
.TP
.B -p
Preserve environment.
.TP
.B -f
Do not perform authentication, user is preauthenticated.
.TP
.B -h
Name of the remote host for this login.
.TP
.B -r
Perform autologin protocol for rlogin.
.PP
The \fB-r -h\fP and \fB-f\fP options are only used when \fBlogin\fP is invoked by root.
.SH CAVEATS
.PP
This version of \fBlogin\fR has many compilation options, only some of which
@ -131,4 +152,4 @@ $HOME/.hushlogin \- suppress printing of system messages
.BR passwd (5),
.BR nologin (5)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: login.defs.5,v 1.6 1998/12/28 20:35:13 marekm Exp $
.\" $Id: login.defs.5,v 1.7 2000/08/26 18:27:17 marekm Exp $
.\"
.TH LOGIN 5
.SH NAME
@ -79,6 +79,14 @@ program. It can be any combination of letters
for Full name, Room number, Work phone, and Home phone, respectively.
If not specified, only the superuser can make any changes.
.\"
.IP "CLOSE_SESSIONS (boolean)"
Enable pam_close_session() calling. When using normal (pam_unix.so)
session handling modules, this is not needed. However with modules
(such as kerberos or other persistent session models),
.B login
needs to fork and wait for the shell to exit, so that sessions can be
cleaned up.
.\"
.IP "CONSOLE (string)"
If specified, this definition provides for a restricted set of lines
on which root logins will be allowed. An attempted root login which
@ -134,7 +142,8 @@ dialups, one per line, for example:
.fi
.\"
.IP "ENVIRON_FILE (string)"
XXX needs to be documented.
File containing a list of environment variables (one per line) to set
when logging in or su'ing.
.\"
.IP "ENV_HZ (string)"
This parameter specifies a value for an HZ environment parameter.
@ -502,7 +511,8 @@ type and a terminal line, seperated by whitespace, for example:
.ft R
.sp
.fi
This information is used to initialize the TERM environment parameter.
This information is only used to initialize the TERM environment parameter
when it does not already exist.
A line starting with a ``#'' pound sign will be treated as a comment.
If this paramter is not specified, the file does not exist, or the terminal
line is not found in the file, then the TERM environment parameter will not
@ -558,6 +568,6 @@ manual page.
.BR porttime (5),
.BR faillog (8)
.SH AUTHORS
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)
.br
Chip Rosenthal (chip@unicom.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: logoutd.8,v 1.4 1998/12/28 20:35:14 marekm Exp $
.\" $Id: logoutd.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH LOGOUTD 8
.SH NAME
@ -48,4 +48,4 @@ is terminated.
.br
/etc/utmp \- current login sessions
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: mkpasswd.8,v 1.4 1998/12/28 20:35:15 marekm Exp $
.\" $Id: mkpasswd.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH MKPASSWD 1
.SH NAME
@ -78,4 +78,4 @@ deleted or corrupted database file.
.BR group (5),
.BR shadow (5)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: newgrp.1,v 1.5 1999/08/27 19:02:51 marekm Exp $
.\" $Id: newgrp.1,v 1.6 2000/08/26 18:27:17 marekm Exp $
.\"
.TH NEWGRP 1
.SH NAME
@ -77,4 +77,4 @@ only some of which may be in use at any particular site.
.BR id (1),
.BR su (1)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: newusers.8,v 1.4 1998/12/28 20:35:17 marekm Exp $
.\" $Id: newusers.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH NEWUSERS 8
.SH NAME
@ -65,4 +65,4 @@ The input file must be protected since it contains unencrypted passwords.
.BR passwd (1),
.BR useradd (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: passwd.1,v 1.4 1998/12/28 20:35:18 marekm Exp $
.\" $Id: passwd.1,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH PASSWD 1
.SH NAME
@ -183,8 +183,8 @@ is enabled and they are not logged into the NIS server.
/etc/shadow \- encrypted user passwords
.SH SEE ALSO
.BR passwd (3),
.BR shadow (3),
.\" .BR shadow (3),
.BR group (5),
.BR passwd (5)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -25,7 +25,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: passwd.5,v 1.4 1998/12/28 20:35:19 marekm Exp $
.\" $Id: passwd.5,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH PASSWD 5
.SH NAME
@ -108,4 +108,4 @@ If this field is empty, it defaults to the value \fB/bin/sh\fR.
.BR pwconv (8),
.BR pwunconv (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@bga.com)
Julianne Frances Haugh (jfh@austin.ibm.com)

60
man/pl/Makefile.am Normal file
View File

@ -0,0 +1,60 @@
AUTOMAKE_OPTIONS = 1.0 foreign
manpldir = $(mandir)/pl
manpl1dir = $(manpldir)/man1
manpl3dir = $(manpldir)/man3
manpl5dir = $(manpldir)/man5
manpl8dir = $(manpldir)/man8
manpl1_DATA = \
chage.1 \
chfn.1 \
chsh.1 \
groups.1 \
gpasswd.1 \
id.1 \
login.1 \
newgrp.1 \
passwd.1 \
su.1
manpl3_DATA = \
pw_auth.3 \
shadow.3
manpl5_DATA = \
d_passwd.5 \
dialups.5 \
faillog.5 \
limits.5 \
login.access.5 \
login.defs.5 \
passwd.5 \
porttime.5 \
shadow.5 \
suauth.5
manpl8_DATA = \
chpasswd.8 \
dpasswd.8 \
faillog.8 \
groupadd.8 \
groupdel.8 \
groupmod.8 \
grpck.8 \
lastlog.8 \
logoutd.8 \
mkpasswd.8 \
newusers.8 \
pwauth.8 \
pwck.8 \
pwconv.8 \
shadowconfig.8 \
sulogin.8
useradd.8 \
userdel.8 \
usermod.8 \
vipw.8
EXTRA_DIST = $(manpl1_DATA) $(manpl3_DATA) $(manpl5_DATA) $(manpl8_DATA)

View File

@ -10,9 +10,6 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# This is a dummy Makefile.am to get automake work flawlessly,
# and also cooperate to make a distribution for `make dist'
SHELL = @SHELL@
@ -41,7 +38,7 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
top_builddir = ../..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
@ -82,6 +79,7 @@ INTLOBJS = @INTLOBJS@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
@ -104,11 +102,32 @@ VERSION = @VERSION@
YACC = @YACC@
l = @l@
EXTRA_DIST = Makefile.linux Makefile.sun4 Makefile.svr4 Makefile.xenix config.h.linux config.h.sun4 config.h.svr4 config.h.xenix orig-config.h pwconv.8 pwconv-old.8 pwconv-old.c pwd.h.m4 pwunconv.8 pwunconv-old.8 pwunconv-old.c scologin.c vipw.8
AUTOMAKE_OPTIONS = 1.0 foreign
manpldir = $(mandir)/pl
manpl1dir = $(manpldir)/man1
manpl3dir = $(manpldir)/man3
manpl5dir = $(manpldir)/man5
manpl8dir = $(manpldir)/man8
manpl1_DATA = chage.1 chfn.1 chsh.1 groups.1 gpasswd.1 id.1 login.1 newgrp.1 passwd.1 su.1
manpl3_DATA = pw_auth.3 shadow.3
manpl5_DATA = d_passwd.5 dialups.5 faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 porttime.5 shadow.5 suauth.5
manpl8_DATA = chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwauth.8 pwck.8 pwconv.8 shadowconfig.8 sulogin.8
EXTRA_DIST = $(manpl1_DATA) $(manpl3_DATA) $(manpl5_DATA) $(manpl8_DATA)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_HEADER = ../../config.h
CONFIG_CLEAN_FILES =
DATA = $(manpl1_DATA) $(manpl3_DATA) $(manpl5_DATA) $(manpl8_DATA)
DIST_COMMON = Makefile.am Makefile.in
@ -119,19 +138,95 @@ GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps old/Makefile
cd $(top_srcdir) && $(AUTOMAKE) --foreign --include-deps man/pl/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
install-manpl1DATA: $(manpl1_DATA)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(manpl1dir)
@list='$(manpl1_DATA)'; for p in $$list; do \
if test -f $(srcdir)/$$p; then \
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl1dir)/$$p"; \
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl1dir)/$$p; \
else if test -f $$p; then \
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(manpl1dir)/$$p"; \
$(INSTALL_DATA) $$p $(DESTDIR)$(manpl1dir)/$$p; \
fi; fi; \
done
uninstall-manpl1DATA:
@$(NORMAL_UNINSTALL)
list='$(manpl1_DATA)'; for p in $$list; do \
rm -f $(DESTDIR)$(manpl1dir)/$$p; \
done
install-manpl3DATA: $(manpl3_DATA)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(manpl3dir)
@list='$(manpl3_DATA)'; for p in $$list; do \
if test -f $(srcdir)/$$p; then \
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl3dir)/$$p"; \
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl3dir)/$$p; \
else if test -f $$p; then \
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(manpl3dir)/$$p"; \
$(INSTALL_DATA) $$p $(DESTDIR)$(manpl3dir)/$$p; \
fi; fi; \
done
uninstall-manpl3DATA:
@$(NORMAL_UNINSTALL)
list='$(manpl3_DATA)'; for p in $$list; do \
rm -f $(DESTDIR)$(manpl3dir)/$$p; \
done
install-manpl5DATA: $(manpl5_DATA)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(manpl5dir)
@list='$(manpl5_DATA)'; for p in $$list; do \
if test -f $(srcdir)/$$p; then \
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl5dir)/$$p"; \
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl5dir)/$$p; \
else if test -f $$p; then \
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(manpl5dir)/$$p"; \
$(INSTALL_DATA) $$p $(DESTDIR)$(manpl5dir)/$$p; \
fi; fi; \
done
uninstall-manpl5DATA:
@$(NORMAL_UNINSTALL)
list='$(manpl5_DATA)'; for p in $$list; do \
rm -f $(DESTDIR)$(manpl5dir)/$$p; \
done
install-manpl8DATA: $(manpl8_DATA)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(manpl8dir)
@list='$(manpl8_DATA)'; for p in $$list; do \
if test -f $(srcdir)/$$p; then \
echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl8dir)/$$p"; \
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl8dir)/$$p; \
else if test -f $$p; then \
echo " $(INSTALL_DATA) $$p $(DESTDIR)$(manpl8dir)/$$p"; \
$(INSTALL_DATA) $$p $(DESTDIR)$(manpl8dir)/$$p; \
fi; fi; \
done
uninstall-manpl8DATA:
@$(NORMAL_UNINSTALL)
list='$(manpl8_DATA)'; for p in $$list; do \
rm -f $(DESTDIR)$(manpl8dir)/$$p; \
done
tags: TAGS
TAGS:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = old
subdir = man/pl
distdir: $(DISTFILES)
@for file in $(DISTFILES); do \
@ -155,19 +250,23 @@ installcheck: installcheck-am
install-exec-am:
install-exec: install-exec-am
install-data-am:
install-data-am: install-manpl1DATA install-manpl3DATA \
install-manpl5DATA install-manpl8DATA
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am:
uninstall-am: uninstall-manpl1DATA uninstall-manpl3DATA \
uninstall-manpl5DATA uninstall-manpl8DATA
uninstall: uninstall-am
all-am: Makefile
all-am: Makefile $(DATA)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(manpl1dir) $(DESTDIR)$(manpl3dir) \
$(DESTDIR)$(manpl5dir) $(DESTDIR)$(manpl8dir)
mostlyclean-generic:
@ -198,13 +297,19 @@ maintainer-clean-am: maintainer-clean-generic distclean-am
maintainer-clean: maintainer-clean-am
.PHONY: tags distdir info-am info dvi-am dvi check check-am \
installcheck-am installcheck install-exec-am install-exec \
install-data-am install-data install-am install uninstall-am uninstall \
all-redirect all-am all installdirs mostlyclean-generic \
distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean
.PHONY: uninstall-manpl1DATA install-manpl1DATA uninstall-manpl3DATA \
install-manpl3DATA uninstall-manpl5DATA install-manpl5DATA \
uninstall-manpl8DATA install-manpl8DATA tags distdir info-am info \
dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
install-exec install-data-am install-data install-am install \
uninstall-am uninstall all-redirect all-am all installdirs \
mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
useradd.8 \
userdel.8 \
usermod.8 \
vipw.8
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.

110
man/pl/chage.1 Normal file
View File

@ -0,0 +1,110 @@
.\" {PTM/WK/1999-09-16}
.\" Copyright 1990 - 1994 Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.TH CHAGE 1
.SH NAZWA
chage \- zmień informację o terminie ważności hasła użytkownika
.SH SKŁADNIA
.TP 6
.B chage
.RB [ -m
.IR mindni ]
.RB [ -M
.IR maxdni ]
.RB [ -d
.IR ostatni ]
.RB [ -I
.IR nieaktywne ]
.br
.RB [ -E
.IR data_ważności ]
.RB [ -W
.IR dni_ostrzegania ]
.I użytkownik
.TP 6
.B chage -l \fIużytkownik\fR
.SH OPIS
\fBchage\fR zmienia liczbę dni pomiędzy zmianami hasła i datę ostatniej
zmiany hasła. Informację tę system wykorzystuje do ustalenia, kiedy
użytkownik musi zmienić hasło.
Polecenia \fBchage\fR może użyć tylko użytkownik root, za wyjątkiem
opcji \fB-l\fR. Może się nią posłużyć się użytkownik nieuprzywilejowany
do stwierdzenia, kiedy wygasa jego własne hasło lub konto.
.PP
Opcja \fB-m\fR ustawia minimalną liczbę dni pomiędzy zmianami hasła
na wartość \fImindni\fR. Wartość zerowa oznacza, że użytkownik może je zmieniać
w dowolnym czasie.
.PP
Opcja \fB-M\fR ustawia maksymalną liczbę dni, przez jakie hasło jest ważne
na wartość \fImaxdni\fR.
Gdy \fImaxdni\fR plus \fIostatni\fR jest mniejsze niż bieżący dzień,
od użytkownika wymagana jest zmiana hasła przed skorzystaniem z konta.
Zdarzenie to może być zaplanowane z wyprzedzeniem przez wykorzystanie
opcji \fB-W\fR, ostrzegającej zawczasu użytkownika o zbliżającym się terminie
zmiany.
.PP
Opcja \fB-d\fR ustawia liczbę dni od 1 stycznia 1970 do dnia kiedy ostatnio
zmieniono hasło na \fIostatni\fR. Data może również zostać podana w postaci
RRRR-MM-DD (lub postaci powszechniej używanej w twoim regionie).
.PP
Opcja \fB-E\fR służy do ustawiania daty, od której konto użytkownika
nie będzie już dostępne.
\fIdata_ważności\fR jest liczbą dni od 1 stycznia 1970, od której konto jest
blokowane. Data może być też wyrażona w postaci RRRR-MM-DD (lub innej,
powszechniej używanej w twoim regionie).
Użytkownik, którego konto jest zablokowane musi skontaktować się
z administratorem systemu zanim będzie mógł z niego ponownie skorzystać.
.PP
Opcja \fB-I\fR służy do ustawiania czasu nieaktywności po wygaśnięciu
hasła, po którym konto jest blokowane. Parametr \fInieaktywne\fR podaje
liczbę dni nieaktywności. Wartość 0 wyłącza tę funkcję.
Użytkownik, którego konto jest zablokowane musi skontaktować się
z administratorem systemu zanim będzie mógł z niego ponownie skorzystać.
.PP
Opcja \fB-W\fR służy do ustawiania ostrzegania przed wymaganą zmianą hasła.
Parametr \fIdni_ostrzegania\fR jest liczbą dni przed upływem ważności hasła;
od tego dnia użytkownik będzie ostrzegany o nadchodzącym terminie.
.PP
Wszystkie powyższe wartości przechowywane są jako liczba dni, jeżeli używany
jest dodatkowy, przesłaniany plik haseł (shadow). Jednak jeżeli używany jest
standardowy plik haseł, to są one zamieniane (w obie strony) na liczbę tygodni.
Z powodu powyższej konwersji mogą pojawić się błędy zaokrągleń.
.PP
Jeśli nie podano żadnej opcji, to \fBchage\fR działa w trybie interaktywnym,
proponując użytkownikowi wartości bieżące dla każdego z pól. Wprowadź nową
wartość by zmienić pole, lub pozostaw pustą by użyć wartości bieżącej.
Bieżąca wartość pola wyświetlana jest między parą znaczników \fB[ ]\fR.
.SH PLIKI
.IR /etc/passwd " - informacje o kontach użytkowników"
.br
.IR /etc/shadow " - chronione informacje o kontach użytkowników"
.SH ZOBACZ TAKŻE
.BR passwd (5),
.BR shadow (5)
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)

77
man/pl/chfn.1 Normal file
View File

@ -0,0 +1,77 @@
.\" {PTM/WK/1999-09-25}
.\" Copyright 1990 - 1994 Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.TH CHFN 1
.SH NAZWA
chfn \- zmieñ nazwê u¿ytkownika i informacjê o nim
.SH SK£ADNIA
.TP 5
.B chfn
.RB [ -f
.IR pe³na_nazwa ]
.RB [ -r
.IR nr_pokoju ]
.br
.RB [ -w
.IR tel_s³u¿b ]
.RB [ -h
.IR tel_dom ]
.RB [ -o
.IR inne ]
.RI [ u¿ytkownik ]
.SH OPIS
\fBchfn\fR zmienia pe³n± nazwê (imiê i nazwisko), telefon s³u¿bowy i domowy
dla danego konta u¿ytkownika. Informacja ta jest zwykle drukowana przez
\fBfinger\fR(1) i podobne mu programy.
Zwyk³y u¿ytkownik mo¿e zmieniaæ wy³±cznie pola opisuj±ce w³asne konto.
Tylko superu¿ytkownik mo¿e zmieniaæ pola dowolnego konta.
Równie¿ tylko on mo¿e pos³u¿yæ siê opcj± \fB-o\fR by zmieniæ niezdefiniowane
czê¶ci pola GECOS.
.PP
Jedynym ograniczeniem nak³adanym na zawarto¶æ pól jest zakaz u¿ywania w nich
znaków kontrolnych oraz przecinka, dwukropka i znaku równo¶ci.
Pola \fIinne\fR (other) nie obowi±zuje to ograniczenie. Pole to s³u¿y do
przechowywania informacji rozliczeniowej u¿ywanej przez inne aplikacje.
.PP
Je¶li nie wybrano ¿adnej z opcji, to \fBchfn\fR dzia³a w trybie interaktywnym,
proponuj±c u¿ytkownikowi warto¶ci bie¿±ce dla ka¿dego z pól. Wprowad¼ now±
warto¶æ by zmieniæ pole, lub pozostaw pust± by u¿yæ warto¶ci bie¿±cej.
Bie¿±ca warto¶æ pola wy¶wietlana jest miêdzy par± znaczników \fB[ ]\fR.
Bez podania opcji \fBchfn\fR pyta o konto u¿ytkownika, które ma podlegaæ
zmianie.
.SH PLIKI
.IR /etc/passwd " - informacja o kontach u¿ytkowników"
.SH ZOBACZ TAK¯E
.BR passwd (5)
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)
.SH OD T£UMACZA
Niniejsza dokumentacja opisuje polecenie wchodz±ce w sk³ad pakietu
shadow-password.
Z uwagi na powtarzaj±ce siê nazwy poleceñ, upewnij siê, ¿e korzystasz
z w³a¶ciwej dokumentacji.

62
man/pl/chpasswd.8 Normal file
View File

@ -0,0 +1,62 @@
.\" {PTM/WK/1999-09-16}
.\" Copyright 1991, Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.TH CHPASSWD 8
.SH NAZWA
chpasswd - wsadowa aktualizacja pliku hase³
.SH SK£ADNIA
.B chpasswd
.RB [ -e ]
.SH OPIS
\fBchpasswd\fR odczytuje ze standardowego wej¶cia plik zawieraj±cy pary:
nazwa u¿ytkownika i has³o. Odczytan± informacje wykorzystuje do aktualizacji
grupy istniej±cych u¿ytkowników.
Bez prze³±cznika -e, has³a traktowane s± jako podane jawnie. Z prze³±cznikiem
-e has³a powinny byæ dostarczone w postaci zakodowanej (encrypted).
Ka¿dy wiersz ma postaæ
.sp 1
\fInazwa_U¿ytkownika\fR:\fIhas³o\fR
.sp 1
Dany u¿ytkownik musi istnieæ.
Je¿eli bêdzie to konieczne, podane has³o zostanie zakodowane a wiek has³a,
je¶li wystêpuje, zaktualizowany.
.PP
Polecenie to przeznaczone jest do u¿ytku w du¿ych systemach, gdzie aktualizuje
siê wiele kont naraz.
.SH PRZESTROGI
.\" Po u¿yciu \fBchpasswd\fR musi zostaæ wykonane polecenie \fImkpasswd\fR,
.\" aktualizuj±ce pliki DBM hase³ (DBM password files).
Plik ¼ród³owy, je¶li zawiera niezakodowane has³a, musi byæ chroniony.
.\" Polecenie to mo¿e byæ zaniechane na rzecz polecenia newusers(8).
.SH ZOBACZ TAK¯E
.\" mkpasswd(8), passwd(1), useradd(1)
.BR passwd (1),
.BR useradd (8),
.BR newusers (8)
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)

70
man/pl/chsh.1 Normal file
View File

@ -0,0 +1,70 @@
.\" {PTM/WK/1999-09-25}
.\" Copyright 1990, Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.TH CHSH 1
.SH NAZWA
chsh \- zmieñ pow³okê zg³oszeniow±
.SH SK£ADNIA
.TP 5
.B chsh
.RB [ -s
.IR pow³oka ]
.RI [ u¿ytkownik ]
.SH OPIS
\fBchsh\fR zmienia pow³okê zg³oszeniow± u¿ytkownika.
Okre¶la nazwê pocz±tkowego polecenia zg³oszeniowego u¿ytkownika.
Zwyk³y u¿ytkownik mo¿e zmieniæ wy³±cznie pow³okê zg³oszeniow± w³asnego konta,
superu¿ytkownik mo¿e zmieniæ pow³okê zg³oszeniow± dla dowolnego konta.
.PP
Jedynym ograniczeniem na³o¿onym na pow³okê zg³oszeniow± jest to, ¿e jej nazwa
musi byæ ujêta w \fI/etc/shells\fR, chyba ¿e polecenie \fBchsh\fR wywo³ywane
jest przez superu¿ytkownika, wówczas mo¿e byæ podana nazwa dowolnego polecenia.
U¿ytkownicy kont z ograniczon± pow³ok± logowania nie mog± jej zmieniaæ.
Odradza siê z tego powodu umieszczanie \fB/bin/rsh\fR w pliku \fI/etc/shells\fR,
gdy¿ przypadkowa zmiana na pow³okê ograniczon± uniemo¿liwi u¿ytkownikowi
jak±kolwiek zmianê pow³oki logowania, nawet z powrotem na dotychczasow±.
.PP
je¿eli nie podano opcji \fB-s\fR, to \fBchsh\fR dzia³a w trybie interaktywnym,
proponuj±c u¿ytkownikowi bie¿±c± pow³okê logowania. Wprowad¼ now± warto¶æ
do pola lub pozostaw je puste, by pozostawiæ aktualn± warto¶æ.
Bie¿±ca warto¶æ wy¶wietlana jest pomiêdzy par± znaczników \fB[ ]\fR.
.SH PLIKI
.IR /etc/passwd " - informacja o kontach u¿ytkowników"
.br
.IR /etc/shells " - lista dozwolonych pow³ok zg³oszeniowych"
.SH ZOBACZ TAK¯E
.BR chfn (1),
.BR passwd (5)
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)
.SH OD T£UMACZA
Niniejsza dokumentacja opisuje polecenie wchodz±ce w sk³ad pakietu
shadow-password.
Istnieje wiele programów i skryptów do zarz±dzania kontami
u¿ytkowników czy grup. Z uwagi na powtarzaj±ce siê nazwy poleceñ, upewnij
siê, ¿e korzystasz z w³a¶ciwej dokumentacji.

30
man/pl/d_passwd.5 Normal file
View File

@ -0,0 +1,30 @@
.\"
.\" {PTM/WK/1999-09-22}
.\"
.TH D_PASSWD 5
.SH NAZWA
d_passwd - plik haseł telefonicznych
.SH OPIS
Z dostępem do systemu przez linię telefoniczną związane są dwa pliki
konfiguracyjne: \fI/etc/d_passwd\fR, zawierający hasła i \fI/etc/dialups\fR,
zawierający linie.
Każdorazowo, zanim użytkownik łączący się za pośrednictwem modemu otrzyma
dostęp do systemu, musi podać hasło telefoniczne. Hasła te są niezależne
od haseł użytkowników i przypisane nie do użytkownika, ani linii terminalowej,
lecz do powłoki zgłoszeniowej użytkownika.
Do rozpoczęcia sesji wymagane jest zarówno hasło użytkownika jak
i telefoniczne. Zauważ jednak, że hasła telefoniczne nie posiadają kontroli
terminu ważności. Należy, po uzgodnieniu, okresowo zmieniać je ręcznie.
W pliku \fId_passwd\fR kolejne wiersze definiują hasła dla rozmaitych powłok:
.br
.sp 1
powłoka:zakodowane_hasło:
.br
.sp 1
Zauważ, że po polu hasła występuje dwukropek. Powłoka powinna być
określona przez bezwzględną nazwę ścieżkową pliku interpretatora poleceń.
Do zarządzania hasłami telefonicznymi służy polecenie \fBdpasswd\fR (1).
.SH ZOBACZ TAKŻE
.BR dpasswd (1),
.BR login (1),
.BR dialups (5).

24
man/pl/dialups.5 Normal file
View File

@ -0,0 +1,24 @@
.\"
.\" {PTM/WK/1999-09-22}
.\"
.TH DIALUPS
.SH NAZWA
dialups - plik terminalowych linii telefonicznych
.SH OPIS
Z dostępem do systemu przez linię telefoniczną związane są dwa pliki
konfiguracyjne: \fI/etc/d_passwd\fR, zawierający hasła i \fI/etc/dialups\fR,
zawierający linie. W każdym wierszu pliku \fIdialups\fR zawarta jest nazwa
pliku specjalnego linii terminalowej, do której podłączony jest modem:
.br
.sp 1
/dev/tty12
/dev/tty13
.br
.sp 1
Warto jest ująć w nim \fBwszystkie\fR linie z dostępem modemowym.
Połączenie z linii pominiętej nie będzie dodatkowo weryfikowane - użytkownicy
łączący się nią nie będą musieli podawać hasła telefonicznego.
.SH ZOBACZ TAKŻE
.BR dpasswd (1),
.BR login (1),
.BR d_passwd (5).

View File

@ -1,4 +1,5 @@
.\" Copyright 1989 - 1993 Julianne Frances Haugh
.\" {PTM/WK/1999-09-17}
.\" Copyright 1991, Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
@ -25,33 +26,31 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: pwunconv-old.8,v 1.1 1997/09/29 22:01:31 marekm Exp $
.\"
.TH PWUNCONV 8
.SH NAME
pwunconv \- restore old password file from shadow password file
.SH SYNOPSIS
.B pwunconv
.SH DESCRIPTION
\fBPwunconv\fR copies the password file information from the shadow
password file,
merging entries from an optional existing shadow file.
The new password file is left in \fInpasswd\fR.
This file is created with modes which allow read access for
the owner only.
There is no new shadow file.
Password aging information is translated where possible.
There is some loss of resolution in the password aging information.
.SH FILES
/etc/passwd \- old encrypted passwords and password aging
.TH DPASSWD 8
.SH NAZWA
\fBdpasswd\fR - zmień hasło telefoniczne
.SH SKŁADNIA
.B dpasswd
.RB [ - ( a | d )]
.I powłoka
.SH OPIS
\fBdpasswd\fR dodaje, usuwa i aktualizuje hasła telefoniczne (dialup
passwords) dla powłok logowania użytkowników.
Każdorazowo, gdy użytkownik loguje się przez linię telefoniczną,
żądane jest od niego hasło telefoniczne (po poprawnym uwierzytelnieniu
jego własnego hasła).
.PP
\fBdpasswd\fR będzie prosić o podanie nowego hasła dwukrotnie, by upewnić
się, że zostało ono poprawnie wprowadzone.
.PP
Argument \fIpowłoka\fR musi być pełną, ścieżkową nazwą programu zgłoszenia
(logowania).
.SH PLIKI
.br
/etc/shadow \- previously converted shadow password file
.I /etc/d_passwd
.br
./npasswd \- new password file
.SH SEE ALSO
.BR passwd (1),
.BR passwd (5),
.BR shadow (5),
.BR pwconv (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@tab.com)
.I /etc/dialups
.SH ZOBACZ TAKŻE
.BR login (1)
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)

View File

@ -1,4 +1,4 @@
.\" Copyright 1989 - 1993, Julianne Frances Haugh
.\" Copyright 1989 - 1994, Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
@ -25,35 +25,35 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: pwconv.8,v 1.1 1997/12/07 23:27:13 marekm Exp $
.\" Translation (c) 1998 "Gwidon S. Naskrent" <naskrent@hoth.amu.edu.pl>
.\" $Id: faillog.5,v 1.3 1999/09/20 20:56:42 wojtek2 Exp $
.\"
.TH PWCONV 8
.SH NAME
pwconv \- convert and update shadow password files
.SH SYNOPSIS
.B pwconv
.SH DESCRIPTION
\fBPwconv\fR copies the password file information from \fI/etc/passwd\fR
to the shadow password file, \fI/etc/shadow\fR.
If the \fI/etc/shadow\fR file does not exist, it is created with
modes which only permit read access to the owner.
Shadow entries in the System V Release 3.2 format will be silently
converted to the new System V Release 4 format.
Any entries which are missing fields will have those fields
filled in with default values where appropriate.
New entries are created with passwords which expire in 10000 days,
with a last changed date of today,
unless password aging information was already present.
Shadow entries without corresponding entries in \fI/etc/passwd\fR
are removed.
.SH FILES
/etc/passwd
.br
/etc/shadow
.SH SEE ALSO
.BR passwd (1),
.BR passwd (5),
.BR shadow (5),
.BR pwunconv (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@tab.com)
.TH faillog 5
.SH NAZWA
faillog \- plik rejestrujący nieudane zalogowania
.SH OPIS
.I faillog
prowadzi licznik nieudanych zalogowań i limity dla każdego konta.
Plik ten składa się z rekordów o stałej długości, indeksowanych
liczbowym UID. Każdy rekord zawiera licznik nieudanych zalogowań
od ostatniego pomyślnego logowania, maksymalną liczbę pomyłek
przed zablokowaniem konta, konsolę na której nastąpiło ostatnie
nieudane logowanie, oraz datę tegoż.
.PP
Struktura tego pliku to
.DS
struct faillog {
short fail_cnt;
short fail_max;
char fail_line[12];
time_t fail_time;
};
.DE
.SH PLIKI
.IR /var/log/faillog " - rejestr nieudanych zalogowań"
.SH ZOBACZ TAKŻE
.BR faillog (8)
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)

95
man/pl/faillog.8 Normal file
View File

@ -0,0 +1,95 @@
.\" {PTM/WK/1999-09-18}
.\" Copyright 1989 - 1994, Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.TH FAILLOG 8
.SH NAZWA
faillog \- sprawdź faillog i ustaw limity błędnych logowań
.SH SKŁADNIA
.TP 8
.B faillog
.RB [ -u
.IR nazwa ]
.RB [ -a ]
.RB [ -t
.IR dni ]
.RB [ -m
.IR max ]
.RB [ -pr ]
.SH OPIS
\fBfaillog\fR formatuje zawartość rejestru nieudanych prób rozpoczęcia sesji,
\fI/var/log/faillog\fR, oraz obsługuje ograniczenia i liczniki błędnych prób.
Kolejność argumentów \fBfaillog\fR jest znacząca. Każdy z argumentów jest
natychmiast przetwarzany w zadanej kolejności.
.PP
Flaga \fB-p\fR powoduje, że zapisy o nieudanych logowaniach wyświetlane będą
w kolejności rosnących identyfikatorów użytkowników (UID).
Posłużenie się flagą \fB-u \fInazwa\fR spowoduje, że zostanie wyświetlony
wyłącznie zapis dotyczący użytkownika o tej \fInazwie\fR.
Użycie \fB-t \fIdni\fR powoduje wyświetlanie wyłącznie nieudanych prób
logowania świeższych niż sprzed zadanej liczby \fIdni\fR.
Flaga \fB-t\fR unieważnia użycie \fB-u\fR.
Flaga \fB-a\fR powoduje wybranie wszystkich użytkowników.
W połączeniu z flagą \fB-p\fR flag, opcja ta wybiera wszystkich użytkowników,
dla których kiedykolwiek odnotowano niepomyślną próbę logowania.
Opcja ta nie ma znaczenia w połączeniu z flagą \fB-r\fR.
.PP
\fB-r\fR służy do zerowania licznika błędnych logowań. Do poprawnego działania
tej opcji wymagane jest prawo zapisu do \fI/var/log/faillog\fR.
W połączeniu z \fB-u \fInazwa\fR służy do zerowania licznika błędów użytkownika
o podanej \fInazwie\fR.
.PP
Flaga \fB-m\fR ustawia maksymalną liczbę błędów logowania, po której konto
zostanie wyłączone. Dla tej opcji wymagane jest prawo zapisu do
\fI/var/log/faillog\fR.
Argumenty \fB-m \fImax\fR powodują, że wszystkie konta będą wyłączane po
\fImax\fR nieudanych próbach logowania.
Użycie dodatkowo \fB-u \fInazwa\fR, ogranicza działanie tej funkcji do
użytkownika o podanej \fInazwie\fR.
Posłużenie się zerową wartością \fImax\fR powoduje, że liczba nieudanych prób
rozpoczęcia sesji jest nieograniczona.
Dla użytkownika \fBroot\fR maksymalna liczba niepowodzeń powinna być zawsze
ustawiona na 0, by zapobiec atakom typu denial of service (odmowa obsługi).
.PP
Opcje mogą być łączone w praktycznie dowolny sposób. Każda z opcji \fB-p\fR,
\fB-r\fR i \fB-m\fR powoduje natychmiastowe wykonanie przy użyciu modyfikatora
\fB-u\fR lub \fB-t\fR.
.SH PRZESTROGI
\fBfaillog\fR wyświetla wyłącznie użytkowników, którzy od ostatniej nieudanej
próby nie mieli poprawnych logowań.
Chcąc wyświetlić użytkownika, który po ostatniej porażce logował się już
pomyślnie, musisz jawnie zażądać o nim informacji przy pomocy flagi \fB-u\fR.
Możesz także wyświetlić wszystkich użytkowników posługując się flagą \fB-a\fR.
.PP
W niektórych systemach zamiast /var/log występuje /var/adm lub /usr/adm.
.SH PLIKI
.IR /var/log/faillog " - plik rejestracji błędów logowania"
.SH ZOBACZ TAKŻE
.BR login (1),
.BR faillog (5)
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)

65
man/pl/gpasswd.1 Normal file
View File

@ -0,0 +1,65 @@
.\" {PTM/WK/1999-09-16}
.\" Copyright 1996, Rafal Maszkowski, rzm@pdi.net
.\" All rights reserved. You can redistribute this man page and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of the
.\" License, or (at your option) any later version.
.\"
.TH GPASSWD 1
.SH NAZWA
gpasswd \- administracja plikiem /etc/group
.br
.SH SKŁADNIA
.B gpasswd \fIgrupa\fR
.br
.B gpasswd -a
.I użytkownik grupa
.br
.B gpasswd -d
.I użytkownik grupa
.br
.B gpasswd -R
.I grupa
.br
.B gpasswd -r
.I grupa
.br
.B gpasswd
.RB [ -A
.IR użytkownik ,...]
.RB [ -M
.IR użytkownik ,...]
.I grupa
.SH OPIS
.B gpasswd
służy do administrowania plikiem \fI/etc/group\fR (oraz \fI/etc/gshadow\fR
jeśli została wykonana kompilacja ze zdefiniowanym SHADOWGRP). Każda z grup
może posiadać administratorów, członków i hasło. Administrator systemu może
posłużyć się opcją \fB-A\fR do zdefiniowania administratora(ów) grupy oraz
opcją \fB-M\fR do zdefiniowania jej członków. Posiada on wszystkie prawa
administratorów i członków grup.
.PP
Administrator grupy może dodawać i usuwać użytkowników przy pomocy,
odpowiednio, opcji \fB-a\fR i \fB-d\fR. Administratorzy mogą też używać opcji
\fB-r\fR w celu usunięcia hasła grupy. Jeżeli grupa nie posiada hasła,
to polecenia
.BR newgrp (1)
do przyłączenia się do grupy mogą używać tylko jej członkowie.
Opcja \fB-R\fR wyłącza dostęp do grupy za pomocą polecenia
.BR newgrp (1).
.PP
.B gpasswd
wywołane przez administratora grupy tylko z nazwą grupy pyta o jej hasło.
Jeżeli hasło jest ustawione, to członkowie grupy mogą nadal wykonywać
.BR newgrp (1)
bez hasła, inni muszą natomiast podać hasło.
.SH PLIKI
.IR /etc/group " - informacja o grupach"
.br
.IR /etc/gshadow " - chroniona informacja o grupach"
.SH ZOBACZ TAKŻE
.BR newgrp (1),
.BR groupadd (8),
.BR groupdel (8),
.BR groupmod (8),
.BR grpck (8)

72
man/pl/groupadd.8 Normal file
View File

@ -0,0 +1,72 @@
.\" {PTM/WK/0.1/VIII-1999}
.\" Copyright 1991, Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: groupadd.8,v 1.1 2000/08/26 18:27:17 marekm Exp $
.\"
.TH GROUPADD 8
.SH NAZWA
groupadd - twórz now± grupê
.SH SK£ADNIA
.B groupadd
.RB [ -g
.I gid
.RB [ -o ]]
.I grupa
.SH OPIS
Polecenie \fBgroupadd\fR tworzy nowe konto grupy pos³uguj±c siê
warto¶ciami podanymi w wierszu poleceñ i domy¶lnymi warto¶ciami z systemu.
W razie potrzeby zostanie wprowadzona do systemu nowa grupa.
Polecenie \fBgroupadd\fR posiada opcje:
.TP
.BI -g " gid"
Numeryczna warto¶æ identyfikatora grupy. Warto¶æ ta musi byæ niepowtarzalna,
chyba ¿e u¿yto opcji \fB-o\fR. Warto¶æ ID grupy nie mo¿e byæ ujemna. Domy¶lnie
u¿ywana jest najmniejsza warto¶æ identyfikatora wiêksza ni¿ 99 a wiêksza ni¿
jakiejkolwiek innej grupy.
Warto¶ci miêdzy 0 a 99 s± zwykle zarezerwowane dla kont systemowych.
.SH PLIKI
.IR /etc/group " - informacja o kontach grup"
.br
.IR /etc/gshadow " - bezpieczna informacja o kontach grup"
.SH ZOBACZ TAK¯E
.BR chfn (1),
.BR chsh (1),
.BR useradd (8),
.BR userdel (8),
.BR usermod (8),
.BR passwd (1),
.BR groupdel (8),
.BR groupmod (8).
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)
.SH OD T£UMACZA
Niniejsza dokumentacja opisuje polecenie wchodz±ce w sk³ad pakietu
shadow-password.
Istnieje wiele programów i skryptów do zarz±dzania kontami
u¿ytkowników czy grup. Z uwagi na powtarzaj±ce siê nazwy poleceñ, upewnij
siê, ¿e korzystasz z w³a¶ciwej dokumentacji.

View File

@ -1,4 +1,5 @@
.\" Copyright 1989 - 1993, Julianne Frances Haugh
.\" {PTM/WK/0.1/VIII-1999}
.\" Copyright 1991 - 1993, Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
@ -25,42 +26,43 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: pwconv-old.8,v 1.1 1997/09/29 22:01:31 marekm Exp $
.\" $Id: groupdel.8,v 1.1 2000/08/26 18:27:17 marekm Exp $
.\"
.TH PWCONV 8
.SH NAME
pwconv \- convert and update shadow password files
.SH SYNOPSIS
.B pwconv
.SH DESCRIPTION
\fBPwconv\fR copies the old password file information to a new shadow
password file,
merging entries from an optional existing shadow file.
The new password file is left in \fInpasswd\fR,
the new shadow file is left in \fInshadow\fR.
Both of these are files are created with modes which only permit
read access to the owner.
Existing shadow entries are copied as is.
Shadow entries in the System V Release 3.2 format will be silently
converted to the new System V Release 4 format on output.
Any entries which are missing fields will have those fields
filled in with default values where appropriate.
New entries are created with passwords which expire in 10000 days,
with a last changed date of today,
unless password aging information was already present.
Entries with blank passwords are not copied to the shadow file at all.
.SH FILES
/etc/passwd \- old encrypted passwords and password aging
.TH GROUPDEL 8
.SH NAZWA
groupdel - usuń grupę
.SH SKŁADNIA
.B groupdel
.I grupa
.SH OPIS
Polecenie \fBgroupdel\fR zmienia systemowe pliki kont, usuwając
wszystkie zapisy odnoszące się do \fIgrupy\fR.
Wymieniona grupa musi istnieć.
.PP
Musisz ręcznie sprawdzić wszystkie systemy plików, by upewnić się, że
nie pozostały żadne pliki, dla których wymieniona grupa jest grupą właścicieli.
.SH PRZESTROGI
Nie możesz usunąć podstawowej grupy żadnego z istniejących użytkowników.
Musisz usunąć użytkownika przed usunięciem takiej grupy.
.SH PLIKI
.IR /etc/group " - informacja o grupach"
.br
/etc/shadow \- previously converted shadow password file
.br
./npasswd \- new password file
.br
./nshadow \- new shadow password file
.SH SEE ALSO
.IR /etc/gshadow " - bezpieczna informacja o grupach"
.\" secure group information
.SH ZOBACZ TAKŻE
.BR chfn (1),
.BR chsh (1),
.BR useradd (8),
.BR userdel (8),
.BR usermod (8),
.BR passwd (1),
.BR passwd (5),
.BR shadow (5),
.BR pwunconv (8)
.SH AUTHOR
Julianne Frances Haugh (jfh@tab.com)
.BR groupadd (8),
.BR groupmod (8).
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)
.SH OD TŁUMACZA
Niniejsza dokumentacja opisuje polecenie wchodzące w skład pakietu
shadow-password.
Istnieje wiele programów i skryptów do zarządzania kontami
użytkowników czy grup. Z uwagi na powtarzające się nazwy poleceń, upewnij
się, że korzystasz z właściwej dokumentacji.

77
man/pl/groupmod.8 Normal file
View File

@ -0,0 +1,77 @@
.\" {PTM/WK/0.1/VIII-1999}
.\" Copyright 1991, Julianne Frances Haugh
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors
.\" may be used to endorse or promote products derived from this software
.\" without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $Id: groupmod.8,v 1.1 2000/08/26 18:27:17 marekm Exp $
.\"
.TH GROUPMOD 8
.SH NAZWA
groupmod - zmieñ dane grupy
.SH SK£ADNIA
.B groupmod
.RB [ -g
.I gid
.RB [ -o ]]
.RB [ -n
.IR nazwa_grupy ]
.I grupa
.SH OPIS
Polecenie \fBgroupmod\fR modyfikuje systemowe pliki kont tak, by
odzwierciedliæ w nich zmiany grup podane w wierszu poleceñ. Obs³uguje ono
nastêpuj±ce opcje:
.TP
.BI -g " gid"
Numeryczna warto¶æ identyfikatora grupy (group ID).
Warto¶æ ta musi byæ niepowtarzalna, chyba ¿e u¿yto opcji \fB-o\fR.
Nie mo¿e byæ ujemna. Warto¶ci pomiêdzy 0 a 99 s± zwykle zarezerwowane
dla grup systemowych.
Pliki, dla których stary identyfikator jest identyfikatorem
grupy pliku, wymagaj± rêcznej zmiany ID grupy.
.TP
.BI -n " nazwa_grupy"
Nazwa grupy zostanie zmieniona z \fIgrupa\fR na \fInazwa_grupy\fR.
.SH PLIKI
.IR /etc/group " - informacja o grupach"
.br
.IR /etc/gshadow " - bezpieczna informacja o grupach"
.SH ZOBACZ TAK¯E
.BR chfn (1),
.BR chsh (1),
.BR useradd (8),
.BR userdel (8),
.BR usermod (8),
.BR passwd (1),
.BR groupadd (8),
.BR groupdel (8).
.SH AUTOR
Julianne Frances Haugh (jfh@austin.ibm.com)
.SH OD T£UMACZA
Niniejsza dokumentacja opisuje polecenie wchodz±ce w sk³ad pakietu
shadow-password.
Istnieje wiele programów i skryptów do zarz±dzania kontami
u¿ytkowników czy grup. Z uwagi na powtarzaj±ce siê nazwy poleceñ, upewnij
siê, ¿e korzystasz z w³a¶ciwej dokumentacji.

Some files were not shown because too many files have changed in this diff Show More