[svn-upgrade] Integrating new upstream version, shadow (20000826)
This commit is contained in:
parent
446e664caa
commit
efd7efa9f1
@ -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
|
||||
|
10
Makefile.in
10
Makefile.in
@ -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)
|
||||
|
36
ansi2knr.1
36
ansi2knr.1
@ -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>.
|
609
ansi2knr.c
609
ansi2knr.c
@ -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;
|
||||
}
|
@ -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
242
configure
vendored
@ -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
|
||||
|
13
configure.in
13
configure.in
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
546
contrib/groupmems.shar
Normal 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
1
debian/Makefile.in
vendored
@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@
|
||||
LD = @LD@
|
||||
LIBCRACK = @LIBCRACK@
|
||||
LIBCRYPT = @LIBCRYPT@
|
||||
LIBMD = @LIBMD@
|
||||
LIBPAM = @LIBPAM@
|
||||
LIBSKEY = @LIBSKEY@
|
||||
LIBTCFS = @LIBTCFS@
|
||||
|
2
debian/login.copyright
vendored
2
debian/login.copyright
vendored
@ -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
|
||||
|
2
debian/passwd.copyright
vendored
2
debian/passwd.copyright
vendored
@ -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
|
||||
|
2
debian/secure-su.copyright
vendored
2
debian/secure-su.copyright
vendored
@ -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
|
||||
|
@ -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
|
||||
|
21
doc/CHANGES
21
doc/CHANGES
@ -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
|
||||
|
||||
|
8
doc/LSM
8
doc/LSM
@ -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, ...
|
||||
|
@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@
|
||||
LD = @LD@
|
||||
LIBCRACK = @LIBCRACK@
|
||||
LIBCRYPT = @LIBCRYPT@
|
||||
LIBMD = @LIBMD@
|
||||
LIBPAM = @LIBPAM@
|
||||
LIBSKEY = @LIBSKEY@
|
||||
LIBTCFS = @LIBTCFS@
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
10
doc/WISHLIST
10
doc/WISHLIST
@ -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
|
||||
|
@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@
|
||||
LD = @LD@
|
||||
LIBCRACK = @LIBCRACK@
|
||||
LIBCRYPT = @LIBCRYPT@
|
||||
LIBMD = @LIBMD@
|
||||
LIBPAM = @LIBPAM@
|
||||
LIBSKEY = @LIBSKEY@
|
||||
LIBTCFS = @LIBTCFS@
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@
|
||||
LD = @LD@
|
||||
LIBCRACK = @LIBCRACK@
|
||||
LIBCRYPT = @LIBCRYPT@
|
||||
LIBMD = @LIBMD@
|
||||
LIBPAM = @LIBPAM@
|
||||
LIBSKEY = @LIBSKEY@
|
||||
LIBTCFS = @LIBTCFS@
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 \
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 *);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
16
lib/dialup.h
16
lib/dialup.h
@ -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"
|
||||
|
@ -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)
|
||||
|
12
lib/getdef.c
12
lib/getdef.c
@ -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);
|
||||
|
||||
|
||||
/*
|
||||
|
10
lib/getdef.h
10
lib/getdef.h
@ -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 */
|
||||
|
@ -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)
|
||||
|
@ -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 *);
|
||||
|
181
lib/prototypes.h
181
lib/prototypes.h
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
24
lib/pwio.h
24
lib/pwio.h
@ -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 *);
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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 *);
|
||||
|
@ -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 *);
|
||||
|
18
lib/tcfsio.h
18
lib/tcfsio.h
@ -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 *);
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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)) {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
171
man/Makefile.in
171
man/Makefile.in
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
22
man/dialups.5
Normal 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>
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
4
man/id.1
4
man/id.1
@ -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)
|
||||
|
@ -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
|
||||
|
31
man/login.1
31
man/login.1
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
60
man/pl/Makefile.am
Normal 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)
|
@ -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
110
man/pl/chage.1
Normal 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
77
man/pl/chfn.1
Normal 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
62
man/pl/chpasswd.8
Normal 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
70
man/pl/chsh.1
Normal 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
30
man/pl/d_passwd.5
Normal 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
24
man/pl/dialups.5
Normal 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).
|
@ -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)
|
@ -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
95
man/pl/faillog.8
Normal 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
65
man/pl/gpasswd.1
Normal 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
72
man/pl/groupadd.8
Normal 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.
|
@ -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
77
man/pl/groupmod.8
Normal 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
Loading…
x
Reference in New Issue
Block a user