## 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
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
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)
+++ /dev/null
-.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>.
+++ /dev/null
-/* 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;
-}
/* 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
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; }
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
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
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
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
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
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
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
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
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
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
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
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
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
# 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
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__
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
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
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. */
; 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
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
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 4867 "configure"
+#line 4908 "configure"
#include "confdefs.h"
find_stack_direction ()
{
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
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*
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. */
; 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
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
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.
}
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
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*
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. */
; 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
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. */
; 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
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
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"
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"
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*
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
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
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
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
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
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
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
# 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
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. */
; 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
# 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
# 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
fi
cat > conftest.$ac_ext <<EOF
-#line 5720 "configure"
+#line 5761 "configure"
#include "confdefs.h"
int main() {
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
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"
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
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
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. */
; 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
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
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*
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
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
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
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...
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)
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
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
# 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
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
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
--- /dev/null
+#!/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
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
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
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
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
-$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
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
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
-$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
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, ...
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
-[ $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.
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
-$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
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
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.
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>
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:
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
- 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
-
-$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 :-).
- 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)
- 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
(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
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
#
# /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
# (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
#
# /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
# (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
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
#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
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
#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
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 \
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 \
#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>
#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;
if (p->line)
free(p->line);
- if (p->entry)
- db->ops->free(p->entry);
+ if (p->eptr)
+ db->ops->free(p->eptr);
free(p);
}
#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 */
char *cp;
char *line;
struct commonio_entry *p;
- void *entry;
+ void *eptr;
int flags = mode;
mode &= ~O_CREAT;
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;
}
if (!p)
goto cleanup_entry;
- p->entry = entry;
+ p->eptr = eptr;
p->line = line;
p->changed = 0;
return 1;
cleanup_entry:
- if (entry)
- db->ops->free(entry);
+ if (eptr)
+ db->ops->free(eptr);
cleanup_line:
free(line);
cleanup:
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)
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;
}
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;
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;
return 0;
}
- p->entry = nentry;
+ p->eptr = nentry;
p->line = NULL;
p->changed = 1;
if (p->line)
free(p->line);
- if (p->entry)
- db->ops->free(p->entry);
+ if (p->eptr)
+ db->ops->free(p->eptr);
return 1;
}
return NULL;
}
db->cursor = p;
- return p->entry;
+ return p->eptr;
}
const void *
commonio_next(struct commonio_db *db)
{
- void *entry;
+ void *eptr;
if (!db->isopen) {
errno = EINVAL;
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;
}
-/* $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;
};
* 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 *);
};
/*
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 *);
-/* $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_
# 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>
#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
-/* $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_
* 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
* 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
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"
#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)
#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"
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 },
{ "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 },
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);
/*
#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 */
#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"
#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)
-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 *);
* 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
#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 */
#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>
struct method {
char *name;
- int (*func) P_((const char *, int, const char *));
+ int (*func)(const char *, int, const char *);
};
#ifdef PAD_AUTH
#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"
#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)
-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 *);
#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);
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);
#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"
#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)
-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 *);
-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 *);
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 *);
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
../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 \
-/* $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_
#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
#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>
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.
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);
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;
#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>
}
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)) {
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)) {
#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>
#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
-/* $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_
* 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
* 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
* 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
* 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
#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
#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>
*/
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);
}
#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>
char *cp;
int i;
FILE *fp;
- RETSIGTYPE (*sigquit) P_((int));
+ RETSIGTYPE (*sigquit)(int);
#ifdef SIGTSTP
- RETSIGTYPE (*sigtstp) P_((int));
+ RETSIGTYPE (*sigtstp)(int);
#endif
/*
#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>
* 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
#endif
}
+#ifndef USE_PAM
/*
* Read environment from optional config file. --marekm
*/
if ((envf = getdef_str("ENVIRON_FILE")))
read_env_file(envf);
+#endif
}
* 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;
#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;
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 \
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
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
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 =
@$(NORMAL_UNINSTALL)
$(MAKE) $(AM_MAKEFLAGS) uninstall-man1 uninstall-man3 uninstall-man5 \
uninstall-man8
+
+# 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
-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)
|| 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
-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.
.\" 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
.BR passwd (5),
.BR shadow (5)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.SH SEE ALSO
.BR passwd (5)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR useradd (8),
.BR newusers (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR chfn (1),
.BR passwd (5)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.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>
.\" 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
.SH SEE ALSO
.BR login (1)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.SH SEE ALSO
.BR faillog (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR login (1),
.BR faillog (5)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR groupdel (8),
.BR groupmod (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR groupadd (8),
.BR groupmod (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR groupadd (8),
.BR groupdel (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR getgid (2),
.BR getgroups (2)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.IP 5 5
Cannot update group files
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR getgid (2),
.BR getgroups (2)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.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
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
.\" 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.
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
.BR passwd (5),
.BR nologin (5)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
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
.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.
.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
.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)
.\" 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
.br
/etc/utmp \- current login sessions
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR group (5),
.BR shadow (5)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR id (1),
.BR su (1)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
.BR passwd (1),
.BR useradd (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" 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
/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)
.\" 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
.BR pwconv (8),
.BR pwunconv (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+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)
# 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@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+top_builddir = ../..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
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
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 \
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:
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.
--- /dev/null
+.\" {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)
--- /dev/null
+.\" {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.
--- /dev/null
+.\" {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)
--- /dev/null
+.\" {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.
--- /dev/null
+.\"
+.\" {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).
--- /dev/null
+.\"
+.\" {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).
-.\" 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
.\" 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)
-.\" 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
.\" 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)
--- /dev/null
+.\" {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)
--- /dev/null
+.\" {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)
--- /dev/null
+.\" {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.
-.\" 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
.\" 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.
--- /dev/null
+.\" {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.
--- /dev/null
+.\" {PRM/WK/1999-09-25}
+.\" Copyright 1991 - 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 GROUPS 1
+.SH NAZWA
+groups \- wy¶wietl nazwy bie¿±cych grup
+.SH SK£ADNIA
+.B groups
+.RI [ u¿ytkownik ]
+.SH OPIS
+.B groups
+wy¶wietla nazwy lub warto¶ci bie¿±cych identyfikatorów grup.
+Je¿eli warto¶æ nie posiada odpowiedniego wpisu w \fI/etc/group\fR, to zostanie
+wy¶wietlona jako numeryczny identyfikator grupy.
+Opcjonalny parametr \fIu¿ytkownik\fR powoduje wy¶wietlenie grup dla danego
+\fIu¿ytkownika\fR.
+.SH UWAGA
+Systemy nie obs³uguj±ce równoczesnych grup (tj.takie, w których u¿ytkownik mo¿e
+w danej byæ cz³onkiem tylko jednej grupy, grupy aktywnej) bêd± wy¶wietlaæ
+informacjê z \fI/etc/group\fR.
+Do zmiany bie¿±cego rzeczywistego i efektywnego identyfikatora grupy u¿ytkownik
+musi u¿yæ polecenia \fBnewgrp\fR lub \fBsg\fR.
+.SH PLIKI
+.IR /etc/group " - informacja o grupach"
+.SH ZOBACZ TAK¯E
+.BR newgrp (1),
+.BR getuid (2),
+.BR getgid (2),
+.BR getgroups (2)
+.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.
--- /dev/null
+.\" {PTM/WK/1999-09-17}
+.\" Copyright 1992 - 1993, 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 GRPCK 1
+.SH NAZWA
+grpck \- weryfikacja spójno¶ci plików grup
+.SH SK£ADNIA
+.B grpck
+.RB [ -r ]
+.RI [ group
+.IR shadow ]
+.SH OPIS
+\fBgrpck\fR weryfikuje integralno¶æ informacji autentykacji systemowej.
+Sprawdzane s± wszystkie pozycje w plikach \fI/etc/group\fR
+i \fI/etc/gshadow\fR, by upewniæ siê, ¿e ka¿da z nich posiada w³a¶ciwy format
+i poprawne dane w ka¿dym z pól. U¿ytkownik monitowany jest o usuniêcie
+pozycji, które s± sformatowane niepoprawnie lub posiadaj± inne nie daj±ce
+siê skorygowaæ b³êdy.
+.P
+Kontrolowane jest czy ka¿da pozycja posiada
+.sp
+.in +.5i
+- w³a¶ciw± liczbê pól
+.br
+- unikaln± nazwê grupy
+.br
+- poprawn± listê cz³onków i administratorów
+.in -.5i
+.sp
+.P
+Kontrola w³a¶ciwej liczby pól i niepowtarzalnej nazwy grupy jest
+decyduj±ca. Je¿eli pozycja posiada b³êdn± liczbê pól, to u¿ytkownik jest
+proszony o usuniêcie ca³ej pozycji (wiersza).
+Je¿eli u¿ytkownik nie potwierdzi decyzji o usuniêciu, to pomijane s± wszelkie
+dalsze sprawdzenia.
+Pozycja z powtórzon± nazw± grupy powoduje monit o usuniêcie, ale nadal
+bêd± wykonywane pozosta³e sprawdzenia.
+Wszystkie inne b³êdy daj± ostrze¿enia a u¿ytkownik jest zachêcany
+do uruchomienia polecenia \fBgroupmod\fR, by je poprawiæ.
+.P
+Polecenia dzia³aj±ce na pliku \fI/etc/group\fR nie potrafi± zmieniaæ
+uszkodzonych lub powielonych pozycji. W takich okoliczno¶ciach powinien byæ
+u¿ywany \fBgrpck\fR, by usun±æ nieprawid³ow± pozycjê.
+.SH OPCJE
+Domy¶lnie \fBgrpck\fR dzia³a na plikach \fI/etc/group\fR oraz \fI/etc/gshadow\fR.
+Przy pomocy parametrów \fIgroup\fR i \fIshadow\fR u¿ytkownik mo¿e wybraæ inne
+pliki.
+Dodatkowo, u¿ytkownik mo¿e wykonaæ polecenie w trybie tylko-do-odczytu, poprzez
+podanie flagi \fB-r\fR.
+Powoduje to, ¿e na wszystkie pytania dotycz±ce zmian zostanie, bez ingerencji
+u¿ytkownika, u¿yta odpowied¼ \fBnie\fR.
+.SH PLIKI
+.IR /etc/group " - informacja o kontach grup"
+.br
+.IR /etc/gshadow " - zakodowana informacja o has³ach i administratorach grup"
+.br
+.IR /etc/passwd " -informacja o u¿ytkownikach"
+.SH ZOBACZ TAK¯E
+.BR groupmod (8),
+.BR group (5),
+.BR passwd (5),
+.BR shadow (5)
+.SH DIAGNOSTYKA
+Polecenie \fBgrpck\fR koñczy pracê z nastêpuj±cymi warto¶ciami kodów:
+.IP 0 5
+Powodzenie
+.IP 1 5
+B³±d sk³adni
+.IP 2 5
+Jedna lub wiêcej z³ych pozycji pliku grup
+.IP 3 5
+Niemo¿liwe otwarcie plików grup
+.IP 4 5
+Niemo¿liwa blokada plików grup
+.IP 5 5
+Niemo¿liwa aktualizacja plików grup
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.\" {PTM/WK/1999-09-25}
+.\" 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 ID 1
+.SH NAZWA
+id - wy¶wietl nazwy bie¿±cych ID u¿ytkownika i grupy
+.SH SK£ADNIA
+.B id
+.RB [ -a ]
+.SH OPIS
+.B id
+wy¶wietla bie¿±ce nazwy (lub warto¶ci) rzeczywistych i efektywnych
+identyfikatorów u¿ytkownika i grupy.
+Je¿eli dana warto¶æ nie posiada odpowiedniego wpisu w \fI/etc/passwd\fR
+lub \fI/etc/group\fR, to zostanie wy¶wietlona bez odpowiedniej nazwy.
+Opcjonalna flaga \fB-a\fR wy¶wietla zestaw grup w systemach, które obs³uguj±
+równoczesne cz³onkostwo w wielu grupach.
+.SH PLIKI
+.IR /etc/passwd " - informacja o kontach u¿ytkowników"
+.br
+.IR /etc/group " - informacja o grupach"
+.SH ZOBACZ TAK¯E
+.BR getuid (2),
+.BR getgid (2),
+.BR getgroups (2)
+.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.
--- /dev/null
+.\" {PTM/WK/1999-09-18}
+.\" Copyright 1992, Phillip Street and 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.
+.\"
+.\" @(#)lastlog.8 3.3 08:24:58 29 Sep 1993 (National Guard Release)
+.\"
+.TH LASTLOG 8
+.SH NAZWA
+lastlog \- sprawd¼ plik ostatnich logowañ (lastlog)
+.SH SK£ADNIA
+.B lastlog
+.RB [ -u
+.IR uid ]
+.RB [ -t
+.IR dni
+.SH OPIS
+\fBlastlog\fR formatuje i wy¶wietla zawarto¶æ dziennika ostatnich logowañ,
+\fI/var/log/lastlog\fR. Wy¶wietlone zostan± \fBnazwa u¿ytkownika\fR,
+\fBport\fR i \fBczas ostatniego logowania\fR.
+Domy¶lnie (bez flag) pozycje pliku wy¶wietlane s± w kolejno¶ci identyfikatorów
+u¿ytkowników (UID).
+Wprowadzenie opcji \fB-u \fInazwa_u¿ytkownika\fR spowoduje wy¶wietlenie
+pozycji opisuj±cej ostatnie rozpoczêcie sesji tylko dla tego u¿ytkownika.
+U¿ycie \fB-t \fIdni\fR powoduje, ¿e bêd± wy¶wietlone ostatnie logowania
+u¿ytkowników nowsze ni¿ sprzed zadanej liczby \fIdni\fR.
+Opcja \fB-t\fR przes³ania u¿ycie opcji \fB-u\fR.
+.PP
+Je¿eli u¿ytkownik nigdy siê nie logowa³ to zamiast portu i czasu logowania
+zostanie wy¶wietlony komunikat \fB"**Never logged in**"\fR (nigdy siê nie
+logowa³).
+.SH PLIKI
+.IR /var/log/lastlog " - dziennik ostatnich logowañ"
+.SH PRZESTROGI
+Du¿e luki w numeracji UID powoduj±, ¿e program bêdzie pracowa³ d³u¿ej, nie
+wy¶wietlaj±c wyników (np. je¶li mmdf=800, za¶ ostatni uid=170, to program
+bêdzie sprawia³ wra¿enie zawieszonego w trakcie przetwarzania uid 171-799).
+.SH AUTORZY
+Julianne Frances Haugh (jfh@austin.ibm.com)
+.br
+Phillip Street
--- /dev/null
+.\" {PTM/WK/1999-09-18}
+.TH LIMITS 5
+.SH NAZWA
+limits \- definicja ograniczeñ zasobów
+.SH OPIS
+Plik
+.I limits
+(domy¶lnie /etc/limits lub LIMITS_FILE zdefiniowane w config.h)
+opisuje ograniczenia zasobów, jakie chcia³by¶ narzuciæ u¿ytkownikom.
+W³a¶cicielem tego pliku powinien byæ u¿ytkownik root i wy³±cznie dla niego
+plik ten powinien byæ dostêpny do odczytu.
+.PP
+Domy¶lnie u¿ytkownikowi 'root' nie s± narzucane ¿adne ograniczenia.
+W rzeczywisto¶ci, przy u¿yciu tego sposobu nie jest mo¿liwe narzucenie limitów
+dla kont równowa¿nych root (kont z UID równym 0).
+.PP
+Ka¿dy wiersz definiuje ograniczenie dla u¿ytkownika w postaci:
+.sp
+.I u¿ytkownik £AÑCUCH_OGRANICZEÑ
+.PP
+\fB£AÑCUCH OGRANICZEÑ\fP sk³ada siê z po³±czonych definicji ograniczeñ zasobów.
+Ka¿de ograniczenie opisywane jest liter± z nastêpuj±c± po niej warto¶ci±
+numeryczn± limitu.
+.PP
+Dozwolone s± nastêpuj±ce identyfikatory:
+.sp
+A: max. przestrzeñ adresowa (KB)
+.br
+C: max. rozmiar pliku core (KB)
+.br
+D: max. rozmiar danych (KB)
+.br
+F: maksymalny rozmiar pliku (KB)
+.br
+M: max. locked-in-memory address space (KB)
+.br
+N: max. liczba otwartych plików
+.br
+R: max. resident set size (KB)
+.br
+S: max. rozmiar stosu (KB)
+.br
+T: max. czas procesora (CPU) (MIN)
+.br
+U: max. liczba procesów
+.br
+L: max. liczba sesji pracy dla tego u¿ytkownika
+.br
+P: priorytet procesu, ustawiany przez \fBsetpriority\fR(2).
+.PP
+Na przyk³ad, \fIL2D2048N5\fP jest poprawnym \fB£AÑCUCHEM OGRANICZEÑ\fP.
+Z uwagi na lepsz± czytelno¶ci przyjêto, ¿e poni¿sze zapisy s± równowa¿ne:
+.sp
+nazwa_u¿ytkownika L2D2048N5
+.br
+nazwa_u¿ytkownika L2 D2048 N5
+.PP
+Nale¿y podkre¶liæ, ¿e reszta wiersza po \fInazwie_u¿ytkownika\fP traktowana
+jest jako ³añcuch ograniczeñ, zatem komentarze nie s± dozwolone. Nieprawid³owy
+³añcuch ograniczeñ zostanie odrzucony (nie bêdzie brany pod uwagê) przez
+program login.
+.PP
+Nazwa u¿ytkownika równa "\fB*\fP" oznacza wpis domy¶lny.
+Je¿eli w pliku \fBLIMITS_FILE\fP posiadasz wiele takich wpisów, to jako
+domy¶lny zostanie u¿yty ostatni z nich.
+.PP
+Pojedyncza kreska "\fB-\fP" ca³kowicie wy³±cza ograniczenia dla u¿ytkownika.
+.PP
+Zauwa¿ te¿, proszê, ¿e wszystkie te ograniczenia definiowane s± w odniesieniu
+do pojedynczej sesji (per login). Nie s± one globalne ani sta³e. Byæ mo¿e bêd±
+kiedy¶ ograniczenia globalne, ale na razie tyle musi wystarczyæ ;)
+.SH PLIKI
+.I /etc/limits
+.SH ZOBACZ TAK¯E
+.BR login (1),
+.BR setpriority (2),
+.BR setrlimit (2)
+.SH AUTOR
+Cristian Gafton (gafton@sorosis.ro)
--- /dev/null
+.\" {PTM/WK/1999-09-25}
+.\" 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 LOGIN 1
+.SH NAZWA
+login \- rozpocznij sesjê pracy w systemie
+.SH SK£ADNIA
+.B login
+.RI [ u¿ytkownik " [" zmienne_¶rodowiska ]]
+.\" XXX - udokumentowaæ opcje -f -h -p -r
+.SH OPIS
+.B login
+s³u¿y do utworzenia nowej sesji pracy z systemem. Zwykle wywo³ywane jest
+automatycznie w odpowiedzi na zachêtê
+.I login:
+na terminalu u¿ytkownika.
+.B login
+mo¿e byæ specyficzne dla pow³oki i mo¿e zostaæ wywo³ane jako podproces.
+Najczê¶ciej,
+.B login
+traktowane jest przez pow³okê jako \fBexec login\fR, co powoduje opuszczenie
+przez u¿ytkownika bie¿±cej pow³oki.
+Próba wykonania \fBlogin\fR z pow³oki innej ni¿ zg³oszeniowa powoduje komunikat
+o b³êdzie.
+.PP
+Przy wywo³aniu polecenia z zachêty \fIlogin:\fR, u¿ytkownik mo¿e po swojej
+nazwie wprowadziæ zmienne ¶rodowiska. Zmienne te wprowadzane s± w postaci:
+\fBNAZWA=WARTO¦Æ\fR. Nie wszystkie zmienne mog± jednak byæ ustawione w ten
+sposób, szczególnie \fBPATH\fR, \fBHOME\fR i \fBSHELL\fR.
+Dodatkowo, zakazane mo¿e byæ \fBIFS\fR (input field separator: separator pól
+wej¶ciowych), je¿eli pow³ok± zg³oszeniow± u¿ytkownika \fB/bin/sh\fR.
+.PP
+U¿ytkownik pytany jest o has³o, je¶li takowe istnieje.
+Dla zapobie¿enia ujawnieniu has³a wy¶wietlanie wprowadzanych znaków jest
+wy³±czone. Dozwolona jest jedynie niewielka liczba nieudanych prób podania
+has³a. Po wyczerpaniu limitu prób \fBlogin\fR koñczy pracê za¶ po³±czenie
+komunikacyjne jest zrywane.
+.PP
+Je¿eli dla twego konta w³±czona jest kontrola wa¿no¶ci has³a, mo¿esz byæ
+proszony o podanie nowego has³a przed kontynuacj±. Bêdziesz wówczas musia³
+podaæ stare i nowe has³o. Wiêcej informacji na ten temat znajdziesz
+w \fBpasswd \fR(1).
+.PP
+Po poprawnym rozpoczêciu sesji (zalogowaniu siê), zostanie wy¶wietlona
+wiadomo¶æ dnia (je¶li jest) i informacja o stanie skrzynki pocztowej.
+Mo¿esz wy³±czyæ wy¶wietlanie zawarto¶ci pliku wiadomo¶ci dnia,
+\fI/etc/motd\fR, tworz±c zerowej wielko¶ci plik \fI.hushlogin\fR
+w swoim katalogu domowym.
+Informacja o stanie skrzynki pocztowej jest jedn± z:
+"\fBYou have new mail.\fR" (masz now± pocztê),
+"\fBYou have mail.\fR" (masz pocztê), lub "\fBNo Mail.\fR" (brak poczty) -
+stosownie do stanu skrzynki.
+.PP
+Identyfikator u¿ytkownika i grupy (UID i GID) zostan± ustawione wed³ug warto¶ci
+w pliku \fI/etc/passwd\fR.
+Warto¶ci \fB$HOME\fR, \fB$SHELL\fR, \fB$PATH\fR, \fB$LOGNAME\fR
+i \fB$MAIL\fR ustawiane s± stosownie do odpowiednich pól danego wpisu pliku
+hase³.
+Mog± byæ ustalane równie¿ warto¶ci ulimit, umask oraz nice wed³ug wpisów w polu
+GECOS.
+.PP
+W niektórych systemach zostanie ustawiona zmienna ¶rodowiskowa \fB$TERM\fR,
+wskazuj±ca na typ terminala na linii tty, jak podano w \fI/etc/ttytype\fR.
+.PP
+Mo¿e tak¿e zostaæ wykonany skrypt startowy (inicjacyjny) twojego interpretatora
+poleceñ.
+Przegl±dnij, proszê, odpowiedni± sekcjê dokumentacji opisuj±c± bardziej
+szczegó³owo tê funkcjê.
+.SH PRZESTROGI
+Niniejsza wersja \fBlogin\fR posiada wiele opcji kompilacji, z których tylko
+czê¶æ bêdzie mieæ zastosowanie w danej instalacji.
+.PP
+Po³o¿enie plików mo¿e byæ ró¿ne w zale¿no¶ci od konfiguracji systemu.
+.SH PLIKI
+.IR /etc/utmp " - lista bie¿±cych sesji pracy"
+.br
+.IR /etc/wtmp " - lista poprzednich sesji pracy"
+.br
+.IR /etc/passwd " - informacja o kontach u¿ytkowników"
+.br
+.IR /etc/shadow " - zakodowane has³a i informacja o ich wa¿no¶ci"
+.br
+.IR /etc/motd " - plik 'wiadomo¶ci dnia'"
+.br
+.IR /etc/nologin " - zapobiega logowaniu innych ni¿ root"
+.br
+.IR /etc/ttytype " - lista typów terminali"
+.br
+.IR $HOME/.profile " - skrypt startowy domy¶lnej pow³oki"
+.br
+.IR $HOME/.hushlogin " - zapobiega m.in. wy¶wietlaniu wiadomo¶ci dnia"
+.br
+.SH ZOBACZ TAK¯E
+.BR getty (8),
+.BR mail (1),
+.BR passwd (1),
+.BR sh (1),
+.BR su (1),
+.BR login.defs (5),
+.\" .BR d_passwd (5),
+.BR passwd (5),
+.BR nologin (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.
--- /dev/null
+.\" {PTM/WK/1999-09-17}
+.TH LOGIN.ACCESS 5
+.\" .Dt SKEY.ACCESS 5
+.\" .Os FreeBSD 1.2
+.SH NAZWA
+login.access \- tabela kontroli dostêpu logowania
+.SH OPIS
+Plik
+.I login.access
+okre¶la kombinacje (u¿ytkownik, host) i/lub (u¿ytkownik, tty)
+dla których logowanie bêdzie albo przyjête albo odrzucone.
+.PP
+Gdy kto¶ siê loguje, plik
+.I login.access
+przeszukiwany jest do znalezienia pierwszej pozycji pasuj±cej do danej
+kombinacji (u¿ytkownik, host), lub, w przypadku logowañ nie-sieciowych
+kombinacji (u¿ytkownik, tty). Pole zezwolenia w tej tablicy pozycji okre¶la
+czy logowanie bêdzie przyjête czy odrzucone.
+.PP
+Ka¿dy wiersz tabeli kontroli dostêpu logowania posiada trzy, oddzielone
+znakiem dwukropka, pola:
+.sp 1
+.IR zezwolenie : u¿ytkownicy : pochodzenie
+.sp 1
+Pierwsze pole powinno zawieraæ znak "\fB+\fR" (dostêp zapewniony) lub "\fB-\fR"
+(zakaz dostêpu). Drugie z pól powinno zawieraæ listê jednego lub wiêcej nazw
+u¿ytkowników, grup lub s³owo
+.B ALL
+(zawsze pasuje do wszystkich). Trzecie pole powinno byæ list± jednej lub wiêcej
+nazw tty (dla logowañ nie-sieciowych), nazw hostów, domen (rozpoczynaj±cych siê
+od kropki), adresów hostów, internetowych numerów sieci (koñcz±cych siê
+kropk±), s³owem
+.B ALL
+(wszystkie - zawsze pasuje) lub
+.B LOCAL
+(dopasowuje dowolny ³añcuch nie zawieraj±cy kropki).
+Je¿eli uruchomisz NIS mo¿esz u¿yæ @nazwagrupysieciowej we wzorcu hosta
+lub u¿ytkownika.
+.\" @netgroupname
+.PP
+Operator
+.B EXCEPT
+(oprócz) umo¿liwia pisanie z³o¿onych regu³.
+.PP
+Plik grup przeszukiwany jest wy³±cznie wtedy, gdy nazwa nie pasuje do
+loguj±cego siê u¿ytkownika. Dopasowywane s± tylko te grupy, w których
+u¿ytkownik jest jawnie wymieniony: program nie sprawdza warto¶ci
+identyfikatora grupy g³ównej u¿ytkownika.
+.SH PLIKI
+.I /etc/login.access
+.SH ZOBACZ TAK¯E
+.BR login (1)
+.SH AUTOR
+Guido van Rooij
--- /dev/null
+.\" {PTM/WK/1999-09-18}
+.\" Copyright 1991 - 1993, Julianne Frances Haugh and Chip Rosenthal
+.\" 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 LOGIN 5
+.SH NAZWA
+/etc/login.defs \- konfiguracja logowania
+.SH OPIS
+Plik
+.I /etc/login.defs
+definiuje specyficzn± dla naszej maszyny konfiguracjê pakietu shadow login.
+Plik ten jest wymagany. Jego nieobecno¶æ nie wstrzyma dzia³ania systemu,
+ale prawdopodobnie spowoduje nieprzewidywalne dzia³anie.
+.PP
+Plik ten jest czytelnym plikiem tekstowym. Ka¿dy z jego wierszy opisuje jeden
+parametr konfiguracji. Wiersze sk³adaj± siê z nazwy parametru i jego warto¶ci,
+oddzielonych bia³ym znakiem. Ignorowane s± puste wiersze i wiersze komentarzy.
+Komentarze rozpoczynaj± siê od znaku '#', który musi byæ pierwszym znakiem
+wiersza (pomijaj±c bia³e znaki).
+.PP
+Istniej± cztery typy warto¶ci parametrów: napisy, logiczne (boolean),
+liczby i d³ugie liczby (long numbers). Napis jest z³o¿ony
+z dowolnych znaków drukowalnych. Parametr logiczny mo¿e mieæ albo warto¶æ
+"yes" albo "no". Niezdefiniowanemu parametrowi logicznemu lub parametrowi,
+któremu przypisano warto¶æ inn± od powy¿szych przypisane zostanie "no".
+Liczby (zarówno zwyk³e jak i d³ugie) mog± byæ warto¶ciami dziesiêtnymi,
+ósemkowymi (poprzed¼ warto¶æ cyfr± "0") albo szesnastkowymi (poprzed¼ warto¶æ
+sekwencj± "0x"). Maksymalne warto¶ci zwyk³ych i d³ugich parametrów
+numerycznych zale¿± od maszyny.
+.PP
+Obs³ugiwane s± nastêpuj±ce opcje konfiguracyjne:
+.\"
+.IP "CHFN_AUTH (logiczna)"
+Je¿eli ma warto¶æ
+.IR yes ,
+to programy
+.B chfn
+i
+.B chsh
+bêd± pytaæ o has³o przed dokonaniem zmian, chyba ¿e uruchamiane s± przez
+superu¿ytkownika.
+.\"
+.IP "CHFN_RESTRICT (napis)"
+Ten parametr okre¶la, jakie warto¶ci w polu
+.I gecos
+pliku
+.I passwd
+mog± byæ zmieniane przez zwyk³ych u¿ytkowników za pomoc± programu
+.B chfn
+Mo¿e on byæ dowoln± kombinacj± liter
+.IR f ,
+.IR r ,
+.IR w ,
+.IR h ,
+oznaczaj±cych odpowiednio: Full name (pe³na nazwa), Room number (numer pokoju),
+Work phone (telefon s³u¿bowy) i Home phone (telefon domowy).
+Je¶li parametr nie jest podany, to zmian mo¿e dokonywaæ wy³±cznie
+superu¿ytkownik.
+.\"
+.IP "CONSOLE (napis)"
+Je¶li podana, definicja ta okre¶la ograniczony zestaw linii, na których
+dozwolone jest rozpoczynanie sesji u¿ytkownika root. Próby logowania
+u¿ytkownika root niespe³niaj±ce ustalonych tu kryteriów zostan± odrzucone.
+Warto¶æ tego pola mo¿e wyst±piæ w jednej z dwu postaci: albo pe³nej nazwy
+¶cie¿kowej pliku, jak na przyk³ad
+.sp
+.ft I
+ CONSOLE /etc/consoles
+.ft R
+.sp
+albo listy linii terminalowych rozdzielonych dwukropkami, jak poni¿ej:
+.sp
+.ft I
+ CONSOLE console:tty01:tty02:tty03:tty04
+.ft R
+.sp
+(Zauwa¿, ¿e wymienione tu nazwy nie zawieraj± ¶cie¿ki /dev/).
+Je¿eli podano ¶cie¿kow± nazwê pliku, to ka¿dy jego wiersz powinien okre¶laæ
+jedn± liniê terminalow±. Je¶li parametr ten nie jest zdefiniowany albo podany
+plik nie istnieje, to u¿ytkownik root bêdzie móg³ siê logowaæ z dowolnej linii
+terminalowej. Poniewa¿ usuniêcie lub obciêcie pliku definiuj±cego
+dozwolone linie mo¿e spowodowaæ nieautoryzowane logowania roota, plik ten musi
+byæ chroniony. Tam, gdzie bezpieczeñstwo jest spraw± kluczow±, powinna byæ
+u¿ywana postaæ listy separowanej dwukropkami, co chroni przed potencjaln±
+prób± ataku w opisany sposób.
+.\"
+.IP "CONSOLE_GROUPS (napis)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "CRACKLIB_DICTPATH (napis)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "DEFAULT_HOME (logiczna)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "DIALUPS_CHECK_ENAB (logiczna)"
+Je¿eli ma warto¶æ
+.I yes
+a plik
+.I /etc/dialups
+istnieje, to na liniach telefonicznych wyszczególnionych w tym pliku s±
+w³±czane wtórne has³a (has³a telefoniczne). Plik ten powinien zawieraæ listê
+linii telefonicznych (dialups), po jednej w wierszu, na przyk³ad:
+.nf
+.sp
+.ft I
+ ttyfm01
+ ttyfm02
+ \0\0.
+ \0\0.
+ \0\0.
+.ft R
+.sp
+.fi
+.\"
+.IP "ENVIRON_FILE (napis)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "ENV_HZ (napis)"
+Parametr ten okre¶la warto¶æ parametru ¶rodowiska HZ. Przyk³ad u¿ycia:
+.sp
+ \fIENV_HZ HZ=50\fR
+.sp
+Je¿eli jest on zdefiniowany, to nie zostanie ustanowiona ¿adna warto¶æ HZ.
+.\"
+.IP "ENV_PATH (napis)"
+Parametr ten musi byæ zdefiniowany jako ¶cie¿ka przeszukiwania dla zwyk³ych
+u¿ytkowników. Przy logowaniu z UID innym ni¿ zero, zmienna ¶rodowiskowa PATH
+jest inicjowana t± w³a¶nie warto¶ci±. Jest to parametr wymagany; je¿eli nie
+zostanie zdefiniowany, to zostanie nadana, byæ mo¿e niepoprawna, warto¶æ
+domy¶lna.
+.\"
+.IP "ENV_SUPATH (napis)"
+Parametr ten musi byæ zdefiniowany jako ¶cie¿ka przeszukiwania dla
+superu¿ytkownika. Przy rozpoczynaniu sesji z UID równym zero, zmienna
+¶rodowiskowa PATH jest inicjowana t± w³a¶nie warto¶ci±. Jest to parametr
+wymagany; je¿eli nie zostanie zdefiniowany, to zostanie nadana, byæ mo¿e
+niepoprawna, warto¶æ domy¶lna.
+.\"
+.IP "ENV_TZ (napis)"
+Parametr ten zawiera informacjê s³u¿±c± do utworzenia zmiennej ¶rodowiskowej TZ.
+Jego warto¶æ musi byæ albo wprost wymagan± zawarto¶ci± TZ, albo
+pe³n± nazw± ¶cie¿kow± pliku zawieraj±cego tê informacjê. Przyk³ad u¿ycia:
+.sp
+ \fIENV_TZ\0\0\0\0TZ=CST6CDT\fP
+.sp
+lub
+.sp
+ \fIENV_TZ\0\0\0\0/etc/tzname\fP
+.sp
+Je¿eli podano nieistniej±cy plik, to TZ zostanie zainicjowane pewn± warto¶ci±
+domy¶ln±. Je¿eli nie zdefiniowano tego parametru to nie bêdzie ustawiona
+¿adna warto¶æ TZ.
+.\"
+.IP "ERASECHAR (liczba)"
+T± warto¶ci± jest inicjowany terminalowy znak
+.I erase
+(kasowania). Jest to obs³ugiwane tylko w systemach z interfejsem
+.IR termio,
+np. System V. Je¿eli nie podano parametru, to znak kasowania zostanie
+zainicjowany na backspace. Informacjê powi±zan± znajdziesz w opisie KILLCHAR.
+.\"
+.IP "FAILLOG_ENAB (logiczna)"
+Je¿eli ustawiona na
+.I yes
+to nieudane logowania bêd± odnotowywane w pliku
+.I /var/log/faillog
+w formacie
+.BR faillog (8).
+.\"
+.IP "FAIL_DELAY (liczba)"
+Czas opó¼nienia, wyra¿ony w sekundach, po ka¿dej nieudanej próbie logowania.
+.\"
+.IP "FAKE_SHELL (napis)"
+Zamiast rzeczywistej pow³oki u¿ytkownika zostanie uruchomiony program okre¶lony
+warto¶ci± tego parametru. Nazwa widoczna (argv[0]) programu bêdzie jednak
+nazw± pow³oki. Program przed uruchomieniem faktycznej pow³oki mo¿e wykonywaæ
+dowoln± akcjê (logowanie, dodatkowe uwierzytelnianie, banner itp.).
+.\"
+.IP "FTMP_FILE (napis)"
+Okre¶la pe³n± ¶cie¿kow± nazwê pliku, w którym rejestrowane s± nieudane próby
+rozpoczynania sesji pracy. W przypadku nieudanej próby logowania do pliku
+dopisywana jest pozycja o formacie
+.IR utmp .
+Zauwa¿, ¿e ró¿ni siê to od rejestracji niepomy¶lnych logowañ do
+.IR /var/log/faillog ,
+gdy¿ opisywana funkcja odnotowuje wszystkie nieudane próby, podczas gdy
+"faillog" kumuluje informacjê o pora¿kach danego u¿ytkownika. Je¶li nie
+podano tego parametru, to rejestracja bêdzie wy³±czona. Powi±zane informacje
+znajdziesz w opisie FAILLOG_ENAB i LOG_UNKFAIL_ENAB.
+.\"
+.IP "GID_MAX (liczba)"
+.IP "GID_MIN (liczba)"
+Zakres identyfikatorów grup, w obrêbie którego mo¿e wybieraæ program
+.BR groupadd .
+.\"
+.IP "HUSHLOGIN_FILE (nazwa)"
+Parametr u¿ywany do ustalenia okoliczno¶ci cichego logowania ("hushlogin").
+Okoliczno¶ci te mog± byæ ustalone na dwa sposoby. Po pierwsze, je¿eli warto¶ci±
+parametru jest nazwa pliku, a plik ten istnieje w katalogu domowym u¿ytkownika,
+to wprowadzane s± warunki cichego logowania. Zawarto¶æ pliku jest ignorowana;
+sama jego obecno¶æ powoduje ciche logowanie. Po drugie, je¿eli warto¶ci±
+parametru jest pe³na nazwa ¶cie¿kowa pliku a w pliku tym znaleziona zostanie
+nazwa u¿ytkownika lub nazwa jego pow³oki, to wprowadzone zostan± warunki
+cichego logowania. W tym przypadku, plik powinien mieæ format podobny do:
+.nf
+.sp
+.ft I
+ demo
+ /usr/lib/uucp/uucico
+ \0\0.
+ \0\0.
+ \0\0.
+.ft R
+.sp
+.fi
+Je¿eli nie zdefiniowano tego parametru, to warunki cichego logowania nigdy
+nie wyst±pi±. W trakcie cichego logowanie wstrzymane jest wy¶wietlanie
+wiadomo¶ci dnia (message of the day), ostatniego udanego i nieudanego
+rozpoczêcia sesji pracy, wy¶wietlanie stanu skrzynki pocztowej i sprawdzenie
+wieku has³a. Zauwa¿, ¿e zezwolenie na pliki cichego logowania w katalogach
+domowych u¿ytkowników pozwala im na wstrzymanie kontroli wa¿no¶ci
+has³a. Informacje zwi±zane z tym tematem znajdziesz w opisach MOTD_FILE,
+FILELOG_ENAB, LASTLOG_ENAB i MAIL_CHECK_ENAB.
+.\"
+.IP "ISSUE_FILE (napis)"
+Pe³na ¶cie¿kowa nazwa pliku wy¶wietlanego przed ka¿d± zachêt± do logowania.
+.\"
+.IP "KILLCHAR (liczba)"
+T± warto¶ci± inicjowany jest terminalowy znak
+.IR kill .
+Jest to obs³ugiwane tylko w systemach z interfejsem
+.IR termio,
+np. System V. Je¿eli nie podano parametru, to znak kasowania zostanie
+zainicjowany na \s-2CTRL/U\s0. Informacjê powi±zan± znajdziesz w opisie
+ERASECHAR.
+.\"
+.IP "LASTLOG_ENAB (logiczna)"
+Je¶li ma warto¶æ
+.IR yes ,
+i istnieje plik
+.IR /var/log/lastlog ,
+to w tym pliku bêdzie rejestrowane poprawne rozpoczêcie sesji pracy u¿ytkownika
+(zalogowanie siê). Ponadto, je¶li opcja ta jest w³±czona, to podczas logowania
+siê u¿ytkownika bêdzie wy¶wietlana informacja o liczbie ostatnich udanych
+i nieudanych logowañ. Zakoñczone niepowodzeniem logowania nie bêd± wy¶wietlane
+je¶li nie w³±czono FAILLOG_ENAB. W warunkach cichego logowanie nie
+bêd± wy¶wietlane informacje ani o pomy¶lnych ani o niepomy¶lnych logowaniach.
+.\"
+.IP "LOGIN_RETRIES (liczba)"
+Dozwolona liczba prób logowania przed zakoñczeniem pracy programu
+.BR login .
+.\"
+.IP "LOGIN_STRING (napis)"
+XXX powinno zostaæ udokumentowane.
+.IP "LOGIN_TIMEOUT (liczba)"
+XXX powinno zostaæ udokumentowane.
+.IP "LOG_OK_LOGINS (logiczna)"
+XXX powinno zostaæ udokumentowane.
+.IP "LOG_UNKFAIL_ENAB (logiczna)"
+Je¶li posiada warto¶æ
+.I yes
+to nieznane nazwy u¿ytkowników bêd± równie¿ odnotowywane je¶li w³±czone jest
+rejestrowanie nieudanych prób rozpoczêcia sesji. Zauwa¿, ¿e niesie to ze sob±
+potencjalne zagro¿enie bezpieczeñstwa: powszechn± przyczyn± nieudanego
+logowania jest zamiana nazwy u¿ytkownika i has³a, tryb ten zatem spowoduje,
+¿e czêsto w rejestrach nieudanych logowañ bêd± siê odk³adaæ jawne has³a.
+Je¿eli opcja ta jest wy³±czona, to nieznane nazwy u¿ytkowników bêd± pomijane
+w komunikatach o nieudanych próbach logowania.
+.\"
+.IP "MAIL_CHECK_ENAB (logiczna)"
+Je¿eli ma warto¶æ
+.IR yes ,
+to u¿ytkownik po rozpoczêciu sesji pracy bêdzie powiadamiany o stanie swojej
+skrzynki pocztowej. Informacjê zwi±zan± z tym tematem znajdziesz w opisie
+MAIL_DIR.
+.\"
+.IP "MAIL_DIR (napis)"
+Okre¶la pe³n± nazwê ¶cie¿kow± do katalogu zawieraj±cego pliki skrzynki
+pocztowej u¿ytkownika. Do powy¿szej ¶cie¿ki doklejana jest nazwa u¿ytkownika,
+tworz±c w ten sposób zmienn± ¶rodowiskow± MAIL - ¶cie¿kê do skrzynki
+u¿ytkownika. Musi byæ zdefiniowany albo niniejszy parametr albo parametr
+MAIL_FILE; je¶li nie zostan± zdefiniowane, to zostanie nadana, byæ mo¿e
+niepoprawna, warto¶æ domy¶lna. Zobacz tak¿e opis MAIL_CHECK_ENAB.
+.\"
+.IP "MAIL_FILE (napis)"
+Okre¶la nazwê pliku skrzynki pocztowej u¿ytkownika. Nazwa ta doklejana jest
+na koniec nazwy katalogu domowego u¿ytkownika tworz±c zmienn± ¶rodowiskow±
+MAIL - ¶cie¿kê do skrzynki u¿ytkownika. Musi byæ zdefiniowany albo niniejszy
+parametr albo parametr MAIL_DIR; je¶li nie zostan± zdefiniowane, to zostanie
+nadana, byæ mo¿e niepoprawna, warto¶æ domy¶lna. Zobacz tak¿e opis
+MAIL_CHECK_ENAB.
+.\"
+.IP "MD5_CRYPT_ENAB (logiczna)"
+Je¿eli ma warto¶æ
+.IR yes ,
+to program
+.B passwd
+bêdzie kodowaæ nowo zmieniane has³a przy pomocy nowego algorytmu
+.BR crypt (3),
+opartego o MD-5. Algorytm ten pierwotnie pojawi³ siê we FreeBSD i jest te¿
+obs³ugiwany przez libc-5.4.38 oraz glibc-2.0 (lub wy¿sz±) w Linuksie.
+Pozwala on na u¿ywanie hase³ d³u¿szych ni¿ 8 znaków (ograniczone przez
+.BR getpass (3)
+do 127 znaków), ale nie jest zgodny z tradycyjnymi implementacjami polecenia
+.BR crypt (3).
+.\"
+.IP "MOTD_FILE (napis)"
+Okre¶la listê rozdzielonych dwukropkami ¶cie¿ek do plików "wiadomo¶ci dnia"
+(message of the day, MOTD). Je¶li podany plik istnieje, to jego zawarto¶æ jest
+wy¶wietlana u¿ytkownikowi podczas rozpoczynania przez niego sesji pracy.
+Je¿eli parametr ten jest niezdefiniowany lub wykonywane jest ciche logowanie,
+to informacja ta bêdzie pomijana.
+.\"
+.IP "NOLOGINS_FILE (napis)"
+Okre¶la pe³n± nazwê ¶cie¿kow± pliku zabraniaj±cego logowañ dla u¿ytkowników
+innych ni¿ root. Je¿eli plik ten istnieje a u¿ytkownik inny ni¿ root usi³uje
+siê zalogowaæ, to wy¶wietlana zostanie zawarto¶æ pliku a u¿ytkownik bêdzie
+roz³±czony. Je¿eli nie podano tego parametru, to opisana funkcja bêdzie
+wy³±czona.
+.\"
+.IP "NOLOGIN_STR (napis)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "OBSCURE_CHECKS_ENAB (logiczna)"
+Je¿eli ma warto¶æ
+.IR yes ,
+to program
+.B passwd
+przed akceptacj± zmiany has³a bêdzie wykonywa³ dodatkowe sprawdzenia.
+Kontrole te s± do¶æ proste, a ich u¿ycie jest zalecane.
+Te sprawdzenia nieoczywisto¶ci s± pomijane, je¿eli
+.B passwd
+uruchamiane jest przez u¿ytkownika
+.IR root .
+Zobacz tak¿e opis PASS_MIN_LEN.
+.\"
+.IP "PASS_ALWAYS_WARN (logiczna)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "PASS_CHANGE_TRIES (liczba)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "PASS_MIN_DAYS (liczba)"
+Minimalna liczba dni miêdzy dozwolonymi zmianami has³a. Jakiekolwiek próby
+zmiany has³a podejmowane wcze¶niej zostan± odrzucone. Je¿eli nie podano tego
+parametru, to przyjêta zostanie warto¶æ zerowa.
+.\"
+.IP "PASS_MIN_LEN (liczba)"
+Minimalna liczba znaków w akceptowalnym ha¶le. Próba przypisania has³a o
+mniejszej liczbie znaków zostanie odrzucona. Warto¶æ zero wy³±cza tê
+kontrolê. Je¶li nie podano parametru, to przyjêta zostanie warto¶æ zerowa.
+.\"
+.IP "PASS_MAX_DAYS (liczba)"
+Maksymalna liczba dni, przez jak± mo¿e byæ u¿ywane has³o. Je¶li has³o jest
+stanie siê starsze, to rachunek zostanie zablokowany. Je¶li nie podano, to
+zostanie przyjêta bardzo du¿a warto¶æ.
+.\"
+.IP "PASS_MAX_LEN (liczba)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "PASS_WARN_AGE (liczba)"
+Liczba dni ostrzegania przed wyga¶niêciem has³a. Warto¶æ zerowa oznacza,
+¿e ostrze¿enie wyst±pi wy³±cznie w dniu utraty wa¿no¶ci has³a. Warto¶æ
+ujemna oznacza brak ostrze¿eñ. Brak parametru oznacza, ¿e ostrze¿enia nie
+bêd± wy¶wietlane.
+.\"
+.IP "PORTTIME_CHECKS_ENAB (logiczna)"
+Je¶li ma warto¶æ
+.IR yes ,
+za¶ plik
+.I /etc/porttime
+istnieje, to bêdzie on przegl±dany, by upewniæ siê czy u¿ytkownik mo¿e siê
+w danej chwili zalogowaæ na danej linii. Patrz tak¿e podrêcznik
+.BR porttime (5)
+.\"
+.IP "QMAIL_DIR (napis)"
+Dla u¿ytkowników Qmail, parametr ten okre¶la katalog, w którym przechowywana
+jest hierarchia Maildir.
+Zobacz te¿ MAIL_CHECK_ENAB.
+.\"
+.IP "QUOTAS_ENAB (logiczna)"
+Je¶li ma warto¶æ
+.I yes ,
+wówczas dla danego u¿ytkownika "ulimit," "umask" i "niceness" bêd±
+zainicjowane warto¶ciami podanymi (o ile s± podane) w polu
+.I gecos
+pliku
+.IR passwd .
+Patrz tak¿e podrêcznik
+.BR passwd (5).
+.\"
+.IP "SU_NAME (napis)"
+Przypisuje nazwê polecenia do uruchomionego "su -". Na przyk³ad, je¶li
+parametr ten jest zdefiniowany jako "su", to polecenie
+.BR ps (1)
+poka¿e uruchomione polecenie jako "-su". Je¶li parametr ten jest
+niezdefiniowany, to
+.BR ps (1)
+poka¿e nazwê faktycznie wykonywanej pow³oki, np. co¶ w rodzaju "-sh".
+.\"
+.IP "SULOG_FILE (napis)"
+Pokazuje pe³n± nazwê ¶cie¿kow± pliku, w którym rejestrowane jest wykorzystanie
+.BR su .
+Je¶li parametr ten nie jest okre¶lony, to rejestrowanie nie jest wykonywane.
+Poniewa¿ polecenie
+.B su
+mo¿e byæ u¿ywane podczas prób uwierzytelnienia has³a, do odnotowywania
+u¿ycia
+.B su
+powinny byæ u¿ywane albo niniejsza opcja
+albo
+.IR syslog .
+Zobacz te¿ opis SYSLOG_SU_ENAB.
+.\"
+.IP "SU_WHEEL_ONLY (logiczna)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "SYSLOG_SG_ENAB (logiczna)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "SYSLOG_SU_ENAB (logiczna)"
+Je¿eli ma warto¶æ
+.IR yes ,
+za¶ program
+.B login
+zosta³ skompilowany z obs³ug±
+.IR syslog ,
+to wszelkie dzia³ania
+.B su
+bêd± rejestrowane za pomoc±
+.IR syslog .
+Zobacz te¿ opis SULOG_FILE.
+.\"
+.IP "TTYGROUP (napis lub liczba)"
+Grupa (w³a¶cicielska) terminala inicjowana jest na nazwê b±d¼ numer tej grupy.
+Jeden z dobrze znanych ataków polega na wymuszeniu sekwencji kontrolnych
+terminala na linii terminalowej innego u¿ytkownika. Problemu tego mo¿na
+unikn±æ wy³±czaj±c prawa zezwalaj±ce innym u¿ytkownikom na dostêp do linii
+terminalowej, ale niestety zapobiega to równie¿ dzia³aniu programów takich
+jak
+.BR write .
+Innym rozwi±zaniem jest pos³u¿enie siê tak± wersj± programu
+.BR write ,
+która odfiltrowuje potencjalnie niebezpieczne sekwencje znaków. Nastêpnie
+programowi nale¿y przyznaæ rozszerzone prawa dostêpu (SGID) dla specjalnej
+grupy, ustawiæ grupê w³a¶cicieli terminala na tê grupê i nadaæ prawa dostêpu
+\fI0620\fR do linii. Definicja TTYGROUP powsta³a do obs³ugi tej w³a¶nie
+sytuacji.
+Je¶li pozycja ta nie jest zdefiniowana, to grupa terminala inicjowana jest
+na numer grupy u¿ytkownika.
+Zobacz tak¿e TTYPERM.
+.\"
+.IP "TTYPERM (liczba)"
+T± warto¶ci± inicjowane s± prawa terminala logowania. Typowymi warto¶ciami s±
+\fI0622\fR zezwalaj±ce innym na pisanie do linii lub \fI0600\fR zabezpieczaj±ce
+liniê przed innymi u¿ytkownikami. Je¿eli nie podano tego parametru, to prawa
+dostêpu do terminala zostan± zainicjowane warto¶ci± \fI0622\fR. Zobacz te¿
+TTYGROUP.
+.\"
+.IP "TTYTYPE_FILE (napis)"
+Okre¶la pe³n± nazwê ¶cie¿kow± pliku przypisuj±cego typy terminali do linii
+terminalowych. Ka¿dy z wierszy tego pliku zawiera rozdzielone bia³ym znakiem
+typ i liniê terminala. Na przyk³ad:
+.nf
+.sp
+.ft I
+ vt100\0 tty01
+ wyse60 tty02
+ \0\0.\0\0\0 \0\0.
+ \0\0.\0\0\0 \0\0.
+ \0\0.\0\0\0 \0\0.
+.ft R
+.sp
+.fi
+Informacja ta s³u¿y do inicjowania zmiennej ¶rodowiska TERM. Wiersz
+rozpoczynaj±cy siê znakiem # bêdzie traktowany jak komentarz. Je¿eli nie
+podano tego parametru lub plik nie istnieje albo nie znaleziono w nim
+linii terminala, to zmienna TERM nie zostanie ustawiona.
+.\"
+.IP "UID_MAX (liczba)"
+XXX powinno zostaæ udokumentowane.
+.IP "UID_MIN (liczba)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.IP "ULIMIT (d³uga liczba)"
+Warto¶ci± t± inicjowany jest limit wielko¶ci pliku. Cecha ta obs³ugiwana
+jest wy³±cznie w systemach posiadaj±cych
+.IR ulimit ,
+np. System V. Je¶li nie podano, to limit wielko¶ci pliku zostanie ustalony
+na pewn± wielk± warto¶æ.
+.\"
+.IP "UMASK (liczba)"
+T± warto¶ci± inicjowana jest maska praw dostêpu. Nie podana, ustawia mask±
+praw na zero.
+.\"
+.IP "USERDEL_CMD (napis)"
+XXX powinno zostaæ udokumentowane.
+.\"
+.SH POWI¡ZANIA
+Poni¿sze zestawienie pokazuje, które z programów wchodz±cych w sk³ad pakietu
+shadow wykorzystuj± jakie parametry.
+.na
+.IP login 12
+CONSOLE DIALUPS_CHECK_ENAB ENV_HZ ENV_SUPATH ENV_TZ ERASECHAR FAILLOG_ENAB
+FTMP_FILE HUSHLOGIN_FILE KILLCHAR LASTLOG_ENAB LOG_UNKFAIL_ENAB
+MAIL_CHECK_ENAB MAIL_DIR MOTD_FILE NOLOGINS_FILE PORTTIME_CHECKS_ENAB
+QUOTAS_ENAB TTYPERM TTYTYPE_FILE ULIMIT UMASK
+.IP newusers 12
+PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE UMASK
+.IP passwd 12
+OBSCURE_CHECKS_ENAB PASS_MIN_LEN
+.IP pwconv 12
+PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE
+.IP su 12
+ENV_HZ ENV_SUPATH ENV_TZ HUSHLOGIN_FILE MAIL_CHECK_ENAB MAIL_DIR
+MOTD_FILE NOLOGIN_STR QUOTAS_ENAB SULOG_FILE SYSLOG_SU_ENAB
+.IP sulogin 12
+ENV_HZ ENV_SUPATH ENV_TZ MAIL_DIR QUOTAS_ENAB TTYPERM
+.ad
+.SH B£ÊDY
+Niektóre z obs³ugiwanych parametrów konfiguracyjnych pozosta³y
+nieopisane w niniejszym podrêczniku.
+.SH ZOBACZ TAK¯E
+.BR login (1),
+.BR passwd (5),
+.BR faillog (5),
+.BR porttime (5),
+.BR faillog (8)
+.SH AUTORZY
+Julianne Frances Haugh (jfh@austin.ibm.com)
+.br
+Chip Rosenthal (chip@unicom.com)
-.\" 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
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: pwunconv.8,v 1.1 1997/12/14 20:07:22 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 \fI/etc/shadow\fR, to the password file \fI/etc/passwd\fR.
-The \fI/etc/shadow\fR file is then removed.
-Password aging information is translated where possible.
-There is some loss of resolution in the password aging information.
-.SH FILES
-/etc/passwd
+.TH LOGOUTD 8
+.SH NAZWA
+logoutd \- wymuszenie ograniczeñ czasu logowania
+.SH SK£ADNIA
+.B logoutd
+.SH OPIS
+.B logoutd
+wymusza ograniczenia portów i czasów logowania podane w
+.IR /etc/porttime .
+.B logoutd
+powinno byæ uruchamiane z \fI/etc/rc\fR.
+Okresowo przegl±dany jest plik \fI/etc/utmp\fR. Sprawdzana jest ka¿da nazwa
+u¿ytkownika, by móc stwierdziæ czy posiada on zezwolenie na pracê w bie¿±cym
+czasie na danym porcie.
+Ka¿da sesja pracy (logowania) naruszaj±ca ograniczenia zawarte
+w \fI/etc/porttime\fR jest koñczona.
+.SH PLIKI
+.IR /etc/porttime " - zezwolenia dla logowania na portach"
.br
-/etc/shadow
-.SH SEE ALSO
-.BR passwd (1),
-.BR passwd (5),
-.BR shadow (5),
-.BR pwconv (8)
-.SH AUTHOR
-Julianne Frances Haugh (jfh@tab.com)
+.IR /etc/utmp " - bie¿±ce sesje pracy"
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.\" {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.
+.\"
+.\" $Id: mkpasswd.8,v 1.1 1999/09/16 07:11:24 wojtek2 Exp $
+.\"
+.TH MKPASSWD 1
+.SH NAZWA
+mkpasswd \- aktualizuj pliki baz passwd i group
+.SH SK£ADNIA
+\fBmkpasswd\fR [\fB-fvgps\fR] \fIplik\fR
+.SH OPIS
+.B mkpasswd
+czyta plik w formacie okre¶lonym przez flagi i konwertuje go postaci
+odpowiedniego pliku bazy danych.
+Wymienione pliki baz danych u¿ywane s± do poprawienia wydajno¶ci dostêpu
+w systemach o du¿ej liczbie u¿ytkowników.
+Pliki wynikowe otrzymaj± nazwy \fIplik\fR.dir i \fIplik\fR.pag.
+.PP
+Opcja \fB-f\fR powoduje, ¿e \fBmkpasswd\fR ignoruje istnienie plików
+wynikowych i nadpisuje je.
+Normalnie \fBmkpasswd\fR skar¿y siê na istnienie plików wynikowych
+i koñczy pracê.
+.PP
+Opcja \fB-v\fR powoduje wy¶wietlanie informacji o ka¿dym konwertowanym
+rekordzie oraz komunikatu koñcowego.
+.PP
+Opcja \fB-g\fR traktuje plik ¼ród³owy tak, jak gdyby by³ on w formacie
+pliku \fI/etc/group\fR.
+Przy po³±czeniu z opcj± \fB-s\fR u¿ywany jest format pliku \fI/etc/gshadow\fR.
+.PP
+Opcja \fB-p\fR traktuje plik ¼ród³owy tak, jak gdyby by³ on w formacie
+pliku \fI/etc/passwd\fR.
+Jest to opcja domy¶lna.
+Przy po³±czeniu z opcj± \fB-s\fR u¿ywany jest format pliku \fI/etc/shadow\fR.
+.SH PRZESTROGI
+U¿ycie wiêcej ni¿ jednego pliku bazy ogranicza siê do systemów posiadaj±cych
+bibliotekê baz danych NDBM. Mo¿e zatem nie byæ dostêpne w ka¿dym systemie.
+.SH UWAGA
+Poniewa¿ wiêkszo¶æ poleceñ jest w stanie aktualizowaæ pliki bazy danych
+podczas dokonywania zmian, \fBmkpasswd\fR potrzebne jest jedynie
+do ponownego utworzenia usuniêtego lub zepsutego pliku bazy.
+.SH PLIKI
+.IR /etc/passwd " - informacja o kontach u¿ytkowników"
+.br
+.IR /etc/shadow " - chroniona informacja o u¿ytkownikach"
+.br
+.IR /etc/group " - informacja o grupach"
+.br
+.IR /etc/gshadow " - chroniona informacja o grupach"
+.SH ZOBACZ TAK¯E
+.BR passwd (5),
+.BR group (5),
+.BR shadow (5)
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.\" {PTM/WK/1999-09-15}
+.\" 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: newgrp.1,v 1.2 1999/09/25 20:07:46 wojtek2 Exp $
+.\"
+.TH NEWGRP 1
+.SH NAZWA
+newgrp \- zmieñ identyfikator grupy
+.br
+sg \- wykonaj polecenie przy innym ID grupy
+.SH SK£ADNIA
+.BR newgrp " [" - ]
+.RI [ grupa ]
+.br
+.BR sg " [" - ]
+.RI [ grupa
+.RB [ -c
+.IR polecenie ]]
+.SH OPIS
+.B newgrp
+s³u¿y do zmiany bie¿±cego identyfikatora grupy (GID) podczas sesji logowania.
+Je¿eli podano opcjonaln± flagê \fB\-\fR, to ¶rodowisko u¿ytkownika zostanie
+ponownie zainicjowane, tak jak wówczas, gdy u¿ytkownik siê loguje. Je¿eli nie
+u¿yto flagi \fB\-\fR, to bie¿±ce ¶rodowisko, ³±cznie z bie¿±cym katalogiem
+roboczym, pozostaje bez zmian.
+.PP
+.B newgrp
+zmienia bie¿±cy faktyczny identyfikator grupy na identyfikator danej grupy
+lub, je¶li nie podano nazwy grupy, na identyfikator grupy domy¶lnej, podanej
+w \fI/etc/passwd\fR.
+Je¿eli grupa posiada has³o, za¶ u¿ytkownik nie ma has³a b±d¼ nie jest jej
+cz³onkiem, to zostanie poproszony o podanie has³a.
+Je¿eli has³o grupy jest puste za¶ u¿ytkownik nie jest jej cz³onkiem, to
+efektem bêdzie odmowa dostêpu.
+.PP
+Polecenie
+.B sg
+dzia³a podobnie do \fBnewgrp\fR, lecz nie zastêpuje pow³oki u¿ytkownika,
+wiêc po zakoñczeniu \fBsg\fR powracasz do swego poprzedniego identyfikatora
+grupy.
+.B sg
+przyjmuje tak¿e pojedyncze polecenie. Podane polecenie zostanie wykonane
+w pow³oce Bourne'a i musi byæ umieszczone w cudzys³owach.
+.\" enclosed in quotes.
+.SH PRZESTROGI
+Niniejsza wersja \fBnewgrp\fR posiada wiele opcji kompilacji,
+z których tylko czê¶æ mo¿e byæ u¿yteczna w konkretnej instalacji.
+.SH PLIKI
+.IR /etc/passwd " - informacja o kontach u¿ytkowników"
+.br
+.IR /etc/group " - informacja o grupach"
+.SH ZOBACZ TAK¯E
+.BR login (1),
+.BR id (1),
+.BR su (1)
+.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.
--- /dev/null
+.\" {PTM/WK/1999-09-15}
+.\" Copyright 1991 - 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.
+.\"
+.\" $Id: newusers.8,v 1.3 1999/09/25 20:07:47 wojtek2 Exp $
+.\"
+.TH NEWUSERS 8
+.SH NAZWA
+newusers - wsadowa aktualizacja i tworzenie nowych u¿ytkowników
+.SH SK£ADNIA
+.B newusers
+.RI [ nowi_u¿ytkownicy ]
+.SH OPIS
+\fBnewusers\fR odczytuje plik zawieraj±cy pary: nazwa u¿ytkownika i podane
+jawnym tekstem has³o. Odczytan± informacjê wykorzystuje do aktualizacji grupy
+istniej±cych u¿ytkowników lub utworzenia nowych.
+Ka¿dy wiersz pliku posiada taki sam format jak standardowy plik hase³ (patrz
+\fBpasswd\fR(5)), z nastêpuj±cymi wyj±tkami:
+.IP "\fIpw_passwd\fR" 10
+To pole zostanie zakodowane i u¿yte jako nowa warto¶æ zakodowanego has³a.
+.IP "\fIpw_age\fR"
+Dla chronionych hase³ (shadow) pole zostanie zignorowane je¶li u¿ytkownik ju¿
+istnieje.
+.IP "\fIpw_gid\fR"
+Pole to mo¿e zawieraæ nazwê istniej±cej grupy. Dany u¿ytkownik zostanie
+wówczas dodany do jej cz³onków. Je¿eli podano numeryczny identyfikator
+nieistniej±cej grupy, to zostanie za³o¿ona nowa grupa o tym identyfikatorze.
+.IP "\fIpw_dir\fR"
+Zostanie wykonane sprawdzenie czy istnieje katalog o tej nazwie. Je¿eli nie,
+to bêdzie on utworzony. W³a¶cicielem zostanie ustanowiony tworzony
+(lub aktualizowany) u¿ytkownik. Grupa katalogu zostanie ustawiona na grupê
+u¿ytkownika.
+.PP
+Polecenie to przeznaczone jest do u¿ytku w du¿ych systemach, gdzie aktualizuje
+siê wiele kont naraz.
+.SH PRZESTROGI
+.\" Po u¿yciu \fBnewusers\fR musi zostaæ wykonane polecenie \fImkpasswd\fR,
+.\" aktualizuj±ce pliki DBM hase³ (DBM password files).
+Plik ¼ród³owy, zawieraj±cy niezakodowane has³a, musi byæ chroniony.
+.SH ZOBACZ TAK¯E
+.\" mkpasswd(8), passwd(1), useradd(1)
+.BR passwd (1),
+.BR useradd (8)
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.\" {PTM/WK/1999-09-20}
+.\" 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 PASSWD 1
+.SH NAZWA
+passwd \- zmieñ has³o u¿ytkownika
+.SH SK£ADNIA
+.B passwd
+.RB [ -f | -s ]
+.RI [ nazwa ]
+.br
+.B passwd
+.RB [ -g ]
+.RB [ -r | R ]
+.I grupa
+.br
+.B passwd
+.RB [ -x
+.IR max ]
+.RB [ -n
+.IR min ]
+.RB [ -w
+.IR ostrze¿ ]
+.RB [ -i
+.IR nieakt ]
+.I nazwa
+.br
+.B passwd
+.RB { -l | -u | -d | -S }
+.I nazwa
+.SH OPIS
+\fBpasswd\fR zmienia has³a kont u¿ytkowników i grup.
+Zwyk³y u¿ytkownik mo¿e zmieniæ wy³±cznie has³o w³asnego konta, superu¿ytkownik
+mo¿e zmieniaæ has³a dowolnych kont.
+Administrator grupy mo¿e zmieniæ has³o tej grupy.
+\fBpasswd\fR zmienia tak¿e informacje o koncie, takie jak pe³na nazwa
+u¿ytkownika, jego pow³oka zg³oszeniowa (logowania) czy daty i interwa³y dotycz±ce
+wa¿no¶ci has³a.
+.SS Zmiany has³a
+Na pocz±tku u¿ytkownik pytany jest o stare, dotychczasowe has³o, je¶li takie
+istnieje. Has³o to jest kodowane i porównywane z przechowywanym has³em.
+U¿ytkownik ma tylko jedn± próbê na wprowadzenie poprawnego has³a.
+Superu¿ytkownikowi zezwala siê na pominiêcie tego kroku, zatem mog± byæ
+zmienione has³a, których zapomniano.
+.PP
+Po wprowadzeniu has³a, sprawdzana jest informacja o jego wieku, by stwierdziæ
+czy u¿ytkownikowi wolno w danym czasie zmieniæ has³o.
+Je¿eli nie, to \fBpasswd\fR odmawia zmiany has³a i koñczy pracê.
+.PP
+Nastêpnie u¿ytkownik proszony jest o nowe, zastêpuj±ce dotychczasowe, has³o
+Has³o podlega sprawdzeniu jego zawi³o¶ci. Jako ogóln± wskazówk± mo¿na podaæ,
+¿e has³a powinny sk³adaæ siê z 6 do 8 znaków, zawieraj±c po jednym lub wiêcej
+znaków z ka¿dej z poni¿szych kategorii:
+.IP "" .5i
+ma³e litery alfabetu
+.IP "" .5i
+du¿e litery alfabetu
+.IP "" .5i
+cyfry od 0 do 9
+.IP "" .5i
+znaki interpunkcyjne
+.PP
+Nale¿y uwa¿aæ, by nie u¿yæ domy¶lnych systemowych znaków akcji erase lub kill.
+\fBpasswd\fR odrzuci ka¿de niedostatecznie skomplikowane has³o.
+.PP
+Je¶li has³o zostanie przyjête, to \fBpasswd\fR prosi o jego powtórzenie
+i porównuje drugi wpis z pierwszym.
+Oba wpisy musz± byæ takie same by has³o zosta³o zmienione.
+.SS Has³a grup
+Je¿eli pos³u¿ono siê opcj± \fB-g\fR, to zmieniane jest has³o podanej grupy.
+U¿ytkownik powinien byæ albo superu¿ytkownikiem albo administratorem tej grupy.
+Nie wystêpuje pytanie o bie¿±ce has³o grupy.
+Do usuwania bie¿±cego has³a danej grupy s³u¿y opcja \fB-g\fR w po³±czeniu
+z \fB-r\fR. Pozwala to na dostêp do grupy tylko jej cz³onkom.
+Opcja \fB-R\fR w po³±czeniu z \fR-g\fR ogranicza dostêp do grupy wszystkim
+u¿ytkownikom.
+.SS Informacja o wa¿no¶ci konta
+Superu¿ytkownik mo¿e zmieniaæ informacjê o wieku konta pos³uguj±c siê opcjami
+\fB-x\fR, \fB-n\fR, \fB-w\fR oraz \fB-i\fR.
+Opcja \fB-x\fR s³u¿y do ustawiania maksymalnej liczby dni, przez jakie has³o
+pozostaje wa¿ne.
+Po up³ywie \fImax\fR dni, has³o musi byæ zmienione.
+Opcja \fB-n\fR ustawia minimaln± liczbê dni, jakie musz± up³yn±æ zanim has³o
+bêdzie mog³o byæ zmienione.
+U¿ytkownik nie otrzyma zezwolenia na zmianê has³a przed up³ywem \fImin\fR dni.
+Opcja \fB-w\fR s³u¿y do ustawienia liczby dni przed up³ywem terminu wa¿no¶ci
+has³a, przez które u¿ytkownik bêdzie otrzymywa³ ostrze¿enie mówi±ce mu, ile dni
+pozosta³o do tej daty. Ostrze¿enia zaczn± pojawiaæ siê \fIostrze¿\fR dni przed
+up³ywem wa¿no¶ci has³a.
+Opcja \fB-i\fR (nieaktywno¶æ) s³u¿y do wy³±czania konta po up³ywie zadanej
+liczby dni po wyga¶niêciu has³a.
+Po up³ywie \fInieakt\fR dni od przeterminowania has³a u¿ytkownik nie mo¿e ju¿
+korzystaæ z konta.
+.SS Utrzymywanie i konserwacja konta
+Konta u¿ytkowników mog± byæ blokowane i odblokowywane przy pomocy flag \fB-l\fR
+i \fB-u\fR.
+Opcja \fB-l\fR wy³±cza konto zmieniaj±c jego has³o na warto¶æ nieodpowiadaj±c±
+¿adnemu mo¿liwemu zakodowanemu has³u.
+Opcja \fB-u\fR ponownie udostêpnia konto przywracaj±c uprzedni± warto¶æ has³a.
+.PP
+Stan konta mo¿na uzyskaæ przy pomocy opcji \fB-S\fR.
+Informacja o stanie sk³ada siê z 6 czê¶ci.
+Pierwsza wskazuje, czy konto u¿ytkownika jest zablokowane (L) (locked),
+nie posiada has³a (NP) (no password) lub ma funkcjonalne has³o (P) (password).
+Druga czê¶æ podaje datê ostatniej zmiany has³a.
+nastêpne cztery to minimalny wiek, maksymalny wiek, okres ostrzegania i okres
+nieaktywno¶ci has³a.
+.SS Podpowiedzi dotycz±ce hase³ u¿ytkownika
+Bezpieczeñstwo has³a zale¿y od si³y algorytmu koduj±cego oraz rozmiaru
+klucza.
+Metoda kodowania u¿ywana w Systemie \fB\s-2UNIX\s+2\fR oparta jest o algorytm
+NBS DES i jest bardzo bezpieczna.
+Rozmiar klucza zale¿y od losowo¶ci wybranego has³a.
+.PP
+Naruszenia bezpieczeñstwa hase³ wynikaj± zwykle z beztroski przy wyborze lub
+przechowywaniu has³a.
+Z tego powodu powiniene¶ wybraæ has³o nie wystêpuj±ce w s³owniku. Has³o nie
+powinno te¿ byæ poprawn± nazw±, imieniem, nazwiskiem, numerem prawa jazdy,
+dat± urodzenia czy elementem adresu.
+Wszystkie z powy¿szych mog± byæ u¿yte do odgadniêcia has³a i naruszenia
+bezpieczeñstwa systemu.
+.PP
+Has³o musi byæ ³atwe do zapamiêtania, tak by nie byæ zmuszonym do jego
+zapisywania na kartce. Mo¿na to osi±gn±æ sklejaj±c ze sob± dwa krótkie s³owa,
+ze wstawionym pomiêdzy nie znakiem specjalnym lub cyfr±.
+Na przyk³ad, Pass%word, Lew7konia.
+.PP
+Inna metoda konstrukcji has³a polega na wyborze ³atwego do zapamiêtania zdania
+(np. z literatury) i wyborze pierwszej b±d¼ ostatniej litery ka¿dego wyrazu.
+Przyk³adem tego jest
+.IP "" .5i
+Ask not for whom the bell tolls.
+.PP
+co daje
+.IP "" .5i
+An4wtbt,
+.PP
+albo te¿
+.IP "" .5i
+A czy znasz Ty, bracie m³ody
+.PP
+co daje
+.IP "" .5i
+A3zTbm.
+.PP
+W zasadzie mo¿esz byæ pewien, ¿e niewielu crackerów bêdzie mieæ takie has³o
+w swoim s³owniku. Powiniene¶ jednak wybraæ w³asn± metodê konstrukcji hase³
+a nie polegaæ wy³±cznie na opisanych tutaj.
+.SS Uwagi o has³ach grup
+Has³a grup s± nieod³±cznym problemem bezpieczeñstwa, gdy¿ do ich znajomo¶ci
+uprawniona jest wiêcej ni¿ jedna osoba.
+Grupy s± jednak u¿ytecznym narzêdziem pozwalaj±cym na wspó³pracê miêdzy
+ró¿nymi u¿ytkownikami.
+.SH PRZESTROGI
+Mog± nie byæ obs³ugiwane wszystkie opcje.
+Sprawdzanie z³o¿ono¶ci has³a mo¿e ró¿niæ siê w ró¿nych instalacjach. Zachêca
+siê u¿ytkownika do wyboru tak skomplikowanego has³a, z jakim bêdzie mu
+wygodnie.
+U¿ytkownicy mog± nie móc zmieniæ has³a w systemie przy w³±czonym NIS, je¶li
+nie s± zalogowani do serwera NIS.
+.SH PLIKI
+.IR /etc/passwd " - informacja o kontach u¿ytkowników"
+.br
+.IR /etc/shadow " - zakodowane has³a u¿ytkowników"
+.SH ZOBACZ TAK¯E
+.BR passwd (3),
+.BR shadow (3),
+.BR group (5),
+.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.
--- /dev/null
+.\" Copyright (c) 1993 Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de), Fri Apr 2 11:32:09 MET DST 1993
+.\"
+.\" This is free documentation; you can redistribute it 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.
+.\"
+.\" The GNU General Public License's references to "object code"
+.\" and "executables" are to be interpreted as the output of any
+.\" document formatting or typesetting system, including
+.\" intermediate and printed output.
+.\"
+.\" This manual is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public
+.\" License along with this manual; if not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
+.\" USA.
+.\"
+.\" Modified Sun Jul 25 10:46:28 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Modified Sun Aug 21 18:12:27 1994 by Rik Faith (faith@cs.unc.edu)
+.\" Modified Sun Jun 18 01:53:57 1995 by Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" Polish translation nov.1996 piotr.pogorzelski@ippt.gov.pl
+.\"
+.TH PASSWD 5 "24 Czerwiec 1993" "Linux" "Podrêcznik programisty linuxowego"
+.SH NAZWA
+passwd \- plik passwd definiuj±cy u¿ytkowników systemu
+.SH OPIS
+Plik
+.B passwd
+jest plikiem tekstowym ASCII, który zawiera listê u¿ytkowników systemu
+oraz has³a jakich musz± u¿ywaæ aby otrzymaæ dostêp do systemu.
+Ka¿dy powinien móc odczytaæ informacje z pliku passwd (poniewa¿ has³a
+w tym pliku s± zakodowane jest to poprawne) lecz prawo do modyfikacji
+pliku powinien mieæ tylko administrator.
+Dodaj±c nowego u¿ytkownika nale¿y pole przeznaczone na has³o pozostawiæ puste
+i u¿yæ programu \fBpasswd\fP(1). Gwiazdka lub inny pojedynczy znak w polu
+has³a oznacza, ze u¿ytkownik nie mo¿e dostaæ siê do systemu przez \fBlogin\fP(1).
+Je¶li g³ówny system plików jest na ram dysku (/dev/ram) nale¿y
+plik passwd skopiowaæ na dyskietkê przechowuj±c± g³ówny system plików
+przed zamkniêciem systemu. Trzeba równie¿ sprawdziæ prawa dostêpu do.
+Je¶li trzeba utworzyæ grupê u¿ytkowników, ich identyfikatory grupy
+GID musz± byæ równe oraz musi istnieæ odpowiednia pozycja w pliku
+\fI/etc/group\fP, lub grupa nie bêdzie istnia³a.
+.PP
+Ka¿da pozycja zajmuje jeden wiersz w formacie:
+.sp
+login_name:has³o:UID:GID:imie_nazwisko:katalog:pow³oka
+.RS
+.RE
+.sp
+Krótki opis poszczególnych pól:
+.sp
+.RS
+.TP 1.0in
+.I login_name
+nazwa u¿ytkownika w systemie (radzê u¿ywaæ ma³ych liter).
+.TP
+.I has³o
+zakodowane has³o u¿ytkownika.
+.TP
+.I UID
+identyfikator u¿ytkownika (liczbowo).
+.TP
+.I GID
+identyfikator grupy (liczbowo).
+.TP
+.I imiê_nazwisko
+Opisowa nazwa u¿ytkownika, zwykle imiê i nazwisko (wykorzystywane
+przez programy pocztowe).
+.TP
+.I katalog
+katalog macierzysty ($HOME) u¿ytkownika.
+.TP
+.I pow³oka
+program jaki uruchomiæ po wej¶ciu u¿ytkownika do systemu.
+(je¶li pusty u¿yj /bin/sh, je¶li istnieje /etc/shells i
+dana pow³oka nie jest tam wymieniona, u¿ytkownik nie bêdzie móg³
+dostaæ siê do systemu wykorzystuj±c protokó³ ftp).
+.RE
+.SH PLIKI
+.I /etc/passwd
+.SH "ZOBACZ TAK¯E"
+.BR passwd "(1), " login "(1), " group (5)
--- /dev/null
+.\" {PTM/WK/1999-09-17}
+.\" Copyright 1989 - 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 PORTTIME 5
+.SH NAZWA
+porttime \- plik czasów dostêpu do portów
+.SH OPIS
+.I porttime
+zawiera listê urz±dzeñ tty, nazw u¿ytkowników i dozwolonych czasów logowania.
+.PP
+Ka¿da pozycja sk³ada siê z trzech, rozdzielonych dwukropkiem, pól.
+Pierwsze pole zawiera listê oddzielonych przecinkami urz±dzeñ tty lub
+gwiazdkê, wskazuj±c±, ¿e pozycja ta pasuje do wszystkich urz±dzeñ tty.
+Drugie pole zawiera listê oddzielonych przecinkami nazw u¿ytkowników lub
+gwiazdkê, wskazuj±c±, ¿e pozycja dotyczy wszystkich u¿ytkowników.
+Trzecie pole jest list± oddzielonych przecinkami dozwolonych czasów dostêpu.
+.PP
+Ka¿da pozycja czasu dostêpu sk³ada siê z zera lub wiêcej dni tygodnia,
+skróconych do \fBSu\fR, \fBMo\fR, \fBTu\fR, \fBWe\fR, \fBTh\fR, \fBFr\fR
+i \fBSa\fR, po których nastêpuje para rozdzielonych my¶lnikiem czasów.
+Do okre¶lenia dni roboczych (od poniedzia³ku do pi±tku) mo¿e byæ u¿yty
+skrót \fBWk\fR. Skrót \fBAl\fR oznacza ka¿dy dzieñ. Je¿eli nie podano dni
+tygodnia przyjmowane jest \fBAl\fR.
+.SH PRZYK£ADY
+Poni¿szy wpis zezwala u¿ytkownikowi \fBjfh\fR na dostêp do ka¿dego portu
+w dni robocze od godziny 9-tej do 17-tej.
+.br
+.sp 1
+ *:jfh:Wk0900-1700
+.br
+.sp 1
+Poni¿sze pozycje pozwalaj± na dostêp do konsoli (/dev/console) wy³±cznie
+u¿ytkownikom \fBroot\fR i \fBoper\fR - w dowolnym czasie.
+Przyk³ad ten pokazuje, ¿e plik \fI/etc/porttime\fR stanowi uporz±dkowan±
+listê czasów dostêpu. Ka¿dy inny u¿ytkownik bêdzie pasowa³ do drugiej pozycji
+listy, nie zezwalaj±cej na dostêp w ¿adnym czasie.
+.br
+.sp 1
+ console:root,oper:Al0000-2400
+.br
+ console:*:
+.br
+.sp 1
+Poni¿szy wpis zezwala na dostêp do dowolnego portu u¿ytkownikowi \fBgames\fR
+poza godzinami pracy.
+.br
+.sp 1
+ *:games:Wk1700-0900,SaSu0000-2400
+.br
+.sp 1
+.SH PLIKI
+.IR /etc/porttime " - plik zawieraj±cy czasy dostêpu do portów"
+.SH ZOBACZ TAK¯E
+.BR login (1)
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.\" {PTM/WK/1999-09-15}
+.\" Copyright 1992 - 1993, 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: pw_auth.3,v 1.1 1999/09/16 07:11:23 wojtek2 Exp $
+.\"
+.TH PWAUTH 3
+.SH NAZWA
+pwauth \- procedury uwierzytelniania hase³ zdefiniowane przez administratora
+.SH SK£ADNIA
+.B #include <pwauth.h>
+.PP
+.B int pw_auth (char
+.I *command,
+.B char
+.I *user,
+.B int
+.I reason,
+.B char
+.IB *input) ;
+.SH OPIS
+.B pw_auth
+wywo³uje funkcje zdefiniowane przez administratora dla danego u¿ytkownika.
+.PP
+\fIcommand\fR jest nazw± programu uwierzytelniania (autentykacji).
+Jest ona otrzymywana z informacji zawartej pliku hase³ u¿ytkowników.
+Odpowiedni ³añcuch (z pola has³a) zawiera jedn± lub wiêcej, rozdzielonych
+¶rednikami, nazw plików wykonywalnych.
+Programy zostan± wykonane w zadanej kolejno¶ci.
+Dla ka¿dej z przyczyn (reason) podanych ni¿ej podane s± argumenty wiersza
+poleceñ.
+.PP
+\fIuser\fR jest nazw± sprawdzanego u¿ytkownika, w postaci podanej w pliku
+\fI/etc/passwd\fR.
+Pozycje opisuj±ce u¿ytkowników indeksowane s± nazw± u¿ytkownika.
+Pozwala to na istnienie powtarzaj±cych siê identyfikatorów (UID). Ka¿da
+z ró¿nych nazw u¿ytkownika o tym samym identyfikatorze mo¿e
+posiadaæ inny program i informacjê autentykuj±c±.
+.PP
+Ka¿da z dopuszczalnych przyczyn autentykacji obs³ugiwana jest w potencjalnie
+ró¿ny sposób.
+Do komunikacji z u¿ytkownikiem dostêpne s± standardowe deskryptory plików
+0, 1 i 2, chyba ¿e wspomniano inaczej.
+Do ustalenia to¿samo¶ci u¿ytkownika wykonuj±cego ¿±danie uwierzytelnienia
+mo¿e zostaæ u¿yty rzeczywisty identyfikator.
+Przyczyna (\fIreason\fR) jest jedn± z
+.IP \fBPW_SU\fR 1i
+Wykonaj uwierzytelnienie dla bie¿±cego rzeczywistego identyfikatora u¿ytkownika
+próbuj±c prze³±czyæ rzeczywisty ID na podanego u¿ytkownika.
+Program uwierzytelniaj±cy zostanie wywo³any z opcj± \fB-s\fR poprzedzaj±c±
+nazwê u¿ytkownika.
+.IP \fBPW_LOGIN\fR 1i
+Wykonaj uwierzytelnienie dla danego u¿ytkownika tworz±c now± sesjê pracy
+(loginow±). Program uwierzytelniaj±cy zostanie wywo³any z opcj± \fB-l\fR,
+po której wyst±pi nazwa u¿ytkownika.
+.IP \fBPW_ADD\fR 1i
+Utwórz nowy wpis dla danego u¿ytkownika.
+Pozwala to programowi uwierzytelniania na zainicjowanie miejsca dla nowego
+u¿ytkownika.
+Program zostanie wywo³any z opcj± \fB-a\fR, po której wyst±pi nazwa u¿ytkownika.
+.IP \fBPW_CHANGE\fR 1i
+Zmieñ istniej±cy wpis dla danego u¿ytkownika.
+Pozwala to na programowi uwierzytelniaj±cemu na zmianê informacji autentykuj±cej
+dla istniej±cego u¿ytkownika.
+Program zostanie wywo³any z opcj± \fB-c\fR poprzedzaj±c± nazwê u¿ytkownika.
+.IP \fBPW_DELETE\fR 1i
+Usuñ informacjê autentykuj±c± dla danego u¿ytkownika.
+Pozwala programowi uwierzytelniania na odzyskanie miejsca po u¿ytkowniku, który
+nie bêdzie ju¿ identyfikowany przy u¿yciu tego programu.
+Program uwierzytelniania zostanie wywo³any z opcj± \fB-d\fR,
+po której wyst±pi nazwa u¿ytkownika.
+.IP \fBPW_TELNET\fR 1i
+Wykonaj uwierzytelnianie u¿ytkownika pod³±czaj±cego siê do systemu przy pomocy
+polecenia \fBtelnet\fR.
+Program zostanie wywo³any z opcj± \fB-t\fR, po której wyst±pi nazwa u¿ytkownika.
+.IP \fBPW_RLOGIN\fR 1i
+Wykonaj uwierzytelnienie u¿ytkownika pod³±czaj±cego siê do systemu przy pomocy
+polecenia \fBrlogin\fR.
+Program zostanie wywo³any z opcj± \fB-r\fR, po której wyst±pi nazwa u¿ytkownika.
+.IP \fBPW_FTP\fR 1i
+Wykonaj uwierzytelnienie u¿ytkownika pod³±czaj±cego siê do systemu przy pomocy
+polecenia \fBftp\fR.
+Program uwierzytelniania zostanie wywo³any z opcj± \fB-f\fR,
+po której wyst±pi nazwa u¿ytkownika.
+Do komunikacji z u¿ytkownikiem NIE s± dostêpne standardowe deskryptory plików.
+Deskryptor standardowego wej¶cia zostanie pod³±czony do procesu macierzystego,
+za¶ pozosta³e dwa deskryptory plików dostan± pod³±czone do \fI/dev/null\fR.
+Funkcja \fBpw_auth\fR bêdzie potokowaæ pojedynczy wiersz danych do programu
+uwierzytelniania pos³uguj±c siê deskryptorem 0.
+.IP \fBPW_REXEC\fR 1i
+Wykonaj uwierzytelnienie u¿ytkownika pod³±czaj±cego siê do systemu przy pomocy
+polecenia \fIrexec\fR.
+Program zostanie wywo³any z opcj± \fB-x\fR, po której wyst±pi nazwa u¿ytkownika.
+Do komunikacji ze zdalnym u¿ytkownikiem NIE s± dostêpne standardowe
+deskryptory plików.
+Deskryptor standardowego wej¶cia zostanie pod³±czony do procesu macierzystego,
+za¶ pozosta³e dwa deskryptory plików dostan± pod³±czone do \fI/dev/null\fR.
+Funkcja \fBpw_auth\fR bêdzie potokowaæ pojedynczy wiersz danych do programu
+uwierzytelniania pos³uguj±c siê deskryptorem 0.
+.PP
+Ostatni argument stanowi dane autentykacji, u¿ywane przez
+.B PW_FTP
+oraz
+.B PW_REXEC
+Jest on traktowany jak pojedynczy wiersz tekstu potokowany do programu
+uwierzytelniaj±cego.
+Dla
+.B PW_CHANGE
+warto¶æ \fIinput\fR jest warto¶ci± poprzedniej nazwy u¿ytkownika,
+je¶li zmieniana jest nazwa.
+.SH PRZESTROGI
+Funkcja ta nie tworzy faktycznej sesji.
+Wskazuje jedynie, czy u¿ytkownik powinien otrzymaæ zezwolenie na jej
+utworzenie.
+.PP
+Obecnie opcje sieciowe nie s± jeszcze przetestowane.
+.SH DIAGNOSTYKA
+Funkcja \fBpw_auth\fR zwraca 0 je¶li program uwierzytelniania zakoñczy³
+dzia³anie z zerowym kodem powrotu, w przeciwnym wypadku warto¶æ niezerow±.
+.SH ZOBACZ TAK¯E
+.BR login (1),
+.BR passwd (1),
+.BR su (1),
+.BR useradd (8),
+.BR userdel (8),
+.BR usermod (8)
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.\" {PTM/WK/1999-09-15}
+.\" Copyright 1992, 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: pwauth.8,v 1.2 1999/09/25 20:07:47 wojtek2 Exp $
+.\"
+.TH PWAUTH 8
+.SH NAZWA
+pwauth \- definiowane przez administratora uwierzytelnianie hase³
+.SH OPIS
+Administrator systemu mo¿e zdefiniowaæ listê programów, jakie s± u¿ywane
+do potwierdzenia to¿samo¶ci u¿ytkownika.
+Programy te podawane s± zamiast informacji o zakodowanym ha¶le obecnej
+w pliku \fI/etc/passwd\fR albo \fI/etc/shadow\fR.
+Narzêdzia administruj±ce kontami u¿ytkowników sprawdzaj± pole zakodowanego
+has³a i stwierdzaj± czy u¿ytkownik posiada zdefiniowany przez administratora
+program uwierzytelniaj±cy (autentykuj±cy).
+Funkcja \fBpw_auth\fR zostanie wywo³ana ka¿dorazowo, gdy jeden z tych
+programów administracyjnych stwierdzi, ¿e zmieniany u¿ytkownik posiada
+zdefiniowane programy uwierzytelniania.
+.PP
+Pocz±tkowy wpis tworzony jest przez polecenie \fBuseradd\fR.
+Zmiany, takie jak zmiana informacji autentykuj±cej lub usuniêcie konta
+u¿ytkownika, spowoduj± wywo³anie funkcji \fBpw_auth\fR. Pozwala to
+na utrzymanie aktualno¶ci informacji dla ka¿dego konta.
+.PP
+Programy uwierzytelniaj±ce nie tworz± sesji pracy (loginowych) ani
+sesji sieciowych. Kod zakoñczenia programu uwierzytelniaj±cego jest
+wskazaniem czy akcja bêdzie dozwolona.
+Proces wo³aj±cy musi posiadaæ odpowiednie uprawnienia do samodzielnego
+utworzenia sesji pracy lub sesji sieciowej.
+.SH ZOBACZ TAK¯E
+.BR login (1),
+.BR passwd (1),
+.BR su (1),
+.BR useradd (8),
+.BR userdel (8),
+.BR usermod (8),
+.BR pw_auth (3)
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.\" {PTM/WK/1999-09-14}
+.\" Copyright 1992, 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: pwck.8,v 1.3 1999/09/25 20:07:47 wojtek2 Exp $
+.\"
+.TH PWCK 1
+.SH NAZWA
+pwck - weryfikacja spójno¶ci plików hase³
+.SH OPIS
+\fBpwck\fR [\fB-r\fR] [\fIpasswd\fR \fIshadow\fR]
+.SH OPIS
+\fBpwck\fR weryfikuje integralno¶æ informacji autentykacji systemowej.
+W plikach \fI/etc/passwd\fR i \fI/etc/shadow\fR sprawdzane s± wszystkie
+pozycje, by upewniæ siê, ¿e ka¿da z nich posiada w³a¶ciwy format
+i poprawne dane w ka¿dym z pól. U¿ytkownik monitowany jest o usuniêcie
+pozycji, które s± sformatowane niepoprawnie lub posiadaj± inne nie daj±ce
+siê skorygowaæ b³êdy.
+.P
+Kontrolowane jest czy ka¿da pozycja posiada
+.sp
+.in +.5i
+- w³a¶ciw± liczbê pól
+.br
+- unikaln± nazwê u¿ytkownika
+.br
+- poprawny identyfikator u¿ytkownika i grupy
+.br
+- poprawn± grupê g³ówn±
+.br
+- poprawny katalog domowy
+.br
+- poprawn± pow³okê zg³oszeniow± (startow±)
+.in -.5i
+.sp
+.P
+Kontrola w³a¶ciwej liczby pól i niepowtarzalnej nazwy u¿ytkownika jest
+decyduj±ca. Je¿eli pozycja posiada b³êdn± liczbê pól, to u¿ytkownik jest
+proszony o usuniêcie ca³ej pozycji (wiersza).
+Je¿eli u¿ytkownik nie potwierdzi decyzji o usuniêciu, to pomijane s± wszelkie
+dalsze sprawdzenia.
+Pozycja z powtórzon± nazw± u¿ytkownika powoduje monit o usuniêcie, ale nadal
+bêd± wykonywane pozosta³e sprawdzenia.
+Wszystkie inne b³êdy daj± ostrze¿enia a u¿ytkownik jest zachêcany
+do uruchomienia polecenia \fBusermod\fR, by je poprawiæ.
+.P
+Polecenia dzia³aj±ce na pliku \fI/etc/passwd\fR nie potrafi± zmieniaæ
+uszkodzonych lub powielonych pozycji. W takich okoliczno¶ciach powinien byæ
+u¿ywany \fBpwck\fR, by usun±æ nieprawid³ow± pozycjê.
+.SH OPCJE
+Domy¶lnie \fBpwck\fR dzia³a na plikach \fI/etc/passwd\fR oraz \fI/etc/shadow\fR.
+Przy pomocy parametrów \fIpasswd\fR i \fIshadow\fR u¿ytkownik mo¿e wybraæ inne
+pliki.
+Dodatkowo, u¿ytkownik mo¿e wykonaæ polecenie w trybie tylko-do-odczytu, poprzez
+podanie flagi \fB-r\fR.
+Powoduje to, ¿e na wszystkie pytania dotycz±ce zmian zostanie, bez ingerencji
+u¿ytkownika, u¿yta odpowied¼ \fBnie\fR.
+.SH PLIKI
+.IR /etc/passwd " - informacja o kontach u¿ytkowników"
+.br
+.IR /etc/shadow " - zakodowana informacja o has³ach"
+.br
+.IR /etc/group " - informacja o grupach"
+.SH ZOBACZ TAK¯E
+.BR usermod (8),
+.BR group (5),
+.BR passwd (5),
+.BR shadow (5)
+.SH DIAGNOSTYKA
+Polecenie \fBpwck\fR koñczy pracê z nastêpuj±cymi warto¶ciami kodów
+zakoñczenia:
+.IP 0 5
+Powodzenie
+.IP 1 5
+B³±d sk³adni
+.IP 2 5
+Jedna lub wiêcej z³ych pozycji pliku hase³
+.IP 3 5
+Niemo¿liwe otwarcie plików hase³
+.IP 4 5
+Niemo¿liwa blokada plików hase³
+.IP 5 5
+Niemo¿liwa aktualizacja plików hase³
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.\" {PTM/WK/1999-09-14}
+.\" $Id: pwconv.8,v 1.1 1999/09/14 18:41:35 wojtek2 Exp $
+.TH PWCONV 8 "26 wrze¶nia 1997"
+.SH NAZWA
+pwconv, pwunconv, grpconv, grpunconv - konwersja dot. chronionych plików hase³ i grup
+.SH SK£ADNIA
+.B pwconv
+.br
+.B pwunconv
+.br
+.B grpconv
+.br
+.B grpunconv
+.SH OPIS
+Wszystkie te cztery programy dzia³aj± na zwyk³ych i dodatkowych (shadow)
+plikach hase³ i grup:
+.IR /etc/passwd ", " /etc/group ", " /etc/shadow " i " /etc/gshadow .
+
+.B pwconv
+.RI "tworzy " shadow " z " passwd " i opcjonalnie istniej±cego " shadow .
+.B pwunconv
+.RI "tworzy " passwd " z " passwd " i " shadow " a nastêpnie usuwa " shadow .
+.B grpconv
+.RI "tworzy " gshadow " z " group " i opcjonalnie istniej±cego " gshadow .
+.B grpunconv
+.RI "tworzy " group " z " group " i " gshadow " a nastêpnie usuwa " gshadow .
+
+Ka¿dy z programów zdobywa niezbêdne blokady przed konwersj±.
+
+.BR pwconv " i " grpconv
+s± podobne. Po pierwsze, z pliku dodatkowego usuwane s± pozycje, które
+nie istniej± w pliku g³ównym. Nastêpnie, w pliku dodatkowym aktualizowane s±
+pozycje nie posiadaj±ce 'x' jako has³a w pliku g³ównym. Dodawane s± pozycje
+brakuj±ce w stosunku do pliku g³ównego. Na koniec, has³a w pliku g³ównym
+zastêpowane s± przez 'x'. Programy te mog± s³u¿yæ zarówno do pocz±tkowej
+konwersji jak i do aktualizacji dodatkowego pliku hase³ je¶li plik g³ówny
+zmieniany by³ rêcznie.
+
+Przy dodawaniu nowych wpisów do
+.IR /etc/shadow
+.B pwconv
+u¿yje warto¶ci
+.BR PASS_MIN_DAYS ", " PASS_MAX_DAYS " i " PASS_WARN_AGE
+z pliku
+.IR /etc/login.defs .
+
+.RB "Podobnie, " pwunconv " oraz " grpunconv
+s± zbli¿one. Has³a w pliku g³ównym aktualizowane s± na podstawie pliku
+dodatkowego (shadow). Wpisy istniej±ce w pliku g³ównym, a nie posiadaj±ce
+odpowiedników w dodatkowym s± pozostawiane bez zmian. Na koniec usuwany
+jest plik dodatkowy.
+
+Czê¶æ informacji o wa¿no¶ci hase³ jest tracona przez
+.BR pwunconv .
+Przeprowadza on konwersjê tego, co potrafi.
+.SH B£ÊDY
+B³êdy w plikach hase³ czy grup (takie jak nieprawid³owe czy powtórzone
+pozycje) mog± spowodowaæ zapêtlenie siê omawianych programów lub ró¿nego
+rodzaju inne b³êdne zachowanie. Przed konwersj± na lub z dodatkowych plików
+hase³ lub grup proszê uruchomiæ \fBpwck\fR i \fBgrpck\fR, by poprawiæ tego
+rodzaju b³êdy.
+.SH ZOBACZ TAK¯E
+.BR login.defs (5),
+.BR pwck (8),
+.BR grpck (8),
+.BR shadowconfig (8)
--- /dev/null
+.\" {PTM/WK/1999-09-16}
+.\" Copyright 1989 - 1993, 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: shadow.3,v 1.2 1999/09/25 20:07:47 wojtek2 Exp $
+.\"
+.TH SHADOW 3
+.SH NAZWA
+shadow \- procedury zakodowanego pliku hase³
+.SH SK£ADNIA
+.B #include <shadow.h>
+.PP
+.B struct spwd *getspent();
+.PP
+.B struct spwd *getspnam(char
+.IB *name );
+.PP
+.B void setspent();
+.PP
+.B void endspent();
+.PP
+.B struct spwd *fgetspent(FILE
+.IB *fp );
+.PP
+.B struct spwd *sgetspent(char
+.IB *cp );
+.PP
+.B int putspent(struct spwd
+.I *p,
+.B FILE
+.IB *fp );
+.PP
+.B int lckpwdf();
+.PP
+.B int ulckpwdf();
+.SH OPIS
+.I shadow
+operuje na zawarto¶ci dodatkowego pliku hase³ (shadow) \fI/etc/shadow\fR.
+Plik \fI#include\fR opisuje strukturê
+.sp
+struct spwd {
+.in +.4i
+.br
+char *sp_namp; /* nazwa u¿ytkownika (login) */
+.br
+char *sp_pwdp; /* zakodowane has³o */
+.br
+long sp_lstchg; /* ostatnia zmiana has³a */
+.br
+int sp_min; /* dni do dozwolonej zmiany */
+.br
+int sp_max; /* dni przed wymagan± zmian± */
+.br
+int sp_warn; /* dni ostrze¿enia o wyga¶niêciu */
+.br
+int sp_inact; /* dni przed wy³±czeniem konta */
+.br
+int sp_expire; /* data wa¿no¶ci konta */
+.br
+int sp_flag; /* zarezerwowane do przysz³ego u¿ytku */
+.br
+.in -.5i
+}
+.PP
+Znaczenie poszczególnych pól:
+.sp
+sp_namp \- wska¼nik do zakoñczonej przez nul nazwy u¿ytkownika.
+.br
+sp_pwdp \- wska¼nik do zakoñczonego nul has³a.
+.br
+sp_lstchg \- dni od 1 stycznia 1970; data ostatniej zmiany has³a.
+.br
+sp_min \- dni, przed up³ywem których has³o nie mo¿e byæ zmienione.
+.br
+sp_max \- dni, po których has³o musi byæ zmienione.
+.br
+sp_warn \- dni przed dat± up³ywu wa¿no¶ci has³a, od których
+u¿ytkownik jest ostrzegany od nadchodz±cym terminie wa¿no¶ci.
+.br
+sp_inact \- dni po up³yniêciu wa¿no¶ci konta, po których konto jest
+uwa¿ane za nieaktywne i wy³±czane.
+.br
+sp_expire \- dni od 1 stycznia 1970, data gdy konto zostanie
+wy³±czone.
+.br
+sp_flag \- zarezerwowane do przysz³ego u¿ytku.
+.SH OPIS
+\fBgetspent\fR, \fBgetspname\fR, \fBfgetspent\fR i \fBsgetspent\fR
+zwracaj± wska¼nik do \fBstruct spwd\fR.
+\fBgetspent\fR zwraca nastêpn± pozycjê w pliku, za¶ \fBfgetspent\fR
+nastêpn± pozycjê z podanego strumienia. Zak³ada siê, ¿e strumieñ
+ten jest plikiem o poprawnym formacie.
+\fBsgetspent\fR zwraca wska¼nik do \fBstruct spwd\fR u¿ywaj±c jako
+wej¶cia dostarczonego ³añcucha.
+\fBgetspnam\fR wyszukuje od bie¿±cej pozycji w pliku pozycji pasuj±cej
+do \fBname\fR.
+.PP
+\fBsetspent\fR i \fBendspent\fR mog± zostaæ u¿yte do odpowiednio,
+rozpoczêcia i zakoñczenia dostêpu do chronionego pliku hase³ (shadow).
+.PP
+Do zapewnienia wy³±cznego dostêpu do pliku \fI/etc/shadow\fR powinny
+byæ u¿ywane procedury \fBlckpwdf\fR i \fBulckpwdf\fR.
+\fBlckpwdf\fR przez 15 sekund usi³uje uzyskaæ blokadê przy pomocy
+\fBpw_lock\fR.
+Kontynuuje próbê uzyskania drugiej blokady przy pomocy \fBspw_lock\fR
+przez czas pozosta³y z pocz±tkowych 15 sekund.
+Je¿eli po up³ywie 15 sekund którakolwiek z tych prób zawiedzie,
+to \fBlckpwdf\fR zwraca -1.
+Je¿eli uzyskano obie blokady, to zwracane jest 0.
+.SH DIAGNOSTYKA
+Je¿eli nie ma dalszych pozycji lub podczas przetwarzania pojawi siê b³±d,
+to procedury zwracaj± NULL.
+Procedury zwracaj±ce warto¶æ typu \fBint\fR zwracaj± 0 w przypadku powodzenia
+a -1 dla pora¿ki.
+.SH PRZESTROGI
+Procedury te mog± byæ u¿ywane wy³±cznie przez superu¿ytkownika, gdy¿ dostêp
+do dodatkowego, chronionego pliku hase³ jest ograniczony.
+.SH PLIKI
+.IR /etc/shadow " - zakodowane has³a u¿ytkowników"
+.SH ZOBACZ TAK¯E
+.BR getpwent (3),
+.BR shadow (5)
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
--- /dev/null
+.\" 1999 PTM Przemek Borys
+.\" Copyright 1989 - 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.
+.\"
+.\" $Id: shadow.5,v 1.3 1999/09/20 20:56:42 wojtek2 Exp $
+.\"
+.TH SHADOW 5
+.SH NAZWA
+shadow \- zakodowany plik z has³ami
+.SH OPIS
+.I shadow
+zawiera zakodowane dane o has³ach dla kont u¿ytkowników oraz opcjonalne
+informacje o wieku (aging) has³a.
+Zawarte s± w nim
+.IP "" .5i
+Nazwa u¿ytkownika (nazwa logowania)
+.IP "" .5i
+Zakodowane has³o
+.IP "" .5i
+Dni, licz±c od 1 stycznia 1970, kiedy has³o by³o ostatni raz zmienione
+.IP "" .5i
+Dni przed których up³yniêciem niemo¿liwa jest zmiany has³a
+.IP "" .5i
+Dni, po których up³yniêciu konieczna jest zmiana has³a
+.IP "" .5i
+Ilo¶æ dni, jaka musi dzieliæ has³o od przedawnienia, by u¿ytkownik by³
+ostrzegany
+.IP "" .5i
+Ilo¶æ dni po przedawnieniu has³a, po których konto jest wy³±czane
+.IP "" .5i
+Dni od 1 stycznia 1970, okre¶laj±ce datê, kiedy konto jest wy³±czane
+.IP "" .5i
+Pole zarezerwowane
+.PP
+Pole has³a musi byæ wype³nione. Zakodowane has³o sk³ada siê z 13-24 znaków z
+64 znakowego alfabetu a-z, A-Z, 0-9, \. i /.
+Dla szczegó³ów interpretacji tego napisu, odsy³amy do \fIcrypt(3)\fR.
+.PP
+Data ostatniej zmiany has³a jest podawana jako liczba dni od 1 stycznia
+1970. Has³a nie mog± byæ zmieniane przed up³ywem odpowiedniej ilo¶ci dni, a
+musz± byæ zmieniane po up³ywie maksymalnej ilo¶ci dni.
+Je¶li minimalna liczba dni jest wiêksza od maksymalnej, has³o nie mo¿e byæ
+przez u¿ytkownika zmienione.
+.PP
+Je¶li has³o pozostaje niezmienione po up³ywie jego wa¿no¶ci, to konto jest
+uwa¿ane za nieaktywne i zostanie wy³±czone po ustalonej liczbie dni
+nieaktywno¶ci. Konto zostanie równie¿ wy³±czone w zadanym dniu wa¿no¶ci
+konta bez wzglêdu na informacjê o terminie wa¿no¶ci has³a.
+.PP
+Informacja w pliku \fIshadow\fR zastêpuje wszelkie has³a lub dane o ich
+wieku znajduj±ce siê w \fI/etc/passwd\fR.
+.PP
+Je¶li ma byæ utrzymywane bezpieczeñstwo hase³, to plik ten nie mo¿e byæ
+odczytywalny dla zwyk³ych u¿ytkowników.
+.SH Pliki
+.IR /etc/passwd " - informacje o kontach u¿ytkowników"
+.br
+.IR /etc/shadow " - zakodowane has³a u¿ytkowników"
+.SH ZOBACZ TAK¯E
+chage(1),
+login(1),
+passwd(1),
+su(1),
+sulogin(1M),
+shadow(3),
+passwd(5),
+pwconv(8),
+pwunconv(8)
--- /dev/null
+.\" {PTM/WK/1999-09-14}
+.\" $Id: shadowconfig.8,v 1.1 1999/09/14 18:41:35 wojtek2 Exp $
+.TH SHADOWCONFIG 8 "19 kwietnia 1997" "Debian GNU/Linux"
+.SH NAZWA
+shadowconfig - prze³±cza ochronê hase³ i grup przez pliki shadow
+.SH SK£ADNIA
+.B "shadowconfig"
+.IR on " | " off
+.SH OPIS
+.PP
+.B shadowconfig on
+w³±cza ochronê hase³ i grup przez dodatkowe, przes³aniane pliki (shadow);
+.B shadowconfig off
+wy³±cza dodatkowe pliki hase³ i grup.
+.B shadowconfig
+wy¶wietla komunikat o b³êdzie i koñczy pracê z niezerowym kodem je¶li
+znajdzie co¶ nieprawid³owego. W takim wypadku powiniene¶ poprawiæ b³±d
+.\" if it finds anything awry.
+i uruchomiæ program ponownie.
+
+W³±czenie ochrony hase³, gdy jest ona ju¿ w³±czona lub jej wy³±czenie,
+gdy jest wy³±czona jest nieszkodliwe.
+
+Przeczytaj
+.IR /usr/doc/passwd/README.debian.gz ,
+gdzie znajdziesz krótkie wprowadzenie do ochrony hase³ z u¿yciem dodatkowych
+plików hase³ przes³anianych (shadow passwords) i zwi±zanych tematów.
--- /dev/null
+.\" {PTM/WK/1999-09-25}
+.\" Copyright 1989 - 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 SU 1
+.SH NAZWA
+su \- zmieñ ID u¿ytkownika lub stañ siê superu¿ytkownikiem
+.SH SK£ADNIA
+.BR su " [" - ]
+.RI [ nazwa_u¿ytkownika " [" argumenty ]]
+.SH OPIS
+.B su
+s³u¿y do stawania siê innym u¿ytkownikiem w trakcie w³asnej sesji pracy.
+Wywo³anie bez parametru - nazwy u¿ytkownika, domy¶lnie oznacza dla \fBsu\fR
+próbê stania siê superu¿ytkownikiem.
+Opcjonalnym argumentem \fB\-\fR mo¿na pos³u¿yæ siê do zasymulowania
+rzeczywistego rozpoczynania sesji pracy. Pozwala to na utworzenie ¶rodowiska
+u¿ytkownika. podobnego do tego, jakie wystêpuje przy bezpo¶rednim zg³oszeniu
+u¿ytkownika w systemie.
+.PP
+Po nazwie u¿ytkownika mog± wyst±piæ dodatkowe argumenty. Zostan± one
+dostarczone pow³oce zg³oszeniowej u¿ytkownika. W szczególno¶ci, argument
+\fB-c\fR spowoduje, ¿e nastêpny argument zostanie potraktowany jak polecenie
+przez wiêkszo¶æ interpretatorów poleceñ.
+.\" Polecenie zostanie wykonane przez pow³okê podan± w
+.\" \fB$SHELL\fR, albo je¶li jej nie zdefiniowano, przez podan± w
+.\" \fI/etc/passwd\fR.
+.\" XXX - powy¿sze nie by³o ca³kiem poprawne. --marekm
+Polecenie zostanie wykonane przez pow³okê wymienion± w \fI/etc/passwd\fR dla
+docelowego u¿ytkownika.
+.PP
+U¿ytkownik pytany jest o odpowiednie has³o, je¶li takowe istnieje.
+B³êdne has³a powoduj± komunikat o b³êdzie. Wszystkie próby, udane i nieudane,
+s± rejestrowane do celów wykrywania nadu¿yæ systemu.
+.PP
+Do nowej pow³oki przekazywane jest bie¿±ce ¶rodowisko.
+Warto¶æ \fB$PATH\fR dla zwyk³ych u¿ytkowników ustawiana jest jest na
+\fB/bin:/usr/bin\fR, za¶ dla superu¿ytkownika
+na \fB/sbin:/bin:/usr/sbin:/usr/bin\fR.
+Mo¿na to zmieniæ przy pomocy definicji \fBENV_PATH\fR i \fBENV_SUPATH\fR
+w \fI/etc/login.defs\fR.
+.SH PRZESTROGI
+.PP
+Niniejsza wersja \fBsu\fR posiada wiele opcji kompilacji, z których tylko
+czê¶æ bêdzie mieæ zastosowanie w danej instalacji.
+.SH PLIKI
+.IR /etc/passwd " - informacja o kontach u¿ytkowników"
+.br
+.IR /etc/shadow " - zakodowane has³a i informacja o ich wa¿no¶ci"
+.br
+.IR $HOME/.profile " - plik startowy dla domy¶lnej pow³oki"
+.SH ZOBACZ TAK¯E
+.BR login (1),
+.BR sh (1),
+.BR suauth (5),
+.BR login.defs (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.
--- /dev/null
+.\" {PTM/WK/1999-09-14}
+.TH SUAUTH 5 "14 lutego 1996"
+.UC 5
+.SH NAZWA
+suauth - plik szczegó³owej kontroli su
+.\" detailed su control file
+.SH SK£ADNIA
+.B /etc/suauth
+.SH OPIS
+Plik
+.I /etc/suauth
+przeszukiwany jest przy ka¿dym wywo³aniu polecenia su. Mo¿e on zmieniaæ
+zachowanie siê polecenia su, w oparciu o
+.PP
+.RS
+.nf
+1) u¿ytkownika, na którego konto wykonywane jest su
+.fi
+2) u¿ytkownika wykonuj±cego polecenie su (lub dowoln± z grup, której mo¿e
+on byæ cz³onkiem)
+.RE
+.PP
+Plik sformatowany jest jak poni¿ej. Wiersze rozpoczynaj±ce siê od # s±
+traktowane jak wiersze komentarza i ignorowane.
+.PP
+.RS
+na-ID:z-ID:AKCJA
+.RE
+.PP
+Gdzie na-ID jest albo s³owem
+.B ALL
+(wszyscy), albo list± nazw u¿ytkowników rozdzielonych "," albo te¿ s³owami
+.B ALL EXCEPT
+(wszyscy oprócz), po których nastêpuje lista nazw u¿ytkowników
+rozdzielonych przecinkiem.
+.PP
+z-ID jest formatowane w taki sam sposób jak na-ID, z wyj±tkiem tego, ¿e
+rozpoznawane jest dodatkowe s³owo
+.BR GROUP.
+Zapis
+.B ALL EXCEPT GROUP
+(wszyscy za wyj±tkiem grupy) jest równie¿ ca³kowicie poprawny.
+Po s³owie
+.B GROUP
+powinna wyst±piæ jedna lub wiêcej rozdzielonych przecinkiem nazw grup.
+Niewystarczaj±ce jest podanie g³ównego ID danej grupy - niezbêdny jest
+wpis w
+.BR /etc/group (5).
+.PP
+Akcja mo¿e byæ tylko jedn± z obecnie obs³ugiwanych opcji:
+.TP 10
+.B DENY
+(zakaz) Próba wykonania su jest zatrzymywana jeszcze przed pytaniem o has³o.
+.TP 10
+.B NOPASS
+(bez has³a) Próba wykonania su jest automatycznie pomy¶lna; brak pytania
+o has³o.
+.TP 10
+.B OWNPASS
+(w³asne has³o) U¿ytkownik wywo³uj±cy su musi wprowadziæ w³asne has³o, by
+polecenie zosta³o pomy¶lnie wykonane. Jest on powiadamiany o konieczno¶ci
+podania w³asnego has³a.
+.PP
+Zauwa¿, ¿e istniej± trzy odrêbne pola rozdzielone dwukropkiem. Bia³e znaki
+wokó³ dwukropka nie s± dozwolone. Zauwa¿ te¿, ¿e plik analizowany jest
+sekwencyjnie, wiersz po wierszu, i stosowana jest pierwsza pasuj±ca regu³a
+bez analizy reszty pliku. Umo¿liwia to administratorowi systemu precyzyjn±
+kontrolê wed³ug w³asnych upodobañ.
+.SH PRZYK£AD
+.PP
+.nf
+# przyk³adowy plik /etc/suauth
+#
+# para uprzywilejowanych u¿ytkowników
+# mo¿e wykonaæ su na konto root
+# przy pomocy w³asnych hase³
+#
+root:chris,birddog:OWNPASS
+#
+# Nikt inny nie mo¿e wykonaæ su na konto root,
+# chyba ¿e jest cz³onkiem grupy wheel.
+# Tak to robi BSD.
+#
+root:ALL EXCEPT GROUP wheel:DENY
+#
+# Byæ mo¿e terry i birddog s± kontami,
+# których u¿ywa ta sama osoba.
+# Mo¿na zrobiæ wzajemny dostêp
+# pomiêdzy nimi bez hase³.
+#
+terry:birddog:NOPASS
+birddog:terry:NOPASS
+#
+.fi
+.SH PLIKI
+.I /etc/suauth
+.SH B£ÊDY
+Mo¿e byæ sporo ukrytych. Analizator pliku jest szczególnie wra¿liwy
+na b³êdy sk³adniowe. Zak³ada on, ¿e nie bêdzie zbêdnych bia³ych znaków
+(za wyj±tkiem pocz±tków i koñców wierszy), a ró¿ne elementy bêd± separowane
+konkretnym znakiem ogranicznika.
+.SH DIAGNOSTYKA
+B³±d analizy pliku zg³aszany jest przy u¿yciu
+.BR syslogd (8)
+jako zagro¿enie o poziomie ERR (b³±d) w podsystemie AUTH (identyfikacji
+u¿ytkownika przy zg³oszeniu).
+.\" as level ERR on facility AUTH.
+.SH ZOBACZ TAK¯E
+.BR su (1)
+.SH AUTOR
+.nf
+Chris Evans (lady0110@sable.ox.ac.uk)
+Lady Margaret Hall
+Oxford University
+England
--- /dev/null
+.\" {PTM/WK/1999-09-14}
+.\" Copyright 1989 - 1992, 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: sulogin.8,v 1.3 1999/09/25 20:07:47 wojtek2 Exp $
+.\"
+.TH SULOGIN 8
+.SH NAZWA
+sulogin - login w trybie jednou¿ytkownikowym
+.SH SK£ADNIA
+\fBsulogin\fR [\fIurz±dzenie-tty\fR]
+.SH OPIS
+.B sulogin
+wywo³ywane jest przez \fBinit\fR przed zezwoleniem u¿ytkownikowi
+na dostêp do systemu w trybie jednou¿ytkownikowym (single user mode).
+Funkcja ta mo¿e byæ dostêpna tylko w niektórych systemach, w których
+odpowiednio zmieniono \fBinit\fR lub plik \fB/etc/inittab\fR posiada
+pozycjê dla logowania siê w trybie jednou¿ytkownikowym.
+.PP
+Wy¶wietlany jest symbol zachêty
+.IP "" .5i
+Type control-d to proceed with normal startup,
+.br
+(or give root password for system maintenance):
+.br
+Naci¶nij control-d by kontynuowaæ zwyk³y start,
+.br
+(lub podaj has³o u¿ytkownika root do konserwacji systemu):
+.PP
+Wej¶cie i wyj¶cie bêd± obs³ugiwane przy u¿yciu standardowych deskryptorów
+plików, chyba ¿e u¿yto opcjonalnego argumentu - nazwy urz±dzenia.
+.PP
+Je¶li u¿ytkownik wprowadzi poprawne has³o superu¿ytkownika root,
+to rozpoczynana jest sesja pracy na koncie root.
+Je¿eli natomiast naci¶niêto \fBEOF\fR, to system przechodzi
+do wielou¿ytkownikowego trybu pracy.
+.PP
+Po opuszczeniu przez u¿ytkownika pow³oki przypisanej do
+jednou¿ytkownikowego trybu pracy lub po naci¶niêciu \fBEOF\fR, system
+wykonuje proces inicjacji wymagany do przej¶cia w tryb wielou¿ytkownikowy.
+.SH OSTRZE¯ENIA
+.PP
+Polecenie to mo¿e byæ u¿ywane wy³±cznie wtedy, gdy \fBinit\fR zosta³ zmieniony
+tak, by wywo³ywaæ \fBsulogin\fR zamiast \fB/bin/sh\fR,
+albo gdy u¿ytkownik skonfigurowa³ plik \fIinittab\fR tak, by obs³ugiwa³
+logowanie w trybie jednou¿ytkownikowym.
+Na przyk³ad, wiersz
+.br
+.sp 1
+co:s:respawn:/etc/sulogin /dev/console
+.br
+.sp 1
+powinien wykonaæ polecenie sulogin w trybie jednou¿ytkownikowym.
+.PP
+Na ile jest to mo¿liwe, tworzone jest pe³ne ¶rodowisko.
+Jednak¿e w efekcie mog± nie byæ do³±czone czy zainicjowane ró¿ne
+urz±dzenia, za¶ wiele poleceñ u¿ytkownika mo¿e byæ niedostêpnych lub
+nie funkcjonowaæ.
+.SH PLIKI
+.IR /etc/passwd " - informacja o kontach u¿ytkowników"
+.br
+.IR /etc/shadow " - zakodowane has³a i informacja o ich wa¿no¶ci"
+.br
+.IR /.profile " - skrypt startowy dla pow³oki trybu jednou¿ytkownikowego"
+.SH ZOBACZ TAK¯E
+.BR login (1),
+.BR init (8),
+.BR sh (1)
+.SH AUTOR
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: porttime.5,v 1.4 1998/12/28 20:35:20 marekm Exp $
+.\" $Id: porttime.5,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH PORTTIME 5
.SH NAME
.SH SEE ALSO
.BR login (1)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: pw_auth.3,v 1.4 1998/12/28 20:35:21 marekm Exp $
+.\" $Id: pw_auth.3,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH PWAUTH 3
.SH NAME
.BR userdel (8),
usermod(8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: pwauth.8,v 1.4 1998/12/28 20:35:22 marekm Exp $
+.\" $Id: pwauth.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH PWAUTH 8
.SH NAME
.BR usermod (8),
.BR pw_auth (3)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: pwck.8,v 1.4 1998/12/28 20:35:23 marekm Exp $
+.\" $Id: pwck.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH PWCK 1
.SH NAME
.IP 5 5
Cannot update password files
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: shadow.3,v 1.4 1998/12/28 20:35:24 marekm Exp $
+.\" $Id: shadow.3,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH SHADOW 3
.SH NAME
.BR getpwent (3),
.BR shadow (5)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: shadow.5,v 1.4 1998/12/28 20:35:25 marekm Exp $
+.\" $Id: shadow.5,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH SHADOW 5
.SH NAME
.BR pwconv (8),
.BR pwunconv (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: su.1,v 1.5 1998/12/28 20:35:26 marekm Exp $
+.\" $Id: su.1,v 1.6 2000/08/26 18:27:17 marekm Exp $
.\"
.TH SU 1
.SH NAME
\fB/sbin:/bin:/usr/sbin:/usr/bin\fR for the super user. This may be
changed with the \fBENV_PATH\fR and \fBENV_SUPATH\fR definitions in
\fI/etc/login.defs\fR.
+.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 CAVEATS
.PP
This version of \fBsu\fR has many compilation options, only some of which
.BR suauth (5),
.BR login.defs (5)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: sulogin.8,v 1.4 1998/12/28 20:35:27 marekm Exp $
+.\" $Id: sulogin.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH SULOGIN 8
.SH NAME
.BR init (8),
.BR sh (1)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: useradd.8,v 1.6 1999/03/07 19:14:47 marekm Exp $
+.\" $Id: useradd.8,v 1.7 2000/08/26 18:27:17 marekm Exp $
.\"
.TH USERADD 8
.SH NAME
.BR userdel (8),
.BR usermod (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: userdel.8,v 1.4 1998/12/28 20:35:29 marekm Exp $
+.\" $Id: userdel.8,v 1.5 2000/08/26 18:27:17 marekm Exp $
.\"
.TH USERDEL 8
.SH NAME
The named user must exist.
.IP \fB-r\fR
Files in the user's home directory will be removed along with the
-home directory itself.
-Files located in other file system will have to be searched for
+home directory itself and the user's mail spool.
+Files located in other file systems will have to be searched for
and deleted manually.
.SH FILES
/etc/passwd \- user account information
.BR useradd (8),
.BR usermod (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.\" $Id: usermod.8,v 1.6 1999/03/07 19:14:48 marekm Exp $
+.\" $Id: usermod.8,v 1.7 2000/08/26 18:27:17 marekm Exp $
.\"
.TH USERMOD 8
.SH NAME
.BR useradd (8),
.BR userdel (8)
.SH AUTHOR
-Julianne Frances Haugh (jfh@bga.com)
+Julianne Frances Haugh (jfh@austin.ibm.com)
# Created: 1993-05-16
# Public domain
-# $Id: mkinstalldirs,v 1.3 1998/01/29 23:22:23 marekm Exp $
+# $Id: mkinstalldirs,v 1.13 1999/01/05 03:18:55 bje Exp $
errstatus=0
esac
if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp" 1>&2
+ echo "mkdir $pathcomp"
mkdir "$pathcomp" || lasterr=$?
+++ /dev/null
-# This is a dummy Makefile.am to get automake work flawlessly,
-# and also cooperate to make a distribution for `make dist'
-
-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
+++ /dev/null
-#
-# Copyright 1988 - 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.
-#
-# %W% %U% - Shadow password system (Linux)
-#
-# $Id: Makefile.linux,v 1.2 1997/05/01 23:11:54 marekm Exp $
-#
-SHELL = /bin/sh
-
-#
-# Set this flag to decide what level of code "get" returns.
-# The base USENET release was release 1. It is no longer supported.
-# The version with the utilities added was release 2. It is now unsupported.
-# The version with database-like file access is release 3.
-RELEASE = 3
-VERSION = ver3.3.2
-GFLAGS = -n $(VERSION)
-GET = get_file
-
-# Define the directory login is copied to. Linux uses /bin.
-LOGINDIR = /bin
-
-# Define any special libraries required to access the directory routines.
-# Linux does not use any special libraries.
-NDIR =
-
-# Define some stuff for Cracklib. This assumes that libcracklib.a is
-# in a system directory.
-# Add -DPWC_HIST to check password history using TS&SzS cracklib
-# CRACKDEF='-DUSE_CRACKLIB'
-# CRACKLIB=-lcrack
-
-# Pick your favorite C compiler and tags command
-CC = gcc
-TAGS = ctags
-
-# OS. This is Linux.
-OS = -DUSG -DLINUX
-
-# Do you have to do ranlib (probably SUN, BSD and XENIX)?
-RANLIB = ranlib
-# RANLIB = echo
-
-# Configuration Flags
-#
-# DEST_INCLUDE_DIR - local include files
-# LIBS - system libraries
-# -lsocket - needed for TCP/IP and possibly SYSLOG
-# -ldbm or -lndbm - needed for DBM support
-# -lcrypt - needed for SCO crypt() functions
-# CFLAGS - C compiler flags
-# -DLAI_TCP - needed for SCO Xenix Lachman TCP/IP
-
-prefix=/
-exec_prefix=$(prefix)
-bindir=$(exec_prefix)/bin
-sbindir=$(exec_prefix)/sbin
-usrbindir=$(exec_prefix)/usr/bin
-usrsbindir=$(exec_prefix)/usr/sbin
-includedir=$(prefix)/usr/include
-libdir=$(prefix)/usr/lib
-mandir=$(prefix)/usr/man
-man1dir=$(mandir)/man1
-man3dir=$(mandir)/man3
-man4dir=$(mandir)/man4
-man5dir=$(mandir)/man5
-man8dir=$(mandir)/man8
-
-login_perms=-m755
-# If you need "exec login", comment out the above line and uncomment below
-#login_perms=-m4755
-
-#DEST_INCLUDE_DIR = /usr/local/include
-DEST_INCLUDE_DIR = $(includedir)
-
-# Dirty hack to avoid name collisions (programs linked with libshadow
-# could have their own xmalloc/xstrdup, these names are quite common).
-# Don't look. --marekm
-#HACK = -Dxmalloc=libshadow_xmalloc -Dxstrdup=libshadow_xstrdup
-# Flags for Linux
-CFLAGS = -O2 -fomit-frame-pointer -Wall $(CRACKDEF) $(OS) $(HACK)
-LIBS = #-ldbm #-lskey
-#LIBSHADOW = libshadow.a
-LIBSHADOW = shlib/libshadow.so
-STATIC = -static
-LDFLAGS = -s
-LTFLAGS =
-
-# Where the login.defs file will be copied. Must agree with config.h
-DEST_LOGIN_DEFS = /etc/login.defs
-
-# Rules for .L (lint) files.
-.SUFFIXES: .L
-LINT = lint
-LINTFLAGS = $(OS) -Dlint
-
-.c.L:
- $(LINT) -pxu $(LINTFLAGS) $*.c > $*.L
-
-LOBJS = lmain.o login.o env.o valid.o setup.o shell.o age.o \
- utmp.o sub.o mail.o motd.o log.o ttytype.o failure.o \
- tz.o console.o hushed.o login_access.o setugid.o \
- chowntty.o ulimit.o
-
-LSRCS = lmain.c login.c env.c valid.c setup.c shell.c age.c \
- utmp.c sub.c mail.c motd.c log.c ttytype.c failure.c \
- tz.c console.c hushed.c login_access.c setugid.c \
- chowntty.c ulimit.c
-
-SOBJS = smain.o env.o entry.o setup.o shell.o \
- sub.o mail.o motd.o sulog.o age.o tz.o hushed.o setugid.o \
- suauth.o console.o ulimit.o
-
-SSRCS = smain.c env.c entry.c setup.c shell.c \
- pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
- tz.c hushed.c setugid.c suauth.c console.c ulimit.c
-
-POBJS = passwd.o obscure.o ulimit.o
-PSRCS = passwd.c obscure.c ulimit.c
-
-GPSRCS = gpmain.c
-
-GPOBJS = gpmain.o
-
-PWOBJS = pwconv.o
-
-PWSRCS = pwconv.c pwent.c shadow.c pwpack.c rad64.c
-
-PWUNOBJS = pwunconv.o
-
-PWUNSRCS = pwunconv.c pwent.c shadow.c pwpack.c rad64.c
-
-SULOGOBJS = sulogin.o entry.o env.o age.o setup.o \
- valid.o shell.o tz.o setugid.o ulimit.o
-
-SULOGSRCS = sulogin.c entry.c env.c age.c pwent.c setup.c \
- shadow.c shell.c valid.c pwpack.c tz.c setugid.c ulimit.c
-
-MKPWDOBJS = mkpasswd.o
-
-MKPWDSRCS = mkpasswd.c
-
-NGSRCS = newgrp.c env.c shell.c
-
-NGOBJS = newgrp.o env.o shell.o
-
-CHFNSRCS = chfn.c fields.c ulimit.c
-CHFNOBJS = chfn.o fields.o ulimit.o
-CHSHSRCS = chsh.c fields.c ulimit.c
-CHSHOBJS = chsh.o fields.o ulimit.o
-CHAGEOBJS = chage.o fields.o
-CHAGESRCS = chage.c fields.c
-CHPASSOBJS = chpasswd.o
-CHPASSSRCS = chpasswd.c
-DPSRCS = dpmain.c
-DPOBJS = dpmain.o
-
-ALLSRCS = age.c dialchk.c dialup.c entry.c env.c lmain.c log.c login.c mail.c \
- motd.c obscure.c passwd.c pwconv.c pwent.c pwunconv.c getpass.c \
- setup.c shadow.c shell.c smain.c sub.c sulog.c sulogin.c ttytype.c \
- utmp.c valid.c port.c newgrp.c gpmain.c grent.c mkpasswd.c pwpack.c \
- chfn.c chsh.c chage.c rad64.c encrypt.c chpasswd.c shadowio.c pwio.c \
- newusers.c groupio.c fields.c pwdbm.c grpack.c grdbm.c sppack.c \
- spdbm.c dpmain.c gshadow.c gsdbm.c gspack.c sgroupio.c useradd.c \
- userdel.c patchlevel.h usermod.c copydir.c mkrmdir.c groupadd.c \
- groupdel.c groupmod.c tz.c console.c hushed.c getdef.c scologin.c \
- logoutd.c groups.c pwauth.c lockpw.c chowndir.c rename.c
-
-FILES1 = LICENSE README patchlevel.h newgrp.c Makefile config.h pwunconv.c obscure.c \
- age.c id.c
-
-FILES2 = passwd.c port.c lmain.c sulogin.c pwpack.c dialup.c expiry.c \
- gshadow.h
-
-FILES3 = chfn.c chsh.c smain.c faillog.c pwconv.c shadow.c pwck.c utent.c
-
-FILES4 = gpmain.c chage.c pwent.c valid.c setup.c entry.c ttytype.c port.h
-
-FILES5 = pwio.c encrypt.c chpasswd.c newusers.c rad64.c dialchk.c faillog.h \
- pwdbm.c grdbm.c gshadow.c sppack.c grpck.c
-
-FILES6 = gspack.c spdbm.c lastlog.h shell.c login.c sub.c dpmain.c mail.c \
- env.c pwd.h.m4 grpack.c shadow.h log.c grent.c motd.c dialup.h \
- fields.c gsdbm.c utmp.c failure.c
-
-FILES7 = groupio.c shadowio.c sgroupio.c groups.c copydir.c mkrmdir.c \
- mkpasswd.c pwauth.c pwauth.h lastlog.c
-
-FILES8 = useradd.c usermod.c login.defs rename.c
-
-FILES9 = groupadd.c groupdel.c groupmod.c tz.c console.c hushed.c getdef.c \
- scologin.c logoutd.c sulog.c getpass.c userdel.c lockpw.c chowndir.c
-
-FILES_SUN4 = Makefile.sun4 README.sun4 config.h.sun4
-FILES_SVR4 = Makefile.svr4 config.h.svr4
-FILES_LINUX = Makefile.linux config.h.linux
-
-MAN_1 = chage.1 chfn.1 chsh.1 id.1 login.1 newgrp.1 passwd.1 su.1 \
- useradd.1 userdel.1 usermod.1 groupadd.1 groupdel.1 groupmod.1 \
- groups.1 pwck.1 grpck.1
-MAN_3 = shadow.3 pwauth.3
-MAN_4 = # faillog.4 passwd.4 porttime.4 shadow.4
-MAN_5 = login.5 faillog.5 passwd.5 porttime.5 shadow.5
-MAN_8 = chpasswd.8 dpasswd.8 faillog.8 newusers.8 pwconv.8 pwunconv.8 \
- sulogin.8 mkpasswd.8 logoutd.8 pwauth.8 lastlog.8
-
-DOCS1 = $(MAN_1) $(MAN_3) $(MAN_4)
-DOCS2 = $(MAN_5) $(MAN_8)
-DOCS = $(DOCS1) $(DOCS2)
-
-BINS = su login login-static pwconv pwunconv passwd sulogin faillog newgrp \
- sg gpasswd mkpasswd chfn chsh chage chpasswd newusers dpasswd id \
- useradd userdel usermod groupadd groupdel groupmod $(SCOLOGIN) \
- logoutd groups pwck grpck lastlog expiry
-
-all: Linux $(BINS) $(DOCS)
-
-#
-# Linux has its own /usr/include/shadow.h. Use it instead.
-#
-SHADOW = /usr/include/shadow.h
-PWD = /usr/include/pwd.h
-Linux:
- -mv shadow.h oldshadow.h
- touch Linux
-
-$(BINS): Linux
-
-.PRECIOUS: libshadow.a
-
-LIBOBJS = dialchk.o dialup.o encrypt.o salt.o md5crypt.o md5.o getdef.o \
- getpass.o commonio.o grdbm.o grent.o groupio.o grpack.o gshadow.o \
- gsdbm.o gspack.o sgroupio.o port.o pwdbm.o pwent.o pwio.o pwpack.o \
- pwauth.o rad64.o spdbm.o shadow.o shadowio.o sppack.o lockpw.o \
- rename.o utent.o list.o strtoday.o basename.o isexpired.o xmalloc.o
-
-libshadow.a: $(LIBOBJS)
- $(AR) rc libshadow.a $^
- $(RANLIB) libshadow.a
-
-shlib/libshadow.so: $(LIBOBJS)
- cd shlib && \
- $(MAKE) CC=$(CC) CFLAGS="$(CFLAGS)" LIBOBJS="$(LIBOBJS)" libshadow.so
-
-old-libshadow.a: \
- libshadow.a(dialchk.o) \
- libshadow.a(dialup.o) \
- libshadow.a(encrypt.o) \
- libshadow.a(salt.o) \
- libshadow.a(md5crypt.o) \
- libshadow.a(md5.o) \
- libshadow.a(getdef.o) \
- libshadow.a(getpass.o) \
- libshadow.a(commonio.o) \
- libshadow.a(grdbm.o) \
- libshadow.a(grent.o) \
- libshadow.a(groupio.o) \
- libshadow.a(grpack.o) \
- libshadow.a(gshadow.o) \
- libshadow.a(gsdbm.o) \
- libshadow.a(gspack.o) \
- libshadow.a(sgroupio.o) \
- libshadow.a(port.o) \
- libshadow.a(pwdbm.o) \
- libshadow.a(pwent.o) \
- libshadow.a(pwio.o) \
- libshadow.a(pwpack.o) \
- libshadow.a(pwauth.o) \
- libshadow.a(rad64.o) \
- libshadow.a(spdbm.o) \
- libshadow.a(shadow.o) \
- libshadow.a(shadowio.o) \
- libshadow.a(sppack.o) \
- libshadow.a(lockpw.o) \
- libshadow.a(rename.o) \
- libshadow.a(utent.o) \
- libshadow.a(list.o) \
- libshadow.a(strtoday.o) \
- libshadow.a(basename.o) \
- libshadow.a(isexpired.o) \
- libshadow.a(xmalloc.o)
- $(RANLIB) libshadow.a
-
-# these two (from the original Makefile) don't work on Linux, see below
-#
-#save:
-# [ ! -d save ] && mkdir save
-# -cp $(LOGINDIR)/login save
-# -cp /etc/mkpasswd /etc/pwconv /etc/pwunconv /etc/sulogin /etc/chpasswd \
-# /etc/newusers /etc/useradd /etc/userdel /etc/usermod \
-# /etc/groupadd /etc/groupdel /etc/groupmod /etc/logoutd \
-# /etc/login.defs /etc/pwck /etc/grpck /bin/expiry save
-# -cp /bin/su /bin/passwd /bin/gpasswd /bin/dpasswd /bin/faillog \
-# /bin/newgrp /bin/chfn /bin/chsh /bin/chage /bin/id \
-# /bin/scologin save
-# -cp $(DEST_INCLUDE_DIR)/dialup.h $(DEST_INCLUDE_DIR)/gshadow.h save
-#
-#restore:
-# [ -d save ]
-# -(cd save ; cp login $(LOGINDIR) )
-# -(cd save ; -cp mkpasswd pwconv pwunconv sulogin chpasswd \
-# newusers useradd userdel usermod groupadd groupdel groupmod \
-# logoutd login.defs pwck grpck /etc)
-# -(cd save ; cp su passwd gpasswd dpasswd faillog newgrp chfn chsh \
-# chage id scologin expiry /bin)
-# -(cd save ; cp gshadow.h dialup.h $(DEST_INCLUDE_DIR) )
-
-# automatic pathnames detection, thanks to Rafal Maszkowski
-# (not tested by me; it is best to have a good backup anyway... --marekm)
-
-save:
- -( [ ! -d save ] && mkdir save )
- -( whereis -b id groups chfn chsh chage login login-static sulogin \
- newusers useradd userdel usermod groupadd groupdel \
- groupmod pwck grpck lastlog faillog dpasswd chpasswd \
- logoutd mkpasswd pwconv pwunconv su passwd gpasswd \
- newgrp expiry | awk '{if ($$2!="") print $$2}' > save/list )
- -( cat save/list | awk '{print "cp -p", $$1, "save"}' | sh )
- -cp -p /etc/login.defs save
- -cp -p $(includedir)/dialup.h $(includedir)/gshadow.h save
- -cp -p $(libdir)/libshadow.a save
-
-restore:
- [ -d save ]
- -( cd save ; cp -p login.defs /etc ; \
- cp -p dialup.h gshadow.h $(includedir) ; \
- cp -p libshadow.a $(libdir) )
- -( cat save/list | awk '{ last=split($$1,comp,"/"); print "cp -p", comp[last], $$1}' | sh)
-
-
-install: all
- test -f /etc/login.defs || cp login.defs.linux $(DEST_LOGIN_DEFS)
- install -d $(man1dir)
- install -d $(man3dir)
-# install -d $(man4dir)
- install -d $(man5dir)
- install -d $(man8dir)
- install -d $(usrbindir)
- install -d $(usrsbindir)
- install -d $(LOGINDIR)
- install -d $(bindir)
- install -d $(includedir)
- install -d $(libdir)
- install -m 644 $(MAN_1) $(man1dir)/
- install -m 644 $(MAN_3) $(man3dir)/
-# install -m 644 $(MAN_4) $(man4dir)/
- install -m 644 $(MAN_5) $(man5dir)/
- install -m 644 $(MAN_8) $(man8dir)/
-# install -m 755 id groups $(usrbindir)/
- install -m 4755 chfn chsh chage $(usrbindir)/
- install $(login_perms) login $(LOGINDIR)/login
-# install $(login_perms) login-static $(LOGINDIR)/login-static
- install -m 755 sulogin $(sbindir)/sulogin
- install -m 755 newusers \
- useradd userdel usermod groupadd groupdel groupmod \
- pwck grpck lastlog faillog dpasswd \
- chpasswd logoutd mkpasswd pwconv pwunconv $(usrsbindir)/
- install -m 4755 su $(bindir)/
- install -m 4755 passwd gpasswd newgrp expiry $(usrbindir)/
- ln -sf $(usrbindir)/newgrp $(bindir)/sg
- install -m 644 gshadow.h dialup.h $(includedir)/
- install -m 644 libshadow.a $(libdir)/
- $(RANLIB) $(libdir)/libshadow.a
-
-lint: su.lint login.lint pwconv.lint pwunconv.lint passwd.lint sulogin.lint \
- faillog.lint newgrp.lint gpasswd.lint mkpasswd.lint chfn.lint \
- chsh.lint chage.lint dpasswd.lint id.lint useradd.lint userdel.lint \
- usermod.lint groupadd.lint groupdel.lint groupmod.lint logoutd.lint \
- pwck.lint grpck.lint expiry.lint \
- $(ALLSRCS:.c=.L)
-
-tags: $(ALLSRCS)
- $(TAGS) $(ALLSRCS)
-
-README:
- [ -f s.README ] && $(GET) $(GFLAGS) s.README
-
-$(DOCS):
- [ -f s.$@ ] && $(GET) $(GFLAGS) s.$@
-
-login.defs:
- [ -f s.login.defs ] && $(GET) $(GFLAGS) s.login.defs
-
-Makefile.sun4:
- [ -f s.Makefile.sun4 ] && $(GET) $(GFLAGS) s.Makefile.sun4
-
-Makefile.svr4:
- [ -f s.Makefile.svr4 ] && $(GET) $(GFLAGS) s.Makefile.svr4
-
-README.sun4:
- [ -f s.README.sun4 ] && $(GET) $(GFLAGS) s.README.sun4
-
-config.h.sun4:
- [ -f s.config.h.sun4 ] && $(GET) $(GFLAGS) s.config.h.sun4
-
-config.h.svr4:
- [ -f s.config.h.svr4 ] && $(GET) $(GFLAGS) s.config.h.svr4
-
-login: $(LOBJS) $(LIBSHADOW)
- $(CC) -o login $(LDFLAGS) $(LOBJS) $(LIBSHADOW) $(LIBS)
-
-login-static: $(LOBJS) libshadow.a
- $(CC) -o login-static $(STATIC) $(LDFLAGS) $(LOBJS) $(LIBSHADOW) $(LIBS)
-
-login.lint: $(LSRCS)
- $(LINT) $(LINTFLAGS) $(LSRCS) > login.lint
-
-su: $(SOBJS) $(LIBSHADOW)
- $(CC) -o su $(LDFLAGS) $(SOBJS) $(LIBSHADOW) $(LIBS)
-
-su.lint: $(SSRCS)
- $(LINT) $(LINTFLAGS) -DSU $(SSRCS) > su.lint
-
-passwd: $(POBJS) $(LIBSHADOW)
- $(CC) -o passwd $(LDFLAGS) $(POBJS) $(LIBSHADOW) $(LIBS) $(CRACKLIB)
-
-passwd.lint: $(PSRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(PSRCS) > passwd.lint
-
-gpasswd: $(GPOBJS) $(LIBSHADOW)
- $(CC) -o gpasswd $(LDFLAGS) $(GPOBJS) $(LIBSHADOW) $(LIBS)
-
-gpasswd.lint: $(GPSRCS)
- $(LINT) $(LINTFLAGS) $(GPSRCS) > gpasswd.lint
-
-dpasswd: $(DPOBJS) $(LIBSHADOW)
- $(CC) -o dpasswd $(LDFLAGS) $(DPOBJS) $(LIBSHADOW) $(LIBS)
-
-dpasswd.lint: $(DPSRCS)
- $(LINT) $(LINTFLAGS) $(DPSRCS) > dpasswd.lint
-
-pwconv: $(PWOBJS) $(LIBSHADOW) config.h
- $(CC) -o pwconv $(LDFLAGS) $(PWOBJS) $(LIBSHADOW) $(LIBS)
-
-pwconv.lint: $(PWSRCS) config.h
- $(LINT) $(LINTFLAGS) -DPASSWD $(PWSRCS) > pwconv.lint
-
-pwunconv: $(PWUNOBJS) $(LIBSHADOW) config.h
- $(CC) -o pwunconv $(LDFLAGS) $(PWUNOBJS) $(LIBSHADOW) $(LIBS)
-
-pwunconv.lint: $(PWUNSRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(PWUNSRCS) > pwunconv.lint
-
-sulogin: $(SULOGOBJS) $(LIBSHADOW)
- $(CC) -o sulogin $(LDFLAGS) $(SULOGOBJS) $(LIBSHADOW) $(LIBS)
-
-sulogin.lint: $(SULOGSRCS)
- $(LINT) $(LINTFLAGS) $(SULOGSRCS) > sulogin.lint
-
-faillog: faillog.o
- $(CC) -o faillog $(LDFLAGS) faillog.o $(LIBS)
-
-faillog.lint: faillog.c faillog.h config.h
- $(LINT) $(LINTFLAGS) faillog.c > faillog.lint
-
-lastlog: lastlog.o
- $(CC) -o lastlog $(LDFLAGS) lastlog.o $(LIBS)
-
-lastlog.lint: lastlog.c config.h lastlog.h
- $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > lastlog.lint
-
-mkpasswd: $(MKPWDOBJS) $(LIBSHADOW)
- $(CC) -o mkpasswd $(LDFLAGS) $(MKPWDOBJS) $(LIBSHADOW) $(LIBS)
-
-mkpasswd.lint: $(MKPWDSRCS)
- $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > mkpasswd.lint
-
-newgrp: $(NGOBJS) $(LIBSHADOW)
- $(CC) -o newgrp $(LDFLAGS) $(NGOBJS) $(LIBSHADOW) $(LIBS)
-
-newgrp.lint: $(NGSRCS)
- $(LINT) $(LINTFLAGS) $(NGSRCS) > newgrp.lint
-
-sg: newgrp
- rm -f sg
- ln newgrp sg
-
-sg.lint: newgrp.lint
- ln newgrp.lint sg.lint
-
-chfn: $(CHFNOBJS) $(LIBSHADOW)
- $(CC) -o chfn $(LDFLAGS) $(CHFNOBJS) $(LIBSHADOW) $(LIBS)
-
-chfn.lint: $(CHFNSRCS)
- $(LINT) $(LINTFLAGS) $(CHFNSRCS) > chfn.lint
-
-chsh: $(CHSHOBJS) $(LIBSHADOW)
- $(CC) -o chsh $(LDFLAGS) $(CHSHOBJS) $(LIBSHADOW) $(LIBS)
-
-chsh.lint: $(CHSHSRCS)
- $(LINT) $(LINTFLAGS) $(CHSHSRCS) > chsh.lint
-
-chage: $(CHAGEOBJS) $(LIBSHADOW)
- $(CC) -o chage $(LDFLAGS) $(CHAGEOBJS) $(LIBSHADOW) $(LIBS)
-
-chage.lint: $(CHAGESRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(CHAGESRCS) > chage.lint
-
-chpasswd: $(CHPASSOBJS) $(LIBSHADOW)
- $(CC) -o chpasswd $(LDFLAGS) $(CHPASSOBJS) $(LIBSHADOW) $(LIBS)
-
-chpasswd.lint: $(CHPASSSRCS)
- $(LINT) $(LINTFLAGS) $(CHPASSSRCS) > chpasswd.lint
-
-newusers: newusers.o $(LIBSHADOW)
- $(CC) -o newusers $(LDFLAGS) newusers.o $(LIBSHADOW) $(LIBS)
-
-newusers.lint: newusers.c
- $(LINT) $(LINTFLAGS) newusers.c > newusers.lint
-
-id: id.o $(LIBSHADOW)
- $(CC) -o id $(LDFLAGS) id.o $(LIBSHADOW) $(LIBS)
-
-id.lint: id.c
- $(LINT) $(LINTFLAGS) id.c > id.lint
-
-groups: groups.o $(LIBSHADOW)
- $(CC) -o groups $(LDFLAGS) groups.o $(LIBSHADOW) $(LIBS)
-
-groups.lint: groups.c
- $(LINT) $(LINTFLAGS) groups.c > groups.lint
-
-useradd: useradd.o copydir.o mkrmdir.o $(LIBSHADOW)
- $(CC) -o useradd $(LDFLAGS) useradd.o copydir.o mkrmdir.o \
- $(LIBSHADOW) $(LIBS) $(NDIR)
-
-useradd.lint: useradd.c copydir.c mkrmdir.c
- $(LINT) $(LINTFLAGS) useradd.c copydir.c mkrmdir.c > useradd.lint
-
-userdel: userdel.o copydir.o mkrmdir.o $(LIBSHADOW)
- $(CC) -o userdel $(LDFLAGS) userdel.o copydir.o mkrmdir.o \
- $(LIBSHADOW) $(LIBS) $(NDIR)
-
-userdel.lint: userdel.c copydir.c mkrmdir.c
- $(LINT) $(LINTFLAGS) userdel.c copydir.c mkrmdir.c > userdel.lint
-
-usermod: usermod.o copydir.o mkrmdir.o chowndir.o $(LIBSHADOW)
- $(CC) -o usermod $(LDFLAGS) usermod.o copydir.o mkrmdir.o \
- chowndir.o $(LIBSHADOW) $(LIBS) $(NDIR)
-
-usermod.lint: usermod.c copydir.c mkrmdir.c chowndir.c
- $(LINT) $(LINTFLAGS) usermod.c copydir.c mkrmdir.c \
- chowndir.c > usermod.lint
-
-groupadd: groupadd.o chkgname.o $(LIBSHADOW)
- $(CC) -o groupadd $(LDFLAGS) groupadd.o chkgname.o $(LIBSHADOW) $(LIBS)
-
-groupadd.lint: groupadd.c
- $(LINT) $(LINTFLAGS) groupadd.c > groupadd.lint
-
-groupdel: groupdel.o $(LIBSHADOW)
- $(CC) -o groupdel $(LDFLAGS) groupdel.o $(LIBSHADOW) $(LIBS)
-
-groupdel.lint: groupdel.c
- $(LINT) $(LINTFLAGS) groupdel.c > groupdel.lint
-
-groupmod: groupmod.o chkgname.o $(LIBSHADOW)
- $(CC) -o groupmod $(LDFLAGS) groupmod.o chkgname.o $(LIBSHADOW) $(LIBS)
-
-groupmod.lint: groupmod.c
- $(LINT) $(LINTFLAGS) groupmod.c > groupmod.lint
-
-logoutd: logoutd.o $(LIBSHADOW)
- $(CC) -o logoutd $(LDFLAGS) logoutd.o $(LIBSHADOW)
-
-logoutd.lint: logoutd.c
- $(LINT) $(LINTFLAGS) logoutd.c > logoutd.lint
-
-pwck: pwck.o $(LIBSHADOW)
- $(CC) -o pwck $(LDFLAGS) pwck.o $(LIBSHADOW) $(LIBS)
-
-pwck.lint: pwck.c
- $(LINT) $(LINTFLAGS) pwck.c > pwck.lint
-
-grpck: grpck.o $(LIBSHADOW)
- $(CC) -o grpck $(LDFLAGS) grpck.o $(LIBSHADOW) $(LIBS)
-
-grpck.lint: grpck.c
- $(LINT) $(LINTFLAGS) grpck.c > grpck.lint
-
-expiry: expiry.o age.o setugid.o $(LIBSHADOW)
- $(CC) -o expiry $(LDFLAGS) expiry.o age.o setugid.o $(LIBSHADOW) $(LIBS)
-
-expiry.lint: expiry.c
- $(LINT) $(LINTFLAGS) expiry.c > expiry.lint
-
-sulog.o: config.h
-
-scologin: scologin.o
- $(CC) -o scologin $(LDFLAGS) scologin.o -lsocket
-
-passwd.o: config.h $(SHADOW) $(PWD) pwauth.h
-lmain.o: config.h lastlog.h faillog.h $(PWD) pwauth.h
-smain.o: config.h lastlog.h $(PWD) $(SHADOW) pwauth.h
-sub.o: $(PWD)
-setup.o: config.h $(PWD)
-mkrmdir.o: config.h
-utmp.o: config.h
-mail.o: config.h
-motd.o: config.h
-age.o: config.h gshadow.h $(PWD)
-log.o: config.h lastlog.h $(PWD)
-lastlog.o: lastlog.h
-shell.o: config.h
-entry.o: config.h $(SHADOW) $(PWD)
-hushed.o: config.h $(PWD)
-valid.o: config.h $(PWD)
-failure.o: faillog.h config.h
-faillog.o: faillog.h config.h $(PWD)
-newgrp.o: config.h gshadow.h $(SHADOW) $(PWD)
-mkpasswd.o: config.h gshadow.h $(SHADOW) $(PWD)
-gpmain.o: config.h gshadow.h $(PWD)
-chfn.o: config.h $(PWD)
-chsh.o: config.h $(PWD)
-chage.o: config.h $(SHADOW) $(PWD)
-pwconv.o: config.h $(SHADOW)
-pwunconv.o: config.h $(SHADOW) $(PWD)
-chpasswd.o: config.h $(SHADOW) $(PWD)
-id.o: $(PWD)
-newusers.o: config.h $(SHADOW) $(PWD)
-dpmain.o: config.h dialup.h
-useradd.o: config.h gshadow.h $(SHADOW) $(PWD) pwauth.h
-userdel.o: config.h gshadow.h $(SHADOW) $(PWD) pwauth.h
-usermod.o: config.h gshadow.h $(SHADOW) $(PWD) pwauth.h
-groupadd.o: config.h gshadow.h
-groupdel.o: config.h gshadow.h
-groupmod.o: config.h gshadow.h
-logoutd.o: config.h
-sulogin.o: config.h pwauth.h
-copydir.o: config.h
-chowndir.o: config.h
-pwck.o: config.h $(SHADOW) $(PWD)
-grpck.o: config.h gshadow.h $(PWD)
-
-$(LIBSHADOW)(shadow.o): $(SHADOW) config.h
-$(LIBSHADOW)(shadowio.o): $(SHADOW) config.h
-$(LIBSHADOW)(grent.o): config.h gshadow.h
-$(LIBSHADOW)(groupio.o): config.h
-$(LIBSHADOW)(sgroupio.o): config.h gshadow.h
-$(LIBSHADOW)(dialup.o): dialup.h
-$(LIBSHADOW)(dialchk.o): dialup.h config.h
-$(LIBSHADOW)(getdef.o): config.h
-$(LIBSHADOW)(pwdbm.o): config.h $(PWD)
-$(LIBSHADOW)(spdbm.o): config.h $(SHADOW)
-$(LIBSHADOW)(grdbm.o): config.h
-$(LIBSHADOW)(gshadow.o): config.h
-$(LIBSHADOW)(gsdbm.o): config.h gshadow.h
-$(LIBSHADOW)(pwauth.o): config.h pwauth.h
-$(LIBSHADOW)(pwpack.o): config.h $(PWD)
-$(LIBSHADOW)(pwent.o): config.h $(PWD)
-$(LIBSHADOW)(pwio.o): $(PWD) config.h
-$(LIBSHADOW)(getpass.o): config.h
-$(LIBSHADOW)(encrypt.o): config.h
-$(LIBSHADOW)(salt.o): config.h
-$(LIBSHADOW)(md5crypt.o): config.h
-$(LIBSHADOW)(md5.o): config.h
-$(LIBSHADOW)(port.o): port.h
-$(LIBSHADOW)(rad64.o): config.h
-$(LIBSHADOW)(lockpw.o):
-$(LIBSHADOW)(rename.o): config.h
-$(LIBSHADOW)(gspack.o): config.h gshadow.h
-$(LIBSHADOW)(list.o):
-$(LIBSHADOW)(strtoday.o): config.h
-$(LIBSHADOW)(xmalloc.o):
-$(LIBSHADOW)(basename.o):
-$(LIBSHADOW)(isexpired.o): config.h $(SHADOW)
-$(LIBSHADOW)(commonio.o):
-
-shadow.h:
- -rm -f Linux
- -mv oldshadow.h shadow.h
-
-clean: shadow.h
- -rm -f *.o a.out core npasswd nshadow *.pag *.dir
-
-clobber: clean
- -rm -f $(BINS) *.lint *.L libshadow.a
-
-nuke: clobber
- -for file in * ; do \
- if [ -f s.$$file -a ! -f p.$$file ] ; then \
- rm -f $$file ;\
- fi ;\
- done
-
-# File lists for this are out of sync with reality... --marekm
-#
-#shar: login.sh.01 login.sh.02 login.sh.03 login.sh.04 login.sh.05 \
-# login.sh.06 login.sh.07 login.sh.08 login.sh.09 login.sh.10 \
-# login.sh.11 login.sh.12
-#
-#login.sh.01: $(FILES1) Makefile
-# shar -Dc $(FILES1) > login.sh.01
-#
-#login.sh.02: $(FILES2) Makefile
-# shar -Dc $(FILES2) > login.sh.02
-#
-#login.sh.03: $(FILES3) Makefile
-# shar -Dc $(FILES3) > login.sh.03
-#
-#login.sh.04: $(FILES4) Makefile
-# shar -Dc $(FILES4) > login.sh.04
-#
-#login.sh.05: $(FILES5) Makefile
-# shar -Dc $(FILES5) > login.sh.05
-#
-#login.sh.06: $(FILES6) Makefile
-# shar -Dc $(FILES6) > login.sh.06
-#
-#login.sh.07: $(FILES7) Makefile
-# shar -Dc $(FILES7) > login.sh.07
-#
-#login.sh.08: $(FILES8) Makefile
-# shar -Dc $(FILES8) > login.sh.08
-#
-#login.sh.09: $(FILES9) Makefile
-# shar -Dc $(FILES9) > login.sh.09
-#
-#login.sh.10: $(DOCS1) Makefile
-# shar -Dc $(DOCS1) > login.sh.10
-#
-#login.sh.11: $(DOCS2) Makefile
-# shar -Dc $(DOCS2) > login.sh.11
-#
-#login.sh.12: $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) Makefile
-# shar -Dc $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) > login.sh.12
+++ /dev/null
-#
-# Copyright 1988 - 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.
-#
-# %W% %U% - Shadow password system (SunOS 4.1.1 version)
-#
-# $Id: Makefile.sun4,v 1.2 1997/05/01 23:11:55 marekm Exp $
-#
-SHELL = /bin/sh
-
-#
-# Set this flag to decide what level of code "get" returns.
-# The base USENET release was release 1. It is no longer supported.
-# The version with the utilities added was release 2.
-# The version with database-like file access is release 3.
-RELEASE = 3
-GFLAGS = -t -r$(RELEASE)
-
-# SunOS 4.1.1 uses /usr/bin
-LOGINDIR = /usr/bin
-
-# SunOS 4.1.1 requires no extra libraries
-NDIR =
-
-# Define some stuff for Cracklib. This assumes that libcracklib.a is
-# in a system directory.
-# CRACKDEF='-DUSE_CRACKLIB'
-# CRACKLIB=-lcrack
-
-# Pick your favorite C compiler and tags command
-CC = /usr/bin/cc
-TAGS = ctags
-
-# SunOS 4.1.1 is SUN4
-OS = -DSUN4
-
-# SunOS 4.1.1 uses ranlib
-RANLIB = ranlib
-
-# Configuration Flags
-#
-# DEST_INCLUDE_DIR - local include files
-# LIBS - system libraries
-# -lsocket - needed for TCP/IP and possibly SYSLOG
-# -ldbm or -lndbm - needed for DBM support
-# -lcrypt - needed for SCO crypt() functions
-# CFLAGS - C compiler flags
-# -DLAI_TCP - needed for SCO Xenix Lachman TCP/IP
-
-DEST_INCLUDE_DIR = /usr/5include
-
-# Flags for SunOS 4.1.1
-CFLAGS = -O2 $(OS) -I$(DEST_INCLUDE_DIR) $(CRACKDEF)
-LIBS =
-LDFLAGS =
-
-# Library for SunOS 4.1.1
-LIBSEC = libsec.a
-
-# Names for root user and group, and bin user and group. See your
-# /etc/passwd and /etc/group files. This is for SunOS 4.1.1
-RUID = root
-RGID = wheel
-BUID = bin
-BGID = bin
-
-# Where the login.defs file will be copied. Must agree with config.h
-DEST_LOGIN_DEFS = /etc/login.defs
-
-# SunOS has its own pwd.h, use that one.
-PWD = /usr/include/pwd.h
-
-# Rules for .L (lint) files.
-.SUFFIXES: .L
-LINT = lint
-LINTFLAGS = $(OS) -Dlint
-
-.c.L:
- $(LINT) -pxu $(LINTFLAGS) $*.c > $*.L
-
-LOBJS = lmain.o login.o env.o valid.o setup.o shell.o age.o \
- utmp.o sub.o mail.o motd.o log.o ttytype.o failure.o \
- tz.o console.o hushed.o
-
-LSRCS = lmain.c login.c env.c valid.c setup.c shell.c age.c \
- utmp.c sub.c mail.c motd.c log.c ttytype.c failure.c \
- tz.c console.c hushed.c
-
-SOBJS = smain.o env.o entry.o susetup.o shell.o \
- sub.o mail.o motd.o sulog.o age.o tz.o hushed.o
-
-SSRCS = smain.c env.c entry.c setup.c shell.c \
- pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
- tz.c hushed.c
-
-POBJS = passwd.o obscure.o
-PSRCS = passwd.c obscure.c
-
-GPSRCS = gpmain.c
-
-GPOBJS = gpmain.o
-
-PWOBJS = pwconv.o
-
-PWSRCS = pwconv.c pwent.c shadow.c pwpack.c rad64.c
-
-PWUNOBJS = pwunconv.o
-
-PWUNSRCS = pwunconv.c pwent.c shadow.c pwpack.c rad64.c
-
-SULOGOBJS = sulogin.o entry.o env.o age.o setup.o \
- valid.o shell.o tz.o
-
-SULOGSRCS = sulogin.c entry.c env.c age.c pwent.c setup.c \
- shadow.c shell.c valid.c pwpack.c tz.c
-
-MKPWDOBJS = mkpasswd.o
-
-MKPWDSRCS = mkpasswd.c
-
-NGSRCS = newgrp.c env.c shell.c
-
-NGOBJS = newgrp.o env.o shell.o
-
-CHFNSRCS = chfn.c fields.c
-CHFNOBJS = chfn.o fields.o
-CHSHSRCS = chsh.c fields.c
-CHSHOBJS = chsh.o fields.o
-CHAGEOBJS = chage.o fields.o
-CHAGESRCS = chage.c fields.c
-CHPASSOBJS = chpasswd.o
-CHPASSSRCS = chpasswd.c
-DPSRCS = dpmain.c
-DPOBJS = dpmain.o
-
-ALLSRCS = age.c dialchk.c dialup.c entry.c env.c lmain.c log.c login.c mail.c \
- motd.c obscure.c passwd.c pwconv.c pwent.c pwunconv.c getpass.c \
- setup.c shadow.c shell.c smain.c sub.c sulog.c sulogin.c ttytype.c \
- utmp.c valid.c port.c newgrp.c gpmain.c grent.c mkpasswd.c pwpack.c \
- chfn.c chsh.c chage.c rad64.c encrypt.c chpasswd.c shadowio.c pwio.c \
- newusers.c groupio.c fields.c pwdbm.c grpack.c grdbm.c sppack.c \
- spdbm.c dpmain.c gshadow.c gsdbm.c gspack.c sgroupio.c useradd.c \
- userdel.c patchlevel.h usermod.c copydir.c mkrmdir.c groupadd.c \
- groupdel.c groupmod.c tz.c console.c hushed.c getdef.c scologin.c \
- logoutd.c groups.c pwauth.c lockpw.c chowndir.c utent.c
-
-FILES1 = LICENSE README patchlevel.h newgrp.c Makefile config.h pwunconv.c obscure.c \
- age.c id.c
-
-FILES2 = passwd.c port.c lmain.c sulogin.c pwpack.c dialup.c expiry.c \
- gshadow.h
-
-FILES3 = chfn.c chsh.c smain.c faillog.c pwconv.c shadow.c pwck.c utent.c
-
-FILES4 = gpmain.c chage.c pwent.c valid.c setup.c entry.c ttytype.c port.h
-
-FILES5 = pwio.c encrypt.c chpasswd.c newusers.c rad64.c dialchk.c faillog.h \
- pwdbm.c grdbm.c gshadow.c sppack.c grpck.c
-
-FILES6 = gspack.c spdbm.c lastlog.h shell.c login.c sub.c dpmain.c mail.c \
- env.c pwd.h.m4 grpack.c shadow.h log.c grent.c motd.c dialup.h \
- fields.c gsdbm.c utmp.c failure.c
-
-FILES7 = groupio.c shadowio.c sgroupio.c groups.c copydir.c mkrmdir.c \
- mkpasswd.c pwauth.c pwauth.h lastlog.c
-
-FILES8 = useradd.c usermod.c login.defs
-
-FILES9 = groupadd.c groupdel.c groupmod.c tz.c console.c hushed.c getdef.c \
- scologin.c logoutd.c sulog.c getpass.c userdel.c lockpw.c chowndir.c
-
-FILES_SUN4 = Makefile.sun4 README.sun4 config.h.sun4
-FILES_SVR4 = Makefile.svr4 config.h.svr4
-FILES_LINUX = Makefile.linux config.h.linux
-
-MAN_1 = chage.1 chfn.1 chsh.1 id.1 login.1 newgrp.1 passwd.1 su.1 \
- useradd.1 userdel.1 usermod.1 groupadd.1 groupdel.1 groupmod.1 \
- groups.1 pwck.1 grpck.1
-MAN_3 = shadow.3 pwauth.3
-MAN_4 = faillog.4 passwd.4 porttime.4 shadow.4
-MAN_5 = login.5
-MAN_8 = chpasswd.8 dpasswd.8 faillog.8 newusers.8 pwconv.8 pwunconv.8 \
- sulogin.8 mkpasswd.8 logoutd.8 pwauth.8 lastlog.8
-
-DOCS1 = $(MAN_1) $(MAN_3) $(MAN_4)
-DOCS2 = $(MAN_5) $(MAN_8)
-DOCS = $(DOCS1) $(DOCS2)
-
-BINS = su login pwconv pwunconv passwd sulogin faillog newgrp gpasswd \
- mkpasswd chfn chsh chage chpasswd newusers dpasswd id useradd \
- userdel usermod groupadd groupdel groupmod logoutd groups \
- pwck grpck lastlog expiry
-
-all: $(BINS) $(DOCS)
-
-.PRECIOUS: libshadow.a
-
-libshadow.a: \
- libshadow.a(dialchk.o) \
- libshadow.a(dialup.o) \
- libshadow.a(encrypt.o) \
- libshadow.a(getdef.o) \
- libshadow.a(getpass.o) \
- libshadow.a(grdbm.o) \
- libshadow.a(grent.o) \
- libshadow.a(groupio.o) \
- libshadow.a(grpack.o) \
- libshadow.a(gshadow.o) \
- libshadow.a(gsdbm.o) \
- libshadow.a(gspack.o) \
- libshadow.a(sgroupio.o) \
- libshadow.a(port.o) \
- libshadow.a(pwdbm.o) \
- libshadow.a(pwent.o) \
- libshadow.a(pwio.o) \
- libshadow.a(pwpack.o) \
- libshadow.a(pwauth.o) \
- libshadow.a(rad64.o) \
- libshadow.a(spdbm.o) \
- libshadow.a(shadow.o) \
- libshadow.a(shadowio.o) \
- libshadow.a(sppack.o) \
- libshadow.a(lockpw.o) \
- libshadow.a(utent.o) \
- libshadow.a(list.o) \
- libshadow.a(strtoday.o) \
- libshadow.a(basename.o) \
- libshadow.a(isexpired.o) \
- libshadow.a(xmalloc.o)
- $(RANLIB) libshadow.a
-
-libsec: $(LIBSEC)(shadow.o)
- $(RANLIB) $(LIBSEC)
-
-save:
- [ ! -d save ] && mkdir save
- -cp $(LOGINDIR)/login save
- -cp /etc/mkpasswd /etc/pwconv /etc/pwunconv /etc/sulogin /etc/chpasswd \
- /etc/newusers /etc/useradd /etc/userdel /etc/usermod \
- /etc/groupadd /etc/groupdel /etc/groupmod /etc/logoutd \
- /etc/login.defs /etc/pwck /etc/grpck /bin/expiry save
- -cp /bin/su /bin/passwd /bin/gpasswd /bin/dpasswd /bin/faillog \
- /bin/newgrp /bin/chfn /bin/chsh /bin/chage /bin/id \
- /bin/scologin save
- -cp $(DEST_INCLUDE_DIR)/dialup.h $(DEST_INCLUDE_DIR)/shadow.h \
- save
-
-restore:
- [ -d save ]
- -(cd save ; cp login $(LOGINDIR) )
- -(cd save ; -cp mkpasswd pwconv pwunconv sulogin chpasswd \
- newusers useradd userdel usermod groupadd groupdel groupmod \
- logoutd login.defs pwck grpck /etc)
- -(cd save ; cp su passwd gpasswd dpasswd faillog newgrp chfn chsh \
- chage id scologin expiry /bin)
- -(cd save ; cp dialup.h shadow.h gshadow.h $(DEST_INCLUDE_DIR) )
-
-install: all
- strip $(BINS)
- cp login $(LOGINDIR)/login
- cp mkpasswd /etc
- cp pwconv /etc
- cp pwunconv /etc
- cp sulogin /etc
- cp chpasswd /etc
- cp newusers /etc
- cp useradd /etc
- cp userdel /etc
- cp usermod /etc
- cp groupadd /etc
- cp groupdel /etc
- cp groupmod /etc
- cp logoutd /etc
- cp pwck /etc
- cp grpck /etc
- cp su /bin
- cp passwd /bin
- cp gpasswd /bin
- cp dpasswd /bin
- cp faillog /bin
- cp newgrp /bin
- cp chfn /bin
- cp chsh /bin
- cp chage /bin
- cp id /bin
- cp expiry /bin
- cp dialup.h shadow.h gshadow.h $(DEST_INCLUDE_DIR)
- chown $(RUID) $(LOGINDIR)/login /etc/pwconv /etc/pwunconv /etc/sulogin \
- /bin/su /bin/passwd /bin/gpasswd /bin/newgrp /etc/mkpasswd \
- /bin/dpasswd /bin/chsh /bin/chfn /bin/chage /etc/useradd \
- /etc/userdel /etc/usermod /etc/groupadd /etc/groupdel \
- /etc/groupmod /etc/logoutd /etc/pwck /etc/grpck /bin/expiry
- chgrp $(RGID) $(LOGINDIR)/login /etc/pwconv /etc/pwunconv /etc/sulogin \
- /bin/su /bin/passwd /bin/gpasswd /bin/newgrp /etc/mkpasswd \
- /bin/dpasswd /bin/chsh /bin/chfn /bin/chage /etc/useradd \
- /etc/userdel /etc/usermod /etc/groupadd /etc/groupdel \
- /etc/groupmod /etc/logoutd /etc/pwck /etc/grpck /bin/expiry
- chown $(BUID) /bin/faillog /bin/id $(DEST_INCLUDE_DIR)/shadow.h \
- $(DEST_INCLUDE_DIR)/dialup.h $(DEST_INCLUDE_DIR)/gshadow.h
- chgrp $(BGID) /bin/faillog /bin/id $(DEST_INCLUDE_DIR)/shadow.h \
- $(DEST_INCLUDE_DIR)/dialup.h $(DEST_INCLUDE_DIR)/gshadow.h
- chmod 700 /etc/pwconv /etc/pwunconv /etc/sulogin /etc/mkpasswd \
- /etc/chpasswd /etc/newusers /bin/dpasswd /bin/chage \
- /etc/useradd /etc/userdel /etc/usermod /etc/groupadd \
- /etc/groupdel /etc/groupmod /etc/logoutd /etc/pwck \
- /etc/grpck
- chmod 4711 $(LOGINDIR)/login /bin/su /bin/passwd /bin/gpasswd \
- /bin/newgrp /bin/chfn /bin/chsh /bin/expiry
- chmod 711 /bin/faillog /bin/id
- chmod 444 $(DEST_INCLUDE_DIR)/shadow.h $(DEST_INCLUDE_DIR)/dialup.h \
- $(DEST_INCLUDE_DIR)/gshadow.h
- [ -f $(DEST_LOGIN_DEFS) ] || (cp login.defs $(DEST_LOGIN_DEFS) ; \
- chown $(RUID) $(DEST_LOGIN_DEFS) ; \
- chgrp $(RGID) $(DEST_LOGIN_DEFS) ; \
- chmod 600 $(DEST_LOGIN_DEFS) )
-
-lint: su.lint login.lint pwconv.lint pwunconv.lint passwd.lint sulogin.lint \
- faillog.lint newgrp.lint gpasswd.lint mkpasswd.lint chfn.lint \
- chsh.lint chage.lint dpasswd.lint id.lint useradd.lint userdel.lint \
- usermod.lint groupadd.lint groupdel.lint groupmod.lint logoutd.lint \
- pwck.lint grpck.lint expiry.lint \
- $(ALLSRCS:.c=.L)
-
-tags: $(ALLSRCS)
- $(TAGS) $(ALLSRCS)
-
-README:
- [ -f s.README ] && get -t -r$(RELEASE) s.README
-
-$(DOCS):
- [ -f s.$@ ] && get -t -r$(RELEASE) s.$@
-
-login.defs:
- [ -f s.login.defs ] && get -t -r$(RELEASE) s.login.defs
-
-Makefile.sun4:
- [ -f s.Makefile.sun4 ] && get -t -r$(RELEASE) s.Makefile.sun4
-
-README.sun4:
- [ -f s.README.sun4 ] && get -t -r$(RELEASE) s.README.sun4
-
-config.h.sun4:
- [ -f s.config.h.sun4 ] && get -t -r$(RELEASE) s.config.h.sun4
-
-login: $(LOBJS) libshadow.a
- $(CC) -o login $(LDFLAGS) $(LOBJS) libshadow.a $(LIBS)
-
-login.lint: $(LSRCS)
- $(LINT) $(LINTFLAGS) $(LSRCS) > login.lint
-
-su: $(SOBJS) libshadow.a
- $(CC) -o su $(LDFLAGS) $(SOBJS) libshadow.a $(LIBS)
-
-su.lint: $(SSRCS)
- $(LINT) $(LINTFLAGS) -DSU $(SSRCS) > su.lint
-
-passwd: $(POBJS) libshadow.a
- $(CC) -o passwd $(LDFLAGS) $(POBJS) libshadow.a $(LIBS) $(CRACKLIB)
-
-passwd.lint: $(PSRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(PSRCS) > passwd.lint
-
-gpasswd: $(GPOBJS) libshadow.a
- $(CC) -o gpasswd $(LDFLAGS) $(GPOBJS) libshadow.a $(LIBS)
-
-gpasswd.lint: $(GPSRCS)
- $(LINT) $(LINTFLAGS) $(GPSRCS) > gpasswd.lint
-
-dpasswd: $(DPOBJS) libshadow.a
- $(CC) -o dpasswd $(LDFLAGS) $(DPOBJS) libshadow.a $(LIBS)
-
-dpasswd.lint: $(DPSRCS)
- $(LINT) $(LINTFLAGS) $(DPSRCS) > dpasswd.lint
-
-pwconv: $(PWOBJS) libshadow.a config.h
- $(CC) -o pwconv $(LDFLAGS) $(PWOBJS) libshadow.a $(LIBS)
-
-pwconv.lint: $(PWSRCS) config.h
- $(LINT) $(LINTFLAGS) -DPASSWD $(PWSRCS) > pwconv.lint
-
-pwunconv: $(PWUNOBJS) libshadow.a config.h
- $(CC) -o pwunconv $(LDFLAGS) $(PWUNOBJS) libshadow.a $(LIBS)
-
-pwunconv.lint: $(PWUNSRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(PWUNSRCS) > pwunconv.lint
-
-sulogin: $(SULOGOBJS) libshadow.a
- $(CC) -o sulogin $(LDFLAGS) $(SULOGOBJS) libshadow.a $(LIBS)
-
-sulogin.lint: $(SULOGSRCS)
- $(LINT) $(LINTFLAGS) $(SULOGSRCS) > sulogin.lint
-
-faillog: faillog.o
- $(CC) -o faillog $(LDFLAGS) faillog.o $(LIBS)
-
-faillog.lint: faillog.c faillog.h config.h
- $(LINT) $(LINTFLAGS) faillog.c > faillog.lint
-
-lastlog: lastlog.o
- $(CC) -o lastlog $(LDFLAGS) lastlog.o $(LIBS)
-
-lastlog.lint: lastlog.c config.h lastlog.h
- $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > lastlog.lint
-
-mkpasswd: $(MKPWDOBJS) libshadow.a
- $(CC) -o mkpasswd $(LDFLAGS) $(MKPWDOBJS) libshadow.a $(LIBS)
-
-mkpasswd.lint: $(MKPWDSRCS)
- $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > mkpasswd.lint
-
-newgrp: $(NGOBJS) libshadow.a
- $(CC) -o newgrp $(LDFLAGS) $(NGOBJS) libshadow.a $(LIBS)
-
-newgrp.lint: $(NGSRCS)
- $(LINT) $(LINTFLAGS) $(NGSRCS) > newgrp.lint
-
-sg: newgrp
- rm -f sg
- ln newgrp sg
-
-chfn: $(CHFNOBJS) libshadow.a
- $(CC) -o chfn $(LDFLAGS) $(CHFNOBJS) libshadow.a $(LIBS)
-
-chfn.lint: $(CHFNSRCS)
- $(LINT) $(LINTFLAGS) $(CHFNSRCS) > chfn.lint
-
-chsh: $(CHSHOBJS) libshadow.a
- $(CC) -o chsh $(LDFLAGS) $(CHSHOBJS) libshadow.a $(LIBS)
-
-chsh.lint: $(CHSHSRCS)
- $(LINT) $(LINTFLAGS) $(CHSHSRCS) > chsh.lint
-
-chage: $(CHAGEOBJS) libshadow.a
- $(CC) -o chage $(LDFLAGS) $(CHAGEOBJS) libshadow.a $(LIBS)
-
-chage.lint: $(CHAGESRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(CHAGESRCS) > chage.lint
-
-chpasswd: $(CHPASSOBJS) libshadow.a
- $(CC) -o chpasswd $(LDFLAGS) $(CHPASSOBJS) libshadow.a $(LIBS)
-
-chpasswd.lint: $(CHPASSSRCS)
- $(LINT) $(LINTFLAGS) $(CHPASSSRCS) > chpasswd.lint
-
-newusers: newusers.o libshadow.a
- $(CC) -o newusers $(LDFLAGS) newusers.o libshadow.a $(LIBS)
-
-newusers.lint: newusers.c
- $(LINT) $(LINTFLAGS) newusers.c > newusers.lint
-
-id: id.o libshadow.a
- $(CC) -o id $(LDFLAGS) id.o libshadow.a $(LIBS)
-
-id.lint: id.c
- $(LINT) $(LINTFLAGS) id.c > id.lint
-
-groups: groups.o libshadow.a
- $(CC) -o groups $(LDFLAGS) groups.o libshadow.a $(LIBS)
-
-groups.lint: groups.c
- $(LINT) $(LINTFLAGS) groups.c > groups.lint
-
-useradd: useradd.o copydir.o mkrmdir.o libshadow.a
- $(CC) -o useradd $(LDFLAGS) useradd.o copydir.o mkrmdir.o \
- libshadow.a $(LIBS) $(NDIR)
-
-useradd.lint: useradd.c copydir.c mkrmdir.c
- $(LINT) $(LINTFLAGS) useradd.c copydir.c mkrmdir.c > useradd.lint
-
-userdel: userdel.o copydir.o mkrmdir.o libshadow.a
- $(CC) -o userdel $(LDFLAGS) userdel.o copydir.o mkrmdir.o \
- libshadow.a $(LIBS) $(NDIR)
-
-userdel.lint: userdel.c copydir.c mkrmdir.c
- $(LINT) $(LINTFLAGS) userdel.c copydir.c mkrmdir.c > userdel.lint
-
-usermod: usermod.o copydir.o mkrmdir.o chowndir.o libshadow.a
- $(CC) -o usermod $(LDFLAGS) usermod.o copydir.o mkrmdir.o \
- chowndir.o libshadow.a $(LIBS) $(NDIR)
-
-usermod.lint: usermod.c copydir.c mkrmdir.c chowndir.c
- $(LINT) $(LINTFLAGS) usermod.c copydir.c mkrmdir.c \
- chowndir.c > usermod.lint
-
-groupadd: groupadd.o libshadow.a
- $(CC) -o groupadd $(LDFLAGS) groupadd.o libshadow.a $(LIBS)
-
-groupadd.lint: groupadd.c
- $(LINT) $(LINTFLAGS) groupadd.c > groupadd.lint
-
-groupdel: groupdel.o libshadow.a
- $(CC) -o groupdel $(LDFLAGS) groupdel.o libshadow.a $(LIBS)
-
-groupdel.lint: groupdel.c
- $(LINT) $(LINTFLAGS) groupdel.c > groupdel.lint
-
-groupmod: groupmod.o libshadow.a
- $(CC) -o groupmod $(LDFLAGS) groupmod.o libshadow.a $(LIBS)
-
-groupmod.lint: groupmod.c
- $(LINT) $(LINTFLAGS) groupmod.c > groupmod.lint
-
-logoutd: logoutd.o libshadow.a
- $(CC) -o logoutd $(LDFLAGS) logoutd.o libshadow.a
-
-logoutd.lint: logoutd.c
- $(LINT) $(LINTFLAGS) logoutd.c > logoutd.lint
-
-pwck: pwck.o libshadow.a
- $(CC) -o pwck $(LDFLAGS) pwck.o libshadow.a $(LIBS)
-
-pwck.lint: pwck.c
- $(LINT) $(LINTFLAGS) pwck.c > pwck.lint
-
-grpck: grpck.o libshadow.a
- $(CC) -o grpck $(LDFLAGS) grpck.o libshadow.a $(LIBS)
-
-grpck.lint: grpck.c
- $(LINT) $(LINTFLAGS) grpck.c > grpck.lint
-
-expiry: expiry.o age.o libshadow.a
- $(CC) -o expiry $(LDFLAGS) expiry.o age.o libshadow.a $(LIBS)
-
-expiry.lint: expiry.c
- $(LINT) $(LINTFLAGS) expiry.c > expiry.lint
-
-sulog.o: config.h
-
-susetup.c: setup.c
- cp setup.c susetup.c
-
-susetup.o: config.h susetup.c $(PWD)
- $(CC) -c $(CFLAGS) -DSU susetup.c
-
-scologin: scologin.o
- $(CC) -o scologin $(LDFLAGS) scologin.o -lsocket
-
-passwd.o: config.h shadow.h pwauth.h $(PWD)
-lmain.o: config.h lastlog.h faillog.h pwauth.h $(PWD)
-smain.o: config.h lastlog.h shadow.h pwauth.h $(PWD)
-sub.o: $(PWD)
-setup.o: config.h $(PWD)
-mkrmdir.o: config.h
-utmp.o: config.h
-mail.o: config.h
-motd.o: config.h
-age.o: config.h gshadow.h $(PWD)
-log.o: config.h lastlog.h $(PWD)
-lastlog.o: lastlog.h
-shell.o: config.h
-entry.o: config.h shadow.h $(PWD)
-hushed.o: config.h $(PWD)
-valid.o: config.h $(PWD)
-failure.o: faillog.h config.h
-faillog.o: faillog.h config.h $(PWD)
-newgrp.o: config.h shadow.h gshadow.h $(PWD)
-mkpasswd.o: config.h shadow.h gshadow.h $(PWD)
-gpmain.o: config.h gshadow.h $(PWD)
-chfn.o: config.h $(PWD)
-chsh.o: config.h $(PWD)
-chage.o: config.h shadow.h $(PWD)
-pwconv.o: config.h shadow.h
-pwunconv.o: config.h shadow.h $(PWD)
-chpasswd.o: config.h shadow.h $(PWD)
-id.o: $(PWD)
-newusers.o: config.h shadow.h $(PWD)
-dpmain.o: config.h dialup.h
-useradd.o: config.h shadow.h gshadow.h pwauth.h $(PWD)
-userdel.o: config.h shadow.h gshadow.h pwauth.h $(PWD)
-usermod.o: config.h shadow.h gshadow.h pwauth.h $(PWD)
-groupadd.o: config.h gshadow.h
-groupdel.o: config.h gshadow.h
-groupmod.o: config.h gshadow.h
-logoutd.o: config.h
-sulogin.o: config.h pwauth.h
-copydir.o: config.h
-chowndir.o: config.h
-pwck.o: config.h shadow.h $(PWD)
-grpck.o: config.h gshadow.h $(PWD)
-
-libshadow.a(shadow.o): shadow.h config.h
-libshadow.a(shadowio.o): shadow.h
-libshadow.a(grent.o): config.h gshadow.h
-libshadow.a(sgroupio.o): config.h gshadow.h
-libshadow.a(dialup.o): dialup.h
-libshadow.a(dialchk.o): dialup.h config.h
-libshadow.a(getdef.o): config.h
-libshadow.a(pwdbm.o): config.h $(PWD)
-libshadow.a(spdbm.o): config.h shadow.h
-libshadow.a(grdbm.o): config.h
-libshadow.a(gshadow.o): config.h
-libshadow.a(gsdbm.o): config.h gshadow.h
-libshadow.a(pwauth.o): config.h pwauth.h
-libshadow.a(pwpack.o): config.h $(PWD)
-libshadow.a(pwent.o): config.h $(PWD)
-libshadow.a(pwio.o): config.h $(PWD)
-libshadow.a(getpass.o): config.h
-libshadow.a(encrypt.o): config.h
-libshadow.a(port.o): port.h
-libshadow.a(rad64.o): config.h
-libshadow.a(lockpw.o):
-libshadow.a(gspack.o): config.h gshadow.h
-libshadow.a(utent.o): config.h
-libshadow.a(list.o):
-libshadow.a(strtoday.o): config.h
-libshadow.a(xmalloc.o):
-libshadow.a(basename.o):
-libshadow.a(isexpired.o): config.h shadow.h
-
-clean:
- -rm -f susetup.c *.o a.out core npasswd nshadow *.pag *.dir
-
-clobber: clean
- -rm -f $(BINS) *.lint *.L libshadow.a
-
-nuke: clobber
- -for file in * ; do \
- if [ -f s.$$file -a ! -f p.$$file ] ; then \
- rm -f $$file ;\
- fi ;\
- done
-
-shar: login.sh.01 login.sh.02 login.sh.03 login.sh.04 login.sh.05 \
- login.sh.06 login.sh.07 login.sh.08 login.sh.09 login.sh.10 \
- login.sh.11 login.sh.12
-
-login.sh.01: $(FILES1) Makefile
- shar -a $(FILES1) > login.sh.01
-
-login.sh.02: $(FILES2) Makefile
- shar -a $(FILES2) > login.sh.02
-
-login.sh.03: $(FILES3) Makefile
- shar -a $(FILES3) > login.sh.03
-
-login.sh.04: $(FILES4) Makefile
- shar -a $(FILES4) > login.sh.04
-
-login.sh.05: $(FILES5) Makefile
- shar -a $(FILES5) > login.sh.05
-
-login.sh.06: $(FILES6) Makefile
- shar -a $(FILES6) > login.sh.06
-
-login.sh.07: $(FILES7) Makefile
- shar -a $(FILES7) > login.sh.07
-
-login.sh.08: $(FILES8) Makefile
- shar -a $(FILES8) > login.sh.08
-
-login.sh.09: $(FILES9) Makefile
- shar -a $(FILES9) > login.sh.09
-
-login.sh.10: $(DOCS1) Makefile
- shar -a $(DOCS1) > login.sh.10
-
-login.sh.11: $(DOCS2) Makefile
- shar -a $(DOCS2) > login.sh.11
-
-login.sh.12: $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) Makefile
- shar -a $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) > login.sh.12
+++ /dev/null
-#
-# Copyright 1988 - 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.
-#
-# %W% %U% - Shadow password system (SVR4)
-#
-# $Id: Makefile.svr4,v 1.2 1997/05/01 23:11:55 marekm Exp $
-#
-SHELL = /sbin/sh
-
-#
-# Set this flag to decide what level of code "get" returns.
-# The base USENET release was release 1. It is no longer supported.
-# The version with the utilities added was release 2.
-# The version with database-like file access is release 3.
-RELEASE = 3
-VERSION = ver3.3.2
-GFLAGS = -n $(VERSION)
-GET = get_file
-
-# Define the directory login is copied to. SVr4 uses /usr/bin.
-LOGINDIR = /usr/bin
-SBIN=/usr/sbin
-# system (admin) commands
-UBIN=/usr/bin
-# user commands
-
-# SVr4 doesn't need extra libraries
-NDIR =
-
-# Define some stuff for Cracklib. This assumes that libcracklib.a is
-# in a system directory.
-CRACKDEF='-DUSE_CRACKLIB'
-CRACKLIB=-lcrack
-
-# Pick your favorite C compiler and tags command
-CC = cc
-TAGS = ctags
-
-# OS. This is SVr4
-OS = -DUSG -DSVR4 -DUSE_NIS
-
-# SVr4 doesn't use ranlib
-RANLIB = echo
-
-# Configuration Flags
-#
-# DEST_INCLUDE_DIR - local include files
-# LIBS - system libraries
-# -lsocket - needed for TCP/IP and possibly SYSLOG
-# -ldbm or -lndbm - needed for DBM support
-# -lcrypt - needed for SCO crypt() functions
-# -lucb if -ldbm is defined
-# -lsocket and -lnsl if RLOGIN is defined
-# CFLAGS - C compiler flags
-# -DLAI_TCP - needed for SCO Xenix Lachman TCP/IP
-
-DEST_INCLUDE_DIR = /usr/include
-
-# Flags for SVr4
-CFLAGS = -O -g $(OS) -I$(DEST_INCLUDE_DIR) $(CRACKDEF)
-LIBS = -lsocket -lnsl -ldbm -lucb
-LDFLAGS = -g
-
-# Library is libsec.a
-LIBSEC = libsec.a
-
-# Names for root user and group, and bin user and group.
-RUID = root
-RGID = root
-BUID = bin
-BGID = bin
-
-# Where the login.defs file will be copied. Must agree with config.h
-DEST_LOGIN_DEFS = /etc/login.defs
-
-# Macros for files in SVR4 that aren't to be changed
-PWD = /usr/include/pwd.h
-SHADOW = /usr/include/shadow.h
-
-# Rules for .L (lint) files.
-.SUFFIXES: .L
-LINT = lint
-LINTFLAGS = $(OS) -Dlint
-
-.c.L:
- $(LINT) -pxu $(LINTFLAGS) $*.c > $*.L
-
-LOBJS = lmain.o login.o env.o valid.o setup.o shell.o age.o \
- utmp.o sub.o mail.o motd.o log.o ttytype.o failure.o \
- tz.o console.o hushed.o
-
-LSRCS = lmain.c login.c env.c valid.c setup.c shell.c age.c \
- utmp.c sub.c mail.c motd.c log.c ttytype.c failure.c \
- tz.c console.c hushed.c
-
-SOBJS = smain.o env.o entry.o susetup.o shell.o \
- sub.o mail.o motd.o sulog.o age.o tz.o hushed.o
-
-SSRCS = smain.c env.c entry.c setup.c shell.c \
- pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
- tz.c hushed.c
-
-POBJS = passwd.o obscure.o
-PSRCS = passwd.c obscure.c
-
-GPSRCS = gpmain.c
-
-GPOBJS = gpmain.o
-
-PWOBJS = pwconv.o
-
-PWSRCS = pwconv.c pwent.c shadow.c pwpack.c rad64.c
-
-PWUNOBJS = pwunconv.o
-
-PWUNSRCS = pwunconv.c pwent.c shadow.c pwpack.c rad64.c
-
-SULOGOBJS = sulogin.o entry.o env.o age.o setup.o \
- valid.o shell.o tz.o
-
-SULOGSRCS = sulogin.c entry.c env.c age.c pwent.c setup.c \
- shadow.c shell.c valid.c pwpack.c tz.c
-
-MKPWDOBJS = mkpasswd.o
-
-MKPWDSRCS = mkpasswd.c
-
-NGSRCS = newgrp.c env.c shell.c
-
-NGOBJS = newgrp.o env.o shell.o
-
-CHFNSRCS = chfn.c fields.c
-CHFNOBJS = chfn.o fields.o
-CHSHSRCS = chsh.c fields.c
-CHSHOBJS = chsh.o fields.o
-CHAGEOBJS = chage.o fields.o
-CHAGESRCS = chage.c fields.c
-CHPASSOBJS = chpasswd.o
-CHPASSSRCS = chpasswd.c
-DPSRCS = dpmain.c
-DPOBJS = dpmain.o
-
-ALLSRCS = age.c dialchk.c dialup.c entry.c env.c lmain.c log.c login.c mail.c \
- motd.c obscure.c passwd.c pwconv.c pwent.c pwunconv.c getpass.c \
- setup.c shadow.c shell.c smain.c sub.c sulog.c sulogin.c ttytype.c \
- utmp.c valid.c port.c newgrp.c gpmain.c grent.c mkpasswd.c pwpack.c \
- chfn.c chsh.c chage.c rad64.c encrypt.c chpasswd.c shadowio.c pwio.c \
- newusers.c groupio.c fields.c pwdbm.c grpack.c grdbm.c sppack.c \
- spdbm.c dpmain.c gshadow.c gsdbm.c gspack.c sgroupio.c useradd.c \
- userdel.c patchlevel.h usermod.c copydir.c mkrmdir.c groupadd.c \
- groupdel.c groupmod.c tz.c console.c hushed.c getdef.c \
- logoutd.c groups.c pwauth.c lockpw.c chowndir.c
-
-FILES1 = LICENSE README patchlevel.h newgrp.c Makefile config.h pwunconv.c obscure.c \
- age.c id.c
-
-FILES2 = passwd.c port.c lmain.c sulogin.c pwpack.c dialup.c expiry.c \
- gshadow.h
-
-FILES3 = chfn.c chsh.c smain.c faillog.c pwconv.c shadow.c pwck.c
-
-FILES4 = gpmain.c chage.c pwent.c valid.c setup.c entry.c ttytype.c port.h
-
-FILES5 = pwio.c encrypt.c chpasswd.c newusers.c rad64.c dialchk.c faillog.h \
- pwdbm.c grdbm.c gshadow.c sppack.c grpck.c
-
-FILES6 = gspack.c spdbm.c lastlog.h shell.c login.c sub.c dpmain.c mail.c \
- env.c pwd.h.m4 grpack.c shadow.h log.c grent.c motd.c dialup.h \
- fields.c gsdbm.c utmp.c failure.c
-
-FILES7 = groupio.c shadowio.c sgroupio.c groups.c copydir.c mkrmdir.c \
- mkpasswd.c pwauth.c pwauth.h lastlog.c
-
-FILES8 = useradd.c usermod.c login.defs
-
-FILES9 = groupadd.c groupdel.c groupmod.c tz.c console.c hushed.c getdef.c \
- scologin.c logoutd.c sulog.c getpass.c userdel.c lockpw.c chowndir.c
-
-FILES_SUN4 = Makefile.sun4 README.sun4 config.h.sun4
-FILES_SVR4 = Makefile.svr4 config.h.svr4
-FILES_LINUX = Makefile.linux config.h.linux
-
-MAN_1 = chage.1 chfn.1 chsh.1 id.1 login.1 newgrp.1 passwd.1 su.1 \
- useradd.1 userdel.1 usermod.1 groupadd.1 groupdel.1 groupmod.1 \
- groups.1 pwck.1 grpck.1
-MAN_3 = shadow.3 pwauth.3
-MAN_4 = faillog.4 passwd.4 porttime.4 shadow.4
-MAN_5 = login.5
-MAN_8 = chpasswd.8 dpasswd.8 faillog.8 newusers.8 pwconv.8 pwunconv.8 \
- sulogin.8 mkpasswd.8 logoutd.8 pwauth.8 lastlog.8
-
-DOCS1 = $(MAN_1) $(MAN_3) $(MAN_4)
-DOCS2 = $(MAN_5) $(MAN_8)
-DOCS = $(DOCS1) $(DOCS2)
-
-BINS = su login pwconv pwunconv passwd sulogin faillog newgrp sg gpasswd \
- mkpasswd chfn chsh chage chpasswd newusers dpasswd id useradd \
- userdel usermod groupadd groupdel groupmod $(SCOLOGIN) logoutd \
- groups pwck grpck lastlog expiry
-
-all: $(BINS) $(DOCS)
-
-.PRECIOUS: libshadow.a
-
-libshadow.a: \
- libshadow.a(dialchk.o) \
- libshadow.a(dialup.o) \
- libshadow.a(encrypt.o) \
- libshadow.a(getdef.o) \
- libshadow.a(getpass.o) \
- libshadow.a(grdbm.o) \
- libshadow.a(grent.o) \
- libshadow.a(groupio.o) \
- libshadow.a(grpack.o) \
- libshadow.a(gshadow.o) \
- libshadow.a(gsdbm.o) \
- libshadow.a(gspack.o) \
- libshadow.a(sgroupio.o) \
- libshadow.a(port.o) \
- libshadow.a(pwdbm.o) \
- libshadow.a(pwent.o) \
- libshadow.a(pwio.o) \
- libshadow.a(pwpack.o) \
- libshadow.a(pwauth.o) \
- libshadow.a(rad64.o) \
- libshadow.a(spdbm.o) \
- libshadow.a(shadow.o) \
- libshadow.a(shadowio.o) \
- libshadow.a(sppack.o) \
- libshadow.a(lockpw.o) \
- libshadow.a(utent.o) \
- libshadow.a(list.o) \
- libshadow.a(strtoday.o) \
- libshadow.a(basename.o) \
- libshadow.a(isexpired.o) \
- libshadow.a(xmalloc.o)
- $(RANLIB) libshadow.a
-
-libsec: $(LIBSEC)(shadow.o)
- $(RANLIB) $(LIBSEC)
-
-save:
- [ ! -d save ] && mkdir save
- -cp $(LOGINDIR)/login save
- -cp $(SBIN)/mkpasswd $(SBIN)/pwconv $(SBIN)/pwunconv $(SBIN)/sulogin \
- $(SBIN)/chpasswd $(SBIN)/newusers $(SBIN)/useradd \
- $(SBIN)/userdel $(SBIN)/usermod $(SBIN)/groupadd \
- $(SBIN)/groupdel $(SBIN)/groupmod $(SBIN)/logoutd \
- $(SBIN)/login.defs $(SBIN)/pwck $(SBIN)/grpck save
- -cp $(UBIN)/su $(UBIN)/passwd $(UBIN)/gpasswd $(UBIN)/dpasswd \
- $(UBIN)/faillog $(UBIN)/newgrp $(UBIN)/chfn \
- $(UBIN)/chsh $(UBIN)/chage $(UBIN)/id $(UBIN)/expiry save
- -cp $(DEST_INCLUDE_DIR)/dialup.h $(DEST_INCLUDE_DIR)/gshadow.h save
-
-restore:
- [ -d save ]
- -(cd save ; cp login $(LOGINDIR) )
- -(cd save ; -cp mkpasswd pwconv pwunconv sulogin chpasswd \
- newusers useradd userdel usermod groupadd groupdel groupmod \
- logoutd login.defs pwck grpck $(SBIN) )
- -(cd save ; cp su passwd gpasswd dpasswd faillog newgrp chfn chsh \
- chage id expiry $(UBIN) )
- -(cd save ; cp dialup.h gshadow.h $(DEST_INCLUDE_DIR) )
-
-install: all
- strip $(BINS)
- mcs -da '@(#)shadow 3.3.3' $(BINS)
- cp login $(LOGINDIR)/login
- cp mkpasswd pwconv pwunconv sulogin chpasswd newusers \
- useradd userdel usermod groupadd groupdel groupmod logoutd \
- pwck grpck lastlog $(SBIN)
- cp su passwd gpasswd dpasswd faillog newgrp chfn chsh chage id $(UBIN)
- cp dialup.h gshadow.h /usr/include
- chown $(RUID) $(LOGINDIR)/login $(SBIN)/pwconv $(SBIN)/pwunconv \
- $(SBIN)/sulogin $(UBIN)/su $(UBIN)/passwd $(UBIN)/gpasswd \
- $(UBIN)/newgrp $(SBIN)/mkpasswd $(UBIN)/dpasswd $(UBIN)/chsh \
- $(UBIN)/chfn $(UBIN)/chage $(SBIN)/useradd $(SBIN)/userdel \
- $(SBIN)/usermod $(SBIN)/groupadd $(SBIN)/groupdel \
- $(SBIN)/groupmod $(SBIN)/logoutd $(SBIN)/pwck $(SBIN)/grpck \
- $(UBIN)/expiry
- chgrp $(RGID) $(LOGINDIR)/login $(SBIN)/pwconv $(SBIN)/pwunconv \
- $(SBIN)/sulogin $(UBIN)/su $(UBIN)/passwd $(UBIN)/gpasswd \
- $(UBIN)/newgrp $(SBIN)/mkpasswd $(UBIN)/dpasswd $(UBIN)/chsh \
- $(UBIN)/chfn $(UBIN)/chage $(SBIN)/useradd $(SBIN)/userdel \
- $(SBIN)/usermod $(SBIN)/groupadd $(SBIN)/groupdel \
- $(SBIN)/groupmod $(SBIN)/logoutd $(SBIN)/pwck $(SBIN)/grpck \
- $(UBIN)/expiry
- chown $(BUID) $(UBIN)/faillog $(UBIN)/id /usr/include/gshadow.h \
- /usr/include/dialup.h
- chgrp $(BGID) $(UBIN)/faillog $(UBIN)/id /usr/include/gshadow.h \
- /usr/include/dialup.h
- chmod 700 $(SBIN)/pwconv $(SBIN)/pwunconv $(SBIN)/sulogin \
- $(SBIN)/mkpasswd $(SBIN)/chpasswd $(SBIN)/newusers \
- $(UBIN)/dpasswd $(UBIN)/chage $(SBIN)/useradd $(SBIN)/userdel \
- $(SBIN)/usermod $(SBIN)/groupadd $(SBIN)/groupdel \
- $(SBIN)/groupmod $(SBIN)/logoutd $(SBIN)/pwck $(SBIN)/grpck
- chmod 4711 $(LOGINDIR)/login $(UBIN)/su $(UBIN)/passwd $(UBIN)/gpasswd \
- $(UBIN)/newgrp $(UBIN)/chfn $(UBIN)/chsh $(UBIN)/expiry
- chmod 711 $(UBIN)/faillog $(UBIN)/id
- chmod 444 /usr/include/gshadow.h /usr/include/dialup.h
- rm -f $(UBIN)/sg
- ln $(UBIN)/newgrp $(UBIN)/sg
- [ -f /etc/login.defs ] || (cp login.defs /etc ; \
- chown $(RUID) /etc/login.defs ; \
- chgrp $(RGID) /etc/login.defs ; \
- chmod 600 /etc/login.defs )
-
-lint: su.lint login.lint pwconv.lint pwunconv.lint passwd.lint sulogin.lint \
- faillog.lint newgrp.lint gpasswd.lint mkpasswd.lint chfn.lint \
- chsh.lint chage.lint dpasswd.lint id.lint useradd.lint userdel.lint \
- usermod.lint groupadd.lint groupdel.lint groupmod.lint logoutd.lint \
- pwck.lint grpck.lint expiry.lint \
- $(ALLSRCS:.c=.L)
-
-tags: $(ALLSRCS)
- $(TAGS) $(ALLSRCS)
-
-README:
- [ -f s.README ] && get -t -r$(RELEASE) s.README
-
-$(DOCS):
- [ -f s.$@ ] && get -t -r$(RELEASE) s.$@
-
-login.defs:
- [ -f s.login.defs ] && get -t -r$(RELEASE) s.login.defs
-
-Makefile.sun4:
- [ -f s.Makefile.sun4 ] && get -t -r$(RELEASE) s.Makefile.sun4
-
-Makefile.svr4:
- [ -f s.Makefile.svr4 ] && get -t -r$(RELEASE) s.Makefile.svr4
-
-README.sun4:
- [ -f s.README.sun4 ] && get -t -r$(RELEASE) s.README.sun4
-
-config.h.sun4:
- [ -f s.config.h.sun4 ] && get -t -r$(RELEASE) s.config.h.sun4
-
-config.h.svr4:
- [ -f s.config.h.svr4 ] && get -t -r$(RELEASE) s.config.h.svr4
-
-login: $(LOBJS) libshadow.a
- $(CC) -o login $(LDFLAGS) $(LOBJS) libshadow.a $(LIBS)
-
-login.lint: $(LSRCS)
- $(LINT) $(LINTFLAGS) $(LSRCS) > login.lint
-
-su: $(SOBJS) libshadow.a
- $(CC) -o su $(LDFLAGS) $(SOBJS) libshadow.a $(LIBS)
-
-su.lint: $(SSRCS)
- $(LINT) $(LINTFLAGS) -DSU $(SSRCS) > su.lint
-
-passwd: $(POBJS) libshadow.a
- $(CC) -o passwd $(LDFLAGS) $(POBJS) libshadow.a $(LIBS) $(CRACKLIB)
-
-passwd.lint: $(PSRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(PSRCS) > passwd.lint
-
-gpasswd: $(GPOBJS) libshadow.a
- $(CC) -o gpasswd $(LDFLAGS) $(GPOBJS) libshadow.a $(LIBS)
-
-gpasswd.lint: $(GPSRCS)
- $(LINT) $(LINTFLAGS) $(GPSRCS) > gpasswd.lint
-
-dpasswd: $(DPOBJS) libshadow.a
- $(CC) -o dpasswd $(LDFLAGS) $(DPOBJS) libshadow.a $(LIBS)
-
-dpasswd.lint: $(DPSRCS)
- $(LINT) $(LINTFLAGS) $(DPSRCS) > dpasswd.lint
-
-pwconv: $(PWOBJS) libshadow.a config.h
- $(CC) -o pwconv $(LDFLAGS) $(PWOBJS) libshadow.a $(LIBS)
-
-pwconv.lint: $(PWSRCS) config.h
- $(LINT) $(LINTFLAGS) -DPASSWD $(PWSRCS) > pwconv.lint
-
-pwunconv: $(PWUNOBJS) libshadow.a config.h
- $(CC) -o pwunconv $(LDFLAGS) $(PWUNOBJS) libshadow.a $(LIBS)
-
-pwunconv.lint: $(PWUNSRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(PWUNSRCS) > pwunconv.lint
-
-sulogin: $(SULOGOBJS) libshadow.a
- $(CC) -o sulogin $(LDFLAGS) $(SULOGOBJS) libshadow.a $(LIBS)
-
-sulogin.lint: $(SULOGSRCS)
- $(LINT) $(LINTFLAGS) $(SULOGSRCS) > sulogin.lint
-
-faillog: faillog.o
- $(CC) -o faillog $(LDFLAGS) faillog.o $(LIBS)
-
-faillog.lint: faillog.c faillog.h config.h
- $(LINT) $(LINTFLAGS) faillog.c > faillog.lint
-
-lastlog: lastlog.o
- $(CC) -o lastlog $(LDFLAGS) lastlog.o $(LIBS)
-
-lastlog.lint: lastlog.c config.h lastlog.h
- $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > lastlog.lint
-
-mkpasswd: $(MKPWDOBJS) libshadow.a
- $(CC) -o mkpasswd $(LDFLAGS) $(MKPWDOBJS) libshadow.a $(LIBS)
-
-mkpasswd.lint: $(MKPWDSRCS)
- $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > mkpasswd.lint
-
-newgrp: $(NGOBJS) libshadow.a
- $(CC) -o newgrp $(LDFLAGS) $(NGOBJS) libshadow.a $(LIBS)
-
-newgrp.lint: $(NGSRCS)
- $(LINT) $(LINTFLAGS) $(NGSRCS) > newgrp.lint
-
-sg: newgrp
- /bin/rm -f sg
- ln newgrp sg
-
-sg.lint: newgrp.lint
- ln newgrp.lint sg.lint
-
-chfn: $(CHFNOBJS) libshadow.a
- $(CC) -o chfn $(LDFLAGS) $(CHFNOBJS) libshadow.a $(LIBS)
-
-chfn.lint: $(CHFNSRCS)
- $(LINT) $(LINTFLAGS) $(CHFNSRCS) > chfn.lint
-
-chsh: $(CHSHOBJS) libshadow.a
- $(CC) -o chsh $(LDFLAGS) $(CHSHOBJS) libshadow.a $(LIBS)
-
-chsh.lint: $(CHSHSRCS)
- $(LINT) $(LINTFLAGS) $(CHSHSRCS) > chsh.lint
-
-chage: $(CHAGEOBJS) libshadow.a
- $(CC) -o chage $(LDFLAGS) $(CHAGEOBJS) libshadow.a $(LIBS)
-
-chage.lint: $(CHAGESRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(CHAGESRCS) > chage.lint
-
-chpasswd: $(CHPASSOBJS) libshadow.a
- $(CC) -o chpasswd $(LDFLAGS) $(CHPASSOBJS) libshadow.a $(LIBS)
-
-chpasswd.lint: $(CHPASSSRCS)
- $(LINT) $(LINTFLAGS) $(CHPASSSRCS) > chpasswd.lint
-
-newusers: newusers.o libshadow.a
- $(CC) -o newusers $(LDFLAGS) newusers.o libshadow.a $(LIBS)
-
-newusers.lint: newusers.c
- $(LINT) $(LINTFLAGS) newusers.c > newusers.lint
-
-id: id.o libshadow.a
- $(CC) -o id $(LDFLAGS) id.o libshadow.a $(LIBS)
-
-id.lint: id.c
- $(LINT) $(LINTFLAGS) id.c > id.lint
-
-groups: groups.o libshadow.a
- $(CC) -o groups $(LDFLAGS) groups.o libshadow.a $(LIBS)
-
-groups.lint: groups.c
- $(LINT) $(LINTFLAGS) groups.c > groups.lint
-
-useradd: useradd.o copydir.o mkrmdir.o libshadow.a
- $(CC) -o useradd $(LDFLAGS) useradd.o copydir.o mkrmdir.o \
- libshadow.a $(LIBS) $(NDIR)
-
-useradd.lint: useradd.c copydir.c mkrmdir.c
- $(LINT) $(LINTFLAGS) useradd.c copydir.c mkrmdir.c > useradd.lint
-
-userdel: userdel.o copydir.o mkrmdir.o libshadow.a
- $(CC) -o userdel $(LDFLAGS) userdel.o copydir.o mkrmdir.o \
- libshadow.a $(LIBS) $(NDIR)
-
-userdel.lint: userdel.c copydir.c mkrmdir.c
- $(LINT) $(LINTFLAGS) userdel.c copydir.c mkrmdir.c > userdel.lint
-
-usermod: usermod.o copydir.o mkrmdir.o chowndir.o libshadow.a
- $(CC) -o usermod $(LDFLAGS) usermod.o copydir.o mkrmdir.o \
- chowndir.o libshadow.a $(LIBS) $(NDIR)
-
-usermod.lint: usermod.c copydir.c mkrmdir.c chowndir.c
- $(LINT) $(LINTFLAGS) usermod.c copydir.c mkrmdir.c \
- chowndir.c > usermod.lint
-
-groupadd: groupadd.o libshadow.a
- $(CC) -o groupadd $(LDFLAGS) groupadd.o libshadow.a $(LIBS)
-
-groupadd.lint: groupadd.c
- $(LINT) $(LINTFLAGS) groupadd.c > groupadd.lint
-
-groupdel: groupdel.o libshadow.a
- $(CC) -o groupdel $(LDFLAGS) groupdel.o libshadow.a $(LIBS)
-
-groupdel.lint: groupdel.c
- $(LINT) $(LINTFLAGS) groupdel.c > groupdel.lint
-
-groupmod: groupmod.o libshadow.a
- $(CC) -o groupmod $(LDFLAGS) groupmod.o libshadow.a $(LIBS)
-
-groupmod.lint: groupmod.c
- $(LINT) $(LINTFLAGS) groupmod.c > groupmod.lint
-
-logoutd: logoutd.o libshadow.a
- $(CC) -o logoutd $(LDFLAGS) logoutd.o libshadow.a
-
-logoutd.lint: logoutd.c
- $(LINT) $(LINTFLAGS) logoutd.c > logoutd.lint
-
-pwck: pwck.o libshadow.a
- $(CC) -o pwck $(LDFLAGS) pwck.o libshadow.a $(LIBS)
-
-pwck.lint: pwck.c
- $(LINT) $(LINTFLAGS) pwck.c > pwck.lint
-
-grpck: grpck.o libshadow.a
- $(CC) -o grpck $(LDFLAGS) grpck.o libshadow.a $(LIBS)
-
-grpck.lint: grpck.c
- $(LINT) $(LINTFLAGS) grpck.c > grpck.lint
-
-expiry: expiry.o age.o libshadow.a
- $(CC) -o expiry $(LDFLAGS) expiry.o age.o libshadow.a $(LIBS)
-
-expiry.lint: expiry.c
- $(LINT) $(LINTFLAGS) expiry.c > expiry.lint
-
-sulog.o: config.h
-
-susetup.c: setup.c
- cp setup.c susetup.c
-
-susetup.o: config.h susetup.c $(PWD)
- $(CC) -c $(CFLAGS) -DSU susetup.c
-
-passwd.o: config.h $(SHADOW) $(PWD) pwauth.h
-lmain.o: config.h lastlog.h faillog.h $(PWD) pwauth.h
-smain.o: config.h lastlog.h $(PWD) $(SHADOW) pwauth.h
-sub.o: $(PWD)
-setup.o: config.h $(PWD)
-mkrmdir.o: config.h
-utmp.o: config.h
-mail.o: config.h
-motd.o: config.h
-age.o: config.h gshadow.h $(PWD)
-log.o: config.h lastlog.h $(PWD)
-lastlog.o: lastlog.h
-shell.o: config.h
-entry.o: config.h $(SHADOW) $(PWD)
-hushed.o: config.h $(PWD)
-valid.o: config.h $(PWD)
-failure.o: faillog.h config.h
-faillog.o: faillog.h config.h $(PWD)
-newgrp.o: config.h $(SHADOW) $(PWD)
-mkpasswd.o: config.h $(SHADOW) $(PWD)
-gpmain.o: config.h $(PWD)
-chfn.o: config.h $(PWD)
-chsh.o: config.h $(PWD)
-chage.o: config.h $(SHADOW) $(PWD)
-pwconv.o: config.h $(SHADOW)
-pwunconv.o: config.h $(SHADOW) $(PWD)
-chpasswd.o: config.h $(SHADOW) $(PWD)
-id.o: $(PWD)
-newusers.o: config.h $(SHADOW) $(PWD)
-dpmain.o: config.h dialup.h
-useradd.o: config.h $(SHADOW) $(PWD) pwauth.h gshadow.h
-userdel.o: config.h $(SHADOW) $(PWD) pwauth.h gshadow.h
-usermod.o: config.h $(SHADOW) $(PWD) pwauth.h gshadow.h
-groupadd.o: config.h gshadow.h
-groupdel.o: config.h gshadow.h
-groupmod.o: config.h gshadow.h
-logoutd.o: config.h
-sulogin.o: config.h pwauth.h
-copydir.o: config.h
-chowndir.o: config.h
-pwck.o: config.h $(SHADOW) $(PWD)
-grpck.o: config.h gshadow.h $(PWD)
-
-libshadow.a(shadow.o): $(SHADOW) config.h
-libshadow.a(shadowio.o): $(SHADOW) config.h
-libshadow.a(grent.o): config.h gshadow.h
-libshadow.a(sgroupio.o): config.h gshadow.h
-libshadow.a(dialup.o): dialup.h
-libshadow.a(dialchk.o): dialup.h config.h
-libshadow.a(getdef.o): config.h
-libshadow.a(pwdbm.o): config.h $(PWD)
-libshadow.a(spdbm.o): config.h $(SHADOW)
-libshadow.a(grdbm.o): config.h
-libshadow.a(gsdbm.o): config.h gshadow.h
-libshadow.a(pwauth.o): config.h pwauth.h
-libshadow.a(pwpack.o): config.h $(PWD)
-libshadow.a(pwent.o): config.h $(PWD)
-libshadow.a(pwio.o): $(PWD)
-libshadow.a(getpass.o): config.h
-libshadow.a(encrypt.o): config.h
-libshadow.a(port.o): port.h
-libshadow.a(rad64.o): config.h
-libshadow.a(lockpw.o):
-libshadow.a(gspack.o): config.h gshadow.h
-libshadow.a(list.o):
-libshadow.a(strtoday.o): config.h
-libshadow.a(xmalloc.o):
-libshadow.a(basename.o):
-libshadow.a(isexpired.o): config.h $(SHADOW)
-
-clean:
- -rm -f susetup.c *.o a.out core npasswd nshadow *.pag *.dir
-
-clobber: clean
- -rm -f $(BINS) *.lint *.L libshadow.a
-
-nuke: clobber
- -for file in * ; do \
- if [ -f s.$$file -a ! -f p.$$file ] ; then \
- rm -f $$file ;\
- fi ;\
- done
-
-shar: login.sh.01 login.sh.02 login.sh.03 login.sh.04 login.sh.05 \
- login.sh.06 login.sh.07 login.sh.08 login.sh.09 login.sh.10 \
- login.sh.11 login.sh.12
-
-login.sh.01: $(FILES1) Makefile
- shar -a $(FILES1) > login.sh.01
-
-login.sh.02: $(FILES2) Makefile
- shar -a $(FILES2) > login.sh.02
-
-login.sh.03: $(FILES3) Makefile
- shar -a $(FILES3) > login.sh.03
-
-login.sh.04: $(FILES4) Makefile
- shar -a $(FILES4) > login.sh.04
-
-login.sh.05: $(FILES5) Makefile
- shar -a $(FILES5) > login.sh.05
-
-login.sh.06: $(FILES6) Makefile
- shar -a $(FILES6) > login.sh.06
-
-login.sh.07: $(FILES7) Makefile
- shar -a $(FILES7) > login.sh.07
-
-login.sh.08: $(FILES8) Makefile
- shar -a $(FILES8) > login.sh.08
-
-login.sh.09: $(FILES9) Makefile
- shar -a $(FILES9) > login.sh.09
-
-login.sh.10: $(DOCS1) Makefile
- shar -a $(DOCS1) > login.sh.10
-
-login.sh.11: $(DOCS2) Makefile
- shar -a $(DOCS2) > login.sh.11
-
-login.sh.12: $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) Makefile
- shar -a $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) > login.sh.12
+++ /dev/null
-#
-# Copyright 1988 - 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.
-#
-# %W% %U% - Shadow password system
-#
-# $Id: Makefile.xenix,v 1.2 1997/05/01 23:11:55 marekm Exp $
-#
-SHELL = /bin/sh
-
-#
-# Set this flag to decide what level of code "get" returns.
-# The base USENET release was release 1. It is no longer supported.
-# The version with the utilities added was release 2. It is now unsupported.
-# The version with database-like file access is release 3.
-RELEASE = 3
-VERSION = ver3.3.2
-GFLAGS = -n $(VERSION)
-GET = get_file
-
-# Define the directory login is copied to. BE VERY CAREFUL!!! BSD old SunOS
-# seems to use /bin, USG seems to use /etc, SunOS 4.1.1 seems to use /usr/bin.
-# If you define SCOLOGIN, you MUST use /etc as LOGINDIR.
-# LOGINDIR = /bin
-LOGINDIR = /etc
-# LOGINDIR = /usr/bin
-
-# Define any special libraries required to access the directory routines.
-# Some systems require -lndir for the directory routines. SCO Xenix uses
-# -lx for that. Your system might need nothing.
-# NDIR = -lndir
-NDIR = -lx
-# NDIR =
-
-# Define some stuff for Cracklib. This assumes that libcracklib.a is
-# in a system directory.
-# CRACKDEF='-DUSE_CRACKLIB'
-# CRACKLIB=-lcrack
-
-# Pick your favorite C compiler and tags command
-CC = cc
-TAGS = ctags
-
-# OS. Pick one of USG (AT&T, SYSV, SYS3), BSD, SUN (SunOS 2 and 3),
-# SUN4 (SunOS 4.1.1.), UNIXPC (AT&T PC/7300, 3B1), or AIX (AIX v3)
-# OS = -DUSG -DSYS3
-OS = -DUSG
-# OS = -DBSD
-# OS = -DSUN
-# OS = -DSUN4
-# OS = -DUSG -DUNIXPC
-# OS = -DAIX
-
-# Do you have to do ranlib (probably SUN, BSD and XENIX)?
-RANLIB = ranlib
-# RANLIB = echo
-
-# Enable the following if you are running SCO TCP/IP. It is a /bin/login
-# which understands the *ahem* novel way they do rlogin/telnet.
-# SCOLOGIN = scologin
-
-# Configuration Flags
-#
-# DEST_INCLUDE_DIR - local include files
-# LIBS - system libraries
-# -lsocket - needed for TCP/IP and possibly SYSLOG
-# -ldbm or -lndbm - needed for DBM support
-# -lcrypt - needed for SCO crypt() functions
-# CFLAGS - C compiler flags
-# -DLAI_TCP - needed for SCO Xenix Lachman TCP/IP
-
-DEST_INCLUDE_DIR = /usr/include
-
-# Flags for SCO Xenix/386
-CFLAGS = -O -M3 -g $(OS) -I$(DEST_INCLUDE_DIR) $(CRACKDEF)
-LIBS = -lcrypt -lndbm
-# LIBS = -lcrypt -ldbm
-LDFLAGS = -M3 -g
-LTFLAGS =
-
-# Flags for normal machines
-# CFLAGS = -O -g $(OS) -I$(DEST_INCLUDE_DIR) $(CRACKDEF)
-# LIBS =
-# LDFLAGS = -g
-
-# Flags for SunOS 4.1.1
-# CFLAGS = -O2 $(OS) -I$(DEST_INCLUDE_DIR) $(CRACKDEF)
-# LIBS =
-# LDFLAGS =
-
-# This should be Slibsec.a for small model, or Llibsec.a for
-# large model or whatever. MUST AGREE WITH CFLAGS!!! For non-Intel
-# machines, just use libsec.a
-LIBSEC = Slibsec.a
-# LIBSEC = libsec.a
-
-# Names for root user and group, and bin user and group. See your
-# /etc/passwd and /etc/group files. BSD and SUN use "wheel", most
-# others use "root" for RGID.
-RUID = root
-RGID = root
-# RGID = wheel
-BUID = bin
-BGID = bin
-
-# Where the login.defs file will be copied. Must agree with config.h
-DEST_LOGIN_DEFS = /etc/login.defs
-
-# Rules for .L (lint) files.
-.SUFFIXES: .L
-LINT = lint
-LINTFLAGS = $(OS) -Dlint
-
-.c.L:
- $(LINT) -pxu $(LINTFLAGS) $*.c > $*.L
-
-LOBJS = lmain.o login.o env.o valid.o setup.o shell.o age.o \
- utmp.o sub.o mail.o motd.o log.o ttytype.o failure.o \
- tz.o console.o hushed.o
-
-LSRCS = lmain.c login.c env.c valid.c setup.c shell.c age.c \
- utmp.c sub.c mail.c motd.c log.c ttytype.c failure.c \
- tz.c console.c hushed.c
-
-SOBJS = smain.o env.o entry.o susetup.o shell.o \
- sub.o mail.o motd.o sulog.o age.o tz.o hushed.o
-
-SSRCS = smain.c env.c entry.c setup.c shell.c \
- pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
- tz.c hushed.c
-
-POBJS = passwd.o obscure.o
-PSRCS = passwd.c obscure.c
-
-GPSRCS = gpmain.c
-
-GPOBJS = gpmain.o
-
-PWOBJS = pwconv.o
-
-PWSRCS = pwconv.c pwent.c shadow.c pwpack.c rad64.c
-
-PWUNOBJS = pwunconv.o
-
-PWUNSRCS = pwunconv.c pwent.c shadow.c pwpack.c rad64.c
-
-SULOGOBJS = sulogin.o entry.o env.o age.o setup.o \
- valid.o shell.o tz.o
-
-SULOGSRCS = sulogin.c entry.c env.c age.c pwent.c setup.c \
- shadow.c shell.c valid.c pwpack.c tz.c
-
-MKPWDOBJS = mkpasswd.o
-
-MKPWDSRCS = mkpasswd.c
-
-NGSRCS = newgrp.c env.c shell.c
-
-NGOBJS = newgrp.o env.o shell.o
-
-CHFNSRCS = chfn.c fields.c
-CHFNOBJS = chfn.o fields.o
-CHSHSRCS = chsh.c fields.c
-CHSHOBJS = chsh.o fields.o
-CHAGEOBJS = chage.o fields.o
-CHAGESRCS = chage.c fields.c
-CHPASSOBJS = chpasswd.o
-CHPASSSRCS = chpasswd.c
-DPSRCS = dpmain.c
-DPOBJS = dpmain.o
-
-ALLSRCS = age.c dialchk.c dialup.c entry.c env.c lmain.c log.c login.c mail.c \
- motd.c obscure.c passwd.c pwconv.c pwent.c pwunconv.c getpass.c \
- setup.c shadow.c shell.c smain.c sub.c sulog.c sulogin.c ttytype.c \
- utmp.c valid.c port.c newgrp.c gpmain.c grent.c mkpasswd.c pwpack.c \
- chfn.c chsh.c chage.c rad64.c encrypt.c chpasswd.c shadowio.c pwio.c \
- newusers.c groupio.c fields.c pwdbm.c grpack.c grdbm.c sppack.c \
- spdbm.c dpmain.c gshadow.c gsdbm.c gspack.c sgroupio.c useradd.c \
- userdel.c patchlevel.h usermod.c copydir.c mkrmdir.c groupadd.c \
- groupdel.c groupmod.c tz.c console.c hushed.c getdef.c scologin.c \
- logoutd.c groups.c pwauth.c lockpw.c chowndir.c rename.c
-
-FILES1 = LICENSE README patchlevel.h newgrp.c Makefile config.h pwunconv.c obscure.c \
- age.c id.c
-
-FILES2 = passwd.c port.c lmain.c sulogin.c pwpack.c dialup.c expiry.c \
- gshadow.h
-
-FILES3 = chfn.c chsh.c smain.c faillog.c pwconv.c shadow.c pwck.c utent.c
-
-FILES4 = gpmain.c chage.c pwent.c valid.c setup.c entry.c ttytype.c port.h
-
-FILES5 = pwio.c encrypt.c chpasswd.c newusers.c rad64.c dialchk.c faillog.h \
- pwdbm.c grdbm.c gshadow.c sppack.c grpck.c
-
-FILES6 = gspack.c spdbm.c lastlog.h shell.c login.c sub.c dpmain.c mail.c \
- env.c pwd.h.m4 grpack.c shadow.h log.c grent.c motd.c dialup.h \
- fields.c gsdbm.c utmp.c failure.c
-
-FILES7 = groupio.c shadowio.c sgroupio.c groups.c copydir.c mkrmdir.c \
- mkpasswd.c pwauth.c pwauth.h lastlog.c
-
-FILES8 = useradd.c usermod.c login.defs rename.c
-
-FILES9 = groupadd.c groupdel.c groupmod.c tz.c console.c hushed.c getdef.c \
- scologin.c logoutd.c sulog.c getpass.c userdel.c lockpw.c chowndir.c
-
-FILES_SUN4 = Makefile.sun4 README.sun4 config.h.sun4
-FILES_SVR4 = Makefile.svr4 config.h.svr4
-FILES_LINUX = Makefile.linux config.h.linux
-
-MAN_1 = chage.1 chfn.1 chsh.1 id.1 login.1 newgrp.1 passwd.1 su.1 \
- useradd.1 userdel.1 usermod.1 groupadd.1 groupdel.1 groupmod.1 \
- groups.1 pwck.1 grpck.1
-MAN_3 = shadow.3 pwauth.3
-MAN_4 = faillog.4 passwd.4 porttime.4 shadow.4
-MAN_5 = login.5
-MAN_8 = chpasswd.8 dpasswd.8 faillog.8 newusers.8 pwconv.8 pwunconv.8 \
- sulogin.8 mkpasswd.8 logoutd.8 pwauth.8 lastlog.8
-
-DOCS1 = $(MAN_1) $(MAN_3) $(MAN_4)
-DOCS2 = $(MAN_5) $(MAN_8)
-DOCS = $(DOCS1) $(DOCS2)
-
-BINS = su login pwconv pwunconv passwd sulogin faillog newgrp sg gpasswd \
- mkpasswd chfn chsh chage chpasswd newusers dpasswd id useradd \
- userdel usermod groupadd groupdel groupmod $(SCOLOGIN) logoutd \
- groups pwck grpck lastlog expiry
-
-all: $(BINS) $(DOCS)
-
-.PRECIOUS: libshadow.a
-
-libshadow.a: \
- libshadow.a(dialchk.o) \
- libshadow.a(dialup.o) \
- libshadow.a(encrypt.o) \
- libshadow.a(getdef.o) \
- libshadow.a(getpass.o) \
- libshadow.a(grdbm.o) \
- libshadow.a(grent.o) \
- libshadow.a(groupio.o) \
- libshadow.a(grpack.o) \
- libshadow.a(gshadow.o) \
- libshadow.a(gsdbm.o) \
- libshadow.a(gspack.o) \
- libshadow.a(sgroupio.o) \
- libshadow.a(port.o) \
- libshadow.a(pwdbm.o) \
- libshadow.a(pwent.o) \
- libshadow.a(pwio.o) \
- libshadow.a(pwpack.o) \
- libshadow.a(pwauth.o) \
- libshadow.a(rad64.o) \
- libshadow.a(spdbm.o) \
- libshadow.a(shadow.o) \
- libshadow.a(shadowio.o) \
- libshadow.a(sppack.o) \
- libshadow.a(lockpw.o) \
- libshadow.a(rename.o) \
- libshadow.a(utent.o) \
- libshadow.a(list.o) \
- libshadow.a(strtoday.o) \
- libshadow.a(basename.o) \
- libshadow.a(isexpired.o) \
- libshadow.a(xmalloc.o)
- $(RANLIB) libshadow.a
-
-libsec: $(LIBSEC)(shadow.o)
- $(RANLIB) $(LIBSEC)
-
-save:
- [ ! -d save ] && mkdir save
- -cp $(LOGINDIR)/login save
- -cp /etc/mkpasswd /etc/pwconv /etc/pwunconv /etc/sulogin /etc/chpasswd \
- /etc/newusers /etc/useradd /etc/userdel /etc/usermod \
- /etc/groupadd /etc/groupdel /etc/groupmod /etc/logoutd \
- /etc/login.defs /etc/pwck /etc/grpck /bin/expiry save
- -cp /bin/su /bin/passwd /bin/gpasswd /bin/dpasswd /bin/faillog \
- /bin/newgrp /bin/chfn /bin/chsh /bin/chage /bin/id \
- /bin/scologin save
- -cp $(DEST_INCLUDE_DIR)/dialup.h $(DEST_INCLUDE_DIR)/shadow.h \
- $(DEST_INCLUDE_DIR)/pwd.h $(DEST_INCLUDE_DIR)/gshadow.h save
-
-restore:
- [ -d save ]
- -(cd save ; cp login $(LOGINDIR) )
- -(cd save ; -cp mkpasswd pwconv pwunconv sulogin chpasswd \
- newusers useradd userdel usermod groupadd groupdel groupmod \
- logoutd login.defs pwck grpck /etc)
- -(cd save ; cp su passwd gpasswd dpasswd faillog newgrp chfn chsh \
- chage id scologin expiry /bin)
- -(cd save ; cp dialup.h shadow.h pwd.h gshadow.h $(DEST_INCLUDE_DIR) )
-
-install: all
- strip $(BINS)
- cp login $(LOGINDIR)/login
- cp mkpasswd pwconv pwunconv sulogin chpasswd newusers \
- useradd userdel usermod groupadd groupdel groupmod logoutd \
- pwck grpck /etc
- cp su passwd gpasswd dpasswd faillog newgrp chfn chsh chage id /bin
- rm -f /bin/sg
- ln /bin/newgrp /bin/sg
- cp dialup.h shadow.h pwd.h gshadow.h $(DEST_INCLUDE_DIR)
- chown $(RUID) $(LOGINDIR)/login /etc/pwconv /etc/pwunconv /etc/sulogin \
- /bin/su /bin/passwd /bin/gpasswd /bin/newgrp /etc/mkpasswd \
- /bin/dpasswd /bin/chsh /bin/chfn /bin/chage /etc/useradd \
- /etc/userdel /etc/usermod /etc/groupadd /etc/groupdel \
- /etc/groupmod /etc/logoutd /etc/pwck /etc/grpck /bin/expiry
- chgrp $(RGID) $(LOGINDIR)/login /etc/pwconv /etc/pwunconv /etc/sulogin \
- /bin/su /bin/passwd /bin/gpasswd /bin/newgrp /etc/mkpasswd \
- /bin/dpasswd /bin/chsh /bin/chfn /bin/chage /etc/useradd \
- /etc/userdel /etc/usermod /etc/groupadd /etc/groupdel \
- /etc/groupmod /etc/logoutd /etc/pwck /etc/grpck /bin/expiry
- chown $(BUID) /bin/faillog /bin/id $(DEST_INCLUDE_DIR)/shadow.h \
- $(DEST_INCLUDE_DIR)/dialup.h $(DEST_INCLUDE_DIR)/pwd.h \
- $(DEST_INCLUDE_DIR)/gshadow.h
- chgrp $(BGID) /bin/faillog /bin/id $(DEST_INCLUDE_DIR)/shadow.h \
- $(DEST_INCLUDE_DIR)/dialup.h $(DEST_INCLUDE_DIR)/pwd.h \
- $(DEST_INCLUDE_DIR)/gshadow.h
- chmod 700 /etc/pwconv /etc/pwunconv /etc/sulogin /etc/mkpasswd \
- /etc/chpasswd /etc/newusers /bin/dpasswd /etc/logoutd \
- /etc/useradd /etc/userdel /etc/usermod /etc/groupadd \
- /etc/groupdel /etc/groupmod /etc/pwck /etc/grpck
- chmod 4711 $(LOGINDIR)/login /bin/su /bin/passwd /bin/gpasswd \
- /bin/newgrp /bin/chfn /bin/chsh /bin/chage /bin/expiry
- chmod 711 /bin/faillog /bin/id
- chmod 444 $(DEST_INCLUDE_DIR)/shadow.h $(DEST_INCLUDE_DIR)/dialup.h \
- $(DEST_INCLUDE_DIR)/pwd.h $(DEST_INCLUDE_DIR)/gshadow.h
- [ -f $(DEST_LOGIN_DEFS) ] || (cp login.defs $(DEST_LOGIN_DEFS) ; \
- chown $(RUID) $(DEST_LOGIN_DEFS) ; \
- chgrp $(RGID) $(DEST_LOGIN_DEFS) ; \
- chmod 600 $(DEST_LOGIN_DEFS) )
- [ -z "$(SCOLOGIN)" ] || (cp scologin /bin/login ; \
- chown $(RUID) /bin/login ; \
- chgrp $(RGID) /bin/login ; \
- chmod 755 /bin/login )
-
-lint: su.lint login.lint pwconv.lint pwunconv.lint passwd.lint sulogin.lint \
- faillog.lint newgrp.lint gpasswd.lint mkpasswd.lint chfn.lint \
- chsh.lint chage.lint dpasswd.lint id.lint useradd.lint userdel.lint \
- usermod.lint groupadd.lint groupdel.lint groupmod.lint logoutd.lint \
- pwck.lint grpck.lint expiry.lint \
- $(ALLSRCS:.c=.L)
-
-tags: $(ALLSRCS)
- $(TAGS) $(ALLSRCS)
-
-README:
- [ -f s.README ] && $(GET) $(GFLAGS) s.README
-
-$(DOCS):
- [ -f s.$@ ] && $(GET) $(GFLAGS) s.$@
-
-login.defs:
- [ -f s.login.defs ] && $(GET) $(GFLAGS) s.login.defs
-
-Makefile.sun4:
- [ -f s.Makefile.sun4 ] && $(GET) $(GFLAGS) s.Makefile.sun4
-
-Makefile.svr4:
- [ -f s.Makefile.svr4 ] && $(GET) $(GFLAGS) s.Makefile.svr4
-
-README.sun4:
- [ -f s.README.sun4 ] && $(GET) $(GFLAGS) s.README.sun4
-
-config.h.sun4:
- [ -f s.config.h.sun4 ] && $(GET) $(GFLAGS) s.config.h.sun4
-
-config.h.svr4:
- [ -f s.config.h.svr4 ] && $(GET) $(GFLAGS) s.config.h.svr4
-
-login: $(LOBJS) libshadow.a
- $(CC) -o login $(LDFLAGS) $(LOBJS) libshadow.a $(LIBS)
-
-login.lint: $(LSRCS)
- $(LINT) $(LINTFLAGS) $(LSRCS) > login.lint
-
-su: $(SOBJS) libshadow.a
- $(CC) -o su $(LDFLAGS) $(SOBJS) libshadow.a $(LIBS)
-
-su.lint: $(SSRCS)
- $(LINT) $(LINTFLAGS) -DSU $(SSRCS) > su.lint
-
-passwd: $(POBJS) libshadow.a
- $(CC) -o passwd $(LDFLAGS) $(POBJS) libshadow.a $(LIBS) $(CRACKLIB)
-
-passwd.lint: $(PSRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(PSRCS) > passwd.lint
-
-gpasswd: $(GPOBJS) libshadow.a
- $(CC) -o gpasswd $(LDFLAGS) $(GPOBJS) libshadow.a $(LIBS)
-
-gpasswd.lint: $(GPSRCS)
- $(LINT) $(LINTFLAGS) $(GPSRCS) > gpasswd.lint
-
-dpasswd: $(DPOBJS) libshadow.a
- $(CC) -o dpasswd $(LDFLAGS) $(DPOBJS) libshadow.a $(LIBS)
-
-dpasswd.lint: $(DPSRCS)
- $(LINT) $(LINTFLAGS) $(DPSRCS) > dpasswd.lint
-
-pwconv: $(PWOBJS) libshadow.a config.h
- $(CC) -o pwconv $(LDFLAGS) $(PWOBJS) libshadow.a $(LIBS)
-
-pwconv.lint: $(PWSRCS) config.h
- $(LINT) $(LINTFLAGS) -DPASSWD $(PWSRCS) > pwconv.lint
-
-pwunconv: $(PWUNOBJS) libshadow.a config.h
- $(CC) -o pwunconv $(LDFLAGS) $(PWUNOBJS) libshadow.a $(LIBS)
-
-pwunconv.lint: $(PWUNSRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(PWUNSRCS) > pwunconv.lint
-
-sulogin: $(SULOGOBJS) libshadow.a
- $(CC) -o sulogin $(LDFLAGS) $(SULOGOBJS) libshadow.a $(LIBS)
-
-sulogin.lint: $(SULOGSRCS)
- $(LINT) $(LINTFLAGS) $(SULOGSRCS) > sulogin.lint
-
-faillog: faillog.o
- $(CC) -o faillog $(LDFLAGS) faillog.o $(LIBS)
-
-faillog.lint: faillog.c faillog.h config.h
- $(LINT) $(LINTFLAGS) faillog.c > faillog.lint
-
-lastlog: lastlog.o
- $(CC) -o lastlog $(LDFLAGS) lastlog.o $(LIBS)
-
-lastlog.lint: lastlog.c config.h lastlog.h
- $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > lastlog.lint
-
-mkpasswd: $(MKPWDOBJS) libshadow.a
- $(CC) -o mkpasswd $(LDFLAGS) $(MKPWDOBJS) libshadow.a $(LIBS)
-
-mkpasswd.lint: $(MKPWDSRCS)
- $(LINT) $(LINTFLAGS) $(MKPWDSRCS) > mkpasswd.lint
-
-newgrp: $(NGOBJS) libshadow.a
- $(CC) -o newgrp $(LDFLAGS) $(NGOBJS) libshadow.a $(LIBS)
-
-newgrp.lint: $(NGSRCS)
- $(LINT) $(LINTFLAGS) $(NGSRCS) > newgrp.lint
-
-sg: newgrp
- rm -f sg
- ln newgrp sg
-
-sg.lint: newgrp.lint
- ln newgrp.lint sg.lint
-
-chfn: $(CHFNOBJS) libshadow.a
- $(CC) -o chfn $(LDFLAGS) $(CHFNOBJS) libshadow.a $(LIBS)
-
-chfn.lint: $(CHFNSRCS)
- $(LINT) $(LINTFLAGS) $(CHFNSRCS) > chfn.lint
-
-chsh: $(CHSHOBJS) libshadow.a
- $(CC) -o chsh $(LDFLAGS) $(CHSHOBJS) libshadow.a $(LIBS)
-
-chsh.lint: $(CHSHSRCS)
- $(LINT) $(LINTFLAGS) $(CHSHSRCS) > chsh.lint
-
-chage: $(CHAGEOBJS) libshadow.a
- $(CC) -o chage $(LDFLAGS) $(CHAGEOBJS) libshadow.a $(LIBS)
-
-chage.lint: $(CHAGESRCS)
- $(LINT) $(LINTFLAGS) -DPASSWD $(CHAGESRCS) > chage.lint
-
-chpasswd: $(CHPASSOBJS) libshadow.a
- $(CC) -o chpasswd $(LDFLAGS) $(CHPASSOBJS) libshadow.a $(LIBS)
-
-chpasswd.lint: $(CHPASSSRCS)
- $(LINT) $(LINTFLAGS) $(CHPASSSRCS) > chpasswd.lint
-
-newusers: newusers.o libshadow.a
- $(CC) -o newusers $(LDFLAGS) newusers.o libshadow.a $(LIBS)
-
-newusers.lint: newusers.c
- $(LINT) $(LINTFLAGS) newusers.c > newusers.lint
-
-id: id.o libshadow.a
- $(CC) -o id $(LDFLAGS) id.o libshadow.a $(LIBS)
-
-id.lint: id.c
- $(LINT) $(LINTFLAGS) id.c > id.lint
-
-groups: groups.o libshadow.a
- $(CC) -o groups $(LDFLAGS) groups.o libshadow.a $(LIBS)
-
-groups.lint: groups.c
- $(LINT) $(LINTFLAGS) groups.c > groups.lint
-
-useradd: useradd.o copydir.o mkrmdir.o libshadow.a
- $(CC) -o useradd $(LDFLAGS) useradd.o copydir.o mkrmdir.o \
- libshadow.a $(LIBS) $(NDIR)
-
-useradd.lint: useradd.c copydir.c mkrmdir.c
- $(LINT) $(LINTFLAGS) useradd.c copydir.c mkrmdir.c > useradd.lint
-
-userdel: userdel.o copydir.o mkrmdir.o libshadow.a
- $(CC) -o userdel $(LDFLAGS) userdel.o copydir.o mkrmdir.o \
- libshadow.a $(LIBS) $(NDIR)
-
-userdel.lint: userdel.c copydir.c mkrmdir.c
- $(LINT) $(LINTFLAGS) userdel.c copydir.c mkrmdir.c > userdel.lint
-
-usermod: usermod.o copydir.o mkrmdir.o chowndir.o libshadow.a
- $(CC) -o usermod $(LDFLAGS) usermod.o copydir.o mkrmdir.o \
- chowndir.o libshadow.a $(LIBS) $(NDIR)
-
-usermod.lint: usermod.c copydir.c mkrmdir.c chowndir.c
- $(LINT) $(LINTFLAGS) usermod.c copydir.c mkrmdir.c \
- chowndir.c > usermod.lint
-
-groupadd: groupadd.o libshadow.a
- $(CC) -o groupadd $(LDFLAGS) groupadd.o libshadow.a $(LIBS)
-
-groupadd.lint: groupadd.c
- $(LINT) $(LINTFLAGS) groupadd.c > groupadd.lint
-
-groupdel: groupdel.o libshadow.a
- $(CC) -o groupdel $(LDFLAGS) groupdel.o libshadow.a $(LIBS)
-
-groupdel.lint: groupdel.c
- $(LINT) $(LINTFLAGS) groupdel.c > groupdel.lint
-
-groupmod: groupmod.o libshadow.a
- $(CC) -o groupmod $(LDFLAGS) groupmod.o libshadow.a $(LIBS)
-
-groupmod.lint: groupmod.c
- $(LINT) $(LINTFLAGS) groupmod.c > groupmod.lint
-
-pwd.h.m4:
- [ -f s.pwd.h.m4 ] && $(GET) $(GFLAGS) s.pwd.h.m4
-
-pwd.h: pwd.h.m4 Makefile
- m4 $(OS) < pwd.h.m4 > pwd.h
-
-logoutd: logoutd.o libshadow.a
- $(CC) -o logoutd $(LDFLAGS) logoutd.o libshadow.a
-
-logoutd.lint: logoutd.c
- $(LINT) $(LINTFLAGS) logoutd.c > logoutd.lint
-
-pwck: pwck.o libshadow.a
- $(CC) -o pwck $(LDFLAGS) pwck.o libshadow.a $(LIBS)
-
-pwck.lint: pwck.c
- $(LINT) $(LINTFLAGS) pwck.c > pwck.lint
-
-grpck: grpck.o libshadow.a
- $(CC) -o grpck $(LDFLAGS) grpck.o libshadow.a $(LIBS)
-
-grpck.lint: grpck.c
- $(LINT) $(LINTFLAGS) grpck.c > grpck.lint
-
-expiry: expiry.o age.o libshadow.a
- $(CC) -o expiry $(LDFLAGS) age.o expiry.o libshadow.a $(LIBS)
-
-expiry.lint: expiry.c
- $(LINT) $(LINTFLAGS) expiry.c > expiry.lint
-
-sulog.o: config.h
-
-susetup.c: setup.c
- cp setup.c susetup.c
-
-susetup.o: config.h susetup.c pwd.h
- $(CC) -c $(CFLAGS) -DSU susetup.c
-
-scologin: scologin.o
- $(CC) -o scologin $(LDFLAGS) scologin.o -lsocket
-
-passwd.o: config.h shadow.h pwd.h pwauth.h
-lmain.o: config.h lastlog.h faillog.h pwd.h pwauth.h
-smain.o: config.h lastlog.h pwd.h shadow.h pwauth.h
-sub.o: pwd.h
-setup.o: config.h pwd.h
-mkrmdir.o: config.h
-utmp.o: config.h
-mail.o: config.h
-motd.o: config.h
-age.o: config.h pwd.h gshadow.h
-log.o: config.h lastlog.h pwd.h
-lastlog.o: lastlog.h
-shell.o: config.h
-entry.o: config.h shadow.h pwd.h
-hushed.o: config.h pwd.h
-valid.o: config.h pwd.h
-failure.o: faillog.h config.h
-faillog.o: faillog.h config.h pwd.h
-newgrp.o: config.h shadow.h gshadow.h pwd.h
-mkpasswd.o: config.h shadow.h gshadow.h pwd.h
-gpmain.o: config.h pwd.h gshadow.h
-chfn.o: config.h pwd.h
-chsh.o: config.h pwd.h
-chage.o: config.h shadow.h pwd.h
-pwconv.o: config.h shadow.h
-pwunconv.o: config.h shadow.h pwd.h
-chpasswd.o: config.h shadow.h pwd.h
-id.o: pwd.h
-newusers.o: config.h shadow.h pwd.h
-dpmain.o: config.h dialup.h
-useradd.o: config.h shadow.h pwd.h pwauth.h gshadow.h
-userdel.o: config.h shadow.h pwd.h pwauth.h gshadow.h
-usermod.o: config.h shadow.h pwd.h pwauth.h gshadow.h
-groupadd.o: config.h gshadow.h
-groupdel.o: config.h gshadow.h
-groupmod.o: config.h gshadow.h
-logoutd.o: config.h
-sulogin.o: config.h pwauth.h
-copydir.o: config.h
-chowndir.o: config.h
-pwck.o: config.h shadow.h pwd.h
-grpck.o: config.h pwd.h gshadow.h
-
-libshadow.a(shadow.o): shadow.h config.h
-libshadow.a(shadowio.o): shadow.h config.h
-libshadow.a(grent.o): config.h gshadow.h
-libshadow.a(groupio.o): config.h
-libshadow.a(sgroupio.o): config.h gshadow.h
-libshadow.a(dialup.o): dialup.h
-libshadow.a(dialchk.o): dialup.h config.h
-libshadow.a(getdef.o): config.h
-libshadow.a(pwdbm.o): config.h pwd.h
-libshadow.a(spdbm.o): config.h shadow.h
-libshadow.a(grdbm.o): config.h
-libshadow.a(gshadow.o): config.h
-libshadow.a(gsdbm.o): config.h gshadow.h
-libshadow.a(pwauth.o): config.h pwauth.h
-libshadow.a(pwpack.o): config.h pwd.h
-libshadow.a(pwent.o): config.h pwd.h
-libshadow.a(pwio.o): pwd.h config.h
-libshadow.a(getpass.o): config.h
-libshadow.a(encrypt.o): config.h
-libshadow.a(port.o): port.h
-libshadow.a(rad64.o): config.h
-libshadow.a(lockpw.o):
-libshadow.a(rename.o): config.h
-libshadow.a(gspack.o): config.h gshadow.h
-libshadow.a(list.o):
-libshadow.a(strtoday.o): config.h
-libshadow.a(xmalloc.o):
-libshadow.a(basename.o):
-libshadow.a(isexpired.o): config.h shadow.h
-
-clean:
- -rm -f susetup.c *.o a.out core npasswd nshadow *.pag *.dir pwd.h
-
-clobber: clean
- -rm -f $(BINS) *.lint *.L libshadow.a
-
-nuke: clobber
- -for file in * ; do \
- if [ -f s.$$file -a ! -f p.$$file ] ; then \
- rm -f $$file ;\
- fi ;\
- done
-
-shar: login.sh.01 login.sh.02 login.sh.03 login.sh.04 login.sh.05 \
- login.sh.06 login.sh.07 login.sh.08 login.sh.09 login.sh.10 \
- login.sh.11 login.sh.12
-
-login.sh.01: $(FILES1) Makefile
- shar -Dc $(FILES1) > login.sh.01
-
-login.sh.02: $(FILES2) Makefile
- shar -Dc $(FILES2) > login.sh.02
-
-login.sh.03: $(FILES3) Makefile
- shar -Dc $(FILES3) > login.sh.03
-
-login.sh.04: $(FILES4) Makefile
- shar -Dc $(FILES4) > login.sh.04
-
-login.sh.05: $(FILES5) Makefile
- shar -Dc $(FILES5) > login.sh.05
-
-login.sh.06: $(FILES6) Makefile
- shar -Dc $(FILES6) > login.sh.06
-
-login.sh.07: $(FILES7) Makefile
- shar -Dc $(FILES7) > login.sh.07
-
-login.sh.08: $(FILES8) Makefile
- shar -Dc $(FILES8) > login.sh.08
-
-login.sh.09: $(FILES9) Makefile
- shar -Dc $(FILES9) > login.sh.09
-
-login.sh.10: $(DOCS1) Makefile
- shar -Dc $(DOCS1) > login.sh.10
-
-login.sh.11: $(DOCS2) Makefile
- shar -Dc $(DOCS2) > login.sh.11
-
-login.sh.12: $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) Makefile
- shar -Dc $(FILES_SUN4) $(FILES_SVR4) $(FILES_LINUX) > login.sh.12
+++ /dev/null
-/*
- * 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.
- */
-
-/*
- * Configuration file for login.
- *
- * $Id: config.h.linux,v 1.2 1997/05/01 23:11:57 marekm Exp $
- */
-
-#ifndef _CONFIG_H
-#define _CONFIG_H
-
-#ifdef __linux__
-#include <sys/types.h>
-#include <sys/param.h>
-#include <stdio.h>
-#endif
-
-/*
- * Pathname to the run-time configuration definitions file.
- */
-
-#define LOGINDEFS "/etc/login.defs"
-
-/*
- * Define SHADOWPWD to use shadow [ unreadable ] password file.
- * Release 3 has a requirement that SHADOWPWD always be defined.
- */
-
-#define SHADOWPWD
-
-/*
- * Define AUTOSHADOW to have root always copy sp_pwdp to pw_passwd
- * for getpwuid() and getpwnam(). This provides compatibility for
- * privileged applications which are shadow-ignorant. YOU ARE
- * ENCOURAGED TO NOT USE THIS OPTION UNLESS ABSOLUTELY NECESSARY.
- */
-/*
- * Yes, don't do it (and don't build libc with the SHADOW_COMPAT=true
- * option) unless you REALLY know what you're doing. It might work,
- * but can lead to unshadowing your passwords. This is not the right
- * way to support shadow passwords! You have been warned. --marekm
- */
-
-#undef AUTOSHADOW
-
-/*
- * Define SHADOWGRP to user shadowed group files. This feature adds
- * the concept of a group administrator. You MUST NOT define this
- * if you disable SHADOWPWD.
- */
-
-#define SHADOWGRP /**/
-
-/*
- * Define these if you have shadow password/group support functions in
- * your version of libc. This removes these functions from libshadow.a
- * (the ones from libc will be used instead).
- *
- * Finally upgraded to ELF, so...
- */
-#define HAVE_SHADOWPWD
-#define HAVE_SHADOWGRP
-
-/*
- * Define MD5_CRYPT to support the MD5-based password hashing algorithm
- * compatible with FreeBSD. All programs using pw_encrypt() instead of
- * crypt() will understand both styles: old (standard, DES-based), and
- * new (MD5-based).
- *
- * This means that it is possible to copy encrypted passwords from FreeBSD.
- * Programs to change passwords (like passwd) will still use the old style
- * crypt() for compatibility.
- *
- * To enable the use of the new crypt() for new passwords (if you don't
- * need to copy them to other systems, except FreeBSD and Linux), set the
- * MD5_CRYPT option in /etc/login.defs to "yes".
- *
- * This algorithm supports passwords of any length (the getpass() limit
- * is 127 on Linux) and salt strings up to 8 (instead of 2) characters.
- *
- * This is experimental, and currently requires that all programs use
- * pw_encrypt() from libshadow.a instead of crypt() from libc. This is
- * problematic especially on ELF systems (libc5 has getspnam() so there
- * is otherwise no need to link with the static libshadow.a). On most
- * a.out systems you have to link with libshadow.a anyway, no problem.
- */
-
-#define MD5_CRYPT
-
-/*
- * Define DOUBLESIZE to use 16 character passwords. Define SW_CRYPT
- * to use 80 character passwords with SecureWare[tm]'s method of
- * generating ciphertext.
- * Not recommended because of some potential weaknesses. --marekm
- */
-
-#undef DOUBLESIZE
-#undef SW_CRYPT
-
-/*
- * Define SKEY to allow dual-mode SKEY/normal logins
- */
-
-#undef SKEY
-
-/*
- * Define AGING if you want the password aging checks made.
- * Release 3 has a requirement that AGING always be defined.
- */
-
-#define AGING
-
-/*
- * Pick your version of DBM. If you define either DBM or NDBM, you must
- * define GETPWENT. If you define NDBM you must define GETGRENT as well.
- */
-
-/*
- * DBM support is untested, not recommended yet. It might make more
- * sense if someone could add it to getpwnam() etc. in libc so that all
- * programs (such as ls) can benefit from it. Any volunteers?
- *
- * The old DBM (as opposed to NDBM) support may be removed in a future
- * release if no one complains. It's too braindamaged for the number
- * of #ifdefs it adds (only one database per process at a time).
- *
- * On Linux, NDBM is actually implemented using GDBM, which is licensed
- * under the GPL (not LGPL!) - I'm not sure if it is legal to link it
- * with non-GPL code (such as the shadow suite). Consult your lawyers,
- * or just modify the code to use db instead. Welcome to the wonderful
- * world of copyrights. Yuck!
- *
- * The current DBM support code has a subtle design flaw. See my
- * comment in pwdbm.c for details...
- *
- * Unless you have 2000 users or so, DBM probably doesn't make things
- * much faster, and it does make things more complicated (= possibly
- * more buggy). Do it only if you know what you're doing! --marekm
- */
-
-#undef DBM
-#undef NDBM
-
-/*
- * Define USE_SYSLOG if you want to have SYSLOG functions included in your code.
- */
-
-#define USE_SYSLOG
-
-/*
- * Enable RLOGIN to support the "-r" and "-h" options.
- * Also enable UT_HOST if your /etc/utmp provides for a host name.
- */
-
-#define RLOGIN
-#define UT_HOST
-
-/*
- * Define NO_RFLG to remove support for login -r flag if your system has
- * a new-style rlogind which doesn't need it. --marekm
- */
-
-#define NO_RFLG
-
-/*
- * Define the "success" code from ruserok(). Most modern systems use 0
- * for success and -1 for failure, while certain older versions use 1
- * for success and 0 for failure. Please check your manpage to be sure.
- */
-
-#define RUSEROK 0
-
-/*
- * Select one of the following
- */
-
-#undef DIR_XENIX /* include <sys/ndir.h>, use (struct direct) */
-#undef DIR_BSD /* include <ndir.h>, use (struct direct) */
-#define DIR_SYSV /* include <dirent.h>, use (struct dirent) */
-
-/*
- * Various system environment definitions.
- */
-
-/*
- * Define if you have sgetgrent() in libc, to remove this function from
- * libshadow.a (some versions of libc5 reportedly have it, most reports
- * so far are from Red Hat 2.1 users, more information is welcome).
- */
-#undef HAVE_SGETGRENT
-
-/*
- * Only important if you compile with GETGRENT defined (use my getgr*()
- * but still use fgetgrent() from libc if HAVE_FGETGRENT defined).
- */
-#undef HAVE_FGETGRENT
-
-#define HAVE_SIGACTION
-#define HAVE_GETUSERSHELL /* Define if your UNIX supports getusershell() */
-#define HAVE_LL_HOST /* Define if "struct lastlog" contains ll_host */
-#define HAVE_ULIMIT /* Define if your UNIX supports ulimit() */
-#define HAVE_RLIMIT /* Define if your UNIX supports setrlimit() */
-#undef GETPWENT /* Define if you want my GETPWENT(3) routines */
-#undef GETGRENT /* Define if you want my GETGRENT(3) routines */
-#define NEED_AL64 /* Define if library does not include a64l() */
-#undef NEED_MKDIR /* Define if system does not have mkdir() */
-#undef NEED_RMDIR /* Define if system does not have rmdir() */
-#undef NEED_RENAME /* Define if system does not have rename() */
-#undef NEED_STRSTR /* Define if library does not include strstr() */
-#undef NEED_PUTPWENT /* Define if library does not include putpwent()*/
-#define SIGTYPE void /* Type returned by signal() */
-
-/*
- * These definitions MUST agree with the values defined in <pwd.h>.
- */
-
-#undef BSD_QUOTA /* the pw_quota field exists */
-#undef ATT_AGE /* the pw_age field exists */
-#undef ATT_COMMENT /* the pw_comment field exists */
-
-#define UID_T uid_t /* set to be the type of UID's */
-#define GID_T gid_t /* set to be the type of GID's */
-
-#ifndef UID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define UID_T uid_t
-#else
-#define UID_T int
-#endif
-#endif
-
-#ifndef GID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define GID_T gid_t
-#else
-#define GID_T int
-#endif
-#endif
-
-/*
- * Define NDEBUG for production versions
- */
-
-#define NDEBUG
-
-/*
- * Define PWDFILE and GRPFILE to the names of the password and
- * group files. //jiivee
- */
-
-#define PASSWD_FILE "/etc/passwd"
-#define PASSWD_PAG_FILE "/etc/passwd.pag"
-#define GROUP_FILE "/etc/group"
-#define GROUP_PAG_FILE "/etc/group.pag"
-
-#ifdef SHADOWPWD
-#define SHADOW_FILE "/etc/shadow"
-#define SHADOW_PAG_FILE "/etc/shadow.pag"
-#ifdef SHADOWGRP
-#define SGROUP_FILE "/etc/gshadow"
-#define SGROUP_PAG_FILE "/etc/gshadow.pag"
-#endif
-#endif
-
-/*
- * The structure of the utmp file. There are two kinds of UTMP files,
- * "BSD" and "USG". "BSD" has no PID or type information, "USG" does.
- * If you define neither of these, the type will be defaulted by using
- * BSD, SUN, SYS3 and USG defines.
- */
-
-#define _UTMP_FILE "/var/run/utmp"
-#define _WTMP_FILE "/var/log/wtmp"
-
-#define USG_UTMP /**/
-/* #define BSD_UTMP */
-
-#if !defined(USG_UTMP) && !defined(BSD_UTMP)
-#if defined(BSD) || defined(SYS3) || defined(SUN)
-#define BSD_UTMP
-#else
-#define USG_UTMP
-#endif /* BSD || SYS3 || SUN */
-#endif /* !USG_UTMP || !BSD_UTMP */
-
-/*
- * From where to look for legal user shells
- */
-
-#ifndef SHELLS_FILE
-#define SHELLS_FILE "/etc/shells"
-#endif
-
-/*
- * Default issue file location
- */
-
-#ifndef ISSUE_FILE
-#define ISSUE_FILE "/etc/issue"
-#endif
-
-/*
- * Logoutd message file
- */
-
-#define HUP_MESG_FILE "/etc/logoutd.mesg"
-
-/*
- * Mail spool directory. This is used if mailspool cannot be located otherwise
- */
-
-#ifndef MAIL_SPOOL_DIR
-#define MAIL_SPOOL_DIR "/var/spool/mail"
-#endif
-
-/*
- * Where are new user default setup files kept
- */
-
-#define SKEL_DIR "/etc/skel"
-
-/*
- * New user defaults. The NEW_USER_FILE must have 6 X's in the end of name
- */
-
-#define USER_DEFAULTS_FILE "/etc/default/useradd"
-#define NEW_USER_FILE "/etc/default/nuaddXXXXXX"
-
-/*
- * Telinit program. If your system uses /etc/telinit to change run
- * level, define TELINIT and then define the RUNLEVEL macro to be the
- * run-level to switch INIT to. This is used by sulogin to change
- * from single user to multi-user mode.
- *
- * From bluca@www.polimi.it: instead, set up /etc/inittab properly
- * ~0:S:wait:/sbin/sulogin
- * ~9:S:wait:/sbin/telinit -t0 2
- */
-
-#undef TELINIT
-#undef PATH_TELINIT "/sbin/telinit"
-#undef RUNLEVEL "2"
-
-/*
- * Crontab and atrm. Used in userdel.c - see user_cancel(). Verify
- * that these are correct for your distribution. --marekm
- */
-
-#if 0 /* old Slackware */
-#define CRONTAB_COMMAND "/usr/bin/crontab -d -u %s"
-#define CRONTAB_FILE "/var/cron/tabs/%s"
-#else
-/* Debian 0.93R6 (marekm): */
-#define CRONTAB_COMMAND "/usr/bin/crontab -r -u %s"
-#define CRONTAB_FILE "/var/spool/cron/crontabs/%s"
-/* Red Hat 2.1 (jiivee@iki.fi): */
-/* #define CRONTAB_FILE "/var/spool/cron/%s" */
-#endif
-
-/*
- * Hmmm, had to #undef this since at-2.8a on Linux doesn't have an option
- * to remove all jobs owned by some user.
- *
- * Fortunately, atrun will not run any at jobs for users not listed in
- * /etc/passwd. Unfortunately, if you remove a user and add a new user
- * with the same UID before it is time to run the old at job, atrun will
- * not notice this and run the old job. Not good. The best fix right
- * now is to remove any at jobs left over by hand, and not reuse any
- * previously used UID values.
- *
- * We probably should discuss this with the at maintainer... It might
- * be better to store at jobs by user names, not UIDs. --marekm
- */
-
-#undef ATRM_COMMAND
-
-/*
- * Login times log file location.
- */
-
-#define LASTLOG_FILE "/var/log/lastlog"
-
-/*
- * Linux FSSTND recommends that the chfn, chsh, gpasswd, passwd commands
- * are in /usr/bin, not /bin (not needed before mounting /usr). --marekm
- */
-
-#define CHFN_PROGRAM "/usr/bin/chfn"
-#define CHSH_PROGRAM "/usr/bin/chsh"
-#define GPASSWD_PROGRAM "/usr/bin/gpasswd"
-#define PASSWD_PROGRAM "/usr/bin/passwd"
-
-/*
- * On most Linux systems, the login prompt is "hostname login: ". Some
- * automatic login scripts depend on it. If not defined, the default is
- * just "login: ". %s is replaced by the hostname. --marekm
- */
-
-#define LOGIN_PROMPT "%s login: "
-
-/*
- * Define to enable (warning: completely unsupported by me) administrator
- * defined authentication methods. Most programs are not aware of them,
- * so we can remove some code and possibly some bugs :-). PAM (when done)
- * will replace much of this anyway... --marekm
- */
-
-/* #define AUTH_METHODS */
-
-/*
- * Define to enable detailed login access control (a la logdaemon/FreeBSD)
- * and su access control (much more powerful/fascist than the traditional
- * BSD-style "wheel group" feature). Any volunteers to convince the GNU
- * folks that they should add access control to their version of su?
- * Call me a fascist, but then I'll have to call you a communist :-).
- */
-
-#define LOGIN_ACCESS
-#define SU_ACCESS
-
-/* see faillog.h for more info what it is */
-#define FAILLOG_LOCKTIME
-
-/* see lmain.c and login.defs.linux */
-#define CONSOLE_GROUPS
-
-#endif /* _CONFIG_H */
+++ /dev/null
-/*
- * 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.
- */
-
-/*
- * Configuration file for login.
- *
- * $Id: config.h.sun4,v 1.2 1997/05/01 23:11:58 marekm Exp $
- * (SunOS 4.1.1)
- */
-
-
-/*
- * Pathname to the run-time configuration definitions file.
- */
-
-#define LOGINDEFS "/etc/login.defs"
-
-/*
- * Define SHADOWPWD to use shadow [ unreadable ] password file.
- * Release 3 has a requirement that SHADOWPWD always be defined.
- */
-
-#define SHADOWPWD
-
-/*
- * Define AUTOSHADOW to have root always copy sp_pwdp to pw_passwd
- * for getpwuid() and getpwnam(). This provides compatibility for
- * privileged applications which are shadow-ignorant. YOU ARE
- * ENCOURAGED TO NOT USE THIS OPTION UNLESS ABSOLUTELY NECESSARY.
- */
-
-#undef AUTOSHADOW
-
-/*
- * Define SHADOWGRP to user shadowed group files. This feature adds
- * the concept of a group administrator.
- */
-
-#define SHADOWGRP /**/
-
-/*
- * Define DOUBLESIZE to use 16 character passwords. Define SW_CRYPT
- * to use 80 character passwords with SecureWare[tm]'s method of
- * generating ciphertext.
- */
-
-#define DOUBLESIZE
-#undef SW_CRYPT
-
-/*
- * Define SKEY to allow dual-mode SKEY/normal logins
- */
-
-#undef SKEY
-
-/*
- * Define AGING if you want the password aging checks made.
- * Release 3 has a requirement that AGING always be defined.
- */
-
-#define AGING
-
-/*
- * Pick your version of DBM. If you define either DBM or NDBM, you must
- * define GETPWENT. If you define NDBM you must define GETGRENT as well.
- */
-
-/* #define DBM /**/
-#define NDBM /**/
-
-/*
- * Define USE_SYSLOG if you want to have SYSLOG functions included in your code.
- */
-
-#define USE_SYSLOG
-
-/*
- * Enable RLOGIN to support the "-r" and "-h" options.
- * Also enable UT_HOST if your /etc/utmp provides for a host name.
- */
-
-#define RLOGIN
-#define UT_HOST
-
-/*
- * Define the "success" code from ruserok(). Most modern systems use 0
- * for success and -1 for failure, while certain older versions use 1
- * for success and 0 for failure. Please check your manpage to be sure.
- */
-
-#define RUSEROK 0
-
-/*
- * Select one of the following
- */
-
-/* #define DIR_XENIX /* include <sys/ndir.h>, use (struct direct) */
-/* #define DIR_BSD /* include <ndir.h>, use (struct direct) */
-#define DIR_SYSV /* include <dirent.h>, use (struct dirent) */
-
-/*
- * Various system environment definitions.
- */
-
-#define HAVE_LL_HOST /* Define if "struct lastlog" contains ll_host */
-#define HAVE_ULIMIT /* Define if your UNIX supports ulimit() */
-#define GETPWENT /* Define if you want my GETPWENT(3) routines */
-#define GETGRENT /* Define if you want my GETGRENT(3) routines */
-#undef NEED_AL64 /* Define if library does not include a64l() */
-#undef NEED_MKDIR /* Define if system does not have mkdir() */
-#undef NEED_RMDIR /* Define if system does not have rmdir() */
-#undef NEED_RENAME /* Define if system does not have rename() */
-#define NEED_STRSTR /* Define if library does not include strstr() */
-#undef NEED_PUTPWENT /* Define if library does not include putpwent()*/
-#define NEED_UTENT /* Define if library does not include utent fncs*/
-#define SIGTYPE void /* Type returned by signal() */
-
-/*
- * These definitions MUST agree with the values defined in <pwd.h>.
- */
-
-#undef BSD_QUOTA /* the pw_quota field exists */
-#define ATT_AGE /* the pw_age field exists */
-#define ATT_COMMENT /* the pw_comment field exists */
-
-#define UID_T uid_t /* set to be the type of UID's */
-#define GID_T gid_t /* set to be the type of GID's */
-
-#ifndef UID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define UID_T uid_t
-#else
-#define UID_T int
-#endif
-#endif
-
-#ifndef GID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define GID_T gid_t
-#else
-#define GID_T int
-#endif
-#endif
-
-/*
- * Define NDEBUG for production versions
- */
-
-#define NDEBUG
-
-/*
- * Define PWDFILE and GRPFILE to the names of the password and
- * group files.
- */
-
-#define PWDFILE "/etc/passwd"
-#define GRPFILE "/etc/group"
-
-/*
- * Login times log file.
- */
-
-#define LASTFILE "/var/adm/lastlog"
+++ /dev/null
-/*
- * 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.
- */
-
-/*
- * Configuration file for login.
- *
- * $Id: config.h.svr4,v 1.2 1997/05/01 23:11:58 marekm Exp $ (SVR4)
- */
-
-
-/*
- * Pathname to the run-time configuration definitions file.
- */
-
-#define LOGINDEFS "/etc/login.defs"
-
-/*
- * Define SHADOWPWD to use shadow [ unreadable ] password file.
- * Release 3 has a requirement that SHADOWPWD always be defined.
- */
-
-#define SHADOWPWD
-
-/*
- * Define AUTOSHADOW to have root always copy sp_pwdp to pw_passwd
- * for getpwuid() and getpwnam(). This provides compatibility for
- * privileged applications which are shadow-ignorant. YOU ARE
- * ENCOURAGED TO NOT USE THIS OPTION UNLESS ABSOLUTELY NECESSARY.
- *
- * SVR4 has always had /etc/shadow
- */
-
-#undef AUTOSHADOW
-
-/*
- * Define SHADOWGRP to user shadowed group files. This feature adds
- * the concept of a group administrator.
- */
-
-/* #define SHADOWGRP /**/
-
-/*
- * Define DOUBLESIZE to use 16 character passwords. Define SW_CRYPT
- * to use 80 character passwords with SecureWare[tm]'s method of
- * generating ciphertext.
- */
-
-#define DOUBLESIZE
-#undef SW_CRYPT
-
-/*
- * Define SKEY to allow dual-mode SKEY/normal logins
- */
-
-#undef SKEY
-
-/*
- * Define AGING if you want the password aging checks made.
- * Release 3 has a requirement that AGING always be defined.
- */
-
-#define AGING
-
-/*
- * Pick your version of DBM. If you define either DBM or NDBM, you must
- * define GETPWENT. If you define NDBM you must define GETGRENT as well.
- *
- * SVR4 doesn't come with mkpasswd.
- */
-
-/* #define DBM /**/
-/* #define NDBM /**/
-
-/*
- * Define USE_SYSLOG if you want to have SYSLOG functions included in your code.
- *
- * SVR4 includes syslog()
- */
-
-#define USE_SYSLOG
-
-/*
- * Enable RLOGIN to support the "-r" and "-h" options.
- * Don't define UT_HOST, it's in utmpx.
- */
-
-#define RLOGIN
-#undef UT_HOST
-
-/*
- * Define the "success" code from ruserok(). Most modern systems use 0
- * for success and -1 for failure, while certain older versions use 1
- * for success and 0 for failure. Please check your manpage to be sure.
- */
-
-#define RUSEROK 0
-
-/*
- * Use SVR4 directory functions.
- */
-
-#define DIR_SYSV /* include <dirent.h>, use (struct dirent) */
-
-/*
- * Various system environment definitions.
- */
-
-#undef HAVE_ULIMIT /* Define if your UNIX supports ulimit() */
-#define HAVE_RLIMIT /* Define if your UNIX supports setrlimit() */
-#define GETPWENT /* Define if you want my GETPWENT(3) routines */
-#undef GETGRENT /* Define if you want my GETGRENT(3) routines */
-#undef NEED_AL64 /* Define if library does not include a64l() */
-#undef NEED_MKDIR /* Define if system does not have mkdir() */
-#undef NEED_RMDIR /* Define if system does not have rmdir() */
-#undef NEED_RENAME /* Define if system does not have rename() */
-#undef NEED_STRSTR /* Define if library does not include strstr() */
-#undef NEED_PUTPWENT /* Define if library does not include putpwent()*/
-#define SIGTYPE void /* Type returned by signal() */
-
-/*
- * These definitions MUST agree with the values defined in <pwd.h>.
- */
-
-#undef BSD_QUOTA /* the pw_quota field exists */
-#define ATT_AGE /* the pw_age field exists */
-#define ATT_COMMENT /* the pw_comment field exists */
-
-#define UID_T uid_t /* set to be the type of UID's */
-#define GID_T gid_t /* set to be the type of GID's */
-
-#ifndef UID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define UID_T uid_t
-#else
-#define UID_T int
-#endif
-#endif
-
-#ifndef GID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define GID_T gid_t
-#else
-#define GID_T int
-#endif
-#endif
-
-/*
- * Define NDEBUG for production versions
- */
-
-#define NDEBUG
-
-/*
- * Define PWDFILE and GRPFILE to the names of the password and
- * group files.
- */
-
-#define PWDFILE "/etc/passwd"
-#define GRPFILE "/etc/group"
-
-/*
- * This is SVR4.
- */
-
-#define USG_UTMP
-
-/*
- * Telinit program. If your system uses /etc/telinit to change run
- * level, define TELINIT and then define the RUNLEVEL macro to be the
- * run-level to switch INIT to. This is used by sulogin to change
- * from single user to multi-user mode.
- */
-
-#define TELINIT /**/
-#define RUNLEVEL "2" /**/
-
-/*
- * Crontab and atrm. If your system can "crontab -r -u <user>", define
- * HAS_CRONTAB. If your system can "atrm <user>", define HAS_ATRM.
- *
- * SVR4 has both of these.
- */
-
-#define HAS_CRONTAB
-#define HAS_ATRM
-
-/*
- * Login times log file.
- */
-
-#define LASTFILE "/var/adm/lastlog"
+++ /dev/null
-/*
- * Copyright 1989 - 1993, 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.
- */
-
-/*
- * Configuration file for login.
- *
- * $Id: config.h.xenix,v 1.2 1997/05/01 23:11:58 marekm Exp $
- */
-
-
-/*
- * Pathname to the run-time configuration definitions file.
- */
-
-#define LOGINDEFS "/etc/login.defs"
-
-/*
- * Define SHADOWPWD to use shadow [ unreadable ] password file.
- * Release 3 has a requirement that SHADOWPWD always be defined.
- */
-
-#define SHADOWPWD
-
-/*
- * Define AUTOSHADOW to have root always copy sp_pwdp to pw_passwd
- * for getpwuid() and getpwnam(). This provides compatibility for
- * privileged applications which are shadow-ignorant. YOU ARE
- * ENCOURAGED TO NOT USE THIS OPTION UNLESS ABSOLUTELY NECESSARY.
- */
-
-#undef AUTOSHADOW
-
-/*
- * Define SHADOWGRP to user shadowed group files. This feature adds
- * the concept of a group administrator. You MUST NOT define this
- * if you disable SHADOWPWD.
- */
-
-/* #define SHADOWGRP /**/
-
-/*
- * Define DOUBLESIZE to use 16 character passwords. Define SW_CRYPT
- * to use 80 character passwords with SecureWare[tm]'s method of
- * generating ciphertext.
- */
-
-#define DOUBLESIZE
-#undef SW_CRYPT
-
-/*
- * Define SKEY to allow dual-mode SKEY/normal logins
- */
-
-#undef SKEY
-
-/*
- * Define AGING if you want the password aging checks made.
- * Release 3 has a requirement that AGING always be defined.
- */
-
-#define AGING
-
-/*
- * Pick your version of DBM. If you define either DBM or NDBM, you must
- * define GETPWENT. If you define NDBM you must define GETGRENT as well.
- */
-
-/* #define DBM /**/
-/* #define NDBM /**/
-
-/*
- * Define USE_SYSLOG if you want to have SYSLOG functions included in your code.
- */
-
-#define USE_SYSLOG
-
-/*
- * Enable RLOGIN to support the "-r" and "-h" options.
- * Also enable UT_HOST if your /etc/utmp provides for a host name.
- */
-
-#define RLOGIN
-#undef UT_HOST
-
-/*
- * Define the "success" code from ruserok(). Most modern systems use 0
- * for success and -1 for failure, while certain older versions use 1
- * for success and 0 for failure. Please check your manpage to be sure.
- */
-
-#define RUSEROK 0
-
-/*
- * Select one of the following
- */
-
-#define DIR_XENIX /* include <sys/ndir.h>, use (struct direct) */
-/* #define DIR_BSD /* include <ndir.h>, use (struct direct) */
-/* #define DIR_SYSV /* include <dirent.h>, use (struct dirent) */
-
-/*
- * Various system environment definitions.
- */
-
-#define HAVE_ULIMIT /* Define if your UNIX supports ulimit() */
-#undef HAVE_RLIMIT /* Define if your UNIX supports setrlimit() */
-#define GETPWENT /* Define if you want my GETPWENT(3) routines */
-#define GETGRENT /* Define if you want my GETGRENT(3) routines */
-#define NEED_AL64 /* Define if library does not include a64l() */
-#define NEED_MKDIR /* Define if system does not have mkdir() */
-#define NEED_RMDIR /* Define if system does not have rmdir() */
-#define NEED_RENAME /* Define if system does not have rename() */
-#define NEED_STRSTR /* Define if library does not include strstr() */
-#undef NEED_PUTPWENT /* Define if library does not include putpwent()*/
-#define SIGTYPE int /* Type returned by signal() */
-
-/*
- * These definitions MUST agree with the values defined in <pwd.h>.
- */
-
-#undef BSD_QUOTA /* the pw_quota field exists */
-#define ATT_AGE /* the pw_age field exists */
-#define ATT_COMMENT /* the pw_comment field exists */
-
-#define UID_T uid_t /* set to be the type of UID's */
-#define GID_T gid_t /* set to be the type of GID's */
-
-#ifndef UID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define UID_T uid_t
-#else
-#define UID_T int
-#endif
-#endif
-
-#ifndef GID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define GID_T gid_t
-#else
-#define GID_T int
-#endif
-#endif
-
-/*
- * Define NDEBUG for production versions
- */
-
-#define NDEBUG
-
-/*
- * Define PWDFILE and GRPFILE to the names of the password and
- * group files.
- */
-
-#define PWDFILE "/etc/passwd"
-#define GRPFILE "/etc/group"
-
-/*
- * The structure of the utmp file. There are two kinds of UTMP files,
- * "BSD" and "USG". "BSD" has no PID or type information, "USG" does.
- * If you define neither of these, the type will be defaulted by using
- * BSD, SUN, SYS3 and USG defines.
- */
-
-#define USG_UTMP /**/
-/* #define BSD_UTMP /**/
-
-#if !defined(USG_UTMP) && !defined(BSD_UTMP)
-#if defined(BSD) || defined(SYS3) || defined(SUN)
-#define BSD_UTMP
-#else
-#define USG_UTMP
-#endif /* BSD || SYS3 || SUN */
-#endif /* !USG_UTMP || !BSD_UTMP */
-
-/*
- * Telinit program. If your system uses /etc/telinit to change run
- * level, define TELINIT and then define the RUNLEVEL macro to be the
- * run-level to switch INIT to. This is used by sulogin to change
- * from single user to multi-user mode.
- */
-
-#define TELINIT /**/
-#define RUNLEVEL "2" /**/
-
-/*
- * Crontab and atrm. If your system can "crontab -r -u <user>", define
- * HAS_CRONTAB. If your system can "atrm <user>", define HAS_ATRM.
- */
-
-#undef HAS_CRONTAB
-#undef HAS_ATRM
-
-/*
- * Login times log file.
- */
-
-#define LASTFILE "/var/adm/lastlog"
+++ /dev/null
-/*
- * 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.
- */
-
-/*
- * Configuration file for login.
- *
- * $Id: orig-config.h,v 1.2 1997/05/01 23:11:59 marekm Exp $
- */
-
-#ifndef _CONFIG_H
-#define _CONFIG_H
-
-#ifdef __linux__
-#include <sys/types.h>
-#include <sys/param.h>
-#include <stdio.h>
-#endif
-
-/*
- * Pathname to the run-time configuration definitions file.
- */
-
-#define LOGINDEFS "/etc/login.defs"
-
-/*
- * Define SHADOWPWD to use shadow [ unreadable ] password file.
- * Release 3 has a requirement that SHADOWPWD always be defined.
- */
-
-#define SHADOWPWD
-
-/*
- * Define AUTOSHADOW to have root always copy sp_pwdp to pw_passwd
- * for getpwuid() and getpwnam(). This provides compatibility for
- * privileged applications which are shadow-ignorant. YOU ARE
- * ENCOURAGED TO NOT USE THIS OPTION UNLESS ABSOLUTELY NECESSARY.
- */
-/*
- * Yes, don't do it (and don't build libc with the SHADOW_COMPAT=true
- * option) unless you REALLY know what you're doing. It might work,
- * but can lead to unshadowing your passwords. This is not the right
- * way to support shadow passwords! You have been warned. --marekm
- */
-
-#undef AUTOSHADOW
-
-/*
- * Define SHADOWGRP to user shadowed group files. This feature adds
- * the concept of a group administrator. You MUST NOT define this
- * if you disable SHADOWPWD.
- */
-
-#define SHADOWGRP /**/
-
-/*
- * Define these if you have shadow password/group support functions in
- * your version of libc. This removes these functions from libshadow.a
- * (the ones from libc will be used instead).
- *
- * Finally upgraded to ELF, so...
- */
-#define HAVE_SHADOWPWD
-#define HAVE_SHADOWGRP
-
-/*
- * Define MD5_CRYPT to support the MD5-based password hashing algorithm
- * compatible with FreeBSD. All programs using pw_encrypt() instead of
- * crypt() will understand both styles: old (standard, DES-based), and
- * new (MD5-based).
- *
- * This means that it is possible to copy encrypted passwords from FreeBSD.
- * Programs to change passwords (like passwd) will still use the old style
- * crypt() for compatibility.
- *
- * To enable the use of the new crypt() for new passwords (if you don't
- * need to copy them to other systems, except FreeBSD and Linux), set the
- * MD5_CRYPT option in /etc/login.defs to "yes".
- *
- * This algorithm supports passwords of any length (the getpass() limit
- * is 127 on Linux) and salt strings up to 8 (instead of 2) characters.
- *
- * This is experimental, and currently requires that all programs use
- * pw_encrypt() from libshadow.a instead of crypt() from libc. This is
- * problematic especially on ELF systems (libc5 has getspnam() so there
- * is otherwise no need to link with the static libshadow.a). On most
- * a.out systems you have to link with libshadow.a anyway, no problem.
- */
-
-#define MD5_CRYPT
-
-/*
- * Define DOUBLESIZE to use 16 character passwords. Define SW_CRYPT
- * to use 80 character passwords with SecureWare[tm]'s method of
- * generating ciphertext.
- * Not recommended because of some potential weaknesses. --marekm
- */
-
-#undef DOUBLESIZE
-#undef SW_CRYPT
-
-/*
- * Define SKEY to allow dual-mode SKEY/normal logins
- */
-
-#undef SKEY
-
-/*
- * Define AGING if you want the password aging checks made.
- * Release 3 has a requirement that AGING always be defined.
- */
-
-#define AGING
-
-/*
- * Pick your version of DBM. If you define either DBM or NDBM, you must
- * define GETPWENT. If you define NDBM you must define GETGRENT as well.
- */
-
-/*
- * DBM support is untested, not recommended yet. It might make more
- * sense if someone could add it to getpwnam() etc. in libc so that all
- * programs (such as ls) can benefit from it. Any volunteers?
- *
- * The old DBM (as opposed to NDBM) support may be removed in a future
- * release if no one complains. It's too braindamaged for the number
- * of #ifdefs it adds (only one database per process at a time).
- *
- * On Linux, NDBM is actually implemented using GDBM, which is licensed
- * under the GPL (not LGPL!) - I'm not sure if it is legal to link it
- * with non-GPL code (such as the shadow suite). Consult your lawyers,
- * or just modify the code to use db instead. Welcome to the wonderful
- * world of copyrights. Yuck!
- *
- * The current DBM support code has a subtle design flaw. See my
- * comment in pwdbm.c for details...
- *
- * Unless you have 2000 users or so, DBM probably doesn't make things
- * much faster, and it does make things more complicated (= possibly
- * more buggy). Do it only if you know what you're doing! --marekm
- */
-
-#undef DBM
-#undef NDBM
-
-/*
- * Define USE_SYSLOG if you want to have SYSLOG functions included in your code.
- */
-
-#define USE_SYSLOG
-
-/*
- * Enable RLOGIN to support the "-r" and "-h" options.
- * Also enable UT_HOST if your /etc/utmp provides for a host name.
- */
-
-#define RLOGIN
-#define UT_HOST
-
-/*
- * Define NO_RFLG to remove support for login -r flag if your system has
- * a new-style rlogind which doesn't need it. --marekm
- */
-
-#define NO_RFLG
-
-/*
- * Define the "success" code from ruserok(). Most modern systems use 0
- * for success and -1 for failure, while certain older versions use 1
- * for success and 0 for failure. Please check your manpage to be sure.
- */
-
-#define RUSEROK 0
-
-/*
- * Select one of the following
- */
-
-#undef DIR_XENIX /* include <sys/ndir.h>, use (struct direct) */
-#undef DIR_BSD /* include <ndir.h>, use (struct direct) */
-#define DIR_SYSV /* include <dirent.h>, use (struct dirent) */
-
-/*
- * Various system environment definitions.
- */
-
-/*
- * Define if you have sgetgrent() in libc, to remove this function from
- * libshadow.a (some versions of libc5 reportedly have it, most reports
- * so far are from Red Hat 2.1 users, more information is welcome).
- */
-#undef HAVE_SGETGRENT
-
-/*
- * Only important if you compile with GETGRENT defined (use my getgr*()
- * but still use fgetgrent() from libc if HAVE_FGETGRENT defined).
- */
-#undef HAVE_FGETGRENT
-
-#define HAVE_SIGACTION
-#define HAVE_GETUSERSHELL /* Define if your UNIX supports getusershell() */
-#define HAVE_LL_HOST /* Define if "struct lastlog" contains ll_host */
-#define HAVE_ULIMIT /* Define if your UNIX supports ulimit() */
-#define HAVE_RLIMIT /* Define if your UNIX supports setrlimit() */
-#undef GETPWENT /* Define if you want my GETPWENT(3) routines */
-#undef GETGRENT /* Define if you want my GETGRENT(3) routines */
-#define NEED_AL64 /* Define if library does not include a64l() */
-#undef NEED_MKDIR /* Define if system does not have mkdir() */
-#undef NEED_RMDIR /* Define if system does not have rmdir() */
-#undef NEED_RENAME /* Define if system does not have rename() */
-#undef NEED_STRSTR /* Define if library does not include strstr() */
-#undef NEED_PUTPWENT /* Define if library does not include putpwent()*/
-#define SIGTYPE void /* Type returned by signal() */
-
-/*
- * These definitions MUST agree with the values defined in <pwd.h>.
- */
-
-#undef BSD_QUOTA /* the pw_quota field exists */
-#undef ATT_AGE /* the pw_age field exists */
-#undef ATT_COMMENT /* the pw_comment field exists */
-
-#define UID_T uid_t /* set to be the type of UID's */
-#define GID_T gid_t /* set to be the type of GID's */
-
-#ifndef UID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define UID_T uid_t
-#else
-#define UID_T int
-#endif
-#endif
-
-#ifndef GID_T
-#if defined(SVR4) || defined(_POSIX_SOURCE)
-#define GID_T gid_t
-#else
-#define GID_T int
-#endif
-#endif
-
-/*
- * Define NDEBUG for production versions
- */
-
-#define NDEBUG
-
-/*
- * Define PWDFILE and GRPFILE to the names of the password and
- * group files. //jiivee
- */
-
-#define PASSWD_FILE "/etc/passwd"
-#define PASSWD_PAG_FILE "/etc/passwd.pag"
-#define GROUP_FILE "/etc/group"
-#define GROUP_PAG_FILE "/etc/group.pag"
-
-#ifdef SHADOWPWD
-#define SHADOW_FILE "/etc/shadow"
-#define SHADOW_PAG_FILE "/etc/shadow.pag"
-#ifdef SHADOWGRP
-#define SGROUP_FILE "/etc/gshadow"
-#define SGROUP_PAG_FILE "/etc/gshadow.pag"
-#endif
-#endif
-
-/*
- * The structure of the utmp file. There are two kinds of UTMP files,
- * "BSD" and "USG". "BSD" has no PID or type information, "USG" does.
- * If you define neither of these, the type will be defaulted by using
- * BSD, SUN, SYS3 and USG defines.
- */
-
-#define _UTMP_FILE "/var/run/utmp"
-#define _WTMP_FILE "/var/log/wtmp"
-
-#define USG_UTMP /**/
-/* #define BSD_UTMP */
-
-#if !defined(USG_UTMP) && !defined(BSD_UTMP)
-#if defined(BSD) || defined(SYS3) || defined(SUN)
-#define BSD_UTMP
-#else
-#define USG_UTMP
-#endif /* BSD || SYS3 || SUN */
-#endif /* !USG_UTMP || !BSD_UTMP */
-
-/*
- * From where to look for legal user shells
- */
-
-#ifndef SHELLS_FILE
-#define SHELLS_FILE "/etc/shells"
-#endif
-
-/*
- * Default issue file location
- */
-
-#ifndef ISSUE_FILE
-#define ISSUE_FILE "/etc/issue"
-#endif
-
-/*
- * Logoutd message file
- */
-
-#define HUP_MESG_FILE "/etc/logoutd.mesg"
-
-/*
- * Mail spool directory. This is used if mailspool cannot be located otherwise
- */
-
-#ifndef MAIL_SPOOL_DIR
-#define MAIL_SPOOL_DIR "/var/spool/mail"
-#endif
-
-/*
- * Where are new user default setup files kept
- */
-
-#define SKEL_DIR "/etc/skel"
-
-/*
- * New user defaults. The NEW_USER_FILE must have 6 X's in the end of name
- */
-
-#define USER_DEFAULTS_FILE "/etc/default/useradd"
-#define NEW_USER_FILE "/etc/default/nuaddXXXXXX"
-
-/*
- * Telinit program. If your system uses /etc/telinit to change run
- * level, define TELINIT and then define the RUNLEVEL macro to be the
- * run-level to switch INIT to. This is used by sulogin to change
- * from single user to multi-user mode.
- *
- * From bluca@www.polimi.it: instead, set up /etc/inittab properly
- * ~0:S:wait:/sbin/sulogin
- * ~9:S:wait:/sbin/telinit -t0 2
- */
-
-#undef TELINIT
-#undef PATH_TELINIT "/sbin/telinit"
-#undef RUNLEVEL "2"
-
-/*
- * Crontab and atrm. Used in userdel.c - see user_cancel(). Verify
- * that these are correct for your distribution. --marekm
- */
-
-#if 0 /* old Slackware */
-#define CRONTAB_COMMAND "/usr/bin/crontab -d -u %s"
-#define CRONTAB_FILE "/var/cron/tabs/%s"
-#else
-/* Debian 0.93R6 (marekm): */
-#define CRONTAB_COMMAND "/usr/bin/crontab -r -u %s"
-#define CRONTAB_FILE "/var/spool/cron/crontabs/%s"
-/* Red Hat 2.1 (jiivee@iki.fi): */
-/* #define CRONTAB_FILE "/var/spool/cron/%s" */
-#endif
-
-/*
- * Hmmm, had to #undef this since at-2.8a on Linux doesn't have an option
- * to remove all jobs owned by some user.
- *
- * Fortunately, atrun will not run any at jobs for users not listed in
- * /etc/passwd. Unfortunately, if you remove a user and add a new user
- * with the same UID before it is time to run the old at job, atrun will
- * not notice this and run the old job. Not good. The best fix right
- * now is to remove any at jobs left over by hand, and not reuse any
- * previously used UID values.
- *
- * We probably should discuss this with the at maintainer... It might
- * be better to store at jobs by user names, not UIDs. --marekm
- */
-
-#undef ATRM_COMMAND
-
-/*
- * Login times log file location.
- */
-
-#define LASTLOG_FILE "/var/log/lastlog"
-
-/*
- * Linux FSSTND recommends that the chfn, chsh, gpasswd, passwd commands
- * are in /usr/bin, not /bin (not needed before mounting /usr). --marekm
- */
-
-#define CHFN_PROGRAM "/usr/bin/chfn"
-#define CHSH_PROGRAM "/usr/bin/chsh"
-#define GPASSWD_PROGRAM "/usr/bin/gpasswd"
-#define PASSWD_PROGRAM "/usr/bin/passwd"
-
-/*
- * On most Linux systems, the login prompt is "hostname login: ". Some
- * automatic login scripts depend on it. If not defined, the default is
- * just "login: ". %s is replaced by the hostname. --marekm
- */
-
-#define LOGIN_PROMPT "%s login: "
-
-/*
- * Define to enable (warning: completely unsupported by me) administrator
- * defined authentication methods. Most programs are not aware of them,
- * so we can remove some code and possibly some bugs :-). PAM (when done)
- * will replace much of this anyway... --marekm
- */
-
-/* #define AUTH_METHODS */
-
-/*
- * Define to enable detailed login access control (a la logdaemon/FreeBSD)
- * and su access control (much more powerful/fascist than the traditional
- * BSD-style "wheel group" feature). Any volunteers to convince the GNU
- * folks that they should add access control to their version of su?
- * Call me a fascist, but then I'll have to call you a communist :-).
- */
-
-#define LOGIN_ACCESS
-#define SU_ACCESS
-
-/* see faillog.h for more info what it is */
-#define FAILLOG_LOCKTIME
-
-/* see lmain.c and login.defs.linux */
-#define CONSOLE_GROUPS
-
-#endif /* _CONFIG_H */
+++ /dev/null
-/*
- * 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.
- *
- * pwconv - convert and update shadow password files
- *
- * Pwconv 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 npasswd, the new shadow file is
- * left in nshadow. Existing shadow entries are copied as is.
- * New entries are created with passwords which expire in MAXDAYS days,
- * with a last changed date of today, unless password aging
- * information was already present. Likewise, the minimum number of
- * days before which the password may be changed is controlled by
- * MINDAYS. The number of warning days is set to WARNAGE if that
- * macro exists. Entries with blank passwordsare not copied to the
- * shadow file at all.
- */
-
-#include <config.h>
-#ifndef SHADOWPWD
-
-main()
-{
- fprintf (stderr, "Shadow passwords are not configured.\n");
- exit (1);
-}
-
-#else /*{*/
-
-#include "rcsid.h"
-RCSID("$Id: pwconv-old.c,v 1.1 1997/05/01 23:11:59 marekm Exp $")
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <pwd.h>
-#include "defines.h"
-
-#include "getdef.h"
-
-static char buf[BUFSIZ];
-
-long a64l ();
-
-int
-main()
-{
- long today;
- struct passwd *pw;
- struct passwd *sgetpwent ();
- FILE *pwd;
- FILE *npwd;
- FILE *shadow;
- struct spwd *spwd;
- struct spwd tspwd;
- int fd;
- char *cp;
-
- if (! (pwd = fopen (PASSWD_FILE, "r"))) {
- perror (PASSWD_FILE);
- exit (1);
- }
- unlink ("npasswd");
- if ((fd = open ("npasswd", O_WRONLY|O_CREAT|O_EXCL, 0644)) < 0 ||
- ! (npwd = fdopen (fd, "w"))) {
- perror ("npasswd");
- exit (1);
- }
- unlink ("nshadow");
- if ((fd = open ("nshadow", O_WRONLY|O_CREAT|O_EXCL, 0600)) < 0 ||
- ! (shadow = fdopen (fd, "w"))) {
- perror ("nshadow");
- (void) unlink ("npasswd");
- (void) unlink ("nshadow");
- exit (1);
- }
-
- (void) time (&today);
- today /= (24L * 60L * 60L);
-
- while (fgets (buf, sizeof buf, pwd) == buf) {
- if ((cp = strrchr (buf, '\n')))
- *cp = '\0';
-
- if (buf[0] == '#') { /* comment line */
- (void) fprintf (npwd, "%s\n", buf);
- continue;
- }
- if (! (pw = sgetpwent (buf))) { /* copy bad lines verbatim */
- (void) fprintf (npwd, "%s\n", buf);
- continue;
- }
-#if 0 /* convert all entries, even if no passwd. --marekm */
- if (pw->pw_passwd[0] == '\0') { /* no password, skip */
- (void) fprintf (npwd, "%s\n", buf);
- continue;
- }
-#endif
- setspent (); /* rewind old shadow file */
-
-#if 0
- if ((spwd = getspnam(pw->pw_name))) {
-#else
- /*
- * If the user exists, getspnam() in NYS libc (at least
- * on Red Hat 3.0.3) always succeeds if the user exists,
- * even if there is no /etc/shadow file. As a result,
- * passwords are left in /etc/passwd after pwconv!
- *
- * Copy existing shadow entries only if the encrypted
- * password field in /etc/passwd is "x" - this indicates
- * that the shadow password is really there. --marekm
- */
- spwd = getspnam(pw->pw_name);
- if (spwd && strcmp(pw->pw_passwd, "x") == 0) {
-#endif
- if (putspent (spwd, shadow)) { /* copy old entry */
- perror ("nshadow");
- goto error;
- }
- } else { /* need a new entry. */
- tspwd.sp_namp = pw->pw_name;
- tspwd.sp_pwdp = pw->pw_passwd;
- pw->pw_passwd = "x";
-#ifdef ATT_AGE
- if (pw->pw_age) { /* copy old password age stuff */
- if ((int) strlen (pw->pw_age) >= 2) {
- tspwd.sp_min = c64i (pw->pw_age[1]);
- tspwd.sp_max = c64i (pw->pw_age[0]);
- } else {
- tspwd.sp_min = tspwd.sp_max = -1;
- }
- if (strlen (pw->pw_age) == 4)
- tspwd.sp_lstchg = a64l (&pw->pw_age[2]);
- else
- tspwd.sp_lstchg = -1;
-
- /*
- * Convert weeks to days
- */
-
- if (tspwd.sp_min != -1)
- tspwd.sp_min *= 7;
-
- if (tspwd.sp_max != -1)
- tspwd.sp_max *= 7;
-
- if (tspwd.sp_lstchg != -1)
- tspwd.sp_lstchg *= 7;
- } else
-#endif /* ATT_AGE */
- { /* fake up new password age stuff */
- tspwd.sp_max = getdef_num("PASS_MAX_DAYS", -1);
- tspwd.sp_min = getdef_num("PASS_MIN_DAYS", 0);
- tspwd.sp_lstchg = today;
- }
- tspwd.sp_warn = getdef_num("PASS_WARN_AGE", -1);
- tspwd.sp_inact = tspwd.sp_expire = tspwd.sp_flag = -1;
- if (putspent (&tspwd, shadow)) { /* output entry */
- perror ("nshadow");
- goto error;
- }
- }
- (void) fprintf (npwd, "%s:%s:%d:%d:%s:%s:",
- pw->pw_name, pw->pw_passwd,
- pw->pw_uid, pw->pw_gid,
- pw->pw_gecos, pw->pw_dir);
-
- if (fprintf (npwd, "%s\n",
- pw->pw_shell ? pw->pw_shell:"") == EOF) {
- perror ("npasswd");
- goto error;
- }
- }
- endspent ();
-
- if (ferror (npwd) || ferror (shadow)) {
- perror ("pwconv");
-error:
- (void) unlink ("npasswd");
- (void) unlink ("nshadow");
- exit (1);
- }
- (void) fclose (pwd);
- (void) fclose (npwd);
- (void) fclose (shadow);
-
- exit (0);
-}
-#endif /*}*/
+++ /dev/null
-/*
- * Copyright 1990, 1991, 1992, Julianne Frances Haugh and Steve Simmons
- * 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.
- */
-
-/*
- * Standard definitions for password files. This is an independant
- * reimplementation of the definitions used by AT&T, BSD, and POSIX.
- * It is not derived from any of those sources. Note that it can be
- * site-defined to have non-POSIX features as well. Ideally this file
- * is simply replaced by the standard system supplied /usr/include/pwd.h
- * file.
- *
- * @(#)pwd.h.m4 3.4.1.3 12:55:53 05 Feb 1994
- * $Id: pwd.h.m4,v 1.2 1997/05/01 23:11:59 marekm Exp $
- */
-
-#ifndef PWD_H
-#define PWD_H
-
-#ifdef M_XENIX
-typedef int uid_t;
-typedef int gid_t;
-#endif
-
-#if defined(SUN) || defined(SUN4)
-#include <sys/types.h>
-#endif
-
-#ifdef SVR4
-#include <sys/types.h>
-#ifndef _POSIX_SOURCE
-#define _POSIX_SOURCE
-#include <limits.h>
-#undef _POSIX_SOURCE
-#else /* _POSIX_SOURCE */
-#include <limits.h>
-#endif /* !_POSIX_SOURCE */
-#define NGROUPS NGROUPS_MAX
-#endif /* SVR4 */
-
-ifdef(`SUN4', `#define ATT_AGE')
-ifdef(`SUN4', `#define ATT_COMMENT')
-ifdef(`SUN', `#define BSD_QUOTA')
-ifdef(`BSD', `#define BSD_QUOTA')
-ifdef(`AIX', `', `ifdef(`USG', `#define ATT_AGE')')
-ifdef(`AIX', `', `ifdef(`USG', `#define ATT_COMMENT')')
-
-/*
- * This is the data structure returned by the getpw* functions. The
- * names of the elements and the structure are taken from traditional
- * usage.
- */
-
-struct passwd {
- char *pw_name ; /* User login name */
- char *pw_passwd ; /* Encrypted passwd or dummy field */
- uid_t pw_uid ; /* User uid number */
- gid_t pw_gid ; /* User group id number */
-#ifdef BSD_QUOTA
- /* Most BSD systems have quotas, most USG ones don't */
- int pw_quota ; /* The BSD magic doodah */
-#endif
-#ifdef ATT_AGE
- /* Use ATT-style password aging */
- char *pw_age ; /* ATT radix-64 encoded data */
-#endif
-#ifdef ATT_COMMENT
- /* Provide the unused comment field */
- char *pw_comment; /* Unused comment field */
-#endif
- char *pw_gecos ; /* ASCII user name, other data */
- char *pw_dir ; /* User home directory */
- char *pw_shell ; /* User startup shell */
-} ;
-
-#ifdef ATT_COMMENT
-/* Provide the unused comment structure */
-struct comment {
- char *c_dept;
- char *c_name;
- char *c_acct;
- char *c_bin;
-};
-#endif
-
-#if __STDC__
-
-extern struct passwd *getpwent( void ) ;
-extern struct passwd *getpwuid( uid_t user_uid ) ;
-extern struct passwd *getpwnam( char *name ) ;
-#ifdef SVR4
-void setpwent( void );
-void endpwent( void );
-#else
-int setpwent( void );
-int endpwent( void );
-#endif
-
-#else
-
-extern struct passwd *getpwent();
-extern struct passwd *getpwuid();
-extern struct passwd *getpwnam();
-#ifdef SVR4
-void setpwent();
-void endpwent();
-#else
-int setpwent();
-int endpwent();
-#endif
-#endif /* of if __STDC__ */
-
-#endif /* of ifdef PWD_H */
+++ /dev/null
-/*
- * 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.
- *
- * pwunconv - restore old password file from shadow password file.
- *
- * Pwunconv 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 npasswd. There is no new
- * shadow file. Password aging information is translated where
- * possible.
- */
-
-#include <config.h>
-
-#include "rcsid.h"
-RCSID("$Id: pwunconv-old.c,v 1.1 1997/05/01 23:11:59 marekm Exp $")
-
-#include "defines.h"
-#include <sys/types.h>
-#include <stdio.h>
-#include <fcntl.h>
-#include <pwd.h>
-
-#ifndef SHADOWPWD
-int
-main()
-{
- fprintf (stderr, "Shadow passwords are not configured.\n");
- exit (1);
-}
-
-#else /*{*/
-
-char buf[BUFSIZ];
-char *l64a ();
-
-int
-main()
-{
- struct passwd *pw;
- struct passwd *sgetpwent ();
- FILE *pwd;
- FILE *npwd;
- struct spwd *spwd;
- int fd;
-#ifdef ATT_AGE
- char newage[5];
-#endif
-
- if (! (pwd = fopen (PASSWD_FILE, "r"))) {
- perror (PASSWD_FILE);
- return (1);
- }
- unlink ("npasswd");
- if ((fd = open ("npasswd", O_WRONLY|O_CREAT|O_EXCL, 0600)) < 0 ||
- ! (npwd = fdopen (fd, "w"))) {
- perror ("npasswd");
- return (1);
- }
- while (fgets (buf, sizeof buf, pwd) == buf) {
- buf[strlen (buf) - 1] = '\0'; /* remove '\n' character */
-
- if (buf[0] == '#') { /* comment line */
- (void) fprintf (npwd, "%s\n", buf);
- continue;
- }
- if (! (pw = sgetpwent (buf))) { /* copy bad lines verbatim */
- (void) fprintf (npwd, "%s\n", buf);
- continue;
- }
- setspent (); /* rewind shadow file */
-
- if (! (spwd = getspnam (pw->pw_name))) {
- (void) fprintf (npwd, "%s\n", buf);
- continue;
- }
- pw->pw_passwd = spwd->sp_pwdp;
-
- /*
- * Password aging works differently in the two different systems.
- * With shadow password files you apparently must have some aging
- * information. The maxweeks or minweeks may not map exactly.
- * In pwconv we set max == 10000, which is about 30 years. Here
- * we have to undo that kludge. So, if maxdays == 10000, no aging
- * information is put into the new file. Otherwise, the days are
- * converted to weeks and so on.
- */
-
-#ifdef ATT_AGE
- if (spwd->sp_max > (63*WEEK/SCALE) && spwd->sp_max < 10000)
- spwd->sp_max = (63*WEEK/SCALE); /* 10000 is infinity */
-
- if (spwd->sp_min >= 0 && spwd->sp_min <= 63*7 &&
- spwd->sp_max >= 0 && spwd->sp_max <= 63*7) {
- if (spwd->sp_lstchg == -1)
- spwd->sp_lstchg = 0;
-
- spwd->sp_max /= WEEK/SCALE; /* turn it into weeks */
- spwd->sp_min /= WEEK/SCALE;
- spwd->sp_lstchg /= WEEK/SCALE;
-
- strncpy (newage, l64a (spwd->sp_lstchg * (64L*64L) +
- spwd->sp_min * (64L) + spwd->sp_max), 5);
- pw->pw_age = newage;
- } else
- pw->pw_age = "";
-#endif /* ATT_AGE */
- if (putpwent (pw, npwd)) {
- perror ("pwunconv: write error");
- exit (1);
- }
- }
- endspent ();
-
- if (ferror (npwd)) {
- perror ("pwunconv");
- (void) unlink ("npasswd");
- }
- (void) fclose (npwd);
- (void) fclose (pwd);
- return (0);
-}
-#endif
+++ /dev/null
-/*
- * Copyright 1991, Julianne Frances Haugh and Chip Rosenthal
- * 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.
- */
-
-#ifndef lint
-static char rcsid[] = "$Id: scologin.c,v 1.1 1997/05/01 23:12:00 marekm Exp $";
-#endif
-
-#include <stdio.h>
-#include <pwd.h>
-
-#define USAGE "usage: %s [ -r remote_host remote_user local_user [ term_type ] ]\n"
-#define LOGIN "/etc/login"
-
-extern int errno;
-extern char *sys_errlist[];
-extern char **environ;
-
-int
-main(argc, argv)
-int argc;
-char *argv[];
-{
- char *rhost, *ruser, *luser;
- char term[1024], *nargv[8], *nenvp[2];
- int root_user, i;
- struct passwd *pw;
-
- if (argc == 1) {
-
- /*
- * Called from telnetd.
- */
- nargv[0] = "login";
- nargv[1] = "-p";
- nargv[2] = NULL;
-
- } else if (strcmp(argv[1], "-r") == 0 && argc >= 6) {
-
- /*
- * Called from rlogind.
- */
-
- rhost = argv[2];
- ruser = argv[3];
- luser = argv[4];
- root_user = ((pw = getpwnam(luser)) != NULL && pw->pw_uid == 0);
-
- i = 0;
- if ( argc == 6 ) {
- strcpy(term, "TERM=");
- strncat(term+sizeof("TERM=")-1,
- argv[5], sizeof(term)-sizeof("TERM="));
- term[sizeof(term)-1] = '\0';
- nenvp[i++] = term;
- }
- nenvp[i++] = NULL;
- environ = nenvp;
-
- i = 0;
- nargv[i++] = "login";
- nargv[i++] = "-p";
- nargv[i++] = "-h";
- nargv[i++] = rhost;
- if (ruserok(rhost, root_user, ruser, luser) == 0)
- nargv[i++] = "-f";
- nargv[i++] = luser;
- nargv[i++] = NULL;
-
- } else {
-
- fprintf(stderr, USAGE, argv[0]);
- exit(1);
-
- }
-
- (void) execv(LOGIN, nargv);
- fprintf(stderr, "%s: could not exec '%s' [%s]\n",
- argv[0], LOGIN, sys_errlist[errno]);
- exit(1);
- /*NOTREACHED*/
-}
+++ /dev/null
-.\" Copyright (c) 1983, 1991 The Regents of the University of California.
-.\" 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. All advertising materials mentioning features or use of this software
-.\" must display the following acknowledgement:
-.\" This product includes software developed by the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University 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 THE REGENTS 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 THE REGENTS 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.
-.\"
-.\" from: @(#)vipw.8 6.7 (Berkeley) 3/16/91
-.\" $Id: vipw.8,v 1.1 1997/12/07 23:27:13 marekm Exp $
-.\"
-.Dd March 13, 1997
-.Dt VIPW 8
-.Os BSD 4
-.Sh NAME
-.Nm vipw, vigr
-.Nd edit the password, group, shadow, or sgroup file
-.Sh SYNOPSIS
-.Nm vipw [-s]
-.Nm vigr [-s]
-.Sh DESCRIPTION
-.Nm Vipw
-and
-.Nm vigr
-edit the password and group files, respectively, after setting the
-appropriate locks. With the -s option, they will edit the shadow and
-sgroup files. They do any necessary processing after
-the files are unlocked. If the password or group file is already
-locked for editing by another user, you will be asked to try again
-later.
-The default editor under Debian GNU/Linux is
-.Xr ae 1 .
-.Sh ENVIRONMENT
-vipw and vigr will try the environment variables VISUAL and EDITOR
-before defaulting to
-.Xr ae 1 .
-.Sh SEE ALSO
-.Xr passwd 5 ,
-.Xr group 5 ,
-.Xr shadow 5 ,
-.Xr sgroup 5
-.Sh HISTORY
-The
-.Nm vipw
-command appeared in
-.Bx 4.0 .
{"usage: %s [-r] name\n", 413},
{"%s: error updating group entry\n", 414},
{"%s: cannot update dbm group entry\n", 415},
- {"%s: cannot rewrite TCFS key file\n", 416},
- {"%s: cannot lock TCFS key file\n", 417},
- {"%s: cannot open TCFS key file\n", 418},
- {"%s: cannot open group file\n", 419},
- {"%s: cannot open shadow group file\n", 420},
- {"%s: error deleting authentication\n", 421},
- {"%s: error deleting password entry\n", 422},
- {"%s: error deleting shadow password entry\n", 423},
- {"%s: error deleting TCFS entry\n", 424},
- {"%s: error deleting password dbm entry\n", 425},
- {"%s: error deleting shadow passwd dbm entry\n", 426},
- {"%s: user %s is currently logged in\n", 427},
- {"%s: warning: %s not owned by %s, not removing\n", 428},
- {"%s: warning: can't remove ", 429},
- {"%s: user %s does not exist\n", 430},
- {"%s: user %s is a NIS user\n", 431},
- {"%s: %s not owned by %s, not removing\n", 432},
- {"%s: not removing directory %s (would remove home of user %s)\n", 433},
- {"%s: error removing directory %s\n", 434},
- {"\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n", 435},
- {"[-A {DEFAULT|program},... ] ", 436},
- {"%s: out of memory in update_group\n", 437},
- {"%s: out of memory in update_gshadow\n", 438},
- {"%s: no flags given\n", 439},
- {"%s: shadow passwords required for -e and -f\n", 440},
- {"%s: uid %ld is not unique\n", 441},
- {"%s: error deleting authentication method\n", 442},
- {"%s: error changing authentication method\n", 443},
- {"%s: error changing password entry\n", 444},
- {"%s: error removing password entry\n", 445},
- {"%s: error adding password dbm entry\n", 446},
- {"%s: error removing passwd dbm entry\n", 447},
- {"%s: error removing shadow password entry\n", 448},
- {"%s: error removing shadow passwd dbm entry\n", 449},
- {"%s: directory %s exists\n", 450},
- {"%s: can't create %s\n", 451},
- {"%s: can't chown %s\n", 452},
- {"%s: cannot rename directory %s to %s\n", 453},
- {"%s: warning: %s not owned by %s\n", 454},
- {"failed to change mailbox owner", 455},
- {"failed to rename mailbox", 456},
+ {"%s: cannot remove dbm group entry\n", 416},
+ {"%s: cannot rewrite TCFS key file\n", 417},
+ {"%s: cannot lock TCFS key file\n", 418},
+ {"%s: cannot open TCFS key file\n", 419},
+ {"%s: cannot open group file\n", 420},
+ {"%s: cannot open shadow group file\n", 421},
+ {"%s: error deleting authentication\n", 422},
+ {"%s: error deleting password entry\n", 423},
+ {"%s: error deleting shadow password entry\n", 424},
+ {"%s: error deleting TCFS entry\n", 425},
+ {"%s: error deleting password dbm entry\n", 426},
+ {"%s: error deleting shadow passwd dbm entry\n", 427},
+ {"%s: user %s is currently logged in\n", 428},
+ {"%s: warning: %s not owned by %s, not removing\n", 429},
+ {"%s: warning: can't remove ", 430},
+ {"%s: user %s does not exist\n", 431},
+ {"%s: user %s is a NIS user\n", 432},
+ {"%s: %s not owned by %s, not removing\n", 433},
+ {"%s: not removing directory %s (would remove home of user %s)\n", 434},
+ {"%s: error removing directory %s\n", 435},
+ {"\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n", 436},
+ {"[-A {DEFAULT|program},... ] ", 437},
+ {"%s: out of memory in update_group\n", 438},
+ {"%s: out of memory in update_gshadow\n", 439},
+ {"%s: no flags given\n", 440},
+ {"%s: shadow passwords required for -e and -f\n", 441},
+ {"%s: uid %ld is not unique\n", 442},
+ {"%s: error deleting authentication method\n", 443},
+ {"%s: error changing authentication method\n", 444},
+ {"%s: error changing password entry\n", 445},
+ {"%s: error removing password entry\n", 446},
+ {"%s: error adding password dbm entry\n", 447},
+ {"%s: error removing passwd dbm entry\n", 448},
+ {"%s: error removing shadow password entry\n", 449},
+ {"%s: error removing shadow passwd dbm entry\n", 450},
+ {"%s: directory %s exists\n", 451},
+ {"%s: can't create %s\n", 452},
+ {"%s: can't chown %s\n", 453},
+ {"%s: cannot rename directory %s to %s\n", 454},
+ {"%s: warning: %s not owned by %s\n", 455},
+ {"failed to change mailbox owner", 456},
+ {"failed to rename mailbox", 457},
{"\
\n\
-%s: %s is unchanged\n", 457},
- {"Couldn't lock file", 458},
- {"Couldn't make backup", 459},
- {"%s: can't restore %s: %s (your changes are in %s)\n", 460},
+%s: %s is unchanged\n", 458},
+ {"Couldn't lock file", 459},
+ {"Couldn't make backup", 460},
+ {"%s: can't restore %s: %s (your changes are in %s)\n", 461},
{"\
Usage:\n\
`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n\
-`vigr' edits /etc/group `vigr -s' edits /etc/gshadow\n", 461},
+`vigr' edits /etc/group `vigr -s' edits /etc/gshadow\n", 462},
};
-int _msg_tbl_length = 461;
+int _msg_tbl_length = 462;
msgid ""
msgstr ""
"Project-Id-Version: Shadow 980726\n"
-"POT-Creation-Date: 1999-08-27 21:03+0200\n"
+"POT-Creation-Date: 2000-08-26 20:28+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Nikos Mavroyanopoulos <nmav@i-net.paiko.gr>\n"
"Language-Team: Hellenic <el@li.org>\n"
msgid "You have mail."
msgstr "¸÷åôå ãñÜììáôá."
-#: libmisc/obscure.c:281 src/passwd.c:311
+#: libmisc/obscure.c:281 src/passwd.c:309
#, c-format
msgid "Bad password: %s. "
msgstr "Êáêü óõíèçìáôéêü: %s. "
msgid "Dialup Password: "
msgstr "Óõíèçìáôéêü ôçëåöùíéêÞò óýíäåóçò: "
-#: lib/getdef.c:249
+#: lib/getdef.c:253
msgid "Could not allocate space for config info.\n"
msgstr "Áäõíáìßá äÝóìåõóçò ÷þñïõ ãéá ðëçñïöïñßåò äéáìüñöùóçò.\n"
#.
#. * Item was never found.
#.
-#: lib/getdef.c:303
+#: lib/getdef.c:307
#, c-format
msgid "configuration error - unknown item '%s' (notify administrator)\n"
msgstr ""
"óöÜëìá äéáìüñöùóçò - Üãíùóôï áíôéêåßìåíï '%s' (åéäïðïéåßóôå ôïí "
"äéá÷åéñéóôÞ)\n"
-#: lib/getdef.c:390
+#: lib/getdef.c:394
#, c-format
msgid "error - lookup '%s' failed\n"
msgstr "óöÜëìá - ç áíáæÞôçóç '%s' áðÝôõ÷å\n"
-#: lib/getdef.c:398
+#: lib/getdef.c:402
#, c-format
msgid "%s not found\n"
msgstr "%s äåí âñÝèçêå\n"
#. * get the password from her, and set the salt for
#. * the decryption from the group file.
#.
-#: lib/pwauth.c:54 src/newgrp.c:297
+#: lib/pwauth.c:54 src/newgrp.c:305
msgid "Password: "
msgstr "Óõíèçìáôéêü: "
msgid "Account Expires:\t"
msgstr "Ôï óõíèçìáôéêü ëÞãåé:\t"
-#: src/chage.c:468
+#: src/chage.c:471
#, c-format
msgid "%s: do not include \"l\" with other flags\n"
msgstr "%s: Íá ìçí óõìðåñéëáìâÜíåôå ôï \"l\" ìå ôéò Üëëåò åíäåßîåéò\n"
-#: src/chage.c:480 src/chage.c:592 src/login.c:529
+#: src/chage.c:483 src/chage.c:595 src/login.c:529
#, c-format
msgid "%s: permission denied\n"
msgstr "%s: Üäåéá áðïññßöèçêå\n"
-#: src/chage.c:492 src/chpasswd.c:122
+#: src/chage.c:495 src/chpasswd.c:120
#, c-format
msgid "%s: can't lock password file\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/chage.c:498 src/chpasswd.c:126
+#: src/chage.c:501 src/chpasswd.c:124
#, c-format
msgid "%s: can't open password file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/chage.c:505
+#: src/chage.c:508
#, c-format
msgid "%s: unknown user: %s\n"
msgstr "%s: Üãíùóôïò ÷ñÞóôçò: %s\n"
-#: src/chage.c:524
+#: src/chage.c:527
#, c-format
msgid "%s: can't lock shadow password file\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/chage.c:531
+#: src/chage.c:534
#, c-format
msgid "%s: can't open shadow password file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/chage.c:613
+#: src/chage.c:616
#, c-format
msgid "Changing the aging information for %s\n"
msgstr "ÁëëáãÞ ðëçñïöïñéþí ÷ñüíïõ ãéá ôïí %s\n"
-#: src/chage.c:615
+#: src/chage.c:618
#, c-format
msgid "%s: error changing fields\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí áëëáãÞ ðåäßùí\n"
-#: src/chage.c:642 src/chage.c:705 src/pwunconv.c:184
+#: src/chage.c:645 src/chage.c:708 src/pwunconv.c:183
#, c-format
msgid "%s: can't update password file\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/chage.c:672 src/pwunconv.c:179
+#: src/chage.c:675 src/pwunconv.c:178
#, c-format
msgid "%s: can't update shadow password file\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/chage.c:721 src/chage.c:736 src/chfn.c:572 src/chsh.c:411
-#: src/passwd.c:827 src/passwd.c:928
+#: src/chage.c:724 src/chage.c:739 src/chfn.c:571 src/chsh.c:410
+#: src/passwd.c:825 src/passwd.c:926
msgid "Error updating the DBM password entry.\n"
msgstr ""
"ÓöÜëìá êáôÜ ôçí áíáíÝùóç ôçò êáôá÷þñçóçò óôï dbm áñ÷åßï óõíèçìáôéêþí.\n"
-#: src/chage.c:753
+#: src/chage.c:756
#, c-format
msgid "%s: can't rewrite shadow password file\n"
msgstr "%s: áäõíáìßá åðáíåããñáöÞò áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/chage.c:767
+#: src/chage.c:770
#, c-format
msgid "%s: can't rewrite password file\n"
msgstr "%s: áäõíáìßá åðáíåããñáöÞò áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/chage.c:816
+#: src/chage.c:821
#, c-format
msgid "%s: no aging information present\n"
msgstr "%s: Äåí õðÜñ÷ïõí ðëçñïöïñßåò ãÞñáíóçò\n"
-#: src/chfn.c:108
+#: src/chfn.c:107
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n"
"Usage: %s [ -f ðëÞñåò_üíïìá ] [ -r áñßèì_äùìáôßïõ ] [ -w ôçë_åñãáóßáò ]\n"
"\t[ -h ôçë_ïéêßáò ] [ -o Üëëï ] [ ÷ñÞóôçò ]\n"
-#: src/chfn.c:112
+#: src/chfn.c:111
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n"
"×ñÞóç: %s [ -f ðëÞñåò_üíïìá ] [ -r áñéèì_äùìáôßïõ ] [ -w ôçë_äùìáôßïõ ]\n"
"[ -h ôçë_ïéêßáò ]\n"
-#: src/chfn.c:164 src/chsh.c:120
+#: src/chfn.c:163 src/chsh.c:119
msgid "Enter the new value, or press return for the default\n"
msgstr "ÅéóÜãåôå ôçí íÝá ôéìÞ, Þ ðéÝóôå `return' ãéá ôçí ðñïêáèïñéóìÝíç\n"
-#: src/chfn.c:167
+#: src/chfn.c:166
msgid "Full Name"
msgstr "ÐëÞñåò üíïìá"
-#: src/chfn.c:169
+#: src/chfn.c:168
#, c-format
msgid "\tFull Name: %s\n"
msgstr "\tÐëÞñåò ¼íïìá: %s\n"
-#: src/chfn.c:172
+#: src/chfn.c:171
msgid "Room Number"
msgstr "Áñéèìüò äùìáôßïõ"
-#: src/chfn.c:174
+#: src/chfn.c:173
#, c-format
msgid "\tRoom Number: %s\n"
msgstr "\tÁñéèìüò Äùìáôßïõ: %s\n"
-#: src/chfn.c:177
+#: src/chfn.c:176
msgid "Work Phone"
msgstr "ÔçëÝöùíï Åñãáóßáò"
-#: src/chfn.c:179
+#: src/chfn.c:178
#, c-format
msgid "\tWork Phone: %s\n"
msgstr "\tÔçëÝöùíï Åñãáóßáò: %s\n"
-#: src/chfn.c:182
+#: src/chfn.c:181
msgid "Home Phone"
msgstr "ÔçëÝöùíï Ïéêßáò"
-#: src/chfn.c:184
+#: src/chfn.c:183
#, c-format
msgid "\tHome Phone: %s\n"
msgstr "\tÔçëÝöùíï ïéêßáò: %s\n"
-#: src/chfn.c:187
+#: src/chfn.c:186
msgid "Other"
msgstr "Áëëï"
-#: src/chfn.c:300 src/chfn.c:308 src/chfn.c:316 src/chfn.c:324 src/chfn.c:332
-#: src/chfn.c:393 src/passwd.c:1228
+#: src/chfn.c:299 src/chfn.c:307 src/chfn.c:315 src/chfn.c:323 src/chfn.c:331
+#: src/chfn.c:392 src/passwd.c:1226
#, c-format
msgid "%s: Permission denied.\n"
msgstr "%s: ¶äåéá áðïññßöèçêå.\n"
-#: src/chfn.c:353 src/chsh.c:226 src/passwd.c:1279
+#: src/chfn.c:352 src/chsh.c:225 src/passwd.c:1277
#, c-format
msgid "%s: Unknown user %s\n"
msgstr "%s: Áãíùóôïò ï ÷ñÞóôçò %s\n"
-#: src/chfn.c:359 src/chsh.c:234 src/passwd.c:1209
+#: src/chfn.c:358 src/chsh.c:233 src/passwd.c:1207
#, c-format
msgid "%s: Cannot determine your user name.\n"
msgstr "%s: Äåí åßíáé äõíáôüí íá êáèïñéóôåß ôï üíïìá ÷ñÞóôç óáò.\n"
-#: src/chfn.c:375 src/chsh.c:252
+#: src/chfn.c:374 src/chsh.c:251
#, c-format
msgid "%s: cannot change user `%s' on NIS client.\n"
msgstr "%s: áäõíáìßá áëëáãÞò ÷ñÞóôç `%s' óôïí NIS åîõðçñåôïýìåíï.\n"
-#: src/chfn.c:380 src/chsh.c:259
+#: src/chfn.c:379 src/chsh.c:258
#, c-format
msgid "%s: `%s' is the NIS master for this client.\n"
msgstr "%s: `%s' åßíáé ï êýñéïò äéáêïìéóôÞò NIS ãé'áõôüí ôïí åîõðçñåôïýìåíï.\n"
-#: src/chfn.c:455
+#: src/chfn.c:454
#, c-format
msgid "Changing the user information for %s\n"
msgstr "ÁëëáãÞ ðëçñïöïñéþí ÷ñÞóôç ãéá ôïí %s\n"
-#: src/chfn.c:464
+#: src/chfn.c:463
#, c-format
msgid "%s: invalid name: \"%s\"\n"
msgstr "%s: Ìç Ýãêõñï üíïìá: `%s'\n"
-#: src/chfn.c:469
+#: src/chfn.c:468
#, c-format
msgid "%s: invalid room number: \"%s\"\n"
msgstr "%s: Ìç Ýãêõñïò áñéèìüò äùìáôßïõ: `%s'\n"
-#: src/chfn.c:474
+#: src/chfn.c:473
#, c-format
msgid "%s: invalid work phone: \"%s\"\n"
msgstr "%s: Ìç Ýãêõñï ôçëÝöùíï åñãáóßáò: `%s'\n"
-#: src/chfn.c:479
+#: src/chfn.c:478
#, c-format
msgid "%s: invalid home phone: \"%s\"\n"
msgstr "%s: Ìç Ýãêõñï ôçëÝöùíï ïéêßáò: `%s'\n"
-#: src/chfn.c:484
+#: src/chfn.c:483
#, c-format
msgid "%s: \"%s\" contains illegal characters\n"
msgstr "%s: \"%s\" ðåñéÝ÷åé ìç Ýãêõñïõò ÷áñáêôÞñåò\n"
-#: src/chfn.c:496
+#: src/chfn.c:495
#, c-format
msgid "%s: fields too long\n"
msgstr "%s: Ðïëý ìáêñéÜ ðåäßá\n"
-#: src/chfn.c:511 src/chsh.c:349 src/gpasswd.c:583 src/passwd.c:1390
+#: src/chfn.c:510 src/chsh.c:348 src/gpasswd.c:582 src/passwd.c:1388
msgid "Cannot change ID to root.\n"
msgstr "Áäõíáìßá áëëáãÞò ôáõôüôçôáò ÷ñÞóôç óå root.\n"
-#: src/chfn.c:524 src/chsh.c:363 src/passwd.c:737 src/passwd.c:882
+#: src/chfn.c:523 src/chsh.c:362 src/passwd.c:735 src/passwd.c:880
msgid "Cannot lock the password file; try again later.\n"
msgstr "Áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ óõíèçìáôéêþí. ÄïêéìÜóôå áñãüôåñá.\n"
-#: src/chfn.c:530 src/chsh.c:369 src/passwd.c:742 src/passwd.c:887
+#: src/chfn.c:529 src/chsh.c:368 src/passwd.c:740 src/passwd.c:885
msgid "Cannot open the password file.\n"
msgstr "Áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ óõíèçìáôéêþí.\n"
-#: src/chfn.c:547 src/chsh.c:384 src/passwd.c:748 src/usermod.c:1272
+#: src/chfn.c:546 src/chsh.c:383 src/passwd.c:746 src/usermod.c:1271
#, c-format
msgid "%s: %s not found in /etc/passwd\n"
msgstr "%s: Ï %s äåí âñÝèçêå óôï /etc/passwd\n"
-#: src/chfn.c:564 src/chsh.c:403 src/passwd.c:821 src/passwd.c:922
-#: src/passwd.c:962
+#: src/chfn.c:563 src/chsh.c:402 src/passwd.c:819 src/passwd.c:920
+#: src/passwd.c:960
msgid "Error updating the password entry.\n"
msgstr "ÓöÜëìá êáôÜ ôçí áíáíÝùóç êáôá÷þñçóçò óôï áñ÷åßï óõíèçìáôéêþí.\n"
-#: src/chfn.c:587 src/chsh.c:426 src/passwd.c:834 src/passwd.c:935
+#: src/chfn.c:586 src/chsh.c:425 src/passwd.c:832 src/passwd.c:933
msgid "Cannot commit password file changes.\n"
msgstr "Áäõíáìßá åéóáãùãÞò ôùí áëëáãþí óôï áñ÷åßï óõíèçìáôéêþí.\n"
-#: src/chfn.c:594 src/chsh.c:433
+#: src/chfn.c:593 src/chsh.c:432
msgid "Cannot unlock the password file.\n"
msgstr "Áäõíáìßá îåêëåéäþìáôïò ôïõ áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/chpasswd.c:78
+#: src/chpasswd.c:76
#, c-format
msgid "usage: %s [-e]\n"
msgstr "÷ñÞóç: %s [-e]\n"
-#: src/chpasswd.c:134 src/pwconv.c:105
+#: src/chpasswd.c:132 src/pwconv.c:104
#, c-format
msgid "%s: can't lock shadow file\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/chpasswd.c:139 src/gpasswd.c:609 src/pwconv.c:110 src/pwunconv.c:119
-#: src/pwunconv.c:124
+#: src/chpasswd.c:137 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:118
+#: src/pwunconv.c:123
#, c-format
msgid "%s: can't open shadow file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/chpasswd.c:161 src/newusers.c:418
+#: src/chpasswd.c:159 src/newusers.c:415
#, c-format
msgid "%s: line %d: line too long\n"
msgstr "%s: ãñáììÞ %d: ðïëý ìåãÜëç ãñáììÞ\n"
-#: src/chpasswd.c:181
+#: src/chpasswd.c:179
#, c-format
msgid "%s: line %d: missing new password\n"
msgstr "%s: ãñáììÞ %d: Ýëëåéøç íÝïõ óõíèçìáôéêïý\n"
-#: src/chpasswd.c:197
+#: src/chpasswd.c:195
#, c-format
msgid "%s: line %d: unknown user %s\n"
msgstr "%s: ãñáììÞ %d: Üãíùóôïò ÷ñÞóôçò %s\n"
-#: src/chpasswd.c:249
+#: src/chpasswd.c:247
#, c-format
msgid "%s: line %d: cannot update password entry\n"
msgstr "%s: ãñáììÞ %d: áäõíáìßá áíáíÝùóçò êáôá÷þñçóçò óõíèçìáôéêïý\n"
-#: src/chpasswd.c:265 src/newusers.c:538
+#: src/chpasswd.c:263 src/newusers.c:535
#, c-format
msgid "%s: error detected, changes ignored\n"
msgstr "%s: Áíé÷íÝõôçêå óöÜëìá, ïé áëëáãÝò áãíïÞèçêáí\n"
-#: src/chpasswd.c:276
+#: src/chpasswd.c:274
#, c-format
msgid "%s: error updating shadow file\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí áíáíÝùóç êáôá÷ùñÞóåùí óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n"
-#: src/chpasswd.c:284
+#: src/chpasswd.c:282
#, c-format
msgid "%s: error updating password file\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí áíáíÝùóç êáôá÷ùñÞóåùí óôï áñ÷åßï óõíèçìáôéêþí\n"
-#: src/chsh.c:106
+#: src/chsh.c:105
#, c-format
msgid "Usage: %s [ -s shell ] [ name ]\n"
msgstr "×ñÞóç: %s [ -s öëïéüò ] [ üíïìá ]\n"
-#: src/chsh.c:121
+#: src/chsh.c:120
msgid "Login Shell"
msgstr "ÊÝëõöïò Åéóüäïõ"
-#: src/chsh.c:275 src/chsh.c:288
+#: src/chsh.c:274 src/chsh.c:287
#, c-format
msgid "You may not change the shell for %s.\n"
msgstr "Äåí ìðïñåßôå íá áëëÜîåôå ôï öëïéü ãéá ôï(í) %s.\n"
-#: src/chsh.c:317
+#: src/chsh.c:316
#, c-format
msgid "Changing the login shell for %s\n"
msgstr "ÁëëÜãÞ ôïõ öëïéïý ãéá ôïí %s\n"
-#: src/chsh.c:329
+#: src/chsh.c:328
#, c-format
msgid "%s: Invalid entry: %s\n"
msgstr "%s: Ìç Ýãêõñç êáôá÷þñçóç: %s\n"
-#: src/chsh.c:334
+#: src/chsh.c:333
#, c-format
msgid "%s is an invalid shell.\n"
msgstr "%s äåí åßíáé Ýãêõñïò öëïéüò.\n"
-#: src/dpasswd.c:71
+#: src/dpasswd.c:69
#, c-format
msgid "Usage: %s [ -(a|d) ] shell\n"
msgstr "×ñÞóç: %s [ -(ald) ] öëïéüò\n"
-#: src/dpasswd.c:136
+#: src/dpasswd.c:134
msgid "Shell password: "
msgstr "Óõíèçìáôéêü öëïéïý: "
-#: src/dpasswd.c:142
+#: src/dpasswd.c:140
msgid "re-enter Shell password: "
msgstr "ÅðáíåéóÜãåôå ôï óõíèçìáôéêü öëïéïý: "
-#: src/dpasswd.c:149
+#: src/dpasswd.c:147
#, c-format
msgid "%s: Passwords do not match, try again.\n"
msgstr "%s: Ôá óõíèçìáôéêÜ äåí ôáéñéÜæïõí, äïêéìÜóôå îáíÜ.\n"
-#: src/dpasswd.c:169
+#: src/dpasswd.c:167
#, c-format
msgid "%s: can't create %s"
msgstr "%s: áäõíáìßá äçìéïõñãßáò ôïõ %s"
-#: src/dpasswd.c:174
+#: src/dpasswd.c:172
#, c-format
msgid "%s: can't open %s"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôïõ %s"
-#: src/dpasswd.c:202
+#: src/dpasswd.c:200
#, c-format
msgid "%s: Shell %s not found.\n"
msgstr "%s: Ï öëïéüò %s äåí âñÝèçêå.\n"
-#: src/expiry.c:85
+#: src/expiry.c:84
msgid "Usage: expiry { -f | -c }\n"
msgstr "×ñÞóç: expiry { -f | -c }\n"
-#: src/expiry.c:138
+#: src/expiry.c:137
#, c-format
msgid "%s: WARNING! Must be set-UID root!\n"
msgstr ""
"%s: ÐÑÏÓÏ×Ç! ÐñÝðåé íá Ý÷åé ôåèåß ôï bit ðáñá÷þñçóçò ôáõôüôçôáò root!\n"
-#: src/expiry.c:149
+#: src/expiry.c:148
#, c-format
msgid "%s: unknown user\n"
msgstr "%s: Üãíùóôïò ÷ñÞóôçò\n"
-#: src/faillog.c:80
+#: src/faillog.c:79
#, c-format
msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n"
msgstr ""
"÷ñÞóç: %s [-a|-u ÷ñÞóôçò] [-m ìåã] [-r] [-t ìÝñåò] [-l äåõôåñüëåðôá_êëåéä]\n"
-#: src/faillog.c:135 src/lastlog.c:95
+#: src/faillog.c:134 src/lastlog.c:94
#, c-format
msgid "Unknown User: %s\n"
msgstr "Áãíùóôïò ÷ñÞóôçò: %s\n"
-#: src/faillog.c:216
+#: src/faillog.c:215
msgid "Username Failures Maximum Latest\n"
msgstr "¼íïìá_×ñÞóôç Áðïôõ÷ßåò ÌÝãéóôï Ôåëåõôáßá\n"
-#: src/faillog.c:233
+#: src/faillog.c:232
#, c-format
msgid " %s on %s"
msgstr " %s óôï %s"
-#: src/faillog.c:237
+#: src/faillog.c:236
#, c-format
msgid " [%lds left]"
msgstr " [%lds áðÝìåéíáí]"
-#: src/faillog.c:240
+#: src/faillog.c:239
#, c-format
msgid " [%lds lock]"
msgstr " [%lds êëåßäùìá]"
-#: src/gpasswd.c:91
+#: src/gpasswd.c:89
#, c-format
msgid "usage: %s [-r|-R] group\n"
msgstr "÷ñÞóç: %s [-r|-R] ïìÜäá\n"
-#: src/gpasswd.c:92
+#: src/gpasswd.c:90
#, c-format
msgid " %s [-a user] group\n"
msgstr " %s [-a ÷ñÞóôçò] ïìÜäá\n"
-#: src/gpasswd.c:93
+#: src/gpasswd.c:91
#, c-format
msgid " %s [-d user] group\n"
msgstr " %s [-d ÷ñÞóôçò] ïìÜäá\n"
-#: src/gpasswd.c:95
+#: src/gpasswd.c:93
#, c-format
msgid " %s [-A user,...] [-M user,...] group\n"
msgstr " %s [-A ÷ñÞóôçò,...] [-M ÷ñÞóôçò,...] ïìÜäá\n"
-#: src/gpasswd.c:98
+#: src/gpasswd.c:96
#, c-format
msgid " %s [-M user,...] group\n"
msgstr " %s [-M ÷ñÞóôçò,...] ïìÜäá\n"
-#: src/gpasswd.c:162 src/gpasswd.c:247
+#: src/gpasswd.c:160 src/gpasswd.c:245
#, c-format
msgid "%s: unknown user %s\n"
msgstr "%s: Üãíùóôïò ÷ñÞóôçò %s\n"
-#: src/gpasswd.c:174
+#: src/gpasswd.c:172
msgid "Permission denied.\n"
msgstr "¶äåéá áðïññßöèçêå.\n"
-#: src/gpasswd.c:259
+#: src/gpasswd.c:257
#, c-format
msgid "%s: shadow group passwords required for -A\n"
msgstr "%s: óêéþäç óõíèçìáôéêÜ ïìÜäùí áðáéôïýíôáé ãéá ôï -A\n"
-#: src/gpasswd.c:310
+#: src/gpasswd.c:308
msgid "Who are you?\n"
msgstr "Ðïéïò åßóáé;\n"
-#: src/gpasswd.c:330 src/newgrp.c:247
+#: src/gpasswd.c:328 src/newgrp.c:251
#, c-format
msgid "unknown group: %s\n"
msgstr "Üãíùóôç ïìÜäá: %s\n"
-#: src/gpasswd.c:438
+#: src/gpasswd.c:436
#, c-format
msgid "Adding user %s to group %s\n"
msgstr "ÐñïóèÞêç ôïõ ÷ñÞóôç %s óôçí ïìÜäá %s\n"
-#: src/gpasswd.c:455
+#: src/gpasswd.c:453
#, c-format
msgid "Removing user %s from group %s\n"
msgstr "ÄéáãñÜöç ôïõ ÷ñÞóôç %s áðü ôçí ïìÜäá %s\n"
-#: src/gpasswd.c:468
+#: src/gpasswd.c:466
#, c-format
msgid "%s: unknown member %s\n"
msgstr "%s: Üãíùóôï ìÝëïò %s\n"
-#: src/gpasswd.c:515
+#: src/gpasswd.c:513
#, c-format
msgid "%s: Not a tty\n"
msgstr "%s: Äåí åßíáé tty\n"
#. * the old password since the invoker is either the group
#. * owner, or root.
#.
-#: src/gpasswd.c:537
+#: src/gpasswd.c:535
#, c-format
msgid "Changing the password for group %s\n"
msgstr "ÁëëáãÞ ôïõ óõíèÞìáôïò ãéá ôçí ïìÜäá %s\n"
-#: src/gpasswd.c:540
+#: src/gpasswd.c:538
msgid "New Password: "
msgstr "ÍÝï Óõíèçìáôéêü: "
-#: src/gpasswd.c:545 src/passwd.c:424
+#: src/gpasswd.c:543 src/passwd.c:422
msgid "Re-enter new password: "
msgstr "ÅðáíåéóÜãåôå ôï íÝï óõíèçìáôéêü: "
-#: src/gpasswd.c:557
+#: src/gpasswd.c:555
msgid "They don't match; try again"
msgstr "Äåí ôáéñéÜæïõí. ÄïêéìÜóôå îáíÜ"
-#: src/gpasswd.c:561
+#: src/gpasswd.c:559
#, c-format
msgid "%s: Try again later\n"
msgstr "%s: ÎáíáäïêéìÜóôå áñãüôåñá\n"
-#: src/gpasswd.c:591
+#: src/gpasswd.c:590
#, c-format
msgid "%s: can't get lock\n"
msgstr "%s: Áäõíáìßá äçìéïõñãßáò êëåéäþìáôïò\n"
-#: src/gpasswd.c:597
+#: src/gpasswd.c:596
#, c-format
msgid "%s: can't get shadow lock\n"
msgstr ""
"%s: Áäõíáìßá äçìéïõñãßáò êëåéäþìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/gpasswd.c:603
+#: src/gpasswd.c:602
#, c-format
msgid "%s: can't open file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ %s\n"
-#: src/gpasswd.c:615
+#: src/gpasswd.c:614
#, c-format
msgid "%s: can't update entry\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò êáôá÷þñçóçò\n"
-#: src/gpasswd.c:621
+#: src/gpasswd.c:620
#, c-format
msgid "%s: can't update shadow entry\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n"
-#: src/gpasswd.c:627
+#: src/gpasswd.c:626
#, c-format
msgid "%s: can't re-write file\n"
msgstr "%s: áäõíáìßá åðáíåããñáöÞò áñ÷åßïõ\n"
-#: src/gpasswd.c:633
+#: src/gpasswd.c:632
#, c-format
msgid "%s: can't re-write shadow file\n"
msgstr "%s: áäõíáìßá åðáíåããñáöÞò áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/gpasswd.c:641
+#: src/gpasswd.c:640
#, c-format
msgid "%s: can't unlock file\n"
msgstr "%s: áäõíáìßá îåêëåéäþìáôïò áñ÷åßïõ\n"
-#: src/gpasswd.c:646
+#: src/gpasswd.c:645
#, c-format
msgid "%s: can't update DBM files\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò ôùí DBM áñ÷åßùí\n"
-#: src/gpasswd.c:653
+#: src/gpasswd.c:652
#, c-format
msgid "%s: can't update DBM shadow files\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò ôùí DBM áñ÷åßùí óêéùäþí óõíèçìáôéêþí\n"
-#: src/groupadd.c:106
+#: src/groupadd.c:105
msgid "usage: groupadd [-g gid [-o]] group\n"
msgstr "÷ñÞóç: groupadd [-g gid [-o]] ïìÜäá\n"
-#: src/groupadd.c:174 src/groupadd.c:197 src/groupmod.c:184 src/groupmod.c:231
-#: src/useradd.c:932 src/usermod.c:513 src/usermod.c:649
+#: src/groupadd.c:173 src/groupadd.c:196 src/groupmod.c:183 src/groupmod.c:230
+#: src/useradd.c:931 src/usermod.c:512 src/usermod.c:648
#, c-format
msgid "%s: error adding new group entry\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí ðñïóèÞêç íÝáò êáôá÷þñçóçò óôï áñ÷åßï ïìÜäùí\n"
-#: src/groupadd.c:184 src/groupadd.c:207 src/groupmod.c:200 src/useradd.c:943
-#: src/usermod.c:525 src/usermod.c:661
+#: src/groupadd.c:183 src/groupadd.c:206 src/groupmod.c:199 src/useradd.c:942
+#: src/usermod.c:524 src/usermod.c:660
#, c-format
msgid "%s: cannot add new dbm group entry\n"
msgstr "%s: áäõíáìßá ðñïóèÞêçò íÝáò dbm êáôá÷þñçóçò óôï áñ÷åßï ïìÜäùí\n"
-#: src/groupadd.c:259 src/useradd.c:997
+#: src/groupadd.c:258 src/useradd.c:996
#, c-format
msgid "%s: name %s is not unique\n"
msgstr "%s: Ôï üíïìá %s äåí åßíáé ìïíáäéêü\n"
-#: src/groupadd.c:274
+#: src/groupadd.c:273
#, c-format
msgid "%s: gid %ld is not unique\n"
msgstr "%s: Ôï gid %ld äåí åßíáé ìïíáäéêü\n"
-#: src/groupadd.c:298
+#: src/groupadd.c:297
#, c-format
msgid "%s: can't get unique gid\n"
msgstr "%s: áäõíáìßá åýñåóçò ìïíáäéêïý gid\n"
#.
#. * All invalid group names land here.
#.
-#: src/groupadd.c:322 src/groupmod.c:342
+#: src/groupadd.c:321 src/groupmod.c:341
#, c-format
msgid "%s: %s is a not a valid group name\n"
msgstr "%s: Ôï %s äåí åßíáé Ýãêõñï üíïìá ïìÜäáò\n"
-#: src/groupadd.c:351 src/groupmod.c:368
+#: src/groupadd.c:350 src/groupmod.c:367
#, c-format
msgid "%s: invalid group %s\n"
msgstr "%s: Ìç Ýãêõñç ïìÜäá `%s'\n"
-#: src/groupadd.c:368 src/useradd.c:1273
+#: src/groupadd.c:367 src/useradd.c:1272
#, c-format
msgid "%s: -O requires NAME=VALUE\n"
msgstr "%s: -O áðáéôåß ¼ÍÏÌÁ=ÔÉÌÇ\n"
-#: src/groupadd.c:413 src/groupdel.c:168 src/groupmod.c:404 src/useradd.c:1382
-#: src/userdel.c:273 src/usermod.c:537
+#: src/groupadd.c:412 src/groupdel.c:167 src/groupmod.c:403 src/useradd.c:1381
+#: src/userdel.c:303 src/usermod.c:536
#, c-format
msgid "%s: cannot rewrite group file\n"
msgstr "%s: áäõíáìßá åðáíåããñáöÞò ôïõ áñ÷åßïõ ïìÜäùí\n"
-#: src/groupadd.c:419 src/groupdel.c:174 src/groupmod.c:410 src/useradd.c:1390
-#: src/userdel.c:279 src/usermod.c:674
+#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1389
+#: src/userdel.c:309 src/usermod.c:673
#, c-format
msgid "%s: cannot rewrite shadow group file\n"
msgstr "%s: áäõíáìßá åðáíåããñáöÞò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/groupadd.c:438 src/groupdel.c:193 src/groupmod.c:429 src/userdel.c:359
+#: src/groupadd.c:437 src/groupdel.c:192 src/groupmod.c:428 src/userdel.c:389
#, c-format
msgid "%s: unable to lock group file\n"
msgstr "%s: Áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ ïìÜäùí\n"
-#: src/groupadd.c:442 src/groupdel.c:197 src/groupmod.c:433
+#: src/groupadd.c:441 src/groupdel.c:196 src/groupmod.c:432
#, c-format
msgid "%s: unable to open group file\n"
msgstr "%s: Áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ ïìÜäùí\n"
-#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 src/userdel.c:368
+#: src/groupadd.c:446 src/groupdel.c:201 src/groupmod.c:437 src/userdel.c:398
#, c-format
msgid "%s: unable to lock shadow group file\n"
msgstr "%s: Áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443
+#: src/groupadd.c:451 src/groupdel.c:206 src/groupmod.c:442
#, c-format
msgid "%s: unable to open shadow group file\n"
msgstr "%s: Áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/groupadd.c:519
+#: src/groupadd.c:518
#, c-format
msgid "%s: group %s exists\n"
msgstr "%s: Ç ïìÜäá %s õðÜñ÷åé\n"
-#: src/groupdel.c:87
+#: src/groupdel.c:86
msgid "usage: groupdel group\n"
msgstr "÷ñÞóç: groupdel ïìÜäá\n"
-#: src/groupdel.c:105 src/groupmod.c:188 src/groupmod.c:235
+#: src/groupdel.c:104 src/groupmod.c:187 src/groupmod.c:234
#, c-format
msgid "%s: error removing group entry\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ êáôá÷þñçóçò ïìÜäáò\n"
-#: src/groupdel.c:117 src/groupmod.c:207
+#: src/groupdel.c:116 src/groupmod.c:206
#, c-format
msgid "%s: error removing group dbm entry\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ êáôá÷þñçóçò óôï dbm áñ÷åßï ïìÜäùí\n"
-#: src/groupdel.c:132
+#: src/groupdel.c:131
#, c-format
msgid "%s: error removing shadow group entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí áöáßñåóç êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí "
"ïìÜäùí\n"
-#: src/groupdel.c:145 src/groupmod.c:253
+#: src/groupdel.c:144 src/groupmod.c:252
#, c-format
msgid "%s: error removing shadow group dbm entry\n"
msgstr ""
#.
#. * Can't remove the group.
#.
-#: src/groupdel.c:249
+#: src/groupdel.c:248
#, c-format
msgid "%s: cannot remove user's primary group.\n"
msgstr "%s: áäõíáìßá áöáßñåóçò ôçò ðñùôáñ÷éêÞò ïìÜäáò ôïõ ÷ñÞóôç.\n"
-#: src/groupdel.c:306 src/groupmod.c:502
+#: src/groupdel.c:305 src/groupmod.c:501
#, c-format
msgid "%s: group %s does not exist\n"
msgstr "%s: Ç ïìÜäá %s äåí õðÜñ÷åé\n"
-#: src/groupdel.c:320 src/groupmod.c:518
+#: src/groupdel.c:319 src/groupmod.c:517
#, c-format
msgid "%s: group %s is a NIS group\n"
msgstr "%s: Ç ïìÜäá %s åßíáé NIS ïìÜäá\n"
-#: src/groupdel.c:326 src/groupmod.c:524 src/userdel.c:731 src/usermod.c:990
+#: src/groupdel.c:325 src/groupmod.c:523 src/userdel.c:761 src/usermod.c:989
#, c-format
msgid "%s: %s is the NIS master\n"
msgstr "%s: Ï %s åßíáé ï êýñéïò äéáêïìéóôÞò NIS\n"
-#: src/groupmod.c:106
+#: src/groupmod.c:105
msgid "usage: groupmod [-g gid [-o]] [-n name] group\n"
msgstr "÷ñÞóç: groupmod [-g gid [-o]] [-n üíïìá] ïìÜäá\n"
-#: src/groupmod.c:166
+#: src/groupmod.c:165
#, fuzzy, c-format
msgid "%s: %s not found in /etc/group\n"
msgstr "%s: Ï %s äåí âñÝèçêå óôï /etc/passwd\n"
-#: src/groupmod.c:247
+#: src/groupmod.c:246
#, c-format
msgid "%s: cannot add new dbm shadow group entry\n"
msgstr ""
"%s: áäõíáìßá ðñïóèÞêçò íÝáò dbm êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí "
"ïìÜäùí\n"
-#: src/groupmod.c:300
+#: src/groupmod.c:299
#, c-format
msgid "%s: %ld is not a unique gid\n"
msgstr "%s: Ôï %ld äåí åßíáé ìïíáäéêü gid\n"
-#: src/groupmod.c:331
+#: src/groupmod.c:330
#, c-format
msgid "%s: %s is not a unique name\n"
msgstr "%s: Ôï %s äåí åßíáé ìïíáäéêü üíïìá\n"
-#: src/groups.c:63
+#: src/groups.c:62
#, c-format
msgid "unknown user %s\n"
msgstr "Üãíùóôïò ÷ñÞóôçò: %s\n"
-#: src/grpck.c:99
+#: src/grpck.c:98
#, c-format
msgid "Usage: %s [ -r ] [ group [ gshadow ] ]\n"
msgstr "×ñÞóç: %s [ -r ] [ group [ gshadow ] ]\n"
-#: src/grpck.c:101
+#: src/grpck.c:100
#, c-format
msgid "Usage: %s [ -r ] [ group ]\n"
msgstr "×ñÞóç: %s [ -r ] [ group ]\n"
-#: src/grpck.c:120 src/pwck.c:120
+#: src/grpck.c:119 src/pwck.c:119
msgid "No"
msgstr "Ï÷é"
-#: src/grpck.c:235 src/grpck.c:243 src/pwck.c:217 src/pwck.c:226
+#: src/grpck.c:234 src/grpck.c:242 src/pwck.c:216 src/pwck.c:225
#, c-format
msgid "%s: cannot lock file %s\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ %s\n"
-#: src/grpck.c:258 src/grpck.c:266 src/mkpasswd.c:217 src/pwck.c:242
-#: src/pwck.c:251
+#: src/grpck.c:257 src/grpck.c:265 src/mkpasswd.c:216 src/pwck.c:241
+#: src/pwck.c:250
#, c-format
msgid "%s: cannot open file %s\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò áñ÷åßïõ %s\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:299
+#: src/grpck.c:298
msgid "invalid group file entry\n"
msgstr "Ìç Ýãêõñç êáôá÷þñçóç óôï áñ÷åßï ïìÜäùí\n"
-#: src/grpck.c:300 src/grpck.c:363 src/grpck.c:455 src/grpck.c:518
-#: src/grpck.c:535 src/pwck.c:287 src/pwck.c:349 src/pwck.c:456 src/pwck.c:518
-#: src/pwck.c:542
+#: src/grpck.c:299 src/grpck.c:362 src/grpck.c:454 src/grpck.c:517
+#: src/grpck.c:534 src/pwck.c:286 src/pwck.c:348 src/pwck.c:455 src/pwck.c:517
+#: src/pwck.c:541
#, c-format
msgid "delete line `%s'? "
msgstr "äéáãñáöÞ ãñáììÞò `%s'; "
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:362
+#: src/grpck.c:361
msgid "duplicate group entry\n"
msgstr "áíôéãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï ïìÜäùí\n"
-#: src/grpck.c:379
+#: src/grpck.c:378
#, c-format
msgid "invalid group name `%s'\n"
msgstr "Ìç Ýãêõñï üíïìá ïìÜäáò `%s'\n"
-#: src/grpck.c:389
+#: src/grpck.c:388
#, c-format
msgid "group %s: bad GID (%d)\n"
msgstr "ïìÜäá %s: ëÜèïò GID (%d)\n"
-#: src/grpck.c:415
+#: src/grpck.c:414
#, c-format
msgid "group %s: no user %s\n"
msgstr "ïìÜäá %s: äåí õðÜñ÷åé ÷ñÞóôçò %s\n"
-#: src/grpck.c:417 src/grpck.c:586
+#: src/grpck.c:416 src/grpck.c:585
#, c-format
msgid "delete member `%s'? "
msgstr "äéáãñáöÞ ìÝëïõò `%s'; "
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:454
+#: src/grpck.c:453
msgid "invalid shadow group file entry\n"
msgstr "Ìç Ýãêõñç êáôá÷þñçóç óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:517
+#: src/grpck.c:516
msgid "duplicate shadow group entry\n"
msgstr "áíôéãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/grpck.c:534
+#: src/grpck.c:533
msgid "no matching group file entry\n"
msgstr "Äåí âñÝèçêå êáôá÷þñçóç óôï áñ÷åßï ïìÜäùí ðïõ íá ôáéñéÜæåé\n"
-#: src/grpck.c:554
+#: src/grpck.c:553
#, c-format
msgid "shadow group %s: no administrative user %s\n"
msgstr "óêéþäçò ïìÜäá %s: Äåí õðÜñ÷åé äéá÷åéñéóôÞò ÷ñÞóôçò %s\n"
-#: src/grpck.c:556
+#: src/grpck.c:555
#, c-format
msgid "delete administrative member `%s'? "
msgstr "äéáãñáöÞ äéá÷åéñéóôéêïý ìÝëïõò `%s'; "
-#: src/grpck.c:584
+#: src/grpck.c:583
#, c-format
msgid "shadow group %s: no user %s\n"
msgstr "óêéþäçò ïìÜäá %s: äåí õðÜñ÷åé ÷ñÞóôçò %s\n"
-#: src/grpck.c:611 src/grpck.c:617 src/pwck.c:573 src/pwck.c:581
+#: src/grpck.c:610 src/grpck.c:616 src/pwck.c:572 src/pwck.c:580
#, c-format
msgid "%s: cannot update file %s\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò áñ÷åßïõ %s\n"
-#: src/grpck.c:641 src/pwck.c:607
+#: src/grpck.c:640 src/pwck.c:606
#, c-format
msgid "%s: the files have been updated; run mkpasswd\n"
msgstr "%s: ôá áñ÷åßá áíáíåþèçêáí. ÅêôåëÝóôå mkpasswd\n"
-#: src/grpck.c:642 src/grpck.c:646 src/pwck.c:608 src/pwck.c:612
+#: src/grpck.c:641 src/grpck.c:645 src/pwck.c:607 src/pwck.c:611
#, c-format
msgid "%s: no changes\n"
msgstr "%s: êáìéÜ áëëáãÞ\n"
-#: src/grpck.c:645 src/pwck.c:611
+#: src/grpck.c:644 src/pwck.c:610
#, c-format
msgid "%s: the files have been updated\n"
msgstr "%s: ôá áñ÷åßá áíáíåþèçêáí\n"
-#: src/grpconv.c:63 src/grpunconv.c:64
+#: src/grpconv.c:62 src/grpunconv.c:63
#, c-format
msgid "%s: can't lock group file\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ ïìÜäùí\n"
-#: src/grpconv.c:68 src/grpunconv.c:69
+#: src/grpconv.c:67 src/grpunconv.c:68
#, c-format
msgid "%s: can't open group file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ ïìÜäùí\n"
-#: src/grpconv.c:73 src/grpunconv.c:74
+#: src/grpconv.c:72 src/grpunconv.c:73
#, c-format
msgid "%s: can't lock shadow group file\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/grpconv.c:78 src/grpunconv.c:79
+#: src/grpconv.c:77 src/grpunconv.c:78
#, c-format
msgid "%s: can't open shadow group file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
#.
#. * This shouldn't happen (the entry exists) but...
#.
-#: src/grpconv.c:94
+#: src/grpconv.c:93
#, c-format
msgid "%s: can't remove shadow group %s\n"
msgstr ""
"%s: áäõíáìßá áöáßñåóçò ôçò ïìÜäáò %s, áðü ôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n"
"ïìÜäùí\n"
-#: src/grpconv.c:135 src/pwconv.c:161
+#: src/grpconv.c:134 src/pwconv.c:160
#, c-format
msgid "%s: can't update shadow entry for %s\n"
msgstr ""
"%s: áäõíáìßá áíáíÝùóçò êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí ãéá ôïí "
"%s\n"
-#: src/grpconv.c:144 src/grpunconv.c:95
+#: src/grpconv.c:143 src/grpunconv.c:94
#, c-format
msgid "%s: can't update entry for group %s\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò êáôá÷þñçóçò ãéá ôçí ïìÜäá %s\n"
-#: src/grpconv.c:151 src/grpunconv.c:103
+#: src/grpconv.c:150 src/grpunconv.c:102
#, c-format
msgid "%s: can't update shadow group file\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/grpconv.c:155 src/grpunconv.c:108
+#: src/grpconv.c:154 src/grpunconv.c:107
#, c-format
msgid "%s: can't update group file\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò ãéá ôï áñ÷åßï ïìÜäùí\n"
-#: src/grpconv.c:170 src/grpunconv.c:129
+#: src/grpconv.c:169 src/grpunconv.c:128
#, c-format
msgid "%s: not configured for shadow group support.\n"
msgstr "%s: Äåí åßíáé äéáìïñöùìÝíï ãéá óêéþäç óõíèçìáôéêÜ ïìÜäùí.\n"
-#: src/grpunconv.c:113
+#: src/grpunconv.c:112
#, c-format
msgid "%s: can't delete shadow group file\n"
msgstr ""
"%s: Äåí åßíáé äõíáôüí íá äéáãñáöåß ôï áñ÷åßï óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/id.c:57
+#: src/id.c:56
msgid "usage: id [ -a ]\n"
msgstr "÷ñÞóç: id [ -a ]\n"
-#: src/id.c:59
+#: src/id.c:58
msgid "usage: id\n"
msgstr "÷ñÞóç: id\n"
-#: src/id.c:119
+#: src/id.c:118
#, c-format
msgid "uid=%d(%s)"
msgstr ""
-#: src/id.c:121
+#: src/id.c:120
#, c-format
msgid "uid=%d"
msgstr ""
-#: src/id.c:125
+#: src/id.c:124
#, c-format
msgid " gid=%d(%s)"
msgstr ""
-#: src/id.c:127
+#: src/id.c:126
#, c-format
msgid " gid=%d"
msgstr ""
-#: src/id.c:137
+#: src/id.c:136
#, c-format
msgid " euid=%d(%s)"
msgstr ""
-#: src/id.c:139
+#: src/id.c:138
#, c-format
msgid " euid=%d"
msgstr ""
-#: src/id.c:144
+#: src/id.c:143
#, c-format
msgid " egid=%d(%s)"
msgstr ""
-#: src/id.c:146
+#: src/id.c:145
#, c-format
msgid " egid=%d"
msgstr ""
#. * where "###" is a numerical value and "aaa" is the
#. * corresponding name for each respective numerical value.
#.
-#: src/id.c:167
+#: src/id.c:166
msgid " groups="
msgstr " ïìÜäåò="
-#: src/lastlog.c:168
+#: src/lastlog.c:167
msgid "Username Port From Latest\n"
msgstr "¼íïìá_×ñÞóôç Èýñá Áðü Ôåëåõôáßá\n"
-#: src/lastlog.c:170
+#: src/lastlog.c:169
msgid "Username Port Latest\n"
msgstr "¼íïìá_×ñÞóôç Èýñá Ôåëåõôáßá\n"
-#: src/lastlog.c:184
+#: src/lastlog.c:183
msgid "**Never logged in**"
msgstr "**ÊáìéÜ åßóïäïò óôï óýóôçìá**"
-#: src/login.c:199
+#: src/login.c:198
#, c-format
msgid "usage: %s [-p] [name]\n"
msgstr "÷ñÞóç: %s [-p] [üíïìá]\n"
-#: src/login.c:202
+#: src/login.c:201
#, c-format
msgid " %s [-p] [-h host] [-f name]\n"
msgstr " %s [-p] [-h óýóôçìá] [-f üíïìá]\n"
-#: src/login.c:204
+#: src/login.c:203
#, c-format
msgid " %s [-p] -r host\n"
msgstr " %s [-p] -r óýóôçìá\n"
-#: src/login.c:287
+#: src/login.c:286
msgid "Invalid login time\n"
msgstr "ÅóöáëìÝíç þñá åéóüäïõ\n"
-#: src/login.c:342
+#: src/login.c:341
msgid ""
"\n"
"System closed for routine maintenance\n"
"\n"
"Ôï óýóôçìá Ýêëåéóå ãéá óõíôÞñçóç ñïõôßíáò\n"
-#: src/login.c:352
+#: src/login.c:351
msgid ""
"\n"
"[Disconnect bypassed -- root login allowed.]\n"
"\n"
"[ÐáñÜêáìøç áðïóýíäåóçò -- Ç åßóïäïò ôïõ root åðåôñÜðç.]\n"
-#: src/login.c:391
+#: src/login.c:390
#, c-format
msgid ""
"\n"
msgid " on `%.100s'"
msgstr " óôï `%.100s'"
-#: src/login.c:807
+#: src/login.c:834
#, c-format
msgid ""
"\n"
"\n"
"%s login: "
-#: src/login.c:809
+#: src/login.c:836
msgid "login: "
msgstr "login: "
-#: src/login.c:991 src/sulogin.c:233
+#: src/login.c:1026 src/sulogin.c:231
msgid "Login incorrect"
msgstr "Äéáäéêáóßá åéóüäïõ áðÝôõ÷å"
-#: src/login.c:1163
+#: src/login.c:1213
msgid "Warning: login re-enabled after temporary lockout.\n"
msgstr ""
"Ðñïåéäïðïßçóç: Ç åßóïäïò åðáíåíåñãïðïéÞèçêå ìåôÜ áðü ðñïóùñéíü áðïêëåéóìü.\n"
-#: src/login.c:1173
+#: src/login.c:1223
#, c-format
msgid "Last login: %s on %s"
msgstr "Ôåëåõôáßá åßóïäïò: %s óôï %s"
-#: src/login.c:1176
+#: src/login.c:1226
#, c-format
msgid "Last login: %.19s on %s"
msgstr "Ôåëåõôáßá åßóïäïò: %.19s óôï %s"
-#: src/login.c:1181
+#: src/login.c:1231
#, c-format
msgid " from %.*s"
msgstr " áðü %.*s"
-#: src/login.c:1246
+#: src/login.c:1303
msgid "Starting rad_login\n"
msgstr "¸íáñîç rad_login\n"
"%s: Äåí õðÜñ÷åé DBM âÜóç äåäïìÝíùí óôï óýóôçìá - êáìéÜ åíÝñãåéá äåí "
"åêôåëåßôáé\n"
-#: src/mkpasswd.c:246 src/mkpasswd.c:250
+#: src/mkpasswd.c:245 src/mkpasswd.c:249
#, c-format
msgid "%s: cannot overwrite file %s\n"
msgstr "%s: áäõíáìßá åããñáöÞò ðÜíù áðü ôï áñ÷åßï %s\n"
-#: src/mkpasswd.c:264
+#: src/mkpasswd.c:263
#, c-format
msgid "%s: cannot open DBM files for %s\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò DBM áñ÷åßùí ãéá ôï %s\n"
-#: src/mkpasswd.c:297
+#: src/mkpasswd.c:296
#, c-format
msgid "%s: the beginning with "
msgstr "%s: ç áñ÷Þ ìå "
-#: src/mkpasswd.c:322
+#: src/mkpasswd.c:321
#, c-format
msgid "%s: error parsing line \"%s\"\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí åðåîåñãáóßá ôçò ãñáììÞò \"%s\"\n"
-#: src/mkpasswd.c:327 src/mkpasswd.c:329 src/mkpasswd.c:331 src/mkpasswd.c:333
+#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332
msgid "adding record for name "
msgstr "ðñïóèÞêç êáôá÷þñçóçò ãéá üíïìá "
-#: src/mkpasswd.c:337 src/mkpasswd.c:342 src/mkpasswd.c:346 src/mkpasswd.c:350
+#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349
#, c-format
msgid "%s: error adding record for "
msgstr "%s: ÓöÜëìá êáôÜ ôçí ðñïóèÞêç êáôá÷þñçóçò ãéá "
-#: src/mkpasswd.c:368
+#: src/mkpasswd.c:367
#, c-format
msgid "added %d entries, longest was %d\n"
msgstr "ðñïóôÝèçêáí %d êáôá÷ùñÞóåéò, ç ìåãáëýôåñç Þôáí %d\n"
-#: src/mkpasswd.c:383
+#: src/mkpasswd.c:382
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n"
msgstr "×ñÞóç: %s [ -vf ] [ -p|g|sp|sg ] áñ÷åßï\n"
-#: src/mkpasswd.c:385
+#: src/mkpasswd.c:384
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n"
msgstr "×ñÞóç: %s [ -vf ] [ -p|g|sp ] áñ÷åßï\n"
-#: src/mkpasswd.c:388
+#: src/mkpasswd.c:387
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g ] file\n"
msgstr "×ñÞóç: %s [ -vf ] [ -p|g ] áñ÷åßï\n"
-#: src/newgrp.c:67
+#: src/newgrp.c:66
msgid "usage: newgrp [ - ] [ group ]\n"
msgstr "÷ñÞóç: newgrp [ - ] [ ïìÜäá ]\n"
-#: src/newgrp.c:69
+#: src/newgrp.c:68
#, fuzzy
msgid "usage: sg group [[-c] command ]\n"
msgstr "÷ñÞóç: sg ïìÜäá [ åíôïëÞ ]\n"
-#: src/newgrp.c:122
+#: src/newgrp.c:125
#, c-format
msgid "unknown uid: %d\n"
msgstr "Üãíùóôï uid: %d\n"
-#: src/newgrp.c:198
+#: src/newgrp.c:201
#, c-format
msgid "unknown gid: %ld\n"
msgstr "Üãíùóôï gid: %ld\n"
-#: src/newgrp.c:242
+#: src/newgrp.c:245
#, c-format
msgid "unknown gid: %d\n"
msgstr "Üãíùóôï gid: %d\n"
-#: src/newgrp.c:315 src/newgrp.c:324
+#: src/newgrp.c:323 src/newgrp.c:332
msgid "Sorry.\n"
msgstr "ËõðÜìáé.\n"
-#: src/newgrp.c:356
+#: src/newgrp.c:364
msgid "too many groups\n"
msgstr "ðÜñá ðïëëÝò ïìÜäåò\n"
-#: src/newusers.c:79
+#: src/newusers.c:76
#, c-format
msgid "Usage: %s [ input ]\n"
msgstr "×ñÞóç: %s [ åßóïäïò ]\n"
-#: src/newusers.c:367
+#: src/newusers.c:364
#, c-format
msgid "%s: can't lock /etc/passwd.\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ /etc/passwd.\n"
-#: src/newusers.c:378
+#: src/newusers.c:375
#, c-format
msgid "%s: can't lock files, try again later\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò áñ÷åßùí, îáíáäïêéìÜóôå áñãüôåñá\n"
-#: src/newusers.c:393
+#: src/newusers.c:390
#, c-format
msgid "%s: can't open files\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôùí áñ÷åßùí\n"
-#: src/newusers.c:438
+#: src/newusers.c:435
#, c-format
msgid "%s: line %d: invalid line\n"
msgstr "%s: ãñáììÞ %d: ìç Ýãêõñç ãñáììÞ\n"
-#: src/newusers.c:456
+#: src/newusers.c:453
#, c-format
msgid "%s: line %d: can't create GID\n"
msgstr "%s: ãñáììÞ %d: áäõíáìßá äçìéïõñãßáò GID\n"
-#: src/newusers.c:472
+#: src/newusers.c:469
#, c-format
msgid "%s: line %d: can't create UID\n"
msgstr "%s: ãñáììÞ %d: áäõíáìßá äçìéïõñãßáò UID\n"
-#: src/newusers.c:484
+#: src/newusers.c:481
#, c-format
msgid "%s: line %d: cannot find user %s\n"
msgstr "%s: ãñáììÞ %d: áäõíáìßá åýñåóçò ÷ñÞóôç %s\n"
-#: src/newusers.c:492
+#: src/newusers.c:489
#, c-format
msgid "%s: line %d: can't update password\n"
msgstr "%s: ãñáììÞ %d: áäõíáìßá áíáíÝùóç óõíèçìáôéêïý\n"
-#: src/newusers.c:509
+#: src/newusers.c:506
#, c-format
msgid "%s: line %d: mkdir failed\n"
msgstr "%s: ãñáììÞ %d: áðïôõ÷ßá äçìéïõñãßáò êáôáëüãïõ(mkdir)\n"
-#: src/newusers.c:513
+#: src/newusers.c:510
#, c-format
msgid "%s: line %d: chown failed\n"
msgstr "%s: ãñáììÞ %d: áðïôõ÷ßá áëëáãÞò éäéïêôÞôç(chown)\n"
-#: src/newusers.c:522
+#: src/newusers.c:519
#, c-format
msgid "%s: line %d: can't update entry\n"
msgstr "%s: ãñáììÞ %d: áäõíáìßá áíáíÝùóçò êáôá÷þñçóçò\n"
-#: src/newusers.c:553
+#: src/newusers.c:550
#, c-format
msgid "%s: error updating files\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí åíçìÝñùóç áñ÷åßùí\n"
-#: src/passwd.c:241
+#: src/passwd.c:239
#, c-format
msgid "usage: %s [ -f | -s ] [ name ]\n"
msgstr "÷ñÞóç: %s [ -f | -s ] [ üíïìá ]\n"
-#: src/passwd.c:244
+#: src/passwd.c:242
#, c-format
msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n"
msgstr ""
" %s [ -x ìåã. ] [ -n åëÜ÷. ] [ -w ðñïåéä. ] [ -i áíåíåñãü ] üíïìá\n"
-#: src/passwd.c:247
+#: src/passwd.c:245
#, c-format
msgid " %s { -l | -u | -d | -S | -e } name\n"
msgstr " %s { -l | -u | -d | -S | -e } üíïìá\n"
-#: src/passwd.c:349
+#: src/passwd.c:347
#, c-format
msgid "User %s has a TCFS key, his old password is required.\n"
msgstr "Ï ÷ñÞóôçò %s Ý÷åé êëåéäß TCFS, áðáéôåßôáé ôï ðáëéü óõíèçìáôéêü.\n"
-#: src/passwd.c:350
+#: src/passwd.c:348
msgid "You can use -t option to force the change.\n"
msgstr ""
"Ìðïñåßôå íá ÷ñçóéìïðïéÞóåôå ôçí -t ðáñÜìåôñï ãéá íá åîáíáãêÜóåôå ôçí\n"
"ðñáãìáôïðïßçóç ôçò áëëáãÞò.\n"
-#: src/passwd.c:356
+#: src/passwd.c:354
msgid "Old password: "
msgstr "Ðáëéü Óõíèçìáôéêü: "
-#: src/passwd.c:363
+#: src/passwd.c:361
#, c-format
msgid "Incorrect password for `%s'\n"
msgstr "ÅóöáëìÝíï óõíèçìáôéêü ãéá ôïí `%s'\n"
-#: src/passwd.c:376
+#: src/passwd.c:374
#, c-format
msgid "Warning: user %s has a TCFS key.\n"
msgstr "Ðñïåéäïðïßçóç: Ï ÷ñÞóôçò %s Ý÷åé êëåéäß TCFS.\n"
-#: src/passwd.c:394
+#: src/passwd.c:392
#, c-format
msgid ""
"Enter the new password (minimum of %d, maximum of %d characters)\n"
"Ðáñáêáëþ ÷ñçóéìïðïéÞóôå Ýíá óõíäõáóìü áðü êåöáëáßá êáé ìéêñÜ ãñÜììáôá\n"
"êáèþò êáé áñéèìïýò.\n"
-#: src/passwd.c:401
+#: src/passwd.c:399
msgid "New password: "
msgstr "ÍÝï Óõíèçìáôéêü: "
-#: src/passwd.c:411
+#: src/passwd.c:409
msgid "Try again.\n"
msgstr "ÎáíáäïêéìÜóôå.\n"
-#: src/passwd.c:420
+#: src/passwd.c:418
msgid ""
"\n"
"Warning: weak password (enter it again to use it anyway).\n"
"\n"
"Ðñïóï÷Þ: áäýíáìï óõíèçìáôéêü (åéóÜãåôÝ ôï ðÜëé ãéá íá ôï ÷ñçóéìïðïéÞóåôå).\n"
-#: src/passwd.c:429
+#: src/passwd.c:427
msgid "They don't match; try again.\n"
msgstr "Äåí ôáéñéÜæïõí. ÄïêéìÜóôå îáíÜ.\n"
-#: src/passwd.c:514 src/passwd.c:530
+#: src/passwd.c:512 src/passwd.c:528
#, c-format
msgid "The password for %s cannot be changed.\n"
msgstr "Ôï óõíèçìáôéêü ãéá ôïí %s äåí ìðïñåß íá áëëÜîåé.\n"
-#: src/passwd.c:558
+#: src/passwd.c:556
#, c-format
msgid "Sorry, the password for %s cannot be changed yet.\n"
msgstr "Óõãíþìç, ôï óõíèçìáôéêü ãéá ôïí %s äåí ìðïñåß íá áëëÜîåé áêüìç.\n"
-#: src/passwd.c:695
+#: src/passwd.c:693
#, c-format
msgid "%s: out of memory\n"
msgstr "%s: äåí õðÜñ÷åé åëåýèåñç ìíÞìç\n"
-#: src/passwd.c:847
+#: src/passwd.c:845
msgid "Cannot lock the TCFS key database; try again later\n"
msgstr "Áäõíáìßá êëåéäþìáôïò ôçò âÜóçò êëåéäéþí ôïõ TCFS. ÄïêéìÜóôå áñãüôåñá\n"
-#: src/passwd.c:853
+#: src/passwd.c:851
msgid "Cannot open the TCFS key database.\n"
msgstr "Áäõíáìßá áíïßãìáôïò ôçò âÜóçò êëåéäéþí ôïõ TCFS.\n"
-#: src/passwd.c:859
+#: src/passwd.c:857
msgid "Error updating the TCFS key database.\n"
msgstr "ÓöÜëìá êáôÜ ôçí áíáíÝùóç ôçò âÜóçò êëåéäéþí ôïõ TCFS.\n"
-#: src/passwd.c:864
+#: src/passwd.c:862
msgid "Cannot commit TCFS changes.\n"
msgstr "Áäõíáìßá õëïðïßçóçò ôùí áëëáãþí óôï TCFS.\n"
-#: src/passwd.c:1071
+#: src/passwd.c:1069
#, c-format
msgid "%s: Cannot execute %s"
msgstr "%s: Áäõíáìßá åêôÝëåóçò ôïõ %s"
-#: src/passwd.c:1178
+#: src/passwd.c:1176
#, c-format
msgid "%s: repository %s not supported\n"
msgstr "%s: ç áðïèÞêç %s äåí õðïóôçñßæåôáé\n"
-#: src/passwd.c:1265
+#: src/passwd.c:1263
#, c-format
msgid "%s: Permission denied\n"
msgstr "%s: ¶äåéá áðïññßöèçêå\n"
-#: src/passwd.c:1289
+#: src/passwd.c:1287
#, c-format
msgid "You may not change the password for %s.\n"
msgstr "Äåí ìðïñåßôå íá áëëÜîåôå ôï óõíèçìáôéêü ãéá ôï(í) %s.\n"
-#: src/passwd.c:1354
+#: src/passwd.c:1352
#, c-format
msgid "Changing password for %s\n"
msgstr "ÁëëáãÞ óõíèçìáôéêïý ãéá ôïí %s\n"
-#: src/passwd.c:1358
+#: src/passwd.c:1356
#, c-format
msgid "The password for %s is unchanged.\n"
msgstr "Ôï óõíèçìáôéêü ãéá ôïí %s äåí Üëëáîå.\n"
-#: src/passwd.c:1414
+#: src/passwd.c:1412
msgid "Password changed.\n"
msgstr "Ôï óõíèçìáôéêü Üëëáîå.\n"
-#: src/pwck.c:99
+#: src/pwck.c:98
#, c-format
msgid "Usage: %s [ -qr ] [ passwd [ shadow ] ]\n"
msgstr "×ñÞóç: %s [ -qr ] [ passwd [ shadow ] ]\n"
-#: src/pwck.c:101
+#: src/pwck.c:100
#, c-format
msgid "Usage: %s [ -qr ] [ passwd ]\n"
msgstr "×ñÞóç: %s [ -qr ] [ passwd ]\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:286
+#: src/pwck.c:285
msgid "invalid password file entry\n"
msgstr "Ìç Ýãêõñç êáôá÷þñçóç óôï áñ÷åßï óõíèçìáôéêþí\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:348
+#: src/pwck.c:347
msgid "duplicate password entry\n"
msgstr "áíôéãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï óõíèçìáôéêþí\n"
-#: src/pwck.c:364
+#: src/pwck.c:363
#, c-format
msgid "invalid user name `%s'\n"
msgstr "Ìç Ýãêõñï üíïìá ÷ñÞóôç `%s'\n"
-#: src/pwck.c:374
+#: src/pwck.c:373
#, c-format
msgid "user %s: bad UID (%d)\n"
msgstr "÷ñÞóôçò %s: ëáíèáóìÝíï UID (%d)\n"
#.
#. * No primary group, just give a warning
#.
-#: src/pwck.c:389
+#: src/pwck.c:388
#, c-format
msgid "user %s: no group %d\n"
msgstr "÷ñÞóôçò %s: êáìéÜ ïìÜäá %d\n"
#.
#. * Home directory doesn't exist, give a warning
#.
-#: src/pwck.c:404
+#: src/pwck.c:403
#, c-format
msgid "user %s: directory %s does not exist\n"
msgstr "÷ñÞóôçò %s: ï êáôÜëïãïò %s äåí õðÜñ÷åé\n"
#.
#. * Login shell doesn't exist, give a warning
#.
-#: src/pwck.c:419
+#: src/pwck.c:418
#, c-format
msgid "user %s: program %s does not exist\n"
msgstr "÷ñÞóôçò %s: ôï ðñüãñáììá %s äåí õðÜñ÷åé\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:455
+#: src/pwck.c:454
msgid "invalid shadow password file entry\n"
msgstr "Ìç Ýãêõñç êáôá÷þñçóç óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:517
+#: src/pwck.c:516
msgid "duplicate shadow password entry\n"
msgstr "áíôéãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n"
#. * Tell the user this entry has no matching
#. * /etc/passwd entry and ask them to delete it.
#.
-#: src/pwck.c:541
+#: src/pwck.c:540
msgid "no matching password file entry\n"
msgstr "Äåí âñÝèçêå êáôá÷þñçóç óôï áñ÷åßï óõíèçìáôéêþí ðïõ íá ôáéñßáæåé\n"
-#: src/pwck.c:558
+#: src/pwck.c:557
#, c-format
msgid "user %s: last password change in the future\n"
msgstr "÷ñÞóôçò %s: ôåëåõôáßá áëëáãÞ óõíèçìáôéêïý óôï ìÝëëïí\n"
-#: src/pwconv.c:95 src/pwunconv.c:109
+#: src/pwconv.c:94 src/pwunconv.c:108
#, c-format
msgid "%s: can't lock passwd file\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/pwconv.c:100 src/pwunconv.c:114
+#: src/pwconv.c:99 src/pwunconv.c:113
#, c-format
msgid "%s: can't open passwd file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/pwconv.c:127
+#: src/pwconv.c:126
#, c-format
msgid "%s: can't remove shadow entry for %s\n"
msgstr ""
"áäõíáìßá áöáßñåóçò êáôá÷þñçóçò ãéá ôïí %s, áðü ôï áñ÷åßï óêéùäþí "
"óõíèçìáôéêþí\n"
-#: src/pwconv.c:170
+#: src/pwconv.c:169
#, c-format
msgid "%s: can't update passwd entry for %s\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò êáôá÷þñçóçò óõíèçìáôéêïý ãéá ôïí %s\n"
-#: src/pwconv.c:177
+#: src/pwconv.c:176
#, c-format
msgid "%s: can't update shadow file\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò êáôá÷þñçóçò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/pwconv.c:181
+#: src/pwconv.c:180
#, c-format
msgid "%s: can't update passwd file\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò áñ÷åßïõ óõíèçìáôéêþí\n"
msgid "%s: Shadow passwords are not configured.\n"
msgstr "%s: Ôá óêéþäç óõíèçìáôéêÜ äåí Ý÷ïõí äéáìïñöùèåß.\n"
-#: src/pwunconv.c:172
+#: src/pwunconv.c:171
#, c-format
msgid "%s: can't update entry for user %s\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò êáôá÷þñçóçò ãéá ôïí ÷ñÞóôç %s\n"
-#: src/pwunconv.c:189
+#: src/pwunconv.c:188
#, c-format
msgid "%s: can't delete shadow password file\n"
msgstr "%s: Äåí åßíáé äõíáôüí íá äéáãñáöåß ôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n"
-#: src/su.c:145
+#: src/su.c:140
msgid "Sorry."
msgstr "ËõðÜìáé."
-#: src/su.c:227
+#: src/su.c:222
#, c-format
msgid "%s: must be run from a terminal\n"
msgstr "%s: ðñÝðåé íá åêôåëåóôåß áðü ôåñìáôéêü\n"
-#: src/su.c:319
+#: src/su.c:311
#, c-format
msgid "%s: pam_start: error %d\n"
msgstr "%s: pam_start: óöÜëìá %d\n"
-#: src/su.c:345
+#: src/su.c:337
#, c-format
msgid "Unknown id: %s\n"
msgstr "Áãíùóôç ôáõôüôçôá: %s\n"
#. access denied (-1) or unexpected value
-#: src/su.c:380 src/su.c:395
+#: src/su.c:372 src/su.c:387
#, c-format
msgid "You are not authorized to su %s\n"
msgstr "Äåí Ý÷åôå Üäåéá ãéá su %s\n"
#. require own password
-#: src/su.c:391
+#: src/su.c:383
msgid "(Enter your own password.)"
msgstr "(ÅéóÜãåôå ôï äéêü óáò óõíèçìáôéêü.)"
-#: src/su.c:412
+#: src/su.c:404
#, c-format
msgid "%s: permission denied (shell).\n"
msgstr "%s: Üäåéá áðïññßöèçêå (öëïéüò)\n"
-#: src/su.c:436
+#: src/su.c:428
#, c-format
msgid ""
"%s: %s\n"
"%s: %s\n"
"(ÁãíïÞèçêå)\n"
-#: src/su.c:605
+#: src/su.c:628
msgid "No shell\n"
msgstr "Äåí õðÜñ÷åé öëïéüò\n"
#. must be a password file!
-#: src/sulogin.c:138
+#: src/sulogin.c:136
msgid "No password file\n"
msgstr "Äåí õðÜñ÷åé áñ÷åßï óõíèçìáôéêþí\n"
#.
#. * Fail secure
#.
-#: src/sulogin.c:180
+#: src/sulogin.c:178
msgid "No password entry for 'root'\n"
msgstr "Äåí õðÜñ÷åé êáôá÷þñçóç óõíèçìáôéêïý ãéá ôïí 'root'\n"
#. * given we just exit.
#.
#. get a password for root
-#: src/sulogin.c:194
+#: src/sulogin.c:192
msgid ""
"\n"
"Type control-d to proceed with normal startup,\n"
"(Þ äþóôå ôï óõíèçìáôéêü ôïõ root ãéá óõíôÞñçóç ôïõ óõóôÞìáôïò):"
#. make new environment active
-#: src/sulogin.c:243
+#: src/sulogin.c:241
msgid "Entering System Maintenance Mode\n"
msgstr "¸íáñîç ÊáôÜóôáóçò ÓõíôÞñçóçò ÓõóôÞìáôïò\n"
-#: src/useradd.c:244
+#: src/useradd.c:243
#, c-format
msgid "%s: rebuild the group database\n"
msgstr "%s: åðáíáêôßóôå ôçí âÜóç äåäïìÝíùí ïìÜäùí\n"
-#: src/useradd.c:251
+#: src/useradd.c:250
#, c-format
msgid "%s: rebuild the shadow group database\n"
msgstr "%s: åðáíáêôßóôå ôçí âÜóç äåäïìÝíùí ôùí óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/useradd.c:288 src/usermod.c:941
+#: src/useradd.c:287 src/usermod.c:940
#, c-format
msgid "%s: invalid numeric argument `%s'\n"
msgstr "%s: Ìç Ýãêõñç áñéèìçôéêÞ ðáñÜìåôñïò `%s'\n"
-#: src/useradd.c:344
+#: src/useradd.c:343
#, c-format
msgid "%s: unknown gid %s\n"
msgstr "%s: Üãíùóôï gid %s\n"
-#: src/useradd.c:351 src/useradd.c:643 src/useradd.c:1229 src/usermod.c:253
-#: src/usermod.c:1072
+#: src/useradd.c:350 src/useradd.c:642 src/useradd.c:1228 src/usermod.c:252
+#: src/usermod.c:1071
#, c-format
msgid "%s: unknown group %s\n"
msgstr "%s: Üãíùóôç ïìÜäá %s\n"
-#: src/useradd.c:419
+#: src/useradd.c:418
#, c-format
msgid "group=%s,%ld basedir=%s skel=%s\n"
msgstr "ïìÜäá=%s,%ld âáóéêüò_êáôáë=%s óêåë=%s\n"
-#: src/useradd.c:422
+#: src/useradd.c:421
#, c-format
msgid "shell=%s "
msgstr "öëïéüò=%s "
-#: src/useradd.c:424
+#: src/useradd.c:423
#, c-format
msgid "inactive=%ld expire=%s"
msgstr "áíåíåñãü=%ld ëÞîç=%s"
-#: src/useradd.c:428
+#: src/useradd.c:427
#, c-format
msgid "GROUP=%ld\n"
msgstr "ÏÌÁÄÁ=%ld\n"
-#: src/useradd.c:429
+#: src/useradd.c:428
#, c-format
msgid "HOME=%s\n"
msgstr "ÌÇÔÑÉÊÏÓ_ÊÁÔÁËÏÃÏÓ=%s\n"
-#: src/useradd.c:431
+#: src/useradd.c:430
#, c-format
msgid "INACTIVE=%ld\n"
msgstr "ÁÍÅÍÅÑÃÏÓ=%ld\n"
-#: src/useradd.c:432
+#: src/useradd.c:431
#, c-format
msgid "EXPIRE=%s\n"
msgstr "ËÇÎÇ=%s\n"
-#: src/useradd.c:434
+#: src/useradd.c:433
#, c-format
msgid "SHELL=%s\n"
msgstr "ÊÅËÕÖÏÓ=%s\n"
-#: src/useradd.c:435
+#: src/useradd.c:434
#, c-format
msgid "SKEL=%s\n"
msgstr "ÓÊÅË=%s\n"
-#: src/useradd.c:471
+#: src/useradd.c:470
#, c-format
msgid "%s: cannot create new defaults file\n"
msgstr "%s: áäõíáìßá äçìéïõñãßáò íÝïõ áñ÷åßïõ ðñïêáèïñéóìÝíùí ñõèìßóåùí\n"
-#: src/useradd.c:565 src/useradd.c:576
+#: src/useradd.c:564 src/useradd.c:575
#, c-format
msgid "%s: rename: %s"
msgstr "%s: ìåôïíïìáóßá: %s"
-#: src/useradd.c:663 src/usermod.c:273
+#: src/useradd.c:662 src/usermod.c:272
#, c-format
msgid "%s: group `%s' is a NIS group.\n"
msgstr "%s: Ç ïìÜäá `%s' åßíáé NIS ïìÜäá.\n"
-#: src/useradd.c:671 src/usermod.c:281
+#: src/useradd.c:670 src/usermod.c:280
#, c-format
msgid "%s: too many groups specified (max %d).\n"
msgstr "%s: Ðñïóäéïñßóôçêáí õðåñâïëéêÝò ïìÜäåò (ìåã. %d).\n"
-#: src/useradd.c:703 src/usermod.c:313
+#: src/useradd.c:702 src/usermod.c:312
#, c-format
msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n"
msgstr "÷ñÞóç: %s\t[-u uid [-o]] [-g ïìÜäá] [-G ïìÜäá,...] \n"
-#: src/useradd.c:706
+#: src/useradd.c:705
msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n"
msgstr ""
"\t\t[-d ìçôñéêüò_êáôÜëïãïò] [-s öëïéüò] [-c ó÷üëéï]\n"
"\t\t[-m [-k êáíüíáò]]\n"
-#: src/useradd.c:709 src/usermod.c:319
+#: src/useradd.c:708 src/usermod.c:318
msgid "[-f inactive] [-e expire ] "
msgstr "[-f áíåíåñãü] [-e ëÞîç ] "
-#: src/useradd.c:712
+#: src/useradd.c:711
msgid "[-A program] "
msgstr "[-A ðñüãñáììá] "
-#: src/useradd.c:714 src/usermod.c:324
+#: src/useradd.c:713 src/usermod.c:323
msgid "[-p passwd] name\n"
msgstr "[-p óõíèçìáôéêü] üíïìá\n"
-#: src/useradd.c:716
+#: src/useradd.c:715
#, c-format
msgid " %s\t-D [-g group] [-b base] [-s shell]\n"
msgstr " %s\t-D [-g ïìÜäá] [-b âÜóç] [-s öëïéüò]\n"
-#: src/useradd.c:719
+#: src/useradd.c:718
msgid "\t\t[-f inactive] [-e expire ]\n"
msgstr "\t\t[-f áíåíåñãü] [-e ëÞîç ]\n"
-#: src/useradd.c:816 src/usermod.c:446
+#: src/useradd.c:815 src/usermod.c:445
#, c-format
msgid "%s: error locking group file\n"
msgstr "%s: ÓöÜëìá êáôÜ ôï êëåßäùìá ôïõ áñ÷åßïõ ïìÜäùí\n"
-#: src/useradd.c:820 src/usermod.c:451
+#: src/useradd.c:819 src/usermod.c:450
#, c-format
msgid "%s: error opening group file\n"
msgstr "%s: ÓöÜëìá êáôÜ ôï Üíïéãìá ôïõ áñ÷åßïõ ïìÜäùí\n"
-#: src/useradd.c:825 src/usermod.c:558
+#: src/useradd.c:824 src/usermod.c:557
#, c-format
msgid "%s: error locking shadow group file\n"
msgstr "%s: ÓöÜëìá êáôÜ ôï êëåßäùìá ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/useradd.c:830 src/usermod.c:564
+#: src/useradd.c:829 src/usermod.c:563
#, c-format
msgid "%s: error opening shadow group file\n"
msgstr "%s: ÓöÜëìá êáôÜ ôï Üíïéãìá ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/useradd.c:1002
+#: src/useradd.c:1001
#, c-format
msgid "%s: uid %d is not unique\n"
msgstr "%s: Ôï uid %d äåí åßíáé ìïíáäéêü\n"
-#: src/useradd.c:1032
+#: src/useradd.c:1031
#, c-format
msgid "%s: can't get unique uid\n"
msgstr "%s: áäõíáìßá åõñåóçò ìïíáäéêïý uid\n"
-#: src/useradd.c:1140 src/useradd.c:1284 src/usermod.c:1020 src/usermod.c:1031
-#: src/usermod.c:1041 src/usermod.c:1087 src/usermod.c:1122
+#: src/useradd.c:1139 src/useradd.c:1283 src/usermod.c:1019 src/usermod.c:1030
+#: src/usermod.c:1040 src/usermod.c:1086 src/usermod.c:1121
#, c-format
msgid "%s: invalid field `%s'\n"
msgstr "%s: Ìç Ýãêõñï ðåäßï `%s'\n"
-#: src/useradd.c:1154
+#: src/useradd.c:1153
#, c-format
msgid "%s: invalid base directory `%s'\n"
msgstr "%s: Ìç Ýãêõñïò êáôÜëïãïò âÜóçò `%s'\n"
-#: src/useradd.c:1164
+#: src/useradd.c:1163
#, c-format
msgid "%s: invalid comment `%s'\n"
msgstr "%s: Ìç Ýãêõñï ó÷üëéï `%s'\n"
-#: src/useradd.c:1174
+#: src/useradd.c:1173
#, c-format
msgid "%s: invalid home directory `%s'\n"
msgstr "%s: Ìç Ýãêõñïò ìçôñéêüò êáôÜëïãïò ÷ñÞóôç `%s'\n"
-#: src/useradd.c:1192 src/usermod.c:1054
+#: src/useradd.c:1191 src/usermod.c:1053
#, c-format
msgid "%s: invalid date `%s'\n"
msgstr "%s: Ìç Ýãêõñç çìåñïìçíßá `%s'\n"
-#: src/useradd.c:1204
+#: src/useradd.c:1203
#, c-format
msgid "%s: shadow passwords required for -e\n"
msgstr "%s: óêéþäç óõíèçìáôéêÜ áðáéôïýíôáé ãéá ôï -e\n"
-#: src/useradd.c:1219
+#: src/useradd.c:1218
#, c-format
msgid "%s: shadow passwords required for -f\n"
msgstr "%s: óêéþäç óõíèçìáôéêÜ áðáéôïýíôáé ãéá -f\n"
-#: src/useradd.c:1293
+#: src/useradd.c:1292
#, c-format
msgid "%s: invalid shell `%s'\n"
msgstr "%s: Ìç Ýãêõñïò öëïéüò `%s'\n"
-#: src/useradd.c:1334
+#: src/useradd.c:1333
#, c-format
msgid "%s: invalid user name `%s'\n"
msgstr "%s: Ìç Ýãêõñï üíïìá ÷ñÞóôç `%s'\n"
-#: src/useradd.c:1370 src/userdel.c:262 src/usermod.c:1184
+#: src/useradd.c:1369 src/userdel.c:292 src/usermod.c:1183
#, c-format
msgid "%s: cannot rewrite password file\n"
msgstr "%s: áäõíáìßá åðáíåããñáöÞò ôïõ áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/useradd.c:1375 src/userdel.c:265 src/usermod.c:1189
+#: src/useradd.c:1374 src/userdel.c:295 src/usermod.c:1188
#, c-format
msgid "%s: cannot rewrite shadow password file\n"
msgstr "%s: áäõíáìßá åðáíåããñáöÞò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/useradd.c:1415 src/userdel.c:329 src/usermod.c:1224
+#: src/useradd.c:1414 src/userdel.c:359 src/usermod.c:1223
#, c-format
msgid "%s: unable to lock password file\n"
msgstr "%s: Áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/useradd.c:1419 src/userdel.c:333 src/usermod.c:1228
+#: src/useradd.c:1418 src/userdel.c:363 src/usermod.c:1227
#, c-format
msgid "%s: unable to open password file\n"
msgstr "%s: Áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ óõíèçìáôéêþí\n"
-#: src/useradd.c:1425 src/userdel.c:338 src/usermod.c:1233
+#: src/useradd.c:1424 src/userdel.c:368 src/usermod.c:1232
#, c-format
msgid "%s: cannot lock shadow password file\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/useradd.c:1431 src/userdel.c:343 src/usermod.c:1238
+#: src/useradd.c:1430 src/userdel.c:373 src/usermod.c:1237
#, c-format
msgid "%s: cannot open shadow password file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò áñ÷åßïõ óêéùäþí óõíèçìáôéêþí\n"
-#: src/useradd.c:1530 src/usermod.c:1325
+#: src/useradd.c:1529 src/usermod.c:1324
#, c-format
msgid "%s: error adding authentication method\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí ðñïóèÞêç ìåèüäïõ åîáêñßâùóçò\n"
-#: src/useradd.c:1553
+#: src/useradd.c:1552
#, c-format
msgid "%s: error adding new password entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí ðñïóèÞêç íÝáò êáôá÷þñçóçò óôï áñ÷åßï óõíèçìáôéêþí\n"
-#: src/useradd.c:1568
+#: src/useradd.c:1567
#, c-format
msgid "%s: error updating password dbm entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí áíáíÝùóç êáôá÷ùñÞóåùí óôï dbm áñ÷åßï óõíèçìáôéêþí\n"
-#: src/useradd.c:1584 src/usermod.c:1384
+#: src/useradd.c:1583 src/usermod.c:1383
#, c-format
msgid "%s: error adding new shadow password entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí ðñïóèÞêç íÝáò êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí "
"óõíèçìáôéêþí\n"
-#: src/useradd.c:1600 src/usermod.c:1399
+#: src/useradd.c:1599 src/usermod.c:1398
#, c-format
msgid "%s: error updating shadow passwd dbm entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí áíáíÝùóç êáôá÷ùñÞóåùí óôï dbm áñ÷åßï óêéùäþí "
"óõíèçìáôéêþí\n"
-#: src/useradd.c:1632
+#: src/useradd.c:1631
#, c-format
msgid "%s: cannot create directory %s\n"
msgstr "%s: áäõíáìßá äçìéïõñãßáò êáôáëüãïõ %s\n"
-#: src/useradd.c:1709 src/usermod.c:1162
+#: src/useradd.c:1708 src/usermod.c:1161
#, c-format
msgid "%s: user %s exists\n"
msgstr "%s: Ï ÷ñÞóôçò %s õðÜñ÷åé\n"
-#: src/useradd.c:1739
+#: src/useradd.c:1738
#, c-format
msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n"
msgstr ""
-#: src/userdel.c:128
+#: src/userdel.c:127
#, c-format
msgid "usage: %s [-r] name\n"
msgstr "÷ñÞóç: %s [-r] üíïìá\n"
-#: src/userdel.c:175 src/userdel.c:230
+#: src/userdel.c:178 src/userdel.c:260
#, c-format
msgid "%s: error updating group entry\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí áíáíÝùóç êáôá÷ùñÞóçò ïìÜäáò\n"
-#: src/userdel.c:185 src/userdel.c:239
+#: src/userdel.c:188 src/userdel.c:269
#, c-format
msgid "%s: cannot update dbm group entry\n"
msgstr "%s: áäõíáìßá áíáíÝùóçò ôçò dbm êáôá÷þñçóçò óôï áñ÷åßï ïìÜäùí\n"
-#: src/userdel.c:270
+#: src/userdel.c:215
+#, fuzzy, c-format
+msgid "%s: cannot remove dbm group entry\n"
+msgstr "%s: áäõíáìßá áíáíÝùóçò ôçò dbm êáôá÷þñçóçò óôï áñ÷åßï ïìÜäùí\n"
+
+#: src/userdel.c:300
#, c-format
msgid "%s: cannot rewrite TCFS key file\n"
msgstr "%s: áäõíáìßá åðáíåããñáöÞò ôïõ áñ÷åßïõ êëåéäéþí ôïõ TCFS\n"
-#: src/userdel.c:350
+#: src/userdel.c:380
#, c-format
msgid "%s: cannot lock TCFS key file\n"
msgstr "%s: áäõíáìßá êëåéäþìáôïò ôïõ áñ÷åßïõ êëåéäéþí ôïõ TCFS\n"
-#: src/userdel.c:354
+#: src/userdel.c:384
#, c-format
msgid "%s: cannot open TCFS key file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò ôïõ áñ÷åßïõ êëåéäéþí ôïõ TCFS\n"
-#: src/userdel.c:363
+#: src/userdel.c:393
#, c-format
msgid "%s: cannot open group file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò áñ÷åßïõ ïìÜäùí\n"
-#: src/userdel.c:373
+#: src/userdel.c:403
#, c-format
msgid "%s: cannot open shadow group file\n"
msgstr "%s: áäõíáìßá áíïßãìáôïò áñ÷åßïõ óêéùäþí óõíèçìáôéêþí ïìÜäùí\n"
-#: src/userdel.c:404 src/userdel.c:419
+#: src/userdel.c:434 src/userdel.c:449
#, c-format
msgid "%s: error deleting authentication\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ åîáêñßâùóçò\n"
-#: src/userdel.c:428
+#: src/userdel.c:458
#, c-format
msgid "%s: error deleting password entry\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï óõíèçìáôéêþí\n"
-#: src/userdel.c:431
+#: src/userdel.c:461
#, c-format
msgid "%s: error deleting shadow password entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n"
-#: src/userdel.c:440
+#: src/userdel.c:470
#, c-format
msgid "%s: error deleting TCFS entry\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ êáôá÷þñçóçò ôïõ TCFS\n"
-#: src/userdel.c:453
+#: src/userdel.c:483
#, c-format
msgid "%s: error deleting password dbm entry\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ êáôá÷þñçóçò óôï dbm áñ÷åßï óõíèçìáôéêþí\n"
-#: src/userdel.c:472
+#: src/userdel.c:502
#, c-format
msgid "%s: error deleting shadow passwd dbm entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ êáôá÷þñçóçò óôï dbm áñ÷åßï óêéùäþí "
"óõíèçìáôéêþí\n"
-#: src/userdel.c:513
+#: src/userdel.c:543
#, c-format
msgid "%s: user %s is currently logged in\n"
msgstr "%s: Ï ÷ñÞóôçò %s âñßóêåôáé óôï óýóôçìá\n"
-#: src/userdel.c:630
+#: src/userdel.c:660
#, c-format
msgid "%s: warning: %s not owned by %s, not removing\n"
msgstr "%s: ðñïåéäïðïßçóç: Ôï %s äåí áíÞêåé óôïí %s, äåí äéáãñÜöåôáé\n"
-#: src/userdel.c:636
+#: src/userdel.c:666
#, c-format
msgid "%s: warning: can't remove "
msgstr "%s: ðñïåéäïðïßçóç: áäõíáìßá äéáãñáöÞò "
-#: src/userdel.c:711 src/usermod.c:968
+#: src/userdel.c:741 src/usermod.c:967
#, c-format
msgid "%s: user %s does not exist\n"
msgstr "%s: Ï ÷ñÞóôçò %s äåí õðÜñ÷åé\n"
-#: src/userdel.c:725 src/usermod.c:984
+#: src/userdel.c:755 src/usermod.c:983
#, c-format
msgid "%s: user %s is a NIS user\n"
msgstr "%s: Ï ÷ñÞóôçò %s åßíáé NIS ÷ñÞóôçò\n"
-#: src/userdel.c:762
+#: src/userdel.c:792
#, c-format
msgid "%s: %s not owned by %s, not removing\n"
msgstr "%s: Ôï %s äåí áíÞêåé óôïí %s, äåí áöáéñåßôáé\n"
-#: src/userdel.c:785
+#: src/userdel.c:815
#, c-format
msgid "%s: not removing directory %s (would remove home of user %s)\n"
msgstr ""
"%s: Äåí äéáãñÜöåôáé ï êáôÜëïãïò %s (èá áöáéñïýóå ôïí ìçôñéêü êáôÜëïãï ôïõ "
"÷ñÞóôç %s)\n"
-#: src/userdel.c:798
+#: src/userdel.c:828
#, c-format
msgid "%s: error removing directory %s\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ ôïõ êáôáëüãïõ %s\n"
-#: src/usermod.c:316
+#: src/usermod.c:315
msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n"
msgstr ""
"\t\t[-d ìçôñéêüò_êáôÜëïãïò [-m]] [-s öëïéüò] [-c ó÷üëéï]\n"
"\t\t[-l íÝï_üíïìá]\n"
-#: src/usermod.c:322
+#: src/usermod.c:321
msgid "[-A {DEFAULT|program},... ] "
msgstr "[-A {DEFAULT|ðñüãñáììá},... ] "
-#: src/usermod.c:478
+#: src/usermod.c:477
#, c-format
msgid "%s: out of memory in update_group\n"
msgstr "%s: äåí õðÜñ÷åé åëåýèåñç ìíÞìç óôï update_group\n"
-#: src/usermod.c:601
+#: src/usermod.c:600
#, c-format
msgid "%s: out of memory in update_gshadow\n"
msgstr "%s: óôï update_gshadow\n"
-#: src/usermod.c:1139
+#: src/usermod.c:1138
#, c-format
msgid "%s: no flags given\n"
msgstr "%s: Äåí äüèçêáí åíäåßîåéò\n"
-#: src/usermod.c:1146
+#: src/usermod.c:1145
#, c-format
msgid "%s: shadow passwords required for -e and -f\n"
msgstr "%s: óêéþäç óõíèçìáôéêÜ áðáéôïýíôáé ãéá ôï -e êáé -f\n"
-#: src/usermod.c:1167
+#: src/usermod.c:1166
#, c-format
msgid "%s: uid %ld is not unique\n"
msgstr "%s: Ôï uid %ld äåí åßíáé ìïíáäéêü\n"
-#: src/usermod.c:1315
+#: src/usermod.c:1314
#, c-format
msgid "%s: error deleting authentication method\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí äéáãñáöÞ ìåèüäïõ åîáêñßâùóçò\n"
-#: src/usermod.c:1335
+#: src/usermod.c:1334
#, c-format
msgid "%s: error changing authentication method\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí áëëáãÞ ìåèüäïõ åîáêñßâùóçò\n"
-#: src/usermod.c:1352
+#: src/usermod.c:1351
#, c-format
msgid "%s: error changing password entry\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí áëëáãÞ êáôá÷þñçóçò óõíèçìáôéêïý\n"
-#: src/usermod.c:1358
+#: src/usermod.c:1357
#, c-format
msgid "%s: error removing password entry\n"
msgstr "%s: ÓöÜëìá êáôÜ ôçí áöáßñåóç êáôá÷þñçóçò óôï áñ÷åßï óõíèçìáôéêþí\n"
-#: src/usermod.c:1366
+#: src/usermod.c:1365
#, c-format
msgid "%s: error adding password dbm entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí ðñïóèÞêç íÝáò êáôá÷þñçóçò óôï dbm áñ÷åßï óõíèçìáôéêþí\n"
-#: src/usermod.c:1373
+#: src/usermod.c:1372
#, c-format
msgid "%s: error removing passwd dbm entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí áöáßñåóç êáôá÷þñçóçò áðü ôï dbm áñ÷åßï óõíèçìáôéêþí\n"
-#: src/usermod.c:1390
+#: src/usermod.c:1389
#, c-format
msgid "%s: error removing shadow password entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí áöáßñåóç êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n"
-#: src/usermod.c:1405
+#: src/usermod.c:1404
#, c-format
msgid "%s: error removing shadow passwd dbm entry\n"
msgstr ""
"%s: ÓöÜëìá êáôÜ ôçí áöáßñåóç êáôá÷þñçóçò óôï dbm áñ÷åßï óêéùäþí "
"óõíèçìáôéêþí\n"
-#: src/usermod.c:1436
+#: src/usermod.c:1435
#, c-format
msgid "%s: directory %s exists\n"
msgstr "%s: ï êáôÜëïãïò %s õðÜñ÷åé\n"
-#: src/usermod.c:1443
+#: src/usermod.c:1442
#, c-format
msgid "%s: can't create %s\n"
msgstr "%s: áäõíáìßá äçìéïõñãßáò ôïõ %s\n"
-#: src/usermod.c:1449
+#: src/usermod.c:1448
#, c-format
msgid "%s: can't chown %s\n"
msgstr "%s: Áäõíáìßá áëëáãÞò éäéïêôÞôç(chown) ôïõ %s\n"
-#: src/usermod.c:1465
+#: src/usermod.c:1464
#, c-format
msgid "%s: cannot rename directory %s to %s\n"
msgstr "%s: áäõíáìßá ìåôïíïìáóßáò ôïõ êáôáëüãïõ %s óå %s\n"
#. better leave it alone
-#: src/usermod.c:1562
+#: src/usermod.c:1561
#, c-format
msgid "%s: warning: %s not owned by %s\n"
msgstr "%s: ðñïåéäïðïßçóç: Ôï %s äåí áíÞêåé óôïí %s\n"
-#: src/usermod.c:1568
+#: src/usermod.c:1567
msgid "failed to change mailbox owner"
msgstr "áðïôõ÷ßá áëëáãÞò ôïõ éäéïêôÞôç ôïõ ãñáììáôïêéâùôßïõ"
-#: src/usermod.c:1575
+#: src/usermod.c:1574
msgid "failed to rename mailbox"
msgstr "áðïôõ÷ßá ìåôïíïìáóßáò ãñáììáôïêéâùôßïõ"
-#: src/vipw.c:103
+#: src/vipw.c:102
#, c-format
msgid ""
"\n"
"\n"
"%s: Ôï %s äåí Üëëáîå\n"
-#: src/vipw.c:128
+#: src/vipw.c:127
#, fuzzy
msgid "Couldn't lock file"
msgstr "%s: áäõíáìßá îåêëåéäþìáôïò áñ÷åßïõ\n"
-#: src/vipw.c:135
+#: src/vipw.c:134
msgid "Couldn't make backup"
msgstr ""
-#: src/vipw.c:174
+#: src/vipw.c:187
#, c-format
msgid "%s: can't restore %s: %s (your changes are in %s)\n"
msgstr "%s: áäõíáìßá åðáíáöïñÜò %s: %s (ïé áëëáãÝò åßíáé óôï %s)\n"
-#: src/vipw.c:213
+#: src/vipw.c:226
msgid ""
"Usage:\n"
"`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n"
msgid ""
msgstr ""
"Project-Id-Version: shadow 19990709\n"
-"POT-Creation-Date: 1999-08-27 21:03+0200\n"
+"POT-Creation-Date: 2000-08-26 20:28+0200\n"
"PO-Revision-Date: 1999-07-09 20:02+0200\n"
"Last-Translator: Vincent Renardias <vincent@ldsol.com>\n"
"Language-Team: Vincent Renardias <vincent@ldsol.com>\n"
msgid "You have mail."
msgstr "Vous avez du courier."
-#: libmisc/obscure.c:281 src/passwd.c:311
+#: libmisc/obscure.c:281 src/passwd.c:309
#, c-format
msgid "Bad password: %s. "
msgstr "Mauvais mot de passe: %s. "
msgid "Dialup Password: "
msgstr "Mot de passe dialup : "
-#: lib/getdef.c:249
+#: lib/getdef.c:253
msgid "Could not allocate space for config info.\n"
msgstr "Impossible d'allouer l'espace pour l'information sur la conf.\n"
#.
#. * Item was never found.
#.
-#: lib/getdef.c:303
+#: lib/getdef.c:307
#, c-format
msgid "configuration error - unknown item '%s' (notify administrator)\n"
msgstr ""
"erreur de configuration - élément '%s' inconnu (avertissez "
"l'administrateur)\n"
-#: lib/getdef.c:390
+#: lib/getdef.c:394
#, c-format
msgid "error - lookup '%s' failed\n"
msgstr "erreur - échec de la recherche de '%s'\n"
-#: lib/getdef.c:398
+#: lib/getdef.c:402
#, c-format
msgid "%s not found\n"
msgstr "%s non trouvé\n"
#. * get the password from her, and set the salt for
#. * the decryption from the group file.
#.
-#: lib/pwauth.c:54 src/newgrp.c:297
+#: lib/pwauth.c:54 src/newgrp.c:305
msgid "Password: "
msgstr "Mot de passe: "
msgid "Account Expires:\t"
msgstr "Expiration du mot de passe :\t"
-#: src/chage.c:468
+#: src/chage.c:471
#, c-format
msgid "%s: do not include \"l\" with other flags\n"
msgstr "%s : ne pas include \"l\" avec les autres drapeaux\n"
-#: src/chage.c:480 src/chage.c:592 src/login.c:529
+#: src/chage.c:483 src/chage.c:595 src/login.c:529
#, c-format
msgid "%s: permission denied\n"
msgstr "%s : permission refusée\n"
-#: src/chage.c:492 src/chpasswd.c:122
+#: src/chage.c:495 src/chpasswd.c:120
#, c-format
msgid "%s: can't lock password file\n"
msgstr "%s: impossible de vérouiller de fichier de mots de passe\n"
-#: src/chage.c:498 src/chpasswd.c:126
+#: src/chage.c:501 src/chpasswd.c:124
#, c-format
msgid "%s: can't open password file\n"
msgstr "%s: impossible d'ouvrir le fichier de mots de passe\n"
-#: src/chage.c:505
+#: src/chage.c:508
#, c-format
msgid "%s: unknown user: %s\n"
msgstr "%s: utilisateur inconnu: %s\n"
-#: src/chage.c:524
+#: src/chage.c:527
#, c-format
msgid "%s: can't lock shadow password file\n"
msgstr "%s : impossible de vérouiller le fichier shadow password\n"
-#: src/chage.c:531
+#: src/chage.c:534
#, c-format
msgid "%s: can't open shadow password file\n"
msgstr "%s : impossible d'ouvrir le fichier shadow password\n"
-#: src/chage.c:613
+#: src/chage.c:616
#, c-format
msgid "Changing the aging information for %s\n"
msgstr "Changement des informations sur l'age pour %s\n"
-#: src/chage.c:615
+#: src/chage.c:618
#, c-format
msgid "%s: error changing fields\n"
msgstr "%s : erreur lors du changement des champs\n"
-#: src/chage.c:642 src/chage.c:705 src/pwunconv.c:184
+#: src/chage.c:645 src/chage.c:708 src/pwunconv.c:183
#, c-format
msgid "%s: can't update password file\n"
msgstr "%s : impossible de mettre à jour le fichier passwd\n"
-#: src/chage.c:672 src/pwunconv.c:179
+#: src/chage.c:675 src/pwunconv.c:178
#, c-format
msgid "%s: can't update shadow password file\n"
msgstr "%s : impossible de mettre à jour le fichier shadow password\n"
-#: src/chage.c:721 src/chage.c:736 src/chfn.c:572 src/chsh.c:411
-#: src/passwd.c:827 src/passwd.c:928
+#: src/chage.c:724 src/chage.c:739 src/chfn.c:571 src/chsh.c:410
+#: src/passwd.c:825 src/passwd.c:926
msgid "Error updating the DBM password entry.\n"
msgstr "Erreur durant la mise à jour de l'entrée du mot de passe DBM.\n"
-#: src/chage.c:753
+#: src/chage.c:756
#, c-format
msgid "%s: can't rewrite shadow password file\n"
msgstr "%s : impossible de re-écrire le fichier shadow password\n"
-#: src/chage.c:767
+#: src/chage.c:770
#, c-format
msgid "%s: can't rewrite password file\n"
msgstr "%s : impossible de re-écrire le fichier password\n"
-#: src/chage.c:816
+#: src/chage.c:821
#, c-format
msgid "%s: no aging information present\n"
msgstr "%s : aucune information sur l'age\n"
-#: src/chfn.c:108
+#: src/chfn.c:107
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n"
"Usage: %s [ -f nom_complet ] [ -r no_bureau ] [ -w tel_bureau ]\n"
"\t[ -h tel_perso ] [ -o autre ] [ utilisateur ]\n"
-#: src/chfn.c:112
+#: src/chfn.c:111
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n"
msgstr "Usage: %s [ -f nom_complet ] [ -w no_bureau ] [ -h tel_bureau ]\n"
-#: src/chfn.c:164 src/chsh.c:120
+#: src/chfn.c:163 src/chsh.c:119
msgid "Enter the new value, or press return for the default\n"
msgstr "Entrez la nouvelle valeur ou tapez Entrée pour le défaut\n"
-#: src/chfn.c:167
+#: src/chfn.c:166
msgid "Full Name"
msgstr "Nom complet"
-#: src/chfn.c:169
+#: src/chfn.c:168
#, c-format
msgid "\tFull Name: %s\n"
msgstr "\tNom complet : %s\n"
-#: src/chfn.c:172
+#: src/chfn.c:171
msgid "Room Number"
msgstr "No de bureau"
-#: src/chfn.c:174
+#: src/chfn.c:173
#, c-format
msgid "\tRoom Number: %s\n"
msgstr "\tNo de bureau : %s\n"
-#: src/chfn.c:177
+#: src/chfn.c:176
msgid "Work Phone"
msgstr "Téléphone travail"
-#: src/chfn.c:179
+#: src/chfn.c:178
#, c-format
msgid "\tWork Phone: %s\n"
msgstr "\tTéléphone travail : %s\n"
-#: src/chfn.c:182
+#: src/chfn.c:181
msgid "Home Phone"
msgstr "Téléphone perso"
-#: src/chfn.c:184
+#: src/chfn.c:183
#, c-format
msgid "\tHome Phone: %s\n"
msgstr "\tTéléphone perso : %s\n"
-#: src/chfn.c:187
+#: src/chfn.c:186
msgid "Other"
msgstr "Autre"
-#: src/chfn.c:300 src/chfn.c:308 src/chfn.c:316 src/chfn.c:324 src/chfn.c:332
-#: src/chfn.c:393 src/passwd.c:1228
+#: src/chfn.c:299 src/chfn.c:307 src/chfn.c:315 src/chfn.c:323 src/chfn.c:331
+#: src/chfn.c:392 src/passwd.c:1226
#, c-format
msgid "%s: Permission denied.\n"
msgstr "%s: Permission refusée.\n"
-#: src/chfn.c:353 src/chsh.c:226 src/passwd.c:1279
+#: src/chfn.c:352 src/chsh.c:225 src/passwd.c:1277
#, c-format
msgid "%s: Unknown user %s\n"
msgstr "%s: Utilisateur %s inconnu\n"
-#: src/chfn.c:359 src/chsh.c:234 src/passwd.c:1209
+#: src/chfn.c:358 src/chsh.c:233 src/passwd.c:1207
#, c-format
msgid "%s: Cannot determine your user name.\n"
msgstr "%s: Impossible de déterminer votre nom d'utilisateur.\n"
-#: src/chfn.c:375 src/chsh.c:252
+#: src/chfn.c:374 src/chsh.c:251
#, c-format
msgid "%s: cannot change user `%s' on NIS client.\n"
msgstr "%s: impossible de changer l'utilisateur `%' sur le client NIS.\n"
-#: src/chfn.c:380 src/chsh.c:259
+#: src/chfn.c:379 src/chsh.c:258
#, c-format
msgid "%s: `%s' is the NIS master for this client.\n"
msgstr "%s: `%s' est le maître NIS pour ce client.\n"
-#: src/chfn.c:455
+#: src/chfn.c:454
#, c-format
msgid "Changing the user information for %s\n"
msgstr "Changement de l'information utilisateur pour %s\n"
-#: src/chfn.c:464
+#: src/chfn.c:463
#, c-format
msgid "%s: invalid name: \"%s\"\n"
msgstr "%s : nom non valide : \"%s\"\n"
-#: src/chfn.c:469
+#: src/chfn.c:468
#, c-format
msgid "%s: invalid room number: \"%s\"\n"
msgstr "%s : no de bureau non valide : \"%s\"\n"
-#: src/chfn.c:474
+#: src/chfn.c:473
#, c-format
msgid "%s: invalid work phone: \"%s\"\n"
msgstr "%s : téléphone du bureau non valide : \"%s\"\n"
-#: src/chfn.c:479
+#: src/chfn.c:478
#, c-format
msgid "%s: invalid home phone: \"%s\"\n"
msgstr "%s : téléphone perso non valide : \"%s\"\n"
-#: src/chfn.c:484
+#: src/chfn.c:483
#, c-format
msgid "%s: \"%s\" contains illegal characters\n"
msgstr "%s : \"%s\" contient des caractères non valide\n"
-#: src/chfn.c:496
+#: src/chfn.c:495
#, c-format
msgid "%s: fields too long\n"
msgstr "%s: champs trop longs\n"
-#: src/chfn.c:511 src/chsh.c:349 src/gpasswd.c:583 src/passwd.c:1390
+#: src/chfn.c:510 src/chsh.c:348 src/gpasswd.c:582 src/passwd.c:1388
msgid "Cannot change ID to root.\n"
msgstr "Impossible de changer l'ID en root.\n"
-#: src/chfn.c:524 src/chsh.c:363 src/passwd.c:737 src/passwd.c:882
+#: src/chfn.c:523 src/chsh.c:362 src/passwd.c:735 src/passwd.c:880
msgid "Cannot lock the password file; try again later.\n"
msgstr ""
"Impossible de vérouiller le fichier de mots de passe; essayez plus tard.\n"
-#: src/chfn.c:530 src/chsh.c:369 src/passwd.c:742 src/passwd.c:887
+#: src/chfn.c:529 src/chsh.c:368 src/passwd.c:740 src/passwd.c:885
msgid "Cannot open the password file.\n"
msgstr "Impossible d'ouvrir le fichier de mots de passe.\n"
-#: src/chfn.c:547 src/chsh.c:384 src/passwd.c:748 src/usermod.c:1272
+#: src/chfn.c:546 src/chsh.c:383 src/passwd.c:746 src/usermod.c:1271
#, c-format
msgid "%s: %s not found in /etc/passwd\n"
msgstr "%s: %s non trouvé dans /etc/passwd\n"
-#: src/chfn.c:564 src/chsh.c:403 src/passwd.c:821 src/passwd.c:922
-#: src/passwd.c:962
+#: src/chfn.c:563 src/chsh.c:402 src/passwd.c:819 src/passwd.c:920
+#: src/passwd.c:960
msgid "Error updating the password entry.\n"
msgstr "Erreur durant la mise à jour du mot de passe.\n"
-#: src/chfn.c:587 src/chsh.c:426 src/passwd.c:834 src/passwd.c:935
+#: src/chfn.c:586 src/chsh.c:425 src/passwd.c:832 src/passwd.c:933
msgid "Cannot commit password file changes.\n"
msgstr "Impossible de valider le changement de mot de passe.\n"
-#: src/chfn.c:594 src/chsh.c:433
+#: src/chfn.c:593 src/chsh.c:432
msgid "Cannot unlock the password file.\n"
msgstr "Impossible de dévérouiller le fichier de mots de passe.\n"
-#: src/chpasswd.c:78
+#: src/chpasswd.c:76
#, c-format
msgid "usage: %s [-e]\n"
msgstr "usage: %s [-e]\n"
-#: src/chpasswd.c:134 src/pwconv.c:105
+#: src/chpasswd.c:132 src/pwconv.c:104
#, c-format
msgid "%s: can't lock shadow file\n"
msgstr "%s: impossible de vérouiller le fichier shadow\n"
-#: src/chpasswd.c:139 src/gpasswd.c:609 src/pwconv.c:110 src/pwunconv.c:119
-#: src/pwunconv.c:124
+#: src/chpasswd.c:137 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:118
+#: src/pwunconv.c:123
#, c-format
msgid "%s: can't open shadow file\n"
msgstr "%s: impossible d'ouvrir le fichier shadow\n"
-#: src/chpasswd.c:161 src/newusers.c:418
+#: src/chpasswd.c:159 src/newusers.c:415
#, c-format
msgid "%s: line %d: line too long\n"
msgstr "%s: ligne %d: ligne trop longue\n"
-#: src/chpasswd.c:181
+#: src/chpasswd.c:179
#, c-format
msgid "%s: line %d: missing new password\n"
msgstr "%s: ligne %d: nouveau mot de passe manquant\n"
-#: src/chpasswd.c:197
+#: src/chpasswd.c:195
#, c-format
msgid "%s: line %d: unknown user %s\n"
msgstr "%s: ligne %d: utilisateur %s inconnu\n"
-#: src/chpasswd.c:249
+#: src/chpasswd.c:247
#, c-format
msgid "%s: line %d: cannot update password entry\n"
msgstr "%s: ligne %d: impossible de mettre le mot de passe à jour\n"
-#: src/chpasswd.c:265 src/newusers.c:538
+#: src/chpasswd.c:263 src/newusers.c:535
#, c-format
msgid "%s: error detected, changes ignored\n"
msgstr "%s: erreur détectée; changements ignorés\n"
-#: src/chpasswd.c:276
+#: src/chpasswd.c:274
#, c-format
msgid "%s: error updating shadow file\n"
msgstr "%s: erreur lors de la mise à jour du fichier shadow\n"
-#: src/chpasswd.c:284
+#: src/chpasswd.c:282
#, c-format
msgid "%s: error updating password file\n"
msgstr "%s: erreur lors de la mise à jour du fichier de mots de passe\n"
-#: src/chsh.c:106
+#: src/chsh.c:105
#, c-format
msgid "Usage: %s [ -s shell ] [ name ]\n"
msgstr "Usage: %s [ -s shell ] [ nom ]\n"
-#: src/chsh.c:121
+#: src/chsh.c:120
msgid "Login Shell"
msgstr "Shell de login"
-#: src/chsh.c:275 src/chsh.c:288
+#: src/chsh.c:274 src/chsh.c:287
#, c-format
msgid "You may not change the shell for %s.\n"
msgstr "Vous ne pouvez pas changer le shell de %s.\n"
-#: src/chsh.c:317
+#: src/chsh.c:316
#, c-format
msgid "Changing the login shell for %s\n"
msgstr "Changement du shell de login pour %s\n"
-#: src/chsh.c:329
+#: src/chsh.c:328
#, c-format
msgid "%s: Invalid entry: %s\n"
msgstr "%s: Entrée non valide : %s\n"
-#: src/chsh.c:334
+#: src/chsh.c:333
#, c-format
msgid "%s is an invalid shell.\n"
msgstr "%s n'est pas un shell valide.\n"
-#: src/dpasswd.c:71
+#: src/dpasswd.c:69
#, c-format
msgid "Usage: %s [ -(a|d) ] shell\n"
msgstr "Usage: %s [ -(a|d) ] shell\n"
-#: src/dpasswd.c:136
+#: src/dpasswd.c:134
msgid "Shell password: "
msgstr "Mot de passe shell : "
-#: src/dpasswd.c:142
+#: src/dpasswd.c:140
msgid "re-enter Shell password: "
msgstr "Confirmez le mot de passe shell : "
-#: src/dpasswd.c:149
+#: src/dpasswd.c:147
#, c-format
msgid "%s: Passwords do not match, try again.\n"
msgstr "%s : Les mots de passe ne correspondent pas, essayez encore.\n"
-#: src/dpasswd.c:169
+#: src/dpasswd.c:167
#, c-format
msgid "%s: can't create %s"
msgstr "%s: impossible de créer %s"
-#: src/dpasswd.c:174
+#: src/dpasswd.c:172
#, c-format
msgid "%s: can't open %s"
msgstr "%s : impossible d'ouvrir %s"
-#: src/dpasswd.c:202
+#: src/dpasswd.c:200
#, c-format
msgid "%s: Shell %s not found.\n"
msgstr "%s : Shell %s non trouvé.\n"
-#: src/expiry.c:85
+#: src/expiry.c:84
msgid "Usage: expiry { -f | -c }\n"
msgstr "Usage : expiry { -f | -c }\n"
-#: src/expiry.c:138
+#: src/expiry.c:137
#, c-format
msgid "%s: WARNING! Must be set-UID root!\n"
msgstr "%s: AVERTISSEMENT! Devrait être set-UID root!\n"
-#: src/expiry.c:149
+#: src/expiry.c:148
#, c-format
msgid "%s: unknown user\n"
msgstr "%s : utilisateur inconnu\n"
-#: src/faillog.c:80
+#: src/faillog.c:79
#, c-format
msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n"
msgstr "usage: %s [-a|-u utilisateur] [-m max] [-r] [-t jours] [-l sec_ver]\n"
-#: src/faillog.c:135 src/lastlog.c:95
+#: src/faillog.c:134 src/lastlog.c:94
#, c-format
msgid "Unknown User: %s\n"
msgstr "Utilisateur %s inconnu\n"
-#: src/faillog.c:216
+#: src/faillog.c:215
msgid "Username Failures Maximum Latest\n"
msgstr "Utilisateur Échecs Maximum Dernier\n"
-#: src/faillog.c:233
+#: src/faillog.c:232
#, c-format
msgid " %s on %s"
msgstr " %s sur %s"
-#: src/faillog.c:237
+#: src/faillog.c:236
#, c-format
msgid " [%lds left]"
msgstr " [%lds restant]"
-#: src/faillog.c:240
+#: src/faillog.c:239
#, c-format
msgid " [%lds lock]"
msgstr " [%lds verrou]"
-#: src/gpasswd.c:91
+#: src/gpasswd.c:89
#, c-format
msgid "usage: %s [-r|-R] group\n"
msgstr "usage: %s [-r|-R] groupe\n"
-#: src/gpasswd.c:92
+#: src/gpasswd.c:90
#, c-format
msgid " %s [-a user] group\n"
msgstr " %s [-a utilisateur] groupe\n"
-#: src/gpasswd.c:93
+#: src/gpasswd.c:91
#, c-format
msgid " %s [-d user] group\n"
msgstr " %s [-d utilisateur] groupe\n"
-#: src/gpasswd.c:95
+#: src/gpasswd.c:93
#, c-format
msgid " %s [-A user,...] [-M user,...] group\n"
msgstr " %s [-A utilisateur,...] [-M utilisateur,...] groupe\n"
-#: src/gpasswd.c:98
+#: src/gpasswd.c:96
#, c-format
msgid " %s [-M user,...] group\n"
msgstr " %s [-M utilisateur,...] groupe\n"
-#: src/gpasswd.c:162 src/gpasswd.c:247
+#: src/gpasswd.c:160 src/gpasswd.c:245
#, c-format
msgid "%s: unknown user %s\n"
msgstr "%s : utilisateur %s inconnu\n"
-#: src/gpasswd.c:174
+#: src/gpasswd.c:172
msgid "Permission denied.\n"
msgstr "Permission refusée.\n"
-#: src/gpasswd.c:259
+#: src/gpasswd.c:257
#, c-format
msgid "%s: shadow group passwords required for -A\n"
msgstr "%s : mots de passe shadow nécessaires pour -A\n"
-#: src/gpasswd.c:310
+#: src/gpasswd.c:308
msgid "Who are you?\n"
msgstr "Qui êtes vous?\n"
-#: src/gpasswd.c:330 src/newgrp.c:247
+#: src/gpasswd.c:328 src/newgrp.c:251
#, c-format
msgid "unknown group: %s\n"
msgstr "groupe inconnu : %s\n"
-#: src/gpasswd.c:438
+#: src/gpasswd.c:436
#, c-format
msgid "Adding user %s to group %s\n"
msgstr "Ajout de l'utilisateur %s au groupe %s\n"
-#: src/gpasswd.c:455
+#: src/gpasswd.c:453
#, c-format
msgid "Removing user %s from group %s\n"
msgstr "Retrait de l'utilisateur %s du groupe %s\n"
-#: src/gpasswd.c:468
+#: src/gpasswd.c:466
#, c-format
msgid "%s: unknown member %s\n"
msgstr "%s : membre %s inconnu\n"
-#: src/gpasswd.c:515
+#: src/gpasswd.c:513
#, c-format
msgid "%s: Not a tty\n"
msgstr "%s : N'est pas un tty\n"
#. * the old password since the invoker is either the group
#. * owner, or root.
#.
-#: src/gpasswd.c:537
+#: src/gpasswd.c:535
#, c-format
msgid "Changing the password for group %s\n"
msgstr "Changement du mot de passe pour le group %s\n"
-#: src/gpasswd.c:540
+#: src/gpasswd.c:538
msgid "New Password: "
msgstr "Nouveau mot de passe : "
-#: src/gpasswd.c:545 src/passwd.c:424
+#: src/gpasswd.c:543 src/passwd.c:422
msgid "Re-enter new password: "
msgstr "Nouveau mot de passe (à nouveau) : "
-#: src/gpasswd.c:557
+#: src/gpasswd.c:555
msgid "They don't match; try again"
msgstr "Ils ne sont pas identiques; essayez à nouveau"
-#: src/gpasswd.c:561
+#: src/gpasswd.c:559
#, c-format
msgid "%s: Try again later\n"
msgstr "%s: Essayez à nouveau plus tard\n"
-#: src/gpasswd.c:591
+#: src/gpasswd.c:590
#, c-format
msgid "%s: can't get lock\n"
msgstr "%s : impossible d'obtenir le verrou\n"
-#: src/gpasswd.c:597
+#: src/gpasswd.c:596
#, c-format
msgid "%s: can't get shadow lock\n"
msgstr "%s : impossible d'obtenir le verrou sur shadow\n"
-#: src/gpasswd.c:603
+#: src/gpasswd.c:602
#, c-format
msgid "%s: can't open file\n"
msgstr "%s : impossible d'ouvrir le fichier\n"
-#: src/gpasswd.c:615
+#: src/gpasswd.c:614
#, c-format
msgid "%s: can't update entry\n"
msgstr "%s : impossible de mettre à jour l'entrée\n"
-#: src/gpasswd.c:621
+#: src/gpasswd.c:620
#, c-format
msgid "%s: can't update shadow entry\n"
msgstr "%s : impossible de mettre à jour l'entrée shadow\n"
-#: src/gpasswd.c:627
+#: src/gpasswd.c:626
#, c-format
msgid "%s: can't re-write file\n"
msgstr "%s : impossible de re-écrire le fichier\n"
-#: src/gpasswd.c:633
+#: src/gpasswd.c:632
#, c-format
msgid "%s: can't re-write shadow file\n"
msgstr "%s : impossible de re-écrire le fichier shadow\n"
-#: src/gpasswd.c:641
+#: src/gpasswd.c:640
#, c-format
msgid "%s: can't unlock file\n"
msgstr "%s : impossible de dévérouiller le fichier\n"
-#: src/gpasswd.c:646
+#: src/gpasswd.c:645
#, c-format
msgid "%s: can't update DBM files\n"
msgstr "%s : impossible de mettre à jours les fichiers DBM\n"
-#: src/gpasswd.c:653
+#: src/gpasswd.c:652
#, c-format
msgid "%s: can't update DBM shadow files\n"
msgstr "%s : impossible de mettre à jours les fichiers DBM shadow\n"
-#: src/groupadd.c:106
+#: src/groupadd.c:105
msgid "usage: groupadd [-g gid [-o]] group\n"
msgstr "usage: groupadd [-g gid [-o]] groupe\n"
-#: src/groupadd.c:174 src/groupadd.c:197 src/groupmod.c:184 src/groupmod.c:231
-#: src/useradd.c:932 src/usermod.c:513 src/usermod.c:649
+#: src/groupadd.c:173 src/groupadd.c:196 src/groupmod.c:183 src/groupmod.c:230
+#: src/useradd.c:931 src/usermod.c:512 src/usermod.c:648
#, c-format
msgid "%s: error adding new group entry\n"
msgstr "%s : erreur durant l'addition du nouveau groupe\n"
-#: src/groupadd.c:184 src/groupadd.c:207 src/groupmod.c:200 src/useradd.c:943
-#: src/usermod.c:525 src/usermod.c:661
+#: src/groupadd.c:183 src/groupadd.c:206 src/groupmod.c:199 src/useradd.c:942
+#: src/usermod.c:524 src/usermod.c:660
#, c-format
msgid "%s: cannot add new dbm group entry\n"
msgstr "%s : impossible d'ajouter une nouvelle entrée pour le groupe dbm\n"
-#: src/groupadd.c:259 src/useradd.c:997
+#: src/groupadd.c:258 src/useradd.c:996
#, c-format
msgid "%s: name %s is not unique\n"
msgstr "%s : le nom %s n'est pas unique\n"
-#: src/groupadd.c:274
+#: src/groupadd.c:273
#, c-format
msgid "%s: gid %ld is not unique\n"
msgstr "%s : le gid %ld n'est pas unique\n"
-#: src/groupadd.c:298
+#: src/groupadd.c:297
#, c-format
msgid "%s: can't get unique gid\n"
msgstr "%s : impossible d'obtenir un gid unique\n"
#.
#. * All invalid group names land here.
#.
-#: src/groupadd.c:322 src/groupmod.c:342
+#: src/groupadd.c:321 src/groupmod.c:341
#, c-format
msgid "%s: %s is a not a valid group name\n"
msgstr "%s : %s n'est pas un nom de groupe valide\n"
-#: src/groupadd.c:351 src/groupmod.c:368
+#: src/groupadd.c:350 src/groupmod.c:367
#, c-format
msgid "%s: invalid group %s\n"
msgstr "%s : groupe %s non valide\n"
-#: src/groupadd.c:368 src/useradd.c:1273
+#: src/groupadd.c:367 src/useradd.c:1272
#, c-format
msgid "%s: -O requires NAME=VALUE\n"
msgstr "%s : -O requiert NAME=VALEUR\n"
-#: src/groupadd.c:413 src/groupdel.c:168 src/groupmod.c:404 src/useradd.c:1382
-#: src/userdel.c:273 src/usermod.c:537
+#: src/groupadd.c:412 src/groupdel.c:167 src/groupmod.c:403 src/useradd.c:1381
+#: src/userdel.c:303 src/usermod.c:536
#, c-format
msgid "%s: cannot rewrite group file\n"
msgstr "%s : impossible de re-écrire le fichier group\n"
-#: src/groupadd.c:419 src/groupdel.c:174 src/groupmod.c:410 src/useradd.c:1390
-#: src/userdel.c:279 src/usermod.c:674
+#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1389
+#: src/userdel.c:309 src/usermod.c:673
#, c-format
msgid "%s: cannot rewrite shadow group file\n"
msgstr "%s : impossible de re-écrire le fichier shadow group\n"
-#: src/groupadd.c:438 src/groupdel.c:193 src/groupmod.c:429 src/userdel.c:359
+#: src/groupadd.c:437 src/groupdel.c:192 src/groupmod.c:428 src/userdel.c:389
#, c-format
msgid "%s: unable to lock group file\n"
msgstr "%s : impossible de vérouiller le fichier group\n"
-#: src/groupadd.c:442 src/groupdel.c:197 src/groupmod.c:433
+#: src/groupadd.c:441 src/groupdel.c:196 src/groupmod.c:432
#, c-format
msgid "%s: unable to open group file\n"
msgstr "%s : impossible d'ouvrir le fichier group\n"
-#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 src/userdel.c:368
+#: src/groupadd.c:446 src/groupdel.c:201 src/groupmod.c:437 src/userdel.c:398
#, c-format
msgid "%s: unable to lock shadow group file\n"
msgstr "%s : impossible de vérouiller le fichier group\n"
-#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443
+#: src/groupadd.c:451 src/groupdel.c:206 src/groupmod.c:442
#, c-format
msgid "%s: unable to open shadow group file\n"
msgstr "%s : impossible d'ouvrir le fichier shadow group\n"
-#: src/groupadd.c:519
+#: src/groupadd.c:518
#, c-format
msgid "%s: group %s exists\n"
msgstr "%s : le groupe %s existe\n"
-#: src/groupdel.c:87
+#: src/groupdel.c:86
msgid "usage: groupdel group\n"
msgstr "usage: groupdel groupe\n"
-#: src/groupdel.c:105 src/groupmod.c:188 src/groupmod.c:235
+#: src/groupdel.c:104 src/groupmod.c:187 src/groupmod.c:234
#, c-format
msgid "%s: error removing group entry\n"
msgstr "%s : erreur lors de retrait de l'entrée du groupe\n"
-#: src/groupdel.c:117 src/groupmod.c:207
+#: src/groupdel.c:116 src/groupmod.c:206
#, c-format
msgid "%s: error removing group dbm entry\n"
msgstr "%s : erreur lors du retrait de l'entrée dbm du groupe\n"
-#: src/groupdel.c:132
+#: src/groupdel.c:131
#, c-format
msgid "%s: error removing shadow group entry\n"
msgstr "%s : erreur lors du retrait de l'entrée shadow du groupe\n"
-#: src/groupdel.c:145 src/groupmod.c:253
+#: src/groupdel.c:144 src/groupmod.c:252
#, c-format
msgid "%s: error removing shadow group dbm entry\n"
msgstr "%s : erreur lors du retrait de l'entrée dbm shadow du groupe\n"
#.
#. * Can't remove the group.
#.
-#: src/groupdel.c:249
+#: src/groupdel.c:248
#, c-format
msgid "%s: cannot remove user's primary group.\n"
msgstr "%s : impossible d'enlever l'utilisateur de son groupe primaire.\n"
-#: src/groupdel.c:306 src/groupmod.c:502
+#: src/groupdel.c:305 src/groupmod.c:501
#, c-format
msgid "%s: group %s does not exist\n"
msgstr "%s : le groupe %s n'existe pas\n"
-#: src/groupdel.c:320 src/groupmod.c:518
+#: src/groupdel.c:319 src/groupmod.c:517
#, c-format
msgid "%s: group %s is a NIS group\n"
msgstr "%s : le groupe %s est un groupe NIS\n"
-#: src/groupdel.c:326 src/groupmod.c:524 src/userdel.c:731 src/usermod.c:990
+#: src/groupdel.c:325 src/groupmod.c:523 src/userdel.c:761 src/usermod.c:989
#, c-format
msgid "%s: %s is the NIS master\n"
msgstr "%s : %s est le maître NIS\n"
-#: src/groupmod.c:106
+#: src/groupmod.c:105
msgid "usage: groupmod [-g gid [-o]] [-n name] group\n"
msgstr "usage : groupmod [-g gid [-o]] [-n nom] groupe\n"
-#: src/groupmod.c:166
+#: src/groupmod.c:165
#, c-format
msgid "%s: %s not found in /etc/group\n"
msgstr "%s : %s non trouvé dans /etc/group\n"
-#: src/groupmod.c:247
+#: src/groupmod.c:246
#, c-format
msgid "%s: cannot add new dbm shadow group entry\n"
msgstr "%s : impossible d'ajouter une nouvelle entrée dbm shadow group\n"
-#: src/groupmod.c:300
+#: src/groupmod.c:299
#, c-format
msgid "%s: %ld is not a unique gid\n"
msgstr "%s : %ld n'est pas un gid unique\n"
-#: src/groupmod.c:331
+#: src/groupmod.c:330
#, c-format
msgid "%s: %s is not a unique name\n"
msgstr "%s : %s n'est pas un nom unique\n"
-#: src/groups.c:63
+#: src/groups.c:62
#, c-format
msgid "unknown user %s\n"
msgstr "utilisateur %s inconnu\n"
-#: src/grpck.c:99
+#: src/grpck.c:98
#, c-format
msgid "Usage: %s [ -r ] [ group [ gshadow ] ]\n"
msgstr "Usage : %s [ -r ] ] groupe [ gshadow ] ]\n"
-#: src/grpck.c:101
+#: src/grpck.c:100
#, c-format
msgid "Usage: %s [ -r ] [ group ]\n"
msgstr "Usage: %s [ -r ] [ groupe ]\n"
-#: src/grpck.c:120 src/pwck.c:120
+#: src/grpck.c:119 src/pwck.c:119
msgid "No"
msgstr "Non"
-#: src/grpck.c:235 src/grpck.c:243 src/pwck.c:217 src/pwck.c:226
+#: src/grpck.c:234 src/grpck.c:242 src/pwck.c:216 src/pwck.c:225
#, c-format
msgid "%s: cannot lock file %s\n"
msgstr "%s : impossible de vérouiller le fichier %s\n"
-#: src/grpck.c:258 src/grpck.c:266 src/mkpasswd.c:217 src/pwck.c:242
-#: src/pwck.c:251
+#: src/grpck.c:257 src/grpck.c:265 src/mkpasswd.c:216 src/pwck.c:241
+#: src/pwck.c:250
#, c-format
msgid "%s: cannot open file %s\n"
msgstr "%s : impossible d'ouvrir le fichier %s\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:299
+#: src/grpck.c:298
msgid "invalid group file entry\n"
msgstr "entrée dans le fichier group non valide\n"
-#: src/grpck.c:300 src/grpck.c:363 src/grpck.c:455 src/grpck.c:518
-#: src/grpck.c:535 src/pwck.c:287 src/pwck.c:349 src/pwck.c:456 src/pwck.c:518
-#: src/pwck.c:542
+#: src/grpck.c:299 src/grpck.c:362 src/grpck.c:454 src/grpck.c:517
+#: src/grpck.c:534 src/pwck.c:286 src/pwck.c:348 src/pwck.c:455 src/pwck.c:517
+#: src/pwck.c:541
#, c-format
msgid "delete line `%s'? "
msgstr "effacer la ligne `%s'? "
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:362
+#: src/grpck.c:361
msgid "duplicate group entry\n"
msgstr "entrée de groupe dupliquée\n"
-#: src/grpck.c:379
+#: src/grpck.c:378
#, c-format
msgid "invalid group name `%s'\n"
msgstr "nom de groupe `%s' non valide\n"
-#: src/grpck.c:389
+#: src/grpck.c:388
#, c-format
msgid "group %s: bad GID (%d)\n"
msgstr "groupe %s : mauvais GID (%d)\n"
-#: src/grpck.c:415
+#: src/grpck.c:414
#, c-format
msgid "group %s: no user %s\n"
msgstr "groupe %s : pas d'utilisateur %s\n"
-#: src/grpck.c:417 src/grpck.c:586
+#: src/grpck.c:416 src/grpck.c:585
#, c-format
msgid "delete member `%s'? "
msgstr "effacer le membre `%s'? "
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:454
+#: src/grpck.c:453
msgid "invalid shadow group file entry\n"
msgstr "entrée non valide dans le fichier shadow group\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:517
+#: src/grpck.c:516
msgid "duplicate shadow group entry\n"
msgstr "entrée dupliquée dans le fichier shadow group\n"
-#: src/grpck.c:534
+#: src/grpck.c:533
msgid "no matching group file entry\n"
msgstr "aucune entrée dans le fichier group correspondante\n"
-#: src/grpck.c:554
+#: src/grpck.c:553
#, c-format
msgid "shadow group %s: no administrative user %s\n"
msgstr "groupe shadow %s : aucun administrateur %s\n"
-#: src/grpck.c:556
+#: src/grpck.c:555
#, c-format
msgid "delete administrative member `%s'? "
msgstr "effacer le membre administrateur `%s' ?"
-#: src/grpck.c:584
+#: src/grpck.c:583
#, c-format
msgid "shadow group %s: no user %s\n"
msgstr "groupe shadow %s : aucun utilisateur %s\n"
-#: src/grpck.c:611 src/grpck.c:617 src/pwck.c:573 src/pwck.c:581
+#: src/grpck.c:610 src/grpck.c:616 src/pwck.c:572 src/pwck.c:580
#, c-format
msgid "%s: cannot update file %s\n"
msgstr "%s : impossible de mettre à jour le fichier %s\n"
-#: src/grpck.c:641 src/pwck.c:607
+#: src/grpck.c:640 src/pwck.c:606
#, c-format
msgid "%s: the files have been updated; run mkpasswd\n"
msgstr "%s : les fichiers ont été mis à jour; exécutez mkpasswd\n"
-#: src/grpck.c:642 src/grpck.c:646 src/pwck.c:608 src/pwck.c:612
+#: src/grpck.c:641 src/grpck.c:645 src/pwck.c:607 src/pwck.c:611
#, c-format
msgid "%s: no changes\n"
msgstr ""
-#: src/grpck.c:645 src/pwck.c:611
+#: src/grpck.c:644 src/pwck.c:610
#, c-format
msgid "%s: the files have been updated\n"
msgstr ""
-#: src/grpconv.c:63 src/grpunconv.c:64
+#: src/grpconv.c:62 src/grpunconv.c:63
#, c-format
msgid "%s: can't lock group file\n"
msgstr ""
-#: src/grpconv.c:68 src/grpunconv.c:69
+#: src/grpconv.c:67 src/grpunconv.c:68
#, c-format
msgid "%s: can't open group file\n"
msgstr ""
-#: src/grpconv.c:73 src/grpunconv.c:74
+#: src/grpconv.c:72 src/grpunconv.c:73
#, c-format
msgid "%s: can't lock shadow group file\n"
msgstr ""
-#: src/grpconv.c:78 src/grpunconv.c:79
+#: src/grpconv.c:77 src/grpunconv.c:78
#, c-format
msgid "%s: can't open shadow group file\n"
msgstr ""
#.
#. * This shouldn't happen (the entry exists) but...
#.
-#: src/grpconv.c:94
+#: src/grpconv.c:93
#, c-format
msgid "%s: can't remove shadow group %s\n"
msgstr ""
-#: src/grpconv.c:135 src/pwconv.c:161
+#: src/grpconv.c:134 src/pwconv.c:160
#, c-format
msgid "%s: can't update shadow entry for %s\n"
msgstr ""
-#: src/grpconv.c:144 src/grpunconv.c:95
+#: src/grpconv.c:143 src/grpunconv.c:94
#, c-format
msgid "%s: can't update entry for group %s\n"
msgstr ""
-#: src/grpconv.c:151 src/grpunconv.c:103
+#: src/grpconv.c:150 src/grpunconv.c:102
#, c-format
msgid "%s: can't update shadow group file\n"
msgstr ""
-#: src/grpconv.c:155 src/grpunconv.c:108
+#: src/grpconv.c:154 src/grpunconv.c:107
#, c-format
msgid "%s: can't update group file\n"
msgstr ""
-#: src/grpconv.c:170 src/grpunconv.c:129
+#: src/grpconv.c:169 src/grpunconv.c:128
#, c-format
msgid "%s: not configured for shadow group support.\n"
msgstr ""
-#: src/grpunconv.c:113
+#: src/grpunconv.c:112
#, c-format
msgid "%s: can't delete shadow group file\n"
msgstr ""
-#: src/id.c:57
+#: src/id.c:56
msgid "usage: id [ -a ]\n"
msgstr "Usage : id [ -a ]\n"
-#: src/id.c:59
+#: src/id.c:58
msgid "usage: id\n"
msgstr "Usage : id\n"
-#: src/id.c:119
+#: src/id.c:118
#, c-format
msgid "uid=%d(%s)"
msgstr "uid=%d(%s)"
-#: src/id.c:121
+#: src/id.c:120
#, c-format
msgid "uid=%d"
msgstr "uid=%d"
-#: src/id.c:125
+#: src/id.c:124
#, c-format
msgid " gid=%d(%s)"
msgstr " gid=%d(%s)"
-#: src/id.c:127
+#: src/id.c:126
#, c-format
msgid " gid=%d"
msgstr " gid=%d"
-#: src/id.c:137
+#: src/id.c:136
#, c-format
msgid " euid=%d(%s)"
msgstr " euid=%d(%s)"
-#: src/id.c:139
+#: src/id.c:138
#, c-format
msgid " euid=%d"
msgstr " euid=%d"
-#: src/id.c:144
+#: src/id.c:143
#, c-format
msgid " egid=%d(%s)"
msgstr " egid=%d(%s)"
-#: src/id.c:146
+#: src/id.c:145
#, c-format
msgid " egid=%d"
msgstr " egid=%d"
#. * where "###" is a numerical value and "aaa" is the
#. * corresponding name for each respective numerical value.
#.
-#: src/id.c:167
+#: src/id.c:166
msgid " groups="
msgstr " groupes="
-#: src/lastlog.c:168
+#: src/lastlog.c:167
msgid "Username Port From Latest\n"
msgstr "Utilisateur Port Venant de Dernière\n"
-#: src/lastlog.c:170
+#: src/lastlog.c:169
msgid "Username Port Latest\n"
msgstr "Utilisateur Port Dernière\n"
-#: src/lastlog.c:184
+#: src/lastlog.c:183
msgid "**Never logged in**"
msgstr "**Jamais connecté**"
-#: src/login.c:199
+#: src/login.c:198
#, c-format
msgid "usage: %s [-p] [name]\n"
msgstr "Usage : %s [-p] [nom]\n"
-#: src/login.c:202
+#: src/login.c:201
#, c-format
msgid " %s [-p] [-h host] [-f name]\n"
msgstr " %s [-p] [-h hôte] [-f nom]\n"
-#: src/login.c:204
+#: src/login.c:203
#, c-format
msgid " %s [-p] -r host\n"
msgstr " %s [-p] -r hôte\n"
-#: src/login.c:287
+#: src/login.c:286
msgid "Invalid login time\n"
msgstr "Heure de connexion non valide\n"
-#: src/login.c:342
+#: src/login.c:341
msgid ""
"\n"
"System closed for routine maintenance\n"
"\n"
"Système fermé pour maintenance\n"
-#: src/login.c:352
+#: src/login.c:351
msgid ""
"\n"
"[Disconnect bypassed -- root login allowed.]\n"
"\n"
"[Disconnexion court-circuitée -- login root authorisé.]\n"
-#: src/login.c:391
+#: src/login.c:390
#, c-format
msgid ""
"\n"
msgid " on `%.100s'"
msgstr " sur `%.100s'"
-#: src/login.c:807
+#: src/login.c:834
#, c-format
msgid ""
"\n"
"\n"
"% login: "
-#: src/login.c:809
+#: src/login.c:836
msgid "login: "
msgstr "login: "
-#: src/login.c:991 src/sulogin.c:233
+#: src/login.c:1026 src/sulogin.c:231
msgid "Login incorrect"
msgstr "Login incorrect"
-#: src/login.c:1163
+#: src/login.c:1213
msgid "Warning: login re-enabled after temporary lockout.\n"
msgstr "Avertissement: login réactivé après une désactivation temporaire.\n"
-#: src/login.c:1173
+#: src/login.c:1223
#, c-format
msgid "Last login: %s on %s"
msgstr "Dernière connexion : le %s sur %s"
-#: src/login.c:1176
+#: src/login.c:1226
#, c-format
msgid "Last login: %.19s on %s"
msgstr "Dernière connexion : le %.19s sur %s"
-#: src/login.c:1181
+#: src/login.c:1231
#, c-format
msgid " from %.*s"
msgstr " à partir de %.*s"
-#: src/login.c:1246
+#: src/login.c:1303
msgid "Starting rad_login\n"
msgstr "Démarrage de rad_login\n"
msgid "%s: no DBM database on system - no action performed\n"
msgstr "%s : pas de base de données DBM sur le système - aucune action prise\n"
-#: src/mkpasswd.c:246 src/mkpasswd.c:250
+#: src/mkpasswd.c:245 src/mkpasswd.c:249
#, c-format
msgid "%s: cannot overwrite file %s\n"
msgstr "%s : impossible d'écraser le fichier %s\n"
-#: src/mkpasswd.c:264
+#: src/mkpasswd.c:263
#, c-format
msgid "%s: cannot open DBM files for %s\n"
msgstr "%s : impossible d'ouvrir les fichiers DBM pour %s\n"
-#: src/mkpasswd.c:297
+#: src/mkpasswd.c:296
#, c-format
msgid "%s: the beginning with "
msgstr ""
-#: src/mkpasswd.c:322
+#: src/mkpasswd.c:321
#, c-format
msgid "%s: error parsing line \"%s\"\n"
msgstr "%s : erreur lors l'analyse de la ligne \"%s\"\n"
-#: src/mkpasswd.c:327 src/mkpasswd.c:329 src/mkpasswd.c:331 src/mkpasswd.c:333
+#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332
msgid "adding record for name "
msgstr ""
-#: src/mkpasswd.c:337 src/mkpasswd.c:342 src/mkpasswd.c:346 src/mkpasswd.c:350
+#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349
#, c-format
msgid "%s: error adding record for "
msgstr ""
-#: src/mkpasswd.c:368
+#: src/mkpasswd.c:367
#, c-format
msgid "added %d entries, longest was %d\n"
msgstr "%d entrées ajoutées, la plus longue fut %d\n"
-#: src/mkpasswd.c:383
+#: src/mkpasswd.c:382
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n"
msgstr "Usage : %s [ -vf ] [ -p|g|sp|sg ] fichier\n"
-#: src/mkpasswd.c:385
+#: src/mkpasswd.c:384
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n"
msgstr "Usage : %s [ -vf ] [ -p|g|sp ] fichier\n"
-#: src/mkpasswd.c:388
+#: src/mkpasswd.c:387
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g ] file\n"
msgstr "Usage : %s [ -vf ] [ -p|g ] fichier\n"
-#: src/newgrp.c:67
+#: src/newgrp.c:66
msgid "usage: newgrp [ - ] [ group ]\n"
msgstr "Usage : newgrp [ - ] [ groupe ]\n"
-#: src/newgrp.c:69
+#: src/newgrp.c:68
#, fuzzy
msgid "usage: sg group [[-c] command ]\n"
msgstr "Usage : sg groupe [ commande ]\n"
-#: src/newgrp.c:122
+#: src/newgrp.c:125
#, c-format
msgid "unknown uid: %d\n"
msgstr "uid inconnue : %d\n"
-#: src/newgrp.c:198
+#: src/newgrp.c:201
#, c-format
msgid "unknown gid: %ld\n"
msgstr "gid inconnu : %ld\n"
-#: src/newgrp.c:242
+#: src/newgrp.c:245
#, c-format
msgid "unknown gid: %d\n"
msgstr "gid inconnu : %d\n"
-#: src/newgrp.c:315 src/newgrp.c:324
+#: src/newgrp.c:323 src/newgrp.c:332
msgid "Sorry.\n"
msgstr "Désolé ;-)\n"
-#: src/newgrp.c:356
+#: src/newgrp.c:364
msgid "too many groups\n"
msgstr "trop de groupes\n"
-#: src/newusers.c:79
+#: src/newusers.c:76
#, c-format
msgid "Usage: %s [ input ]\n"
msgstr "Usage : %s [ entrée ] \n"
-#: src/newusers.c:367
+#: src/newusers.c:364
#, c-format
msgid "%s: can't lock /etc/passwd.\n"
msgstr "%s : impossible de vérouiller /etc/passwd.\n"
-#: src/newusers.c:378
+#: src/newusers.c:375
#, c-format
msgid "%s: can't lock files, try again later\n"
msgstr "%s : impossible de vérouiller les fichiers, essayez plus tard\n"
-#: src/newusers.c:393
+#: src/newusers.c:390
#, c-format
msgid "%s: can't open files\n"
msgstr "%s : impossible d'ouvrir les fichiers\n"
-#: src/newusers.c:438
+#: src/newusers.c:435
#, c-format
msgid "%s: line %d: invalid line\n"
msgstr "%s : ligne %d : ligne non valide\n"
-#: src/newusers.c:456
+#: src/newusers.c:453
#, c-format
msgid "%s: line %d: can't create GID\n"
msgstr "%s : ligne %d : impossible de créer le GID\n"
-#: src/newusers.c:472
+#: src/newusers.c:469
#, c-format
msgid "%s: line %d: can't create UID\n"
msgstr "%s : ligne %d : impossible de créer le GID\n"
-#: src/newusers.c:484
+#: src/newusers.c:481
#, c-format
msgid "%s: line %d: cannot find user %s\n"
msgstr "%s : ligne %d : impossible de trouver l'utilisateur %s\n"
-#: src/newusers.c:492
+#: src/newusers.c:489
#, c-format
msgid "%s: line %d: can't update password\n"
msgstr "%s : ligne %d : impossible de mettre le mot de passe à jour\n"
-#: src/newusers.c:509
+#: src/newusers.c:506
#, c-format
msgid "%s: line %d: mkdir failed\n"
msgstr "%s : ligne %d : échec de mkdir\n"
-#: src/newusers.c:513
+#: src/newusers.c:510
#, c-format
msgid "%s: line %d: chown failed\n"
msgstr "%s : ligne %d : échec de chown\n"
-#: src/newusers.c:522
+#: src/newusers.c:519
#, c-format
msgid "%s: line %d: can't update entry\n"
msgstr "%s : ligne %d : impossible de mettre l'entrée à jour\n"
-#: src/newusers.c:553
+#: src/newusers.c:550
#, c-format
msgid "%s: error updating files\n"
msgstr "%s : erreur lors de la mise à jour des fichiers\n"
-#: src/passwd.c:241
+#: src/passwd.c:239
#, c-format
msgid "usage: %s [ -f | -s ] [ name ]\n"
msgstr "Usage : %s [ -f | -s ] [ nom ]\n"
-#: src/passwd.c:244
+#: src/passwd.c:242
#, c-format
msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n"
msgstr " %s [ -x max ] [ -n min ] [ -w avert ] [ -i inact ] nom\n"
-#: src/passwd.c:247
+#: src/passwd.c:245
#, c-format
msgid " %s { -l | -u | -d | -S | -e } name\n"
msgstr " %s { -l | -u | -d | -S | -e } nom\n"
-#: src/passwd.c:349
+#: src/passwd.c:347
#, c-format
msgid "User %s has a TCFS key, his old password is required.\n"
msgstr ""
"L'utilisateur %s a une clé TCFS, son ancien mot de passe est nécessaire.\n"
-#: src/passwd.c:350
+#: src/passwd.c:348
msgid "You can use -t option to force the change.\n"
msgstr "Vous pouvez utiliser l'option -t pour forcer le changement.\n"
-#: src/passwd.c:356
+#: src/passwd.c:354
msgid "Old password: "
msgstr "Ancien mot de passe : "
-#: src/passwd.c:363
+#: src/passwd.c:361
#, c-format
msgid "Incorrect password for `%s'\n"
msgstr "Mot de passe incorrect pour `%s'\n"
-#: src/passwd.c:376
+#: src/passwd.c:374
#, c-format
msgid "Warning: user %s has a TCFS key.\n"
msgstr "Avertissement : l'utilisateur %s a une clé TCFS.\n"
-#: src/passwd.c:394
+#: src/passwd.c:392
#, c-format
msgid ""
"Enter the new password (minimum of %d, maximum of %d characters)\n"
"caractères). Utilisez une combinaison de lettres en majuscule/minuscule\n"
"et de nombres.\n"
-#: src/passwd.c:401
+#: src/passwd.c:399
msgid "New password: "
msgstr "Nouveau mot de passe : "
-#: src/passwd.c:411
+#: src/passwd.c:409
msgid "Try again.\n"
msgstr "Essaye encore...\n"
-#: src/passwd.c:420
+#: src/passwd.c:418
msgid ""
"\n"
"Warning: weak password (enter it again to use it anyway).\n"
"Avertissement : mot de passe simpliste (tapez le à nouveau pour l'utiliser\n"
"quand même).\n"
-#: src/passwd.c:429
+#: src/passwd.c:427
msgid "They don't match; try again.\n"
msgstr "Ils ne sont pas identique; essaye encore...\n"
-#: src/passwd.c:514 src/passwd.c:530
+#: src/passwd.c:512 src/passwd.c:528
#, c-format
msgid "The password for %s cannot be changed.\n"
msgstr "Le mot de passe pour %s ne peut être changé.\n"
-#: src/passwd.c:558
+#: src/passwd.c:556
#, c-format
msgid "Sorry, the password for %s cannot be changed yet.\n"
msgstr "Désolé, le mot de passe pour %s ne peux pas encore être changé.\n"
-#: src/passwd.c:695
+#: src/passwd.c:693
#, c-format
msgid "%s: out of memory\n"
msgstr "%s : plus de mémoire\n"
-#: src/passwd.c:847
+#: src/passwd.c:845
msgid "Cannot lock the TCFS key database; try again later\n"
msgstr ""
"Impossible de vérouiller la base de données de clés TCFS; essayez à\n"
"nouveau plus tard\n"
-#: src/passwd.c:853
+#: src/passwd.c:851
msgid "Cannot open the TCFS key database.\n"
msgstr "Impossible d'ouvrir la base de clés TCFS.\n"
-#: src/passwd.c:859
+#: src/passwd.c:857
msgid "Error updating the TCFS key database.\n"
msgstr "Erreur lors de la mise à jour de la base de clés TCFS.\n"
-#: src/passwd.c:864
+#: src/passwd.c:862
msgid "Cannot commit TCFS changes.\n"
msgstr "Impossible de valider les changements TCFS.\n"
-#: src/passwd.c:1071
+#: src/passwd.c:1069
#, c-format
msgid "%s: Cannot execute %s"
msgstr "%s : Impossible d'exécuter %s"
-#: src/passwd.c:1178
+#: src/passwd.c:1176
#, c-format
msgid "%s: repository %s not supported\n"
msgstr ""
-#: src/passwd.c:1265
+#: src/passwd.c:1263
#, c-format
msgid "%s: Permission denied\n"
msgstr "%s : Permission refusée\n"
-#: src/passwd.c:1289
+#: src/passwd.c:1287
#, c-format
msgid "You may not change the password for %s.\n"
msgstr "Vous ne pouvez pas changer le mot de passe de %s.\n"
-#: src/passwd.c:1354
+#: src/passwd.c:1352
#, c-format
msgid "Changing password for %s\n"
msgstr "Changement du mot de passe de %s\n"
-#: src/passwd.c:1358
+#: src/passwd.c:1356
#, c-format
msgid "The password for %s is unchanged.\n"
msgstr "Le mot de passe pour %s est inchangé.\n"
-#: src/passwd.c:1414
+#: src/passwd.c:1412
msgid "Password changed.\n"
msgstr "Mot de passe changé.\n"
-#: src/pwck.c:99
+#: src/pwck.c:98
#, c-format
msgid "Usage: %s [ -qr ] [ passwd [ shadow ] ]\n"
msgstr "Usage : %s [ -qr ] [ passwd [ shadow ] ]\n"
-#: src/pwck.c:101
+#: src/pwck.c:100
#, c-format
msgid "Usage: %s [ -qr ] [ passwd ]\n"
msgstr "Usage : %s [ -qr ] [ passwd ]\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:286
+#: src/pwck.c:285
msgid "invalid password file entry\n"
msgstr "entrée non valide dans le fichier password\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:348
+#: src/pwck.c:347
msgid "duplicate password entry\n"
msgstr "entrée dupliquée dans password\n"
-#: src/pwck.c:364
+#: src/pwck.c:363
#, c-format
msgid "invalid user name `%s'\n"
msgstr "nom d'utilisateur `%s' non valide\n"
-#: src/pwck.c:374
+#: src/pwck.c:373
#, c-format
msgid "user %s: bad UID (%d)\n"
msgstr "utilisateur %s : mauvais UID (%d)\n"
#.
#. * No primary group, just give a warning
#.
-#: src/pwck.c:389
+#: src/pwck.c:388
#, c-format
msgid "user %s: no group %d\n"
msgstr "utilisateur %s : aucun groupe %d\n"
#.
#. * Home directory doesn't exist, give a warning
#.
-#: src/pwck.c:404
+#: src/pwck.c:403
#, c-format
msgid "user %s: directory %s does not exist\n"
msgstr "utilisateur %s : le répertoire %s n'existe pas\n"
#.
#. * Login shell doesn't exist, give a warning
#.
-#: src/pwck.c:419
+#: src/pwck.c:418
#, c-format
msgid "user %s: program %s does not exist\n"
msgstr "utilisateur %s : le programme %s n'existe pas\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:455
+#: src/pwck.c:454
msgid "invalid shadow password file entry\n"
msgstr "entrée shadow password non valide\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:517
+#: src/pwck.c:516
msgid "duplicate shadow password entry\n"
msgstr "entrée shadow password dupliquée\n"
#. * Tell the user this entry has no matching
#. * /etc/passwd entry and ask them to delete it.
#.
-#: src/pwck.c:541
+#: src/pwck.c:540
msgid "no matching password file entry\n"
msgstr "aucune entrée correspondante dans le fichier password\n"
-#: src/pwck.c:558
+#: src/pwck.c:557
#, c-format
msgid "user %s: last password change in the future\n"
msgstr ""
"utilisateur %s : date du dernier changement de mot de passe dans le futur\n"
-#: src/pwconv.c:95 src/pwunconv.c:109
+#: src/pwconv.c:94 src/pwunconv.c:108
#, c-format
msgid "%s: can't lock passwd file\n"
msgstr "%s : impossible de vérouiller le fichier passwd\n"
-#: src/pwconv.c:100 src/pwunconv.c:114
+#: src/pwconv.c:99 src/pwunconv.c:113
#, c-format
msgid "%s: can't open passwd file\n"
msgstr "%s : impossible d'ouvrir le fichier passwd\n"
-#: src/pwconv.c:127
+#: src/pwconv.c:126
#, c-format
msgid "%s: can't remove shadow entry for %s\n"
msgstr "%s : impossible d'enlever l'entrée shadow pour %s\n"
-#: src/pwconv.c:170
+#: src/pwconv.c:169
#, c-format
msgid "%s: can't update passwd entry for %s\n"
msgstr "%s : impossible de mettre à jour le mot de passe de %s\n"
-#: src/pwconv.c:177
+#: src/pwconv.c:176
#, c-format
msgid "%s: can't update shadow file\n"
msgstr "%s : impossible de mettre à jour le fichier shadow\n"
-#: src/pwconv.c:181
+#: src/pwconv.c:180
#, c-format
msgid "%s: can't update passwd file\n"
msgstr "%s : impossible de mettre à jour le fichier passwd\n"
msgid "%s: Shadow passwords are not configured.\n"
msgstr "%s : Les mots de passe shadow ne sont pas configurés.\n"
-#: src/pwunconv.c:172
+#: src/pwunconv.c:171
#, c-format
msgid "%s: can't update entry for user %s\n"
msgstr "%s : impossible de mettre à jour l'entrée %s\n"
-#: src/pwunconv.c:189
+#: src/pwunconv.c:188
#, c-format
msgid "%s: can't delete shadow password file\n"
msgstr "%s : impossible d'effacer le fichier shadow\n"
-#: src/su.c:145
+#: src/su.c:140
msgid "Sorry."
msgstr "Désolé ;-)"
-#: src/su.c:227
+#: src/su.c:222
#, c-format
msgid "%s: must be run from a terminal\n"
msgstr "%s : doit être lancé à partir d'un terminal\n"
-#: src/su.c:319
+#: src/su.c:311
#, c-format
msgid "%s: pam_start: error %d\n"
msgstr "%s : pam_start : erreur %d\n"
-#: src/su.c:345
+#: src/su.c:337
#, c-format
msgid "Unknown id: %s\n"
msgstr "ID inconnue : %s\n"
#. access denied (-1) or unexpected value
-#: src/su.c:380 src/su.c:395
+#: src/su.c:372 src/su.c:387
#, fuzzy, c-format
msgid "You are not authorized to su %s\n"
msgstr "Vous n'êtes pas authorisés "
#. require own password
-#: src/su.c:391
+#: src/su.c:383
msgid "(Enter your own password.)"
msgstr "(Entrez votre propre mot de passe.)"
-#: src/su.c:412
+#: src/su.c:404
#, c-format
msgid "%s: permission denied (shell).\n"
msgstr "%s : permission refusée (shell).\n"
-#: src/su.c:436
+#: src/su.c:428
#, c-format
msgid ""
"%s: %s\n"
"%s: %s\n"
"(Ignoré)\n"
-#: src/su.c:605
+#: src/su.c:628
msgid "No shell\n"
msgstr "Pas de shell\n"
#. must be a password file!
-#: src/sulogin.c:138
+#: src/sulogin.c:136
msgid "No password file\n"
msgstr "Pas de fichier de mot de passe\n"
#.
#. * Fail secure
#.
-#: src/sulogin.c:180
+#: src/sulogin.c:178
msgid "No password entry for 'root'\n"
msgstr "Pas d'entrée pour le mot de passe de 'root'\n"
#. * given we just exit.
#.
#. get a password for root
-#: src/sulogin.c:194
+#: src/sulogin.c:192
msgid ""
"\n"
"Type control-d to proceed with normal startup,\n"
"(ou donnez le mot de passe de root pour la maintenance) : "
#. make new environment active
-#: src/sulogin.c:243
+#: src/sulogin.c:241
msgid "Entering System Maintenance Mode\n"
msgstr "Entrée du système en mode maintenance\n"
-#: src/useradd.c:244
+#: src/useradd.c:243
#, c-format
msgid "%s: rebuild the group database\n"
msgstr "%s : reconstruction de la base de données des groupes\n"
-#: src/useradd.c:251
+#: src/useradd.c:250
#, c-format
msgid "%s: rebuild the shadow group database\n"
msgstr "%s : reconstruction de la base de données des groupes shadow\n"
-#: src/useradd.c:288 src/usermod.c:941
+#: src/useradd.c:287 src/usermod.c:940
#, c-format
msgid "%s: invalid numeric argument `%s'\n"
msgstr "%s : argument numérique `%s' non valide\n"
-#: src/useradd.c:344
+#: src/useradd.c:343
#, c-format
msgid "%s: unknown gid %s\n"
msgstr "%s : gid %s inconnu\n"
-#: src/useradd.c:351 src/useradd.c:643 src/useradd.c:1229 src/usermod.c:253
-#: src/usermod.c:1072
+#: src/useradd.c:350 src/useradd.c:642 src/useradd.c:1228 src/usermod.c:252
+#: src/usermod.c:1071
#, c-format
msgid "%s: unknown group %s\n"
msgstr "%s : groupe %s inconnu\n"
-#: src/useradd.c:419
+#: src/useradd.c:418
#, c-format
msgid "group=%s,%ld basedir=%s skel=%s\n"
msgstr "group=%s,%ld rép_base=%s skel=%s\n"
-#: src/useradd.c:422
+#: src/useradd.c:421
#, c-format
msgid "shell=%s "
msgstr "shell=%s "
-#: src/useradd.c:424
+#: src/useradd.c:423
#, c-format
msgid "inactive=%ld expire=%s"
msgstr "inactif=%ld expire=%s"
-#: src/useradd.c:428
+#: src/useradd.c:427
#, c-format
msgid "GROUP=%ld\n"
msgstr "GROUP=%ld\n"
-#: src/useradd.c:429
+#: src/useradd.c:428
#, c-format
msgid "HOME=%s\n"
msgstr "HOME=%s\n"
-#: src/useradd.c:431
+#: src/useradd.c:430
#, c-format
msgid "INACTIVE=%ld\n"
msgstr "INACTIVE=%ld\n"
-#: src/useradd.c:432
+#: src/useradd.c:431
#, c-format
msgid "EXPIRE=%s\n"
msgstr "EXPIRE=%s\n"
-#: src/useradd.c:434
+#: src/useradd.c:433
#, c-format
msgid "SHELL=%s\n"
msgstr "SHELL=%s\n"
-#: src/useradd.c:435
+#: src/useradd.c:434
#, c-format
msgid "SKEL=%s\n"
msgstr "SKEL=%s\n"
-#: src/useradd.c:471
+#: src/useradd.c:470
#, c-format
msgid "%s: cannot create new defaults file\n"
msgstr "%s : impossible de créer un nouveau fichier de défauts\n"
-#: src/useradd.c:565 src/useradd.c:576
+#: src/useradd.c:564 src/useradd.c:575
#, c-format
msgid "%s: rename: %s"
msgstr "%s : rename : %s"
-#: src/useradd.c:663 src/usermod.c:273
+#: src/useradd.c:662 src/usermod.c:272
#, c-format
msgid "%s: group `%s' is a NIS group.\n"
msgstr "%s : le groupe `%s' est un groupe NIS.\n"
-#: src/useradd.c:671 src/usermod.c:281
+#: src/useradd.c:670 src/usermod.c:280
#, c-format
msgid "%s: too many groups specified (max %d).\n"
msgstr "%s : trop de groupes spécifiés (max %d).\n"
-#: src/useradd.c:703 src/usermod.c:313
+#: src/useradd.c:702 src/usermod.c:312
#, c-format
msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n"
msgstr "Usage : %s\t[-u uid [-o]] [-g groupe] [-G groupe,...] \n"
-#: src/useradd.c:706
+#: src/useradd.c:705
msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n"
msgstr "\t\t[-d home] [-s shell] [-c commentaire] [-m [-k template]]\n"
-#: src/useradd.c:709 src/usermod.c:319
+#: src/useradd.c:708 src/usermod.c:318
msgid "[-f inactive] [-e expire ] "
msgstr "[-f inactif] [-e expire ] "
-#: src/useradd.c:712
+#: src/useradd.c:711
msgid "[-A program] "
msgstr "[-A program] "
-#: src/useradd.c:714 src/usermod.c:324
+#: src/useradd.c:713 src/usermod.c:323
msgid "[-p passwd] name\n"
msgstr "[-p mot-de-passe] nom\n"
-#: src/useradd.c:716
+#: src/useradd.c:715
#, c-format
msgid " %s\t-D [-g group] [-b base] [-s shell]\n"
msgstr " %s\t-D [-g groupe] [-b base] [-s shell]\n"
-#: src/useradd.c:719
+#: src/useradd.c:718
msgid "\t\t[-f inactive] [-e expire ]\n"
msgstr "\t\t[-f inactif] [-e expire ]\n"
-#: src/useradd.c:816 src/usermod.c:446
+#: src/useradd.c:815 src/usermod.c:445
#, c-format
msgid "%s: error locking group file\n"
msgstr "%s : erreur lors du vérouillage du fichier de groupe\n"
-#: src/useradd.c:820 src/usermod.c:451
+#: src/useradd.c:819 src/usermod.c:450
#, c-format
msgid "%s: error opening group file\n"
msgstr "%s : erreur lors d'ouverture du fichier de groupe\n"
-#: src/useradd.c:825 src/usermod.c:558
+#: src/useradd.c:824 src/usermod.c:557
#, c-format
msgid "%s: error locking shadow group file\n"
msgstr "%s : erreur lors du vérouillage du fichier shadow group\n"
-#: src/useradd.c:830 src/usermod.c:564
+#: src/useradd.c:829 src/usermod.c:563
#, c-format
msgid "%s: error opening shadow group file\n"
msgstr "%s : erreur lors de l'ouverture du fichier shadow group\n"
-#: src/useradd.c:1002
+#: src/useradd.c:1001
#, c-format
msgid "%s: uid %d is not unique\n"
msgstr "%s : l'uid %d n'est pas unique\n"
-#: src/useradd.c:1032
+#: src/useradd.c:1031
#, c-format
msgid "%s: can't get unique uid\n"
msgstr "%s : impossible d'obtenir un uid unique\n"
-#: src/useradd.c:1140 src/useradd.c:1284 src/usermod.c:1020 src/usermod.c:1031
-#: src/usermod.c:1041 src/usermod.c:1087 src/usermod.c:1122
+#: src/useradd.c:1139 src/useradd.c:1283 src/usermod.c:1019 src/usermod.c:1030
+#: src/usermod.c:1040 src/usermod.c:1086 src/usermod.c:1121
#, c-format
msgid "%s: invalid field `%s'\n"
msgstr "%s : champs `%s' non valide\n"
-#: src/useradd.c:1154
+#: src/useradd.c:1153
#, c-format
msgid "%s: invalid base directory `%s'\n"
msgstr "%s : répertoire de base non valide `%s'\n"
-#: src/useradd.c:1164
+#: src/useradd.c:1163
#, c-format
msgid "%s: invalid comment `%s'\n"
msgstr "%s : commentaire `%s' non valide\n"
-#: src/useradd.c:1174
+#: src/useradd.c:1173
#, c-format
msgid "%s: invalid home directory `%s'\n"
msgstr "%s : répertoire personnel `%s' non valide\n"
-#: src/useradd.c:1192 src/usermod.c:1054
+#: src/useradd.c:1191 src/usermod.c:1053
#, c-format
msgid "%s: invalid date `%s'\n"
msgstr "%s : date `%s' non valide\n"
-#: src/useradd.c:1204
+#: src/useradd.c:1203
#, c-format
msgid "%s: shadow passwords required for -e\n"
msgstr "%s : mots de passe shadow nécessaires pour -e\n"
-#: src/useradd.c:1219
+#: src/useradd.c:1218
#, c-format
msgid "%s: shadow passwords required for -f\n"
msgstr "%s : mots de passe shadow nécessaires pour -f\n"
-#: src/useradd.c:1293
+#: src/useradd.c:1292
#, c-format
msgid "%s: invalid shell `%s'\n"
msgstr "%s : shell `%s' non valide\n"
-#: src/useradd.c:1334
+#: src/useradd.c:1333
#, c-format
msgid "%s: invalid user name `%s'\n"
msgstr "%s : nom d'utilisateur `%s' non valide\n"
-#: src/useradd.c:1370 src/userdel.c:262 src/usermod.c:1184
+#: src/useradd.c:1369 src/userdel.c:292 src/usermod.c:1183
#, c-format
msgid "%s: cannot rewrite password file\n"
msgstr "%s : impossible de reécrire le fichier de mots de passe\n"
-#: src/useradd.c:1375 src/userdel.c:265 src/usermod.c:1189
+#: src/useradd.c:1374 src/userdel.c:295 src/usermod.c:1188
#, c-format
msgid "%s: cannot rewrite shadow password file\n"
msgstr "%s : impossible de reécrire le fichier shadow\n"
-#: src/useradd.c:1415 src/userdel.c:329 src/usermod.c:1224
+#: src/useradd.c:1414 src/userdel.c:359 src/usermod.c:1223
#, c-format
msgid "%s: unable to lock password file\n"
msgstr "%s : impossible de vérouiller le fichier de mots de passe\n"
-#: src/useradd.c:1419 src/userdel.c:333 src/usermod.c:1228
+#: src/useradd.c:1418 src/userdel.c:363 src/usermod.c:1227
#, c-format
msgid "%s: unable to open password file\n"
msgstr "%s : impossible d'ouvrir le fichier de mots de passe\n"
-#: src/useradd.c:1425 src/userdel.c:338 src/usermod.c:1233
+#: src/useradd.c:1424 src/userdel.c:368 src/usermod.c:1232
#, c-format
msgid "%s: cannot lock shadow password file\n"
msgstr "%s : impossible de vérouiller le fichier de mots de passe\n"
-#: src/useradd.c:1431 src/userdel.c:343 src/usermod.c:1238
+#: src/useradd.c:1430 src/userdel.c:373 src/usermod.c:1237
#, c-format
msgid "%s: cannot open shadow password file\n"
msgstr "%s : impossible d'ouvrir le fichier shadow\n"
-#: src/useradd.c:1530 src/usermod.c:1325
+#: src/useradd.c:1529 src/usermod.c:1324
#, c-format
msgid "%s: error adding authentication method\n"
msgstr "%s : erreur lors de l'ajout de la méthode d'authentification\n"
-#: src/useradd.c:1553
+#: src/useradd.c:1552
#, c-format
msgid "%s: error adding new password entry\n"
msgstr "%s : erreur lors de l'ajout de la nouvelle entrée\n"
-#: src/useradd.c:1568
+#: src/useradd.c:1567
#, c-format
msgid "%s: error updating password dbm entry\n"
msgstr "%s : erreur lors de la mise à jour de l'entrée dbm\n"
-#: src/useradd.c:1584 src/usermod.c:1384
+#: src/useradd.c:1583 src/usermod.c:1383
#, c-format
msgid "%s: error adding new shadow password entry\n"
msgstr "%s : erreur lors de l'ajout de la nouvelle entrée shadow\n"
-#: src/useradd.c:1600 src/usermod.c:1399
+#: src/useradd.c:1599 src/usermod.c:1398
#, c-format
msgid "%s: error updating shadow passwd dbm entry\n"
msgstr "%s : erreur lors de la mise à jour de l'entrée shadow passwd dbm\n"
-#: src/useradd.c:1632
+#: src/useradd.c:1631
#, c-format
msgid "%s: cannot create directory %s\n"
msgstr "%s : impossible de créer le répertoire %s\n"
-#: src/useradd.c:1709 src/usermod.c:1162
+#: src/useradd.c:1708 src/usermod.c:1161
#, c-format
msgid "%s: user %s exists\n"
msgstr "%s : l'utilisateur %s existe\n"
-#: src/useradd.c:1739
+#: src/useradd.c:1738
#, c-format
msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n"
msgstr ""
"%s : avertissement : CREATE_HOME non supporté, utilisez -m à la place.\n"
-#: src/userdel.c:128
+#: src/userdel.c:127
#, c-format
msgid "usage: %s [-r] name\n"
msgstr "Usage : %s [-r] nom\n"
-#: src/userdel.c:175 src/userdel.c:230
+#: src/userdel.c:178 src/userdel.c:260
#, c-format
msgid "%s: error updating group entry\n"
msgstr "%s : erreur lors de la mise à jour de l'entrée group\n"
-#: src/userdel.c:185 src/userdel.c:239
+#: src/userdel.c:188 src/userdel.c:269
#, c-format
msgid "%s: cannot update dbm group entry\n"
msgstr "%s : impossible de mettre à jour l'entrée dbm group\n"
-#: src/userdel.c:270
+#: src/userdel.c:215
+#, fuzzy, c-format
+msgid "%s: cannot remove dbm group entry\n"
+msgstr "%s : impossible de mettre à jour l'entrée dbm group\n"
+
+#: src/userdel.c:300
#, c-format
msgid "%s: cannot rewrite TCFS key file\n"
msgstr "%s : impossible de reécrire le fichier de clés TCFS\n"
-#: src/userdel.c:350
+#: src/userdel.c:380
#, c-format
msgid "%s: cannot lock TCFS key file\n"
msgstr "%s : impossible de vérouiller le fichier de clés TCFS\n"
-#: src/userdel.c:354
+#: src/userdel.c:384
#, c-format
msgid "%s: cannot open TCFS key file\n"
msgstr "%s : impossible d'ouvrir le fichier de clés TCFS\n"
-#: src/userdel.c:363
+#: src/userdel.c:393
#, c-format
msgid "%s: cannot open group file\n"
msgstr "%s : impossible d'ouvrir le fichier group\n"
-#: src/userdel.c:373
+#: src/userdel.c:403
#, c-format
msgid "%s: cannot open shadow group file\n"
msgstr "%s : impossible d'ouvrir le fichier shadow group\n"
-#: src/userdel.c:404 src/userdel.c:419
+#: src/userdel.c:434 src/userdel.c:449
#, c-format
msgid "%s: error deleting authentication\n"
msgstr "%s : erreur lors de l'effacement de l'authentification\n"
-#: src/userdel.c:428
+#: src/userdel.c:458
#, c-format
msgid "%s: error deleting password entry\n"
msgstr "%s : erreur lors de la suppression de l'entrée dans /etc/passwd\n"
-#: src/userdel.c:431
+#: src/userdel.c:461
#, c-format
msgid "%s: error deleting shadow password entry\n"
msgstr "%s : erreur lors de la suppression de l'entrée dans /etc/shadow\n"
-#: src/userdel.c:440
+#: src/userdel.c:470
#, c-format
msgid "%s: error deleting TCFS entry\n"
msgstr "%s : erreur lors de l'effacement de l'entrée TCFS\n"
-#: src/userdel.c:453
+#: src/userdel.c:483
#, c-format
msgid "%s: error deleting password dbm entry\n"
msgstr "%s : erreur lors de l'effacement de l'entrée dbm du mot de passe\n"
-#: src/userdel.c:472
+#: src/userdel.c:502
#, c-format
msgid "%s: error deleting shadow passwd dbm entry\n"
msgstr "%s : erreur lors de l'effacement de l'entrée shadow passwd dbm\n"
-#: src/userdel.c:513
+#: src/userdel.c:543
#, c-format
msgid "%s: user %s is currently logged in\n"
msgstr "%s : l'utilisateur %s est connecté\n"
-#: src/userdel.c:630
+#: src/userdel.c:660
#, c-format
msgid "%s: warning: %s not owned by %s, not removing\n"
msgstr "%s : avertissement : %s n'appartient pas à %s, non enlevé\n"
-#: src/userdel.c:636
+#: src/userdel.c:666
#, c-format
msgid "%s: warning: can't remove "
msgstr "%s : impossible d'enlever "
-#: src/userdel.c:711 src/usermod.c:968
+#: src/userdel.c:741 src/usermod.c:967
#, c-format
msgid "%s: user %s does not exist\n"
msgstr "%s : l'utilisateur %s n'existe pas\n"
-#: src/userdel.c:725 src/usermod.c:984
+#: src/userdel.c:755 src/usermod.c:983
#, c-format
msgid "%s: user %s is a NIS user\n"
msgstr "%s : le compte %s est un compte NIS\n"
-#: src/userdel.c:762
+#: src/userdel.c:792
#, c-format
msgid "%s: %s not owned by %s, not removing\n"
msgstr "%s : %s n'appartient pas à %s, non enlevé\n"
-#: src/userdel.c:785
+#: src/userdel.c:815
#, c-format
msgid "%s: not removing directory %s (would remove home of user %s)\n"
msgstr ""
"%s : répertoire %s non enlevé (cela enléverait le répertoire personnel de "
"%s)\n"
-#: src/userdel.c:798
+#: src/userdel.c:828
#, c-format
msgid "%s: error removing directory %s\n"
msgstr "%s : erreur lors de l'effacement du répertoire %s\n"
-#: src/usermod.c:316
+#: src/usermod.c:315
msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n"
msgstr "\t\t[-d home [-m]] [-s shell] [-c commentaire] [-l nouveau_nom]\n"
-#: src/usermod.c:322
+#: src/usermod.c:321
msgid "[-A {DEFAULT|program},... ] "
msgstr "[-A {DÉFAUT|programme},... ] "
-#: src/usermod.c:478
+#: src/usermod.c:477
#, c-format
msgid "%s: out of memory in update_group\n"
msgstr "%s : plus de mémoire pour update_group\n"
-#: src/usermod.c:601
+#: src/usermod.c:600
#, c-format
msgid "%s: out of memory in update_gshadow\n"
msgstr "%s : plus de mémoire pour update_gshadow\n"
-#: src/usermod.c:1139
+#: src/usermod.c:1138
#, c-format
msgid "%s: no flags given\n"
msgstr "%s : aucun drapeau donné\n"
-#: src/usermod.c:1146
+#: src/usermod.c:1145
#, c-format
msgid "%s: shadow passwords required for -e and -f\n"
msgstr "%s : mots de passe shadow nécessaires pour -e ou -f\n"
-#: src/usermod.c:1167
+#: src/usermod.c:1166
#, c-format
msgid "%s: uid %ld is not unique\n"
msgstr "%s : l'uid %ld n'est pas unique\n"
-#: src/usermod.c:1315
+#: src/usermod.c:1314
#, c-format
msgid "%s: error deleting authentication method\n"
msgstr "%s : erreur lors de l'effacement de la méthode d'authentification\n"
-#: src/usermod.c:1335
+#: src/usermod.c:1334
#, c-format
msgid "%s: error changing authentication method\n"
msgstr "%s : erreur lors du changement de la méthode d'authentification\n"
-#: src/usermod.c:1352
+#: src/usermod.c:1351
#, c-format
msgid "%s: error changing password entry\n"
msgstr "%s : erreur lors du changement de l'entrée dans /etc/passwd\n"
-#: src/usermod.c:1358
+#: src/usermod.c:1357
#, c-format
msgid "%s: error removing password entry\n"
msgstr "%s : erreur lors de l'effacement du mot de passe\n"
-#: src/usermod.c:1366
+#: src/usermod.c:1365
#, c-format
msgid "%s: error adding password dbm entry\n"
msgstr ""
-#: src/usermod.c:1373
+#: src/usermod.c:1372
#, c-format
msgid "%s: error removing passwd dbm entry\n"
msgstr ""
-#: src/usermod.c:1390
+#: src/usermod.c:1389
#, c-format
msgid "%s: error removing shadow password entry\n"
msgstr ""
-#: src/usermod.c:1405
+#: src/usermod.c:1404
#, c-format
msgid "%s: error removing shadow passwd dbm entry\n"
msgstr ""
-#: src/usermod.c:1436
+#: src/usermod.c:1435
#, c-format
msgid "%s: directory %s exists\n"
msgstr "%s : le répertoire %s existe\n"
-#: src/usermod.c:1443
+#: src/usermod.c:1442
#, c-format
msgid "%s: can't create %s\n"
msgstr "%s : impossible de créer %s\n"
-#: src/usermod.c:1449
+#: src/usermod.c:1448
#, c-format
msgid "%s: can't chown %s\n"
msgstr "%s : impossible de changer le propriètaire de %s\n"
-#: src/usermod.c:1465
+#: src/usermod.c:1464
#, c-format
msgid "%s: cannot rename directory %s to %s\n"
msgstr "%s : impossible de renommer le répertoire %s en %s\n"
#. better leave it alone
-#: src/usermod.c:1562
+#: src/usermod.c:1561
#, c-format
msgid "%s: warning: %s not owned by %s\n"
msgstr "%s : avertissement : %s n'appartient pas à %s\n"
-#: src/usermod.c:1568
+#: src/usermod.c:1567
msgid "failed to change mailbox owner"
msgstr "échec du changement de propriètaire de la mailbox"
-#: src/usermod.c:1575
+#: src/usermod.c:1574
msgid "failed to rename mailbox"
msgstr "échec du renommage de la mailbox"
-#: src/vipw.c:103
+#: src/vipw.c:102
#, c-format
msgid ""
"\n"
"\n"
"%s : %s est inchangé\n"
-#: src/vipw.c:128
+#: src/vipw.c:127
msgid "Couldn't lock file"
msgstr "Impossible de vérouiller le fichier"
-#: src/vipw.c:135
+#: src/vipw.c:134
msgid "Couldn't make backup"
msgstr "Impossible de faire une sauvegarde"
-#: src/vipw.c:174
+#: src/vipw.c:187
#, c-format
msgid "%s: can't restore %s: %s (your changes are in %s)\n"
msgstr "%s : impossible de restaurer %s : %s (vos changements sont dans %s)\n"
-#: src/vipw.c:213
+#: src/vipw.c:226
msgid ""
"Usage:\n"
"`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n"
msgid ""
msgstr ""
"Project-Id-Version: shadow-981228\n"
-"POT-Creation-Date: 1999-08-27 21:03+0200\n"
+"POT-Creation-Date: 2000-08-26 20:28+0200\n"
"PO-Revision-Date: 1999-03-02 22:29+01:00\n"
"Last-Translator: Arkadiusz Mi¶kiewicz <misiek@misiek.eu.org>\n"
"Language-Team: PL <pl@li.org>\n"
msgid "You have mail."
msgstr "Masz pocztê."
-#: libmisc/obscure.c:281 src/passwd.c:311
+#: libmisc/obscure.c:281 src/passwd.c:309
#, c-format
msgid "Bad password: %s. "
msgstr "Z³e has³o: %s. "
msgid "Dialup Password: "
msgstr "Has³o dostêpu modemowego: "
-#: lib/getdef.c:249
+#: lib/getdef.c:253
msgid "Could not allocate space for config info.\n"
msgstr "Nie mogê przydzieliæ miejsca dla informacji o konfiguracji.\n"
#.
#. * Item was never found.
#.
-#: lib/getdef.c:303
+#: lib/getdef.c:307
#, c-format
msgid "configuration error - unknown item '%s' (notify administrator)\n"
msgstr ""
"b³±d w konfiguracji - nieznana pozycja '%s' (powiadom administratora)\n"
-#: lib/getdef.c:390
+#: lib/getdef.c:394
#, c-format
msgid "error - lookup '%s' failed\n"
msgstr "b³±d - wyszukiwanie '%s' niepowiod³o siê\n"
-#: lib/getdef.c:398
+#: lib/getdef.c:402
#, c-format
msgid "%s not found\n"
msgstr "%s nie znaleziony\n"
#. * get the password from her, and set the salt for
#. * the decryption from the group file.
#.
-#: lib/pwauth.c:54 src/newgrp.c:297
+#: lib/pwauth.c:54 src/newgrp.c:305
msgid "Password: "
msgstr "Has³o: "
msgid "Account Expires:\t"
msgstr "Has³o traci wa¿no¶æ:\t"
-#: src/chage.c:468
+#: src/chage.c:471
#, c-format
msgid "%s: do not include \"l\" with other flags\n"
msgstr "%s: nie ³±cz \"l\" z innymi flagami\n"
-#: src/chage.c:480 src/chage.c:592 src/login.c:529
+#: src/chage.c:483 src/chage.c:595 src/login.c:529
#, c-format
msgid "%s: permission denied\n"
msgstr "%s: odmowa dostêpu\n"
-#: src/chage.c:492 src/chpasswd.c:122
+#: src/chage.c:495 src/chpasswd.c:120
#, c-format
msgid "%s: can't lock password file\n"
msgstr "%s: nie mogê zablokowaæ pliku z has³ami\n"
-#: src/chage.c:498 src/chpasswd.c:126
+#: src/chage.c:501 src/chpasswd.c:124
#, c-format
msgid "%s: can't open password file\n"
msgstr "%s: nie mogê otworzyæ pliku z has³ami\n"
-#: src/chage.c:505
+#: src/chage.c:508
#, c-format
msgid "%s: unknown user: %s\n"
msgstr "%s: nieznany u¿ytkownik: %s\n"
-#: src/chage.c:524
+#: src/chage.c:527
#, c-format
msgid "%s: can't lock shadow password file\n"
msgstr "%s: nie mogê zablokowaæ pliku z ukrytymi has³ami\n"
-#: src/chage.c:531
+#: src/chage.c:534
#, c-format
msgid "%s: can't open shadow password file\n"
msgstr "%s: nie mogê otworzyæ pliku z ukrytymi has³ami\n"
-#: src/chage.c:613
+#: src/chage.c:616
#, c-format
msgid "Changing the aging information for %s\n"
msgstr "Zmieniam informacjê o u¿ytkowniku %s\n"
-#: src/chage.c:615
+#: src/chage.c:618
#, c-format
msgid "%s: error changing fields\n"
msgstr "%s: b³±d podczas zmieniania pól\n"
-#: src/chage.c:642 src/chage.c:705 src/pwunconv.c:184
+#: src/chage.c:645 src/chage.c:708 src/pwunconv.c:183
#, c-format
msgid "%s: can't update password file\n"
msgstr "%s: nie mogê zaktualizowaæ pliku z has³ami\n"
-#: src/chage.c:672 src/pwunconv.c:179
+#: src/chage.c:675 src/pwunconv.c:178
#, c-format
msgid "%s: can't update shadow password file\n"
msgstr "%s: nie mogê zaktualizowaæ pliku z ukrytymi has³ami\n"
-#: src/chage.c:721 src/chage.c:736 src/chfn.c:572 src/chsh.c:411
-#: src/passwd.c:827 src/passwd.c:928
+#: src/chage.c:724 src/chage.c:739 src/chfn.c:571 src/chsh.c:410
+#: src/passwd.c:825 src/passwd.c:926
msgid "Error updating the DBM password entry.\n"
msgstr "B³±d podczas aktualizacki bazy hase³ DBM.\n"
-#: src/chage.c:753
+#: src/chage.c:756
#, c-format
msgid "%s: can't rewrite shadow password file\n"
msgstr "%s: nie mogê przepisaæ pliku z ukrytymi has³ami\n"
-#: src/chage.c:767
+#: src/chage.c:770
#, c-format
msgid "%s: can't rewrite password file\n"
msgstr "%s: nie mogê przepisaæ pliku z has³ami\n"
-#: src/chage.c:816
+#: src/chage.c:821
#, c-format
msgid "%s: no aging information present\n"
msgstr "%s: brak informacji\n"
-#: src/chfn.c:108
+#: src/chfn.c:107
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n"
"U¿ycie: %s [ -f imiê_nazwisko ] [ -r nr_pokoju ] [ -w tel_praca ]\n"
"\t[ -h tel_dom ] [ -o inne ] [ u¿ytkownik ]\n"
-#: src/chfn.c:112
+#: src/chfn.c:111
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n"
"U¿ycie: %s [ -f imiê_nazwisko ] [ -r nr_pokoju ] [ -w tel_praca ] [ -h "
"tel_dom ]\n"
-#: src/chfn.c:164 src/chsh.c:120
+#: src/chfn.c:163 src/chsh.c:119
msgid "Enter the new value, or press return for the default\n"
msgstr "Wpisz now± warto¶æ lub wci¶nij return by przyj±c warto¶æ standardow±\n"
-#: src/chfn.c:167
+#: src/chfn.c:166
msgid "Full Name"
msgstr "Imiê i nazwisko"
-#: src/chfn.c:169
+#: src/chfn.c:168
#, c-format
msgid "\tFull Name: %s\n"
msgstr "\tImiê i nazwisko: %s\n"
-#: src/chfn.c:172
+#: src/chfn.c:171
msgid "Room Number"
msgstr "Numer pokoju"
-#: src/chfn.c:174
+#: src/chfn.c:173
#, c-format
msgid "\tRoom Number: %s\n"
msgstr "\tNumer pokoju: %s\n"
-#: src/chfn.c:177
+#: src/chfn.c:176
msgid "Work Phone"
msgstr "Telefon do pracy"
-#: src/chfn.c:179
+#: src/chfn.c:178
#, c-format
msgid "\tWork Phone: %s\n"
msgstr "\tTelefon do pracy: %s\n"
-#: src/chfn.c:182
+#: src/chfn.c:181
msgid "Home Phone"
msgstr "Telefon domowy"
-#: src/chfn.c:184
+#: src/chfn.c:183
#, c-format
msgid "\tHome Phone: %s\n"
msgstr "\tTelefon domowy: %s\n"
-#: src/chfn.c:187
+#: src/chfn.c:186
msgid "Other"
msgstr "Inne"
-#: src/chfn.c:300 src/chfn.c:308 src/chfn.c:316 src/chfn.c:324 src/chfn.c:332
-#: src/chfn.c:393 src/passwd.c:1228
+#: src/chfn.c:299 src/chfn.c:307 src/chfn.c:315 src/chfn.c:323 src/chfn.c:331
+#: src/chfn.c:392 src/passwd.c:1226
#, c-format
msgid "%s: Permission denied.\n"
msgstr "%s: Brak praw dostêpu.\n"
-#: src/chfn.c:353 src/chsh.c:226 src/passwd.c:1279
+#: src/chfn.c:352 src/chsh.c:225 src/passwd.c:1277
#, c-format
msgid "%s: Unknown user %s\n"
msgstr "%s: Nieznany u¿ytkownik %s\n"
-#: src/chfn.c:359 src/chsh.c:234 src/passwd.c:1209
+#: src/chfn.c:358 src/chsh.c:233 src/passwd.c:1207
#, c-format
msgid "%s: Cannot determine your user name.\n"
msgstr "%s: Nie mogê ustaliæ twojej nazwy u¿ytkownika.\n"
-#: src/chfn.c:375 src/chsh.c:252
+#: src/chfn.c:374 src/chsh.c:251
#, c-format
msgid "%s: cannot change user `%s' on NIS client.\n"
msgstr "%s: nie mogê zmieniæ u¿ytkownika `%s' na kliencie NIS.\n"
-#: src/chfn.c:380 src/chsh.c:259
+#: src/chfn.c:379 src/chsh.c:258
#, c-format
msgid "%s: `%s' is the NIS master for this client.\n"
msgstr "%s: `%s' jest nadrzêdnym serwerm NIS dla tego klienta.\n"
-#: src/chfn.c:455
+#: src/chfn.c:454
#, c-format
msgid "Changing the user information for %s\n"
msgstr "Zmieniam informacjê o u¿ytkowniku %s\n"
-#: src/chfn.c:464
+#: src/chfn.c:463
#, c-format
msgid "%s: invalid name: \"%s\"\n"
msgstr "%s: nieprawid³owa nazwa: \"%s\"\n"
-#: src/chfn.c:469
+#: src/chfn.c:468
#, c-format
msgid "%s: invalid room number: \"%s\"\n"
msgstr "%s: nieprawid³owy numer pokoju: \"%s\"\n"
-#: src/chfn.c:474
+#: src/chfn.c:473
#, c-format
msgid "%s: invalid work phone: \"%s\"\n"
msgstr "%s: nieprawid³owy numer telefonu do pracy: \"%s\"\n"
-#: src/chfn.c:479
+#: src/chfn.c:478
#, c-format
msgid "%s: invalid home phone: \"%s\"\n"
msgstr "%s: nieprawid³owy numer telefonu domowego: \"%s\"\n"
-#: src/chfn.c:484
+#: src/chfn.c:483
#, c-format
msgid "%s: \"%s\" contains illegal characters\n"
msgstr "%s: \"%s\" zawiera nieprawid³owe znaki\n"
-#: src/chfn.c:496
+#: src/chfn.c:495
#, c-format
msgid "%s: fields too long\n"
msgstr "%s: pola zbyt d³ugie\n"
-#: src/chfn.c:511 src/chsh.c:349 src/gpasswd.c:583 src/passwd.c:1390
+#: src/chfn.c:510 src/chsh.c:348 src/gpasswd.c:582 src/passwd.c:1388
msgid "Cannot change ID to root.\n"
msgstr "Nie mogê zmieniæ ID na root.\n"
-#: src/chfn.c:524 src/chsh.c:363 src/passwd.c:737 src/passwd.c:882
+#: src/chfn.c:523 src/chsh.c:362 src/passwd.c:735 src/passwd.c:880
msgid "Cannot lock the password file; try again later.\n"
msgstr "Nie mogê zablokowaæ pliku z has³ami; spróbuj pó¼niej.\n"
-#: src/chfn.c:530 src/chsh.c:369 src/passwd.c:742 src/passwd.c:887
+#: src/chfn.c:529 src/chsh.c:368 src/passwd.c:740 src/passwd.c:885
msgid "Cannot open the password file.\n"
msgstr "Nie mogê otworzyæ pliku z has³ami.\n"
-#: src/chfn.c:547 src/chsh.c:384 src/passwd.c:748 src/usermod.c:1272
+#: src/chfn.c:546 src/chsh.c:383 src/passwd.c:746 src/usermod.c:1271
#, c-format
msgid "%s: %s not found in /etc/passwd\n"
msgstr "%s: %s nie znaleziony w /etc/passwd\n"
-#: src/chfn.c:564 src/chsh.c:403 src/passwd.c:821 src/passwd.c:922
-#: src/passwd.c:962
+#: src/chfn.c:563 src/chsh.c:402 src/passwd.c:819 src/passwd.c:920
+#: src/passwd.c:960
msgid "Error updating the password entry.\n"
msgstr "B³±d podczas aktualizacji wpisu do bazy hase³.\n"
-#: src/chfn.c:587 src/chsh.c:426 src/passwd.c:834 src/passwd.c:935
+#: src/chfn.c:586 src/chsh.c:425 src/passwd.c:832 src/passwd.c:933
msgid "Cannot commit password file changes.\n"
msgstr "Wprowadzenie zmian do pliku passwd jest niemo¿liwe.\n"
-#: src/chfn.c:594 src/chsh.c:433
+#: src/chfn.c:593 src/chsh.c:432
msgid "Cannot unlock the password file.\n"
msgstr "Nie mogê usun±c blokady z pliku z has³ami.\n"
-#: src/chpasswd.c:78
+#: src/chpasswd.c:76
#, c-format
msgid "usage: %s [-e]\n"
msgstr "u¿ycie: %s [-e]\n"
-#: src/chpasswd.c:134 src/pwconv.c:105
+#: src/chpasswd.c:132 src/pwconv.c:104
#, c-format
msgid "%s: can't lock shadow file\n"
msgstr "%s: nie mogê zablokowaæ pliku z ukrytymi has³ami\n"
-#: src/chpasswd.c:139 src/gpasswd.c:609 src/pwconv.c:110 src/pwunconv.c:119
-#: src/pwunconv.c:124
+#: src/chpasswd.c:137 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:118
+#: src/pwunconv.c:123
#, c-format
msgid "%s: can't open shadow file\n"
msgstr "%s: nie mogê otworzyæ pliku z ukrytymi has³ami\n"
-#: src/chpasswd.c:161 src/newusers.c:418
+#: src/chpasswd.c:159 src/newusers.c:415
#, c-format
msgid "%s: line %d: line too long\n"
msgstr "%s: linia %d: linia zbyt d³uga\n"
-#: src/chpasswd.c:181
+#: src/chpasswd.c:179
#, c-format
msgid "%s: line %d: missing new password\n"
msgstr "%s: linia %d: brakuje nowego has³a\n"
-#: src/chpasswd.c:197
+#: src/chpasswd.c:195
#, c-format
msgid "%s: line %d: unknown user %s\n"
msgstr "%s: linia %d: nieznany u¿ytkownik %s\n"
-#: src/chpasswd.c:249
+#: src/chpasswd.c:247
#, c-format
msgid "%s: line %d: cannot update password entry\n"
msgstr "%s: linia %d: nie mogê zaktualizowaæ wpisu do bazy hase³\n"
-#: src/chpasswd.c:265 src/newusers.c:538
+#: src/chpasswd.c:263 src/newusers.c:535
#, c-format
msgid "%s: error detected, changes ignored\n"
msgstr "%s: wykryto b³±d, zignorowano modyfikacje\n"
-#: src/chpasswd.c:276
+#: src/chpasswd.c:274
#, c-format
msgid "%s: error updating shadow file\n"
msgstr "%s: b³±d podczas aktualizacji pliku z ukrytymi has³ami\n"
-#: src/chpasswd.c:284
+#: src/chpasswd.c:282
#, c-format
msgid "%s: error updating password file\n"
msgstr "%s: b³±d podczas aktualizacji pliku z has³ami\n"
-#: src/chsh.c:106
+#: src/chsh.c:105
#, c-format
msgid "Usage: %s [ -s shell ] [ name ]\n"
msgstr "U¿ycie: %s [ -s pow³oka ] [ nazwa ]\n"
-#: src/chsh.c:121
+#: src/chsh.c:120
msgid "Login Shell"
msgstr "Pow³oka logowania"
-#: src/chsh.c:275 src/chsh.c:288
+#: src/chsh.c:274 src/chsh.c:287
#, c-format
msgid "You may not change the shell for %s.\n"
msgstr "Nie mo¿esz zmieniaæ pow³oki dla %s.\n"
-#: src/chsh.c:317
+#: src/chsh.c:316
#, c-format
msgid "Changing the login shell for %s\n"
msgstr "Zmieniam pow³okê logowania dla %s\n"
-#: src/chsh.c:329
+#: src/chsh.c:328
#, c-format
msgid "%s: Invalid entry: %s\n"
msgstr "%s: Nieprawid³owy wpis: %s\n"
-#: src/chsh.c:334
+#: src/chsh.c:333
#, c-format
msgid "%s is an invalid shell.\n"
msgstr "%s jest nieprawid³ow± pow³ok±.\n"
-#: src/dpasswd.c:71
+#: src/dpasswd.c:69
#, c-format
msgid "Usage: %s [ -(a|d) ] shell\n"
msgstr "U¿ycie: %s [ -(a|d) ] pow³oka\n"
-#: src/dpasswd.c:136
+#: src/dpasswd.c:134
msgid "Shell password: "
msgstr "Has³o pow³oki: "
-#: src/dpasswd.c:142
+#: src/dpasswd.c:140
msgid "re-enter Shell password: "
msgstr "Wpisz ponownie has³o pow³oki: "
-#: src/dpasswd.c:149
+#: src/dpasswd.c:147
#, c-format
msgid "%s: Passwords do not match, try again.\n"
msgstr "%s: Has³a nie pasuj±, spróbuj ponownie.\n"
-#: src/dpasswd.c:169
+#: src/dpasswd.c:167
#, c-format
msgid "%s: can't create %s"
msgstr "%s: nie mogê utworzyæ %s"
-#: src/dpasswd.c:174
+#: src/dpasswd.c:172
#, c-format
msgid "%s: can't open %s"
msgstr "%s: nie mogê otworzyæ %s"
-#: src/dpasswd.c:202
+#: src/dpasswd.c:200
#, c-format
msgid "%s: Shell %s not found.\n"
msgstr "%s: Pow³oka %s nie znaleziona.\n"
-#: src/expiry.c:85
+#: src/expiry.c:84
msgid "Usage: expiry { -f | -c }\n"
msgstr "U¿ycie: expiry { -f | -c }\n"
-#: src/expiry.c:138
+#: src/expiry.c:137
#, c-format
msgid "%s: WARNING! Must be set-UID root!\n"
msgstr "%s: OSTRZE¯ENIE! Program musi posiadaæ SUID root!\n"
-#: src/expiry.c:149
+#: src/expiry.c:148
#, c-format
msgid "%s: unknown user\n"
msgstr "%s: nieznany u¿ytkownik\n"
-#: src/faillog.c:80
+#: src/faillog.c:79
#, c-format
msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n"
msgstr "u¿ycie: %s [-a|-u u¿ytkownik] [-m maks] [-r] [-t dni] [-l bloksek]\n"
-#: src/faillog.c:135 src/lastlog.c:95
+#: src/faillog.c:134 src/lastlog.c:94
#, c-format
msgid "Unknown User: %s\n"
msgstr "Nieznany u¿ytkownik: %s\n"
-#: src/faillog.c:216
+#: src/faillog.c:215
msgid "Username Failures Maximum Latest\n"
msgstr "U¿ytkownik Niepowodzenia Maksymalnie Ostatnio\n"
-#: src/faillog.c:233
+#: src/faillog.c:232
#, c-format
msgid " %s on %s"
msgstr " %s na %s"
-#: src/faillog.c:237
+#: src/faillog.c:236
#, c-format
msgid " [%lds left]"
msgstr " [%lds pozosta³o]"
-#: src/faillog.c:240
+#: src/faillog.c:239
#, c-format
msgid " [%lds lock]"
msgstr " [%lds blokada]"
-#: src/gpasswd.c:91
+#: src/gpasswd.c:89
#, c-format
msgid "usage: %s [-r|-R] group\n"
msgstr "u¿ycie: %s [-r|-R] grupa\n"
-#: src/gpasswd.c:92
+#: src/gpasswd.c:90
#, c-format
msgid " %s [-a user] group\n"
msgstr " %s [-a u¿ytkownik] grupa\n"
-#: src/gpasswd.c:93
+#: src/gpasswd.c:91
#, c-format
msgid " %s [-d user] group\n"
msgstr " %s [-d u¿ytkownik] grupa\n"
-#: src/gpasswd.c:95
+#: src/gpasswd.c:93
#, c-format
msgid " %s [-A user,...] [-M user,...] group\n"
msgstr " %s [-A u¿ytkownik,...] [-M u¿ytkownik,...] grupa\n"
-#: src/gpasswd.c:98
+#: src/gpasswd.c:96
#, c-format
msgid " %s [-M user,...] group\n"
msgstr " %s [-M u¿ytkownik,...] grupa\n"
-#: src/gpasswd.c:162 src/gpasswd.c:247
+#: src/gpasswd.c:160 src/gpasswd.c:245
#, c-format
msgid "%s: unknown user %s\n"
msgstr "%s: nieznany u¿ytkownik %s\n"
-#: src/gpasswd.c:174
+#: src/gpasswd.c:172
msgid "Permission denied.\n"
msgstr "Dostêp zabroniony.\n"
-#: src/gpasswd.c:259
+#: src/gpasswd.c:257
#, c-format
msgid "%s: shadow group passwords required for -A\n"
msgstr "%s: plik z ukrytymi has³ami grup wymagany dla -A\n"
-#: src/gpasswd.c:310
+#: src/gpasswd.c:308
msgid "Who are you?\n"
msgstr "Kim jeste¶?\n"
-#: src/gpasswd.c:330 src/newgrp.c:247
+#: src/gpasswd.c:328 src/newgrp.c:251
#, c-format
msgid "unknown group: %s\n"
msgstr "nieznana grupa: %s\n"
-#: src/gpasswd.c:438
+#: src/gpasswd.c:436
#, c-format
msgid "Adding user %s to group %s\n"
msgstr "Dodajê nowego u¿ytkownika %s do grupy %s\n"
-#: src/gpasswd.c:455
+#: src/gpasswd.c:453
#, c-format
msgid "Removing user %s from group %s\n"
msgstr "Usuwam u¿ytkownika %s z grupy %s\n"
-#: src/gpasswd.c:468
+#: src/gpasswd.c:466
#, c-format
msgid "%s: unknown member %s\n"
msgstr "%s: nieznany cz³onek %s\n"
-#: src/gpasswd.c:515
+#: src/gpasswd.c:513
#, c-format
msgid "%s: Not a tty\n"
msgstr "%s: To nie tty\n"
#. * the old password since the invoker is either the group
#. * owner, or root.
#.
-#: src/gpasswd.c:537
+#: src/gpasswd.c:535
#, c-format
msgid "Changing the password for group %s\n"
msgstr "Zmieniam has³o dla grupy %s\n"
-#: src/gpasswd.c:540
+#: src/gpasswd.c:538
msgid "New Password: "
msgstr "Nowe has³o: "
-#: src/gpasswd.c:545 src/passwd.c:424
+#: src/gpasswd.c:543 src/passwd.c:422
msgid "Re-enter new password: "
msgstr "Wpisz has³o ponownie: "
-#: src/gpasswd.c:557
+#: src/gpasswd.c:555
msgid "They don't match; try again"
msgstr "Nie pasuj±; spróbuj ponownie"
-#: src/gpasswd.c:561
+#: src/gpasswd.c:559
#, c-format
msgid "%s: Try again later\n"
msgstr "%s: Spróbuj ponownie pó¼niej\n"
-#: src/gpasswd.c:591
+#: src/gpasswd.c:590
#, c-format
msgid "%s: can't get lock\n"
msgstr "%s: nie mogê zablokowaæ\n"
-#: src/gpasswd.c:597
+#: src/gpasswd.c:596
#, c-format
msgid "%s: can't get shadow lock\n"
msgstr "%s: nie mogê zablokowaæ pliku z ukrytymi has³ami\n"
-#: src/gpasswd.c:603
+#: src/gpasswd.c:602
#, c-format
msgid "%s: can't open file\n"
msgstr "%s: nie mogê otworzyæ pliku\n"
-#: src/gpasswd.c:615
+#: src/gpasswd.c:614
#, c-format
msgid "%s: can't update entry\n"
msgstr "%s: nie mogê zaktualizowaæ wpisu\n"
-#: src/gpasswd.c:621
+#: src/gpasswd.c:620
#, c-format
msgid "%s: can't update shadow entry\n"
msgstr "%s: nie mogê zaktualizowaæ wpisu do pliku z ukrytymi has³ami\n"
-#: src/gpasswd.c:627
+#: src/gpasswd.c:626
#, c-format
msgid "%s: can't re-write file\n"
msgstr "%s: nie mogê przepisaæ pliku\n"
-#: src/gpasswd.c:633
+#: src/gpasswd.c:632
#, c-format
msgid "%s: can't re-write shadow file\n"
msgstr "%s: nie mogê przepisaæ pliku z ukrytymi has³ami\n"
-#: src/gpasswd.c:641
+#: src/gpasswd.c:640
#, c-format
msgid "%s: can't unlock file\n"
msgstr "%s: nie mogê usun±c blokady z pliku\n"
-#: src/gpasswd.c:646
+#: src/gpasswd.c:645
#, c-format
msgid "%s: can't update DBM files\n"
msgstr "%s: nie mogê zaktualizwoaæ plików DBM\n"
-#: src/gpasswd.c:653
+#: src/gpasswd.c:652
#, c-format
msgid "%s: can't update DBM shadow files\n"
msgstr "%s: nie mogê zaktualizowaæ pliku DBM z ukrytymi has³ami\n"
-#: src/groupadd.c:106
+#: src/groupadd.c:105
msgid "usage: groupadd [-g gid [-o]] group\n"
msgstr "u¿ycie: groupadd [-g gid [-o]] grupa\n"
-#: src/groupadd.c:174 src/groupadd.c:197 src/groupmod.c:184 src/groupmod.c:231
-#: src/useradd.c:932 src/usermod.c:513 src/usermod.c:649
+#: src/groupadd.c:173 src/groupadd.c:196 src/groupmod.c:183 src/groupmod.c:230
+#: src/useradd.c:931 src/usermod.c:512 src/usermod.c:648
#, c-format
msgid "%s: error adding new group entry\n"
msgstr "%s: b³±d podczas dodawania nowej grupy\n"
-#: src/groupadd.c:184 src/groupadd.c:207 src/groupmod.c:200 src/useradd.c:943
-#: src/usermod.c:525 src/usermod.c:661
+#: src/groupadd.c:183 src/groupadd.c:206 src/groupmod.c:199 src/useradd.c:942
+#: src/usermod.c:524 src/usermod.c:660
#, c-format
msgid "%s: cannot add new dbm group entry\n"
msgstr "%s: nie mogê dodaæ nowego wpisu do bazy dbm grup\n"
-#: src/groupadd.c:259 src/useradd.c:997
+#: src/groupadd.c:258 src/useradd.c:996
#, c-format
msgid "%s: name %s is not unique\n"
msgstr "%s: nazwa %s nie jest niepowtarzalny\n"
-#: src/groupadd.c:274
+#: src/groupadd.c:273
#, c-format
msgid "%s: gid %ld is not unique\n"
msgstr "%s: gid %ld nie jest niepowtarzalny\n"
-#: src/groupadd.c:298
+#: src/groupadd.c:297
#, c-format
msgid "%s: can't get unique gid\n"
msgstr "%s: nie mogê uzyskaæ niepowtarzalnego gid\n"
#.
#. * All invalid group names land here.
#.
-#: src/groupadd.c:322 src/groupmod.c:342
+#: src/groupadd.c:321 src/groupmod.c:341
#, c-format
msgid "%s: %s is a not a valid group name\n"
msgstr "%s: %s: nie jest prawid³ow± nazw± grupy\n"
-#: src/groupadd.c:351 src/groupmod.c:368
+#: src/groupadd.c:350 src/groupmod.c:367
#, c-format
msgid "%s: invalid group %s\n"
msgstr "%s: nieprawid³owa grupa %s\n"
-#: src/groupadd.c:368 src/useradd.c:1273
+#: src/groupadd.c:367 src/useradd.c:1272
#, c-format
msgid "%s: -O requires NAME=VALUE\n"
msgstr "%s: -O wymaga ZMIENNA=WARTO¦Æ\n"
-#: src/groupadd.c:413 src/groupdel.c:168 src/groupmod.c:404 src/useradd.c:1382
-#: src/userdel.c:273 src/usermod.c:537
+#: src/groupadd.c:412 src/groupdel.c:167 src/groupmod.c:403 src/useradd.c:1381
+#: src/userdel.c:303 src/usermod.c:536
#, c-format
msgid "%s: cannot rewrite group file\n"
msgstr "%s: nie mogê przepisaæ pliku z grupami\n"
-#: src/groupadd.c:419 src/groupdel.c:174 src/groupmod.c:410 src/useradd.c:1390
-#: src/userdel.c:279 src/usermod.c:674
+#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1389
+#: src/userdel.c:309 src/usermod.c:673
#, c-format
msgid "%s: cannot rewrite shadow group file\n"
msgstr "%s: nie mogê przepisaæ pliku z ukrytymi grupami\n"
-#: src/groupadd.c:438 src/groupdel.c:193 src/groupmod.c:429 src/userdel.c:359
+#: src/groupadd.c:437 src/groupdel.c:192 src/groupmod.c:428 src/userdel.c:389
#, c-format
msgid "%s: unable to lock group file\n"
msgstr "%s: nie mogê zablokowaæ pliku z grupami\n"
-#: src/groupadd.c:442 src/groupdel.c:197 src/groupmod.c:433
+#: src/groupadd.c:441 src/groupdel.c:196 src/groupmod.c:432
#, c-format
msgid "%s: unable to open group file\n"
msgstr "%s: nie mogê otworzyæ pliku z grupami\n"
-#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 src/userdel.c:368
+#: src/groupadd.c:446 src/groupdel.c:201 src/groupmod.c:437 src/userdel.c:398
#, c-format
msgid "%s: unable to lock shadow group file\n"
msgstr "%s: nie mogê zablokowaæ pliku z ukrytymi grupami\n"
-#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443
+#: src/groupadd.c:451 src/groupdel.c:206 src/groupmod.c:442
#, c-format
msgid "%s: unable to open shadow group file\n"
msgstr "%s: nie mogê otworzyæ pliku z ukrytymi grupami\n"
-#: src/groupadd.c:519
+#: src/groupadd.c:518
#, c-format
msgid "%s: group %s exists\n"
msgstr "%s: grupa %s istnieje\n"
-#: src/groupdel.c:87
+#: src/groupdel.c:86
msgid "usage: groupdel group\n"
msgstr "u¿ycie: groupdel grupa\n"
-#: src/groupdel.c:105 src/groupmod.c:188 src/groupmod.c:235
+#: src/groupdel.c:104 src/groupmod.c:187 src/groupmod.c:234
#, c-format
msgid "%s: error removing group entry\n"
msgstr "%s: b³±d podczas usuwania grupy\n"
-#: src/groupdel.c:117 src/groupmod.c:207
+#: src/groupdel.c:116 src/groupmod.c:206
#, c-format
msgid "%s: error removing group dbm entry\n"
msgstr "%s: b³±d podczas usuwania wpisu dbm o grupie\n"
-#: src/groupdel.c:132
+#: src/groupdel.c:131
#, c-format
msgid "%s: error removing shadow group entry\n"
msgstr "%s: b³±d podczas usuwania wpisu o ukrytej grupie\n"
-#: src/groupdel.c:145 src/groupmod.c:253
+#: src/groupdel.c:144 src/groupmod.c:252
#, c-format
msgid "%s: error removing shadow group dbm entry\n"
msgstr "%s: b³±d podczas usuwania wpisu dbm z pliku ukrytych grup\n"
#.
#. * Can't remove the group.
#.
-#: src/groupdel.c:249
+#: src/groupdel.c:248
#, c-format
msgid "%s: cannot remove user's primary group.\n"
msgstr "%s: nie mogê usun±æ podstawowej grupy u¿ytkowników.\n"
-#: src/groupdel.c:306 src/groupmod.c:502
+#: src/groupdel.c:305 src/groupmod.c:501
#, c-format
msgid "%s: group %s does not exist\n"
msgstr "%s: grupa %s nie isnieje\n"
-#: src/groupdel.c:320 src/groupmod.c:518
+#: src/groupdel.c:319 src/groupmod.c:517
#, c-format
msgid "%s: group %s is a NIS group\n"
msgstr "%s: grupa %s jest grup± NIS\n"
-#: src/groupdel.c:326 src/groupmod.c:524 src/userdel.c:731 src/usermod.c:990
+#: src/groupdel.c:325 src/groupmod.c:523 src/userdel.c:761 src/usermod.c:989
#, c-format
msgid "%s: %s is the NIS master\n"
msgstr "%s: %s jest g³ównym serwerem NIS\n"
-#: src/groupmod.c:106
+#: src/groupmod.c:105
msgid "usage: groupmod [-g gid [-o]] [-n name] group\n"
msgstr "u¿ycie: groupmod [-g gid [-o]] [-n nazwa] grupa\n"
-#: src/groupmod.c:166
+#: src/groupmod.c:165
#, fuzzy, c-format
msgid "%s: %s not found in /etc/group\n"
msgstr "%s: %s nie znaleziony w /etc/passwd\n"
-#: src/groupmod.c:247
+#: src/groupmod.c:246
#, c-format
msgid "%s: cannot add new dbm shadow group entry\n"
msgstr "%s: nie mogê dodaæ nowego wpisu dbm do pliku z ukrytymi grupami\n"
-#: src/groupmod.c:300
+#: src/groupmod.c:299
#, c-format
msgid "%s: %ld is not a unique gid\n"
msgstr "%s: %ld nie jest niepowtarzalnym gid\n"
-#: src/groupmod.c:331
+#: src/groupmod.c:330
#, c-format
msgid "%s: %s is not a unique name\n"
msgstr "%s: %s nie jest niepowtarzaln± nazw±\n"
-#: src/groups.c:63
+#: src/groups.c:62
#, c-format
msgid "unknown user %s\n"
msgstr "nieznany u¿ytkownik %s\n"
-#: src/grpck.c:99
+#: src/grpck.c:98
#, c-format
msgid "Usage: %s [ -r ] [ group [ gshadow ] ]\n"
msgstr "U¿ycie: %s [ -r ] [ grupa [ gshadow ] ]\n"
-#: src/grpck.c:101
+#: src/grpck.c:100
#, c-format
msgid "Usage: %s [ -r ] [ group ]\n"
msgstr "U¿ycie: %s [ -r ] [ grupa ]\n"
-#: src/grpck.c:120 src/pwck.c:120
+#: src/grpck.c:119 src/pwck.c:119
msgid "No"
msgstr "Nie"
-#: src/grpck.c:235 src/grpck.c:243 src/pwck.c:217 src/pwck.c:226
+#: src/grpck.c:234 src/grpck.c:242 src/pwck.c:216 src/pwck.c:225
#, c-format
msgid "%s: cannot lock file %s\n"
msgstr "%s: nie mogê zablokowaæ pliku %s\n"
-#: src/grpck.c:258 src/grpck.c:266 src/mkpasswd.c:217 src/pwck.c:242
-#: src/pwck.c:251
+#: src/grpck.c:257 src/grpck.c:265 src/mkpasswd.c:216 src/pwck.c:241
+#: src/pwck.c:250
#, c-format
msgid "%s: cannot open file %s\n"
msgstr "%s: nie mogê otworzyæ pliku %s\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:299
+#: src/grpck.c:298
msgid "invalid group file entry\n"
msgstr "nieprawid³owy wpis do pliku grup\n"
-#: src/grpck.c:300 src/grpck.c:363 src/grpck.c:455 src/grpck.c:518
-#: src/grpck.c:535 src/pwck.c:287 src/pwck.c:349 src/pwck.c:456 src/pwck.c:518
-#: src/pwck.c:542
+#: src/grpck.c:299 src/grpck.c:362 src/grpck.c:454 src/grpck.c:517
+#: src/grpck.c:534 src/pwck.c:286 src/pwck.c:348 src/pwck.c:455 src/pwck.c:517
+#: src/pwck.c:541
#, c-format
msgid "delete line `%s'? "
msgstr "usun±c liniê `%s'? "
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:362
+#: src/grpck.c:361
msgid "duplicate group entry\n"
msgstr "duplikat wpisu grup\n"
-#: src/grpck.c:379
+#: src/grpck.c:378
#, c-format
msgid "invalid group name `%s'\n"
msgstr "nieprawid³owa nazwa grupy `%s'\n"
-#: src/grpck.c:389
+#: src/grpck.c:388
#, c-format
msgid "group %s: bad GID (%d)\n"
msgstr "grupa %s: z³y GID (%d)\n"
-#: src/grpck.c:415
+#: src/grpck.c:414
#, c-format
msgid "group %s: no user %s\n"
msgstr "grupa %s: nie ma u¿ytkownika %s\n"
-#: src/grpck.c:417 src/grpck.c:586
+#: src/grpck.c:416 src/grpck.c:585
#, c-format
msgid "delete member `%s'? "
msgstr "skasowaæ cz³onka `%s'? "
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:454
+#: src/grpck.c:453
msgid "invalid shadow group file entry\n"
msgstr "nieprawid³owy wpis do pliku z ukrytymi has³ami\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:517
+#: src/grpck.c:516
msgid "duplicate shadow group entry\n"
msgstr "duplikuj±cy siê wpis w pliku ukrytych grup\n"
-#: src/grpck.c:534
+#: src/grpck.c:533
msgid "no matching group file entry\n"
msgstr "brak pasuj±cego wpisu w pliku grup\n"
-#: src/grpck.c:554
+#: src/grpck.c:553
#, c-format
msgid "shadow group %s: no administrative user %s\n"
msgstr "ukryta grupa %s: brak u¿ytkownika administracyjnego %s\n"
-#: src/grpck.c:556
+#: src/grpck.c:555
#, c-format
msgid "delete administrative member `%s'? "
msgstr "usun±æ cz³onka administracyjnego `%s'? "
-#: src/grpck.c:584
+#: src/grpck.c:583
#, c-format
msgid "shadow group %s: no user %s\n"
msgstr "ukryta grupa %s: nie ma u¿ytkownika %s\n"
-#: src/grpck.c:611 src/grpck.c:617 src/pwck.c:573 src/pwck.c:581
+#: src/grpck.c:610 src/grpck.c:616 src/pwck.c:572 src/pwck.c:580
#, c-format
msgid "%s: cannot update file %s\n"
msgstr "%s: nie mogê zaktualizowaæ pliku %s\n"
-#: src/grpck.c:641 src/pwck.c:607
+#: src/grpck.c:640 src/pwck.c:606
#, c-format
msgid "%s: the files have been updated; run mkpasswd\n"
msgstr "%s: pliki zosta³y zaktualizowane; uruchom mkpasswd\n"
-#: src/grpck.c:642 src/grpck.c:646 src/pwck.c:608 src/pwck.c:612
+#: src/grpck.c:641 src/grpck.c:645 src/pwck.c:607 src/pwck.c:611
#, c-format
msgid "%s: no changes\n"
msgstr "%s: bez zmian\n"
-#: src/grpck.c:645 src/pwck.c:611
+#: src/grpck.c:644 src/pwck.c:610
#, c-format
msgid "%s: the files have been updated\n"
msgstr "%s: pliku zost³y zaktualizowane\n"
-#: src/grpconv.c:63 src/grpunconv.c:64
+#: src/grpconv.c:62 src/grpunconv.c:63
#, c-format
msgid "%s: can't lock group file\n"
msgstr "%s: nie mogê zablokowaæ pliku z grupami\n"
-#: src/grpconv.c:68 src/grpunconv.c:69
+#: src/grpconv.c:67 src/grpunconv.c:68
#, c-format
msgid "%s: can't open group file\n"
msgstr "%s: nie mogê otworzyæ pliku z grupami\n"
-#: src/grpconv.c:73 src/grpunconv.c:74
+#: src/grpconv.c:72 src/grpunconv.c:73
#, c-format
msgid "%s: can't lock shadow group file\n"
msgstr "%s: nie mogê zablokowaæ pliku z przes³oniêtymi grupami\n"
-#: src/grpconv.c:78 src/grpunconv.c:79
+#: src/grpconv.c:77 src/grpunconv.c:78
#, c-format
msgid "%s: can't open shadow group file\n"
msgstr "%s: nie mogê otworzyæ pliku z przes³oniêtymi grupami\n"
#.
#. * This shouldn't happen (the entry exists) but...
#.
-#: src/grpconv.c:94
+#: src/grpconv.c:93
#, c-format
msgid "%s: can't remove shadow group %s\n"
msgstr "%s: nie mogê usun±æ ukrytej grupy %s\n"
-#: src/grpconv.c:135 src/pwconv.c:161
+#: src/grpconv.c:134 src/pwconv.c:160
#, c-format
msgid "%s: can't update shadow entry for %s\n"
msgstr "%s: nie mogê zaktualizowaæ wpisu ukrytej grupy dla %s\n"
-#: src/grpconv.c:144 src/grpunconv.c:95
+#: src/grpconv.c:143 src/grpunconv.c:94
#, c-format
msgid "%s: can't update entry for group %s\n"
msgstr "%s: nie mogê zaktualizowaæ wpisu dla grupy %s\n"
-#: src/grpconv.c:151 src/grpunconv.c:103
+#: src/grpconv.c:150 src/grpunconv.c:102
#, c-format
msgid "%s: can't update shadow group file\n"
msgstr "%s: nie mogê zaktualizowaæ pliku z ukrytymi grupami\n"
-#: src/grpconv.c:155 src/grpunconv.c:108
+#: src/grpconv.c:154 src/grpunconv.c:107
#, c-format
msgid "%s: can't update group file\n"
msgstr "%s: nie mogê zaktualizowaæ pliku z grupami\n"
-#: src/grpconv.c:170 src/grpunconv.c:129
+#: src/grpconv.c:169 src/grpunconv.c:128
#, c-format
msgid "%s: not configured for shadow group support.\n"
msgstr "%s: nie skonfigurowany dla wsparcia ukrytych grup.\n"
-#: src/grpunconv.c:113
+#: src/grpunconv.c:112
#, c-format
msgid "%s: can't delete shadow group file\n"
msgstr "%s: nie mogê skasowaæ pliku z ukrytymi grupami\n"
-#: src/id.c:57
+#: src/id.c:56
msgid "usage: id [ -a ]\n"
msgstr "u¿ycie: id [ -a ]\n"
-#: src/id.c:59
+#: src/id.c:58
msgid "usage: id\n"
msgstr "u¿ycie: id\n"
-#: src/id.c:119
+#: src/id.c:118
#, c-format
msgid "uid=%d(%s)"
msgstr "uid=%d(%s)"
-#: src/id.c:121
+#: src/id.c:120
#, c-format
msgid "uid=%d"
msgstr "uid=%d"
-#: src/id.c:125
+#: src/id.c:124
#, c-format
msgid " gid=%d(%s)"
msgstr " gid=%d(%s)"
-#: src/id.c:127
+#: src/id.c:126
#, c-format
msgid " gid=%d"
msgstr " gid=%d"
-#: src/id.c:137
+#: src/id.c:136
#, c-format
msgid " euid=%d(%s)"
msgstr " euid=%d(%s)"
-#: src/id.c:139
+#: src/id.c:138
#, c-format
msgid " euid=%d"
msgstr " euid=%d"
-#: src/id.c:144
+#: src/id.c:143
#, c-format
msgid " egid=%d(%s)"
msgstr " egid=%d(%s)"
-#: src/id.c:146
+#: src/id.c:145
#, c-format
msgid " egid=%d"
msgstr " egid=%d"
#. * where "###" is a numerical value and "aaa" is the
#. * corresponding name for each respective numerical value.
#.
-#: src/id.c:167
+#: src/id.c:166
msgid " groups="
msgstr " grupy="
-#: src/lastlog.c:168
+#: src/lastlog.c:167
msgid "Username Port From Latest\n"
msgstr "U¿ytkownik Port Z Ostatnio\n"
-#: src/lastlog.c:170
+#: src/lastlog.c:169
msgid "Username Port Latest\n"
msgstr "U¿ytkownik Port Ostatnio\n"
-#: src/lastlog.c:184
+#: src/lastlog.c:183
msgid "**Never logged in**"
msgstr "**Nigdy nie zalogowany**"
-#: src/login.c:199
+#: src/login.c:198
#, c-format
msgid "usage: %s [-p] [name]\n"
msgstr "u¿ycie: %s [-p] [nazwa]\n"
-#: src/login.c:202
+#: src/login.c:201
#, c-format
msgid " %s [-p] [-h host] [-f name]\n"
msgstr " %s [-p] [-h host] [-f nazwa]\n"
-#: src/login.c:204
+#: src/login.c:203
#, c-format
msgid " %s [-p] -r host\n"
msgstr " %s [-p] -r host\n"
-#: src/login.c:287
+#: src/login.c:286
msgid "Invalid login time\n"
msgstr "Nieprawid³owy czas logowania\n"
-#: src/login.c:342
+#: src/login.c:341
msgid ""
"\n"
"System closed for routine maintenance\n"
"\n"
"System zamkniêty do rutynowej konserwacji.\n"
-#: src/login.c:352
+#: src/login.c:351
msgid ""
"\n"
"[Disconnect bypassed -- root login allowed.]\n"
"\n"
"[Roz³±czenie pominiête -- zezwolenie na logowanie siê root-a.]\n"
-#: src/login.c:391
+#: src/login.c:390
#, c-format
msgid ""
"\n"
msgid " on `%.100s'"
msgstr " na `%.100s'"
-#: src/login.c:807
+#: src/login.c:834
#, c-format
msgid ""
"\n"
"\n"
"%s login: "
-#: src/login.c:809
+#: src/login.c:836
msgid "login: "
msgstr "login: "
-#: src/login.c:991 src/sulogin.c:233
+#: src/login.c:1026 src/sulogin.c:231
msgid "Login incorrect"
msgstr "Nieprawid³owe logowanie"
-#: src/login.c:1163
+#: src/login.c:1213
msgid "Warning: login re-enabled after temporary lockout.\n"
msgstr "Ostrze¿enie: logowanie ponownie odblokowanie po czasowej blokadzie.\n"
-#: src/login.c:1173
+#: src/login.c:1223
#, c-format
msgid "Last login: %s on %s"
msgstr "Ostatnie logowanie: %s na %s"
-#: src/login.c:1176
+#: src/login.c:1226
#, c-format
msgid "Last login: %.19s on %s"
msgstr "Ostatnie logowanie: %s na %s"
-#: src/login.c:1181
+#: src/login.c:1231
#, c-format
msgid " from %.*s"
msgstr " z %.*s"
-#: src/login.c:1246
+#: src/login.c:1303
msgid "Starting rad_login\n"
msgstr "Startujê rad_login\n"
msgstr ""
"%s: nie ma bazy DBM na tym systemie - ¿adna akcja nie zosta³a podjêta\n"
-#: src/mkpasswd.c:246 src/mkpasswd.c:250
+#: src/mkpasswd.c:245 src/mkpasswd.c:249
#, c-format
msgid "%s: cannot overwrite file %s\n"
msgstr "%s: nie mogê nadpisaæ pliku %s\n"
-#: src/mkpasswd.c:264
+#: src/mkpasswd.c:263
#, c-format
msgid "%s: cannot open DBM files for %s\n"
msgstr "%s: nie mogê otworzyæ plików DBM dla %s\n"
-#: src/mkpasswd.c:297
+#: src/mkpasswd.c:296
#, c-format
msgid "%s: the beginning with "
msgstr "%s: rozpoczyna siê od "
-#: src/mkpasswd.c:322
+#: src/mkpasswd.c:321
#, c-format
msgid "%s: error parsing line \"%s\"\n"
msgstr "%s: b³±d podczas przetwarzania lini \"%s\"\n"
-#: src/mkpasswd.c:327 src/mkpasswd.c:329 src/mkpasswd.c:331 src/mkpasswd.c:333
+#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332
msgid "adding record for name "
msgstr "dodajê rekord do nazwy "
-#: src/mkpasswd.c:337 src/mkpasswd.c:342 src/mkpasswd.c:346 src/mkpasswd.c:350
+#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349
#, c-format
msgid "%s: error adding record for "
msgstr "%s: b³±d podczas dodawania rekordu dla "
-#: src/mkpasswd.c:368
+#: src/mkpasswd.c:367
#, c-format
msgid "added %d entries, longest was %d\n"
msgstr "dodano %d wpisów, najd³u¿szy by³ %d\n"
-#: src/mkpasswd.c:383
+#: src/mkpasswd.c:382
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n"
msgstr "U¿ycie: %s [ -vf ] [ -p|g|sp|sg ] plik\n"
-#: src/mkpasswd.c:385
+#: src/mkpasswd.c:384
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n"
msgstr "U¿ycie: %s [ -vf ] [ -p|g|sp ] plik\n"
-#: src/mkpasswd.c:388
+#: src/mkpasswd.c:387
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g ] file\n"
msgstr "U¿ycie: %s [ -vf ] [ -p|g ] plik\n"
-#: src/newgrp.c:67
+#: src/newgrp.c:66
msgid "usage: newgrp [ - ] [ group ]\n"
msgstr "u¿ycie: newgrp [ - ] [ grupa ]\n"
-#: src/newgrp.c:69
+#: src/newgrp.c:68
#, fuzzy
msgid "usage: sg group [[-c] command ]\n"
msgstr "u¿ycie: sg grupa [ komenda ]\n"
-#: src/newgrp.c:122
+#: src/newgrp.c:125
#, c-format
msgid "unknown uid: %d\n"
msgstr "nieznany uid: %d\n"
-#: src/newgrp.c:198
+#: src/newgrp.c:201
#, c-format
msgid "unknown gid: %ld\n"
msgstr "nieznany gid: %ld\n"
-#: src/newgrp.c:242
+#: src/newgrp.c:245
#, c-format
msgid "unknown gid: %d\n"
msgstr "nieznany gid: %d\n"
-#: src/newgrp.c:315 src/newgrp.c:324
+#: src/newgrp.c:323 src/newgrp.c:332
msgid "Sorry.\n"
msgstr "Wybacz.\n"
-#: src/newgrp.c:356
+#: src/newgrp.c:364
msgid "too many groups\n"
msgstr "zbyt wiele grup\n"
-#: src/newusers.c:79
+#: src/newusers.c:76
#, c-format
msgid "Usage: %s [ input ]\n"
msgstr "U¿ycie: %s [ wej¶cie ]\n"
-#: src/newusers.c:367
+#: src/newusers.c:364
#, c-format
msgid "%s: can't lock /etc/passwd.\n"
msgstr "%s: nie mogê zablokowaæ /etc/passwd.\n"
-#: src/newusers.c:378
+#: src/newusers.c:375
#, c-format
msgid "%s: can't lock files, try again later\n"
msgstr "%s: nie mogê zablokowaæ plików, spróbuj pó¼niej\n"
-#: src/newusers.c:393
+#: src/newusers.c:390
#, c-format
msgid "%s: can't open files\n"
msgstr "%s: nie mogê otworzyæ plików\n"
-#: src/newusers.c:438
+#: src/newusers.c:435
#, c-format
msgid "%s: line %d: invalid line\n"
msgstr "%s: linia %d: nieprawid³owa linia\n"
-#: src/newusers.c:456
+#: src/newusers.c:453
#, c-format
msgid "%s: line %d: can't create GID\n"
msgstr "%s: linia %d: nie mogê utworzyæ GID\n"
-#: src/newusers.c:472
+#: src/newusers.c:469
#, c-format
msgid "%s: line %d: can't create UID\n"
msgstr "%s: linia %d: nie mogê utworzyæ UID\n"
-#: src/newusers.c:484
+#: src/newusers.c:481
#, c-format
msgid "%s: line %d: cannot find user %s\n"
msgstr "%s: linia %d: nie mogê znale¶æ u¿ytkownika %s\n"
-#: src/newusers.c:492
+#: src/newusers.c:489
#, c-format
msgid "%s: line %d: can't update password\n"
msgstr "%s: linia %d: nie mogê zaktualizowaæ pliku z has³ami\n"
-#: src/newusers.c:509
+#: src/newusers.c:506
#, c-format
msgid "%s: line %d: mkdir failed\n"
msgstr "%s: linia %d: mkdir nie powiod³o siê\n"
-#: src/newusers.c:513
+#: src/newusers.c:510
#, c-format
msgid "%s: line %d: chown failed\n"
msgstr "%s: linia %d: chown nie powiod³o siê\n"
-#: src/newusers.c:522
+#: src/newusers.c:519
#, c-format
msgid "%s: line %d: can't update entry\n"
msgstr "%s: linia %d: nie mogê zaktualizowaæ wpisu\n"
-#: src/newusers.c:553
+#: src/newusers.c:550
#, c-format
msgid "%s: error updating files\n"
msgstr "%s: b³±d podczas aktualizowania plików\n"
-#: src/passwd.c:241
+#: src/passwd.c:239
#, c-format
msgid "usage: %s [ -f | -s ] [ name ]\n"
msgstr "u¿ycie: %s [ -f | -s ] [ nazwa ]\n"
-#: src/passwd.c:244
+#: src/passwd.c:242
#, c-format
msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n"
msgstr " %s [ -x maks ] [ -n min ] [ -w ostrz ] [ -i nieakty ] nazwa\n"
-#: src/passwd.c:247
+#: src/passwd.c:245
#, c-format
msgid " %s { -l | -u | -d | -S | -e } name\n"
msgstr " %s { -l | -u | -d | -S | -e } nazwa\n"
-#: src/passwd.c:349
+#: src/passwd.c:347
#, c-format
msgid "User %s has a TCFS key, his old password is required.\n"
msgstr "U¿ytkownik %s posiada klucz TCFS, jego stare has³o jest wymagane.\n"
-#: src/passwd.c:350
+#: src/passwd.c:348
msgid "You can use -t option to force the change.\n"
msgstr "Nie mo¿esz u¿ywaæ opcji -t by wymusiæ zmianê.\n"
-#: src/passwd.c:356
+#: src/passwd.c:354
msgid "Old password: "
msgstr "Stare has³o: "
-#: src/passwd.c:363
+#: src/passwd.c:361
#, c-format
msgid "Incorrect password for `%s'\n"
msgstr "Nieprawid³owe has³o `%s'\n"
-#: src/passwd.c:376
+#: src/passwd.c:374
#, c-format
msgid "Warning: user %s has a TCFS key.\n"
msgstr "Ostrze¿enie: u¿ytkownik %s posiada klucz TCFS.\n"
-#: src/passwd.c:394
+#: src/passwd.c:392
#, c-format
msgid ""
"Enter the new password (minimum of %d, maximum of %d characters)\n"
"Wpisz nowe has³o (minimum %d, maksimum %d znaków)\n"
"Proszê u¿yj kombinacji wielkich i ma³ych znaków oraz cyfr.\n"
-#: src/passwd.c:401
+#: src/passwd.c:399
msgid "New password: "
msgstr "Nowe has³o: "
-#: src/passwd.c:411
+#: src/passwd.c:409
msgid "Try again.\n"
msgstr "Spróbuj ponownie.\n"
-#: src/passwd.c:420
+#: src/passwd.c:418
msgid ""
"\n"
"Warning: weak password (enter it again to use it anyway).\n"
"\n"
"Ostrze¿enie: s³abe has³o (jednak wpisz je ponowie je¶li chcesz go u¿yæ).\n"
-#: src/passwd.c:429
+#: src/passwd.c:427
msgid "They don't match; try again.\n"
msgstr "Nie pasuj±; spróbuj ponownie.\n"
-#: src/passwd.c:514 src/passwd.c:530
+#: src/passwd.c:512 src/passwd.c:528
#, c-format
msgid "The password for %s cannot be changed.\n"
msgstr "Has³o dla %s nie mo¿e byæ zmienione.\n"
-#: src/passwd.c:558
+#: src/passwd.c:556
#, c-format
msgid "Sorry, the password for %s cannot be changed yet.\n"
msgstr "Wybacz, has³o dla %s nie mo¿e byæ jeszcze zmienione.\n"
-#: src/passwd.c:695
+#: src/passwd.c:693
#, c-format
msgid "%s: out of memory\n"
msgstr "%s: brak pamiêci\n"
-#: src/passwd.c:847
+#: src/passwd.c:845
msgid "Cannot lock the TCFS key database; try again later\n"
msgstr "Nie mogê zablokowaæ bazy kluczy TCFS; spróbuj ponownie\n"
-#: src/passwd.c:853
+#: src/passwd.c:851
msgid "Cannot open the TCFS key database.\n"
msgstr "Nie mogê otworzyæ bazy kluczy TCFS.\n"
-#: src/passwd.c:859
+#: src/passwd.c:857
msgid "Error updating the TCFS key database.\n"
msgstr "B³±d podczas aktualizacji bazy kluczy TCFS.\n"
-#: src/passwd.c:864
+#: src/passwd.c:862
msgid "Cannot commit TCFS changes.\n"
msgstr "Nie mogê potwierdziæ zmian TCFS.\n"
-#: src/passwd.c:1071
+#: src/passwd.c:1069
#, c-format
msgid "%s: Cannot execute %s"
msgstr "%s: Nie mogê wykonaæ %s"
-#: src/passwd.c:1178
+#: src/passwd.c:1176
#, c-format
msgid "%s: repository %s not supported\n"
msgstr "%s: ropozytorium %s nie jest obs³ugiwane\n"
-#: src/passwd.c:1265
+#: src/passwd.c:1263
#, c-format
msgid "%s: Permission denied\n"
msgstr "%s: Dostêp zabroniony\n"
-#: src/passwd.c:1289
+#: src/passwd.c:1287
#, c-format
msgid "You may not change the password for %s.\n"
msgstr "Nie mo¿esz zmieniaæ has³a dla %s.\n"
-#: src/passwd.c:1354
+#: src/passwd.c:1352
#, c-format
msgid "Changing password for %s\n"
msgstr "Zmieniam has³o dla %s\n"
-#: src/passwd.c:1358
+#: src/passwd.c:1356
#, c-format
msgid "The password for %s is unchanged.\n"
msgstr "Has³o dla %s pozostaje niezmienione.\n"
-#: src/passwd.c:1414
+#: src/passwd.c:1412
msgid "Password changed.\n"
msgstr "Has³o zmienione.\n"
-#: src/pwck.c:99
+#: src/pwck.c:98
#, c-format
msgid "Usage: %s [ -qr ] [ passwd [ shadow ] ]\n"
msgstr "U¿ycie: %s [ -qr ] [ has³o [ shadow ] ]\n"
-#: src/pwck.c:101
+#: src/pwck.c:100
#, c-format
msgid "Usage: %s [ -qr ] [ passwd ]\n"
msgstr "U¿ycie: %s [ -qr ] [ has³o ]\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:286
+#: src/pwck.c:285
msgid "invalid password file entry\n"
msgstr "nieprawid³owy wpis do pliku z has³ami\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:348
+#: src/pwck.c:347
msgid "duplicate password entry\n"
msgstr "duplikuj±cy siê wpis w pliku z has³ami\n"
-#: src/pwck.c:364
+#: src/pwck.c:363
#, c-format
msgid "invalid user name `%s'\n"
msgstr "nieprawid³owa nazwa u¿ytkownika `%s'\n"
-#: src/pwck.c:374
+#: src/pwck.c:373
#, c-format
msgid "user %s: bad UID (%d)\n"
msgstr "u¿ytkownik %s: z³y UID (%d)\n"
#.
#. * No primary group, just give a warning
#.
-#: src/pwck.c:389
+#: src/pwck.c:388
#, c-format
msgid "user %s: no group %d\n"
msgstr "u¿ytkownik %s: brak grupy %d\n"
#.
#. * Home directory doesn't exist, give a warning
#.
-#: src/pwck.c:404
+#: src/pwck.c:403
#, c-format
msgid "user %s: directory %s does not exist\n"
msgstr "u¿ytkownik %s: katalog %s nie istnieje\n"
#.
#. * Login shell doesn't exist, give a warning
#.
-#: src/pwck.c:419
+#: src/pwck.c:418
#, c-format
msgid "user %s: program %s does not exist\n"
msgstr "u¿ytkownik %s: program %s nie istnieje\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:455
+#: src/pwck.c:454
msgid "invalid shadow password file entry\n"
msgstr "nieprawid³owy wpis w pliku z has³ami\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:517
+#: src/pwck.c:516
msgid "duplicate shadow password entry\n"
msgstr "duplikuj±cy siê wpis w pliku z ukrytymi has³ami\n"
#. * Tell the user this entry has no matching
#. * /etc/passwd entry and ask them to delete it.
#.
-#: src/pwck.c:541
+#: src/pwck.c:540
msgid "no matching password file entry\n"
msgstr "brak pasuj±cego wpisu w pliku z has³ami\n"
-#: src/pwck.c:558
+#: src/pwck.c:557
#, c-format
msgid "user %s: last password change in the future\n"
msgstr "u¿ytkownik %s: ostatnia zmiana has³a w przysz³o¶ci\n"
-#: src/pwconv.c:95 src/pwunconv.c:109
+#: src/pwconv.c:94 src/pwunconv.c:108
#, c-format
msgid "%s: can't lock passwd file\n"
msgstr "%s: nie mogê zablokowaæ pliku z has³ami\n"
-#: src/pwconv.c:100 src/pwunconv.c:114
+#: src/pwconv.c:99 src/pwunconv.c:113
#, c-format
msgid "%s: can't open passwd file\n"
msgstr "%s: nie mogê otworzyæ pliku z has³ami\n"
-#: src/pwconv.c:127
+#: src/pwconv.c:126
#, c-format
msgid "%s: can't remove shadow entry for %s\n"
msgstr "%s: nie mogê usun±æ wpisu z pliku z ukrytymi has³ami dla %s\n"
-#: src/pwconv.c:170
+#: src/pwconv.c:169
#, c-format
msgid "%s: can't update passwd entry for %s\n"
msgstr "%s: nie mogê zaktualizowaæ wpisu do pliku z has³ami dla %s\n"
-#: src/pwconv.c:177
+#: src/pwconv.c:176
#, c-format
msgid "%s: can't update shadow file\n"
msgstr "%s: nie mogê zaktualizowaæ pliku z ukrytymi has³ami\n"
-#: src/pwconv.c:181
+#: src/pwconv.c:180
#, c-format
msgid "%s: can't update passwd file\n"
msgstr "%s: nie mogê zaktualizowaæ pliku z has³ami\n"
msgid "%s: Shadow passwords are not configured.\n"
msgstr "%s: Przes³oniête has³a nie s± skonfigurowane.\n"
-#: src/pwunconv.c:172
+#: src/pwunconv.c:171
#, c-format
msgid "%s: can't update entry for user %s\n"
msgstr "%s: nie mogê zaktualizowaæ wpisu dla u¿ytkownika %s\n"
-#: src/pwunconv.c:189
+#: src/pwunconv.c:188
#, c-format
msgid "%s: can't delete shadow password file\n"
msgstr "%s: nie mogê skasowaæ pliku z ukrytymi has³ami\n"
-#: src/su.c:145
+#: src/su.c:140
msgid "Sorry."
msgstr "Wybacz."
-#: src/su.c:227
+#: src/su.c:222
#, c-format
msgid "%s: must be run from a terminal\n"
msgstr "%s: musisz uruchamiaæ z terminala\n"
-#: src/su.c:319
+#: src/su.c:311
#, c-format
msgid "%s: pam_start: error %d\n"
msgstr "%s: pam_start: b³±d %d\n"
-#: src/su.c:345
+#: src/su.c:337
#, c-format
msgid "Unknown id: %s\n"
msgstr "Nieznany id: %s\n"
#. access denied (-1) or unexpected value
-#: src/su.c:380 src/su.c:395
+#: src/su.c:372 src/su.c:387
#, c-format
msgid "You are not authorized to su %s\n"
msgstr "Nie masz autoryzacji by u¿ywaæ su %s\n"
#. require own password
-#: src/su.c:391
+#: src/su.c:383
msgid "(Enter your own password.)"
msgstr "(Wpisz swoje w³asne has³o.)"
-#: src/su.c:412
+#: src/su.c:404
#, c-format
msgid "%s: permission denied (shell).\n"
msgstr "%s: dostêp zabroniony (pow³oka).\n"
-#: src/su.c:436
+#: src/su.c:428
#, c-format
msgid ""
"%s: %s\n"
"%s: %s\n"
"(Zignorowano)\n"
-#: src/su.c:605
+#: src/su.c:628
msgid "No shell\n"
msgstr "Brak pow³oki\n"
#. must be a password file!
-#: src/sulogin.c:138
+#: src/sulogin.c:136
msgid "No password file\n"
msgstr "Brak pliku z has³ami\n"
#.
#. * Fail secure
#.
-#: src/sulogin.c:180
+#: src/sulogin.c:178
msgid "No password entry for 'root'\n"
msgstr "Brak wpisu do bazy hase³ dla 'root'\n"
#. * given we just exit.
#.
#. get a password for root
-#: src/sulogin.c:194
+#: src/sulogin.c:192
msgid ""
"\n"
"Type control-d to proceed with normal startup,\n"
"(lub podaj has³o root-a by przej¶æ do trybu utrzymania systemu):"
#. make new environment active
-#: src/sulogin.c:243
+#: src/sulogin.c:241
msgid "Entering System Maintenance Mode\n"
msgstr "Wchodzê w tryb utrzymania systemu\n"
-#: src/useradd.c:244
+#: src/useradd.c:243
#, c-format
msgid "%s: rebuild the group database\n"
msgstr "%s: przebuduj bazê grup\n"
-#: src/useradd.c:251
+#: src/useradd.c:250
#, c-format
msgid "%s: rebuild the shadow group database\n"
msgstr "%s: przebuduj bazê przes³oniêtych hase³\n"
-#: src/useradd.c:288 src/usermod.c:941
+#: src/useradd.c:287 src/usermod.c:940
#, c-format
msgid "%s: invalid numeric argument `%s'\n"
msgstr "%s: nieprawid³owy argument numeryczny `%s'\n"
-#: src/useradd.c:344
+#: src/useradd.c:343
#, c-format
msgid "%s: unknown gid %s\n"
msgstr "%s: nieznany gid %s\n"
-#: src/useradd.c:351 src/useradd.c:643 src/useradd.c:1229 src/usermod.c:253
-#: src/usermod.c:1072
+#: src/useradd.c:350 src/useradd.c:642 src/useradd.c:1228 src/usermod.c:252
+#: src/usermod.c:1071
#, c-format
msgid "%s: unknown group %s\n"
msgstr "%s: nieznana grupa %s\n"
-#: src/useradd.c:419
+#: src/useradd.c:418
#, c-format
msgid "group=%s,%ld basedir=%s skel=%s\n"
msgstr "grupa=%s,%ld kat_baz=%s skel=%s\n"
-#: src/useradd.c:422
+#: src/useradd.c:421
#, c-format
msgid "shell=%s "
msgstr "pow³oka=%s "
-#: src/useradd.c:424
+#: src/useradd.c:423
#, c-format
msgid "inactive=%ld expire=%s"
msgstr "nieaktywne=%ld wyga¶niêcie=%s"
-#: src/useradd.c:428
+#: src/useradd.c:427
#, c-format
msgid "GROUP=%ld\n"
msgstr "GRUPA=%ld\n"
-#: src/useradd.c:429
+#: src/useradd.c:428
#, c-format
msgid "HOME=%s\n"
msgstr "KAT_DOM=%s\n"
-#: src/useradd.c:431
+#: src/useradd.c:430
#, c-format
msgid "INACTIVE=%ld\n"
msgstr "NIEAKTYWNE=%ld\n"
-#: src/useradd.c:432
+#: src/useradd.c:431
#, c-format
msgid "EXPIRE=%s\n"
msgstr "WYGA¦NIÊCIE=%s\n"
-#: src/useradd.c:434
+#: src/useradd.c:433
#, c-format
msgid "SHELL=%s\n"
msgstr "POW£OKA=%s\n"
-#: src/useradd.c:435
+#: src/useradd.c:434
#, c-format
msgid "SKEL=%s\n"
msgstr "SKEL=%s\n"
-#: src/useradd.c:471
+#: src/useradd.c:470
#, c-format
msgid "%s: cannot create new defaults file\n"
msgstr "%s: nie mogê utworzyæ nowego pliku ze standardowymi ustawieniami\n"
-#: src/useradd.c:565 src/useradd.c:576
+#: src/useradd.c:564 src/useradd.c:575
#, c-format
msgid "%s: rename: %s"
msgstr "%s: zmiana nazwy: %s"
-#: src/useradd.c:663 src/usermod.c:273
+#: src/useradd.c:662 src/usermod.c:272
#, c-format
msgid "%s: group `%s' is a NIS group.\n"
msgstr "%s: grupa `%s' jest grup± NIS.\n"
-#: src/useradd.c:671 src/usermod.c:281
+#: src/useradd.c:670 src/usermod.c:280
#, c-format
msgid "%s: too many groups specified (max %d).\n"
msgstr "%s: podano zbyt wiele grup (maks %d).\n"
-#: src/useradd.c:703 src/usermod.c:313
+#: src/useradd.c:702 src/usermod.c:312
#, c-format
msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n"
msgstr "u¿ycie: %s\t[-u uid [-o]] [-g grupa] [-G grupa,...] \n"
-#: src/useradd.c:706
+#: src/useradd.c:705
msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n"
msgstr "\t\t[-d kat_dom] [-s pow³oka] [-c komentarz] [-m [-k wzór]]\n"
-#: src/useradd.c:709 src/usermod.c:319
+#: src/useradd.c:708 src/usermod.c:318
msgid "[-f inactive] [-e expire ] "
msgstr "[-f nieaktywne] [-e utrata_wa¿no¶ci ]"
-#: src/useradd.c:712
+#: src/useradd.c:711
msgid "[-A program] "
msgstr "[-A program] "
-#: src/useradd.c:714 src/usermod.c:324
+#: src/useradd.c:713 src/usermod.c:323
msgid "[-p passwd] name\n"
msgstr "[-p has³o] nazwa\n"
-#: src/useradd.c:716
+#: src/useradd.c:715
#, c-format
msgid " %s\t-D [-g group] [-b base] [-s shell]\n"
msgstr " %s\t-D [-g grupa] [-b baza] [-s pow³oka]\n"
-#: src/useradd.c:719
+#: src/useradd.c:718
msgid "\t\t[-f inactive] [-e expire ]\n"
msgstr "\t\t[-f nieaktywne] [-e utrata_wa¿no¶ci ]\n"
-#: src/useradd.c:816 src/usermod.c:446
+#: src/useradd.c:815 src/usermod.c:445
#, c-format
msgid "%s: error locking group file\n"
msgstr "%s: b³±d podczas blokowania pliku z grupami\n"
-#: src/useradd.c:820 src/usermod.c:451
+#: src/useradd.c:819 src/usermod.c:450
#, c-format
msgid "%s: error opening group file\n"
msgstr "%s: b³±d podczas otwierania pliku z grupami\n"
-#: src/useradd.c:825 src/usermod.c:558
+#: src/useradd.c:824 src/usermod.c:557
#, c-format
msgid "%s: error locking shadow group file\n"
msgstr "%s: b³±d podczas blokowania pliku z ukrytymi has³ami\n"
-#: src/useradd.c:830 src/usermod.c:564
+#: src/useradd.c:829 src/usermod.c:563
#, c-format
msgid "%s: error opening shadow group file\n"
msgstr "%s: b³±d podczas otwierania pliku z ukrytymi grupami\n"
-#: src/useradd.c:1002
+#: src/useradd.c:1001
#, c-format
msgid "%s: uid %d is not unique\n"
msgstr "%s: uid %d nie jest niepowtarzalny\n"
-#: src/useradd.c:1032
+#: src/useradd.c:1031
#, c-format
msgid "%s: can't get unique uid\n"
msgstr "%s: nie mogê uzyskaæ niepowtarzalnego uid\n"
-#: src/useradd.c:1140 src/useradd.c:1284 src/usermod.c:1020 src/usermod.c:1031
-#: src/usermod.c:1041 src/usermod.c:1087 src/usermod.c:1122
+#: src/useradd.c:1139 src/useradd.c:1283 src/usermod.c:1019 src/usermod.c:1030
+#: src/usermod.c:1040 src/usermod.c:1086 src/usermod.c:1121
#, c-format
msgid "%s: invalid field `%s'\n"
msgstr "%s: nieprawid³owe pole `%s'\n"
-#: src/useradd.c:1154
+#: src/useradd.c:1153
#, c-format
msgid "%s: invalid base directory `%s'\n"
msgstr "%s: nieprawid³owy katalog bazowy `%s'\n"
-#: src/useradd.c:1164
+#: src/useradd.c:1163
#, c-format
msgid "%s: invalid comment `%s'\n"
msgstr "%s: nieprawid³owy komentarz `%s'\n"
-#: src/useradd.c:1174
+#: src/useradd.c:1173
#, c-format
msgid "%s: invalid home directory `%s'\n"
msgstr "%s: nieprawid³owy katalog domowy `%s'\n"
-#: src/useradd.c:1192 src/usermod.c:1054
+#: src/useradd.c:1191 src/usermod.c:1053
#, c-format
msgid "%s: invalid date `%s'\n"
msgstr "%s: nieprawid³owa data `%s'\n"
-#: src/useradd.c:1204
+#: src/useradd.c:1203
#, c-format
msgid "%s: shadow passwords required for -e\n"
msgstr "%s: ukryte has³a wymagane dla -e\n"
-#: src/useradd.c:1219
+#: src/useradd.c:1218
#, c-format
msgid "%s: shadow passwords required for -f\n"
msgstr "%s: ukryte has³a wymagane dla -f\n"
-#: src/useradd.c:1293
+#: src/useradd.c:1292
#, c-format
msgid "%s: invalid shell `%s'\n"
msgstr "%s: nieprawid³owa pow³oka `%s'\n"
-#: src/useradd.c:1334
+#: src/useradd.c:1333
#, c-format
msgid "%s: invalid user name `%s'\n"
msgstr "%s: nieprawid³owa nazwa u¿ytkownika `%s'\n"
-#: src/useradd.c:1370 src/userdel.c:262 src/usermod.c:1184
+#: src/useradd.c:1369 src/userdel.c:292 src/usermod.c:1183
#, c-format
msgid "%s: cannot rewrite password file\n"
msgstr "%s: nie mogê przepisaæ pliku z has³ami\n"
-#: src/useradd.c:1375 src/userdel.c:265 src/usermod.c:1189
+#: src/useradd.c:1374 src/userdel.c:295 src/usermod.c:1188
#, c-format
msgid "%s: cannot rewrite shadow password file\n"
msgstr "%s: nie mogê przepisaæ pliku z ukrytymi has³ami\n"
-#: src/useradd.c:1415 src/userdel.c:329 src/usermod.c:1224
+#: src/useradd.c:1414 src/userdel.c:359 src/usermod.c:1223
#, c-format
msgid "%s: unable to lock password file\n"
msgstr "%s: nie mogê zablokowaæ pliku z has³ami\n"
-#: src/useradd.c:1419 src/userdel.c:333 src/usermod.c:1228
+#: src/useradd.c:1418 src/userdel.c:363 src/usermod.c:1227
#, c-format
msgid "%s: unable to open password file\n"
msgstr "%s: nie mogê otworzyæ pliku z has³ami\n"
-#: src/useradd.c:1425 src/userdel.c:338 src/usermod.c:1233
+#: src/useradd.c:1424 src/userdel.c:368 src/usermod.c:1232
#, c-format
msgid "%s: cannot lock shadow password file\n"
msgstr "%s: nie mogê zablokowaæ pliku z ukrytymi has³ami\n"
-#: src/useradd.c:1431 src/userdel.c:343 src/usermod.c:1238
+#: src/useradd.c:1430 src/userdel.c:373 src/usermod.c:1237
#, c-format
msgid "%s: cannot open shadow password file\n"
msgstr "%s: nie mogê otworzyæ pliku z ukrytymi has³ami\n"
-#: src/useradd.c:1530 src/usermod.c:1325
+#: src/useradd.c:1529 src/usermod.c:1324
#, c-format
msgid "%s: error adding authentication method\n"
msgstr "%s: b³±d podczas dodawania metody uwierzytelniania\n"
-#: src/useradd.c:1553
+#: src/useradd.c:1552
#, c-format
msgid "%s: error adding new password entry\n"
msgstr "%s: b³±d podczas dodawania nowego wpisu do pliku z has³ami\n"
-#: src/useradd.c:1568
+#: src/useradd.c:1567
#, c-format
msgid "%s: error updating password dbm entry\n"
msgstr "%s: b³±d podczas aktualizacji wpisu dbm do pliku z has³ami\n"
-#: src/useradd.c:1584 src/usermod.c:1384
+#: src/useradd.c:1583 src/usermod.c:1383
#, c-format
msgid "%s: error adding new shadow password entry\n"
msgstr "%s: b³±d podczas dodawania nowego wpisu do pliku z ukrytymi has³ami\n"
-#: src/useradd.c:1600 src/usermod.c:1399
+#: src/useradd.c:1599 src/usermod.c:1398
#, c-format
msgid "%s: error updating shadow passwd dbm entry\n"
msgstr "%s: b³±d podczas aktualizacji wpisu dbm do pliku z ukrytymi has³ami\n"
-#: src/useradd.c:1632
+#: src/useradd.c:1631
#, c-format
msgid "%s: cannot create directory %s\n"
msgstr "%s: nie mogê utworzyæ katalogu %s\n"
-#: src/useradd.c:1709 src/usermod.c:1162
+#: src/useradd.c:1708 src/usermod.c:1161
#, c-format
msgid "%s: user %s exists\n"
msgstr "%s: u¿ytkownik %s istnieje\n"
-#: src/useradd.c:1739
+#: src/useradd.c:1738
#, c-format
msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n"
msgstr ""
-#: src/userdel.c:128
+#: src/userdel.c:127
#, c-format
msgid "usage: %s [-r] name\n"
msgstr "u¿ycie: %s [-r] nazwa\n"
-#: src/userdel.c:175 src/userdel.c:230
+#: src/userdel.c:178 src/userdel.c:260
#, c-format
msgid "%s: error updating group entry\n"
msgstr "%s: b³±d podczas aktualizacji wpisu grupy\n"
-#: src/userdel.c:185 src/userdel.c:239
+#: src/userdel.c:188 src/userdel.c:269
#, c-format
msgid "%s: cannot update dbm group entry\n"
msgstr "%s: nie mogê zaktualizowaæ wpisu dbm do pliku z grupami\n"
-#: src/userdel.c:270
+#: src/userdel.c:215
+#, fuzzy, c-format
+msgid "%s: cannot remove dbm group entry\n"
+msgstr "%s: nie mogê zaktualizowaæ wpisu dbm do pliku z grupami\n"
+
+#: src/userdel.c:300
#, c-format
msgid "%s: cannot rewrite TCFS key file\n"
msgstr "%s: nie mogê przepisaæ pliku klucza TCFS\n"
-#: src/userdel.c:350
+#: src/userdel.c:380
#, c-format
msgid "%s: cannot lock TCFS key file\n"
msgstr "%s: nie mogê zablokowaæ pliku klucza TCFS\n"
-#: src/userdel.c:354
+#: src/userdel.c:384
#, c-format
msgid "%s: cannot open TCFS key file\n"
msgstr "%s: nie mogê otworzyæ pliku klucza TCFS\n"
-#: src/userdel.c:363
+#: src/userdel.c:393
#, c-format
msgid "%s: cannot open group file\n"
msgstr "%s: nie mogê otworzyæ pliku z grupami\n"
-#: src/userdel.c:373
+#: src/userdel.c:403
#, c-format
msgid "%s: cannot open shadow group file\n"
msgstr "%s: nie mogê otworzyæ pliku z przes³oniêtymi grupami\n"
-#: src/userdel.c:404 src/userdel.c:419
+#: src/userdel.c:434 src/userdel.c:449
#, c-format
msgid "%s: error deleting authentication\n"
msgstr "%s: b³±d podczas usuwania informacji uwierzytelniaj±cej\n"
-#: src/userdel.c:428
+#: src/userdel.c:458
#, c-format
msgid "%s: error deleting password entry\n"
msgstr "%s: b³±d podczas usuwania wpisu do pliku z has³ami\n"
-#: src/userdel.c:431
+#: src/userdel.c:461
#, c-format
msgid "%s: error deleting shadow password entry\n"
msgstr "%s: b³±d podczas usuwania wpisu do pliku z ukrytymi has³ami\n"
-#: src/userdel.c:440
+#: src/userdel.c:470
#, c-format
msgid "%s: error deleting TCFS entry\n"
msgstr "%s: b³±d podczas usuwania wpisu TCFS\n"
-#: src/userdel.c:453
+#: src/userdel.c:483
#, c-format
msgid "%s: error deleting password dbm entry\n"
msgstr "%s: b³±d podczas usuwania wpisu dbm do pliku z has³ami\n"
-#: src/userdel.c:472
+#: src/userdel.c:502
#, c-format
msgid "%s: error deleting shadow passwd dbm entry\n"
msgstr "%s: b³±d podczas usuwania wpisy dbm z pliku z ukrytymi has³ami\n"
-#: src/userdel.c:513
+#: src/userdel.c:543
#, c-format
msgid "%s: user %s is currently logged in\n"
msgstr "%s: u¿ytkownik %s jest aktualnie zalogowany\n"
-#: src/userdel.c:630
+#: src/userdel.c:660
#, c-format
msgid "%s: warning: %s not owned by %s, not removing\n"
msgstr "%s: ostrze¿enie: w³a¶cicielem %s nie jest %s, nie usuwam\n"
-#: src/userdel.c:636
+#: src/userdel.c:666
#, c-format
msgid "%s: warning: can't remove "
msgstr "%s: ostrze¿enie: nie mogê usun±æ "
-#: src/userdel.c:711 src/usermod.c:968
+#: src/userdel.c:741 src/usermod.c:967
#, c-format
msgid "%s: user %s does not exist\n"
msgstr "%s: u¿ytkownik %s nie istnieje\n"
-#: src/userdel.c:725 src/usermod.c:984
+#: src/userdel.c:755 src/usermod.c:983
#, c-format
msgid "%s: user %s is a NIS user\n"
msgstr "%s: u¿ytkownik %s jest u¿ytkownikiem NIS\n"
-#: src/userdel.c:762
+#: src/userdel.c:792
#, c-format
msgid "%s: %s not owned by %s, not removing\n"
msgstr "%s: w³a¶cicielem %s nie jest %s, nie usuwam\n"
-#: src/userdel.c:785
+#: src/userdel.c:815
#, c-format
msgid "%s: not removing directory %s (would remove home of user %s)\n"
msgstr "%s: nie usuwam katalogu %s (would remove home of user %s)\n"
-#: src/userdel.c:798
+#: src/userdel.c:828
#, c-format
msgid "%s: error removing directory %s\n"
msgstr "%s: b³±d podczas usuwania katalogu %s\n"
-#: src/usermod.c:316
+#: src/usermod.c:315
msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n"
msgstr "\t\t[-d kat_dom [-m]] [-s pow³oka] [-c komentarz] [-l nowa_nazwa]\n"
-#: src/usermod.c:322
+#: src/usermod.c:321
msgid "[-A {DEFAULT|program},... ] "
msgstr "[-A {DEFAULT|program},... ] "
-#: src/usermod.c:478
+#: src/usermod.c:477
#, c-format
msgid "%s: out of memory in update_group\n"
msgstr "%s: zabrak³o pamiêci w pdate_group\n"
-#: src/usermod.c:601
+#: src/usermod.c:600
#, c-format
msgid "%s: out of memory in update_gshadow\n"
msgstr "%s: zabrak³o pamiêci w update_gshadow\n"
-#: src/usermod.c:1139
+#: src/usermod.c:1138
#, c-format
msgid "%s: no flags given\n"
msgstr "%s: nie podano flag\n"
-#: src/usermod.c:1146
+#: src/usermod.c:1145
#, c-format
msgid "%s: shadow passwords required for -e and -f\n"
msgstr "%s: ukryte has³a wymagane dla -e i -f\n"
-#: src/usermod.c:1167
+#: src/usermod.c:1166
#, c-format
msgid "%s: uid %ld is not unique\n"
msgstr "%s: uid %ld nie jest niepowtarzalny\n"
-#: src/usermod.c:1315
+#: src/usermod.c:1314
#, c-format
msgid "%s: error deleting authentication method\n"
msgstr "%s: b³±d podczas usuwania metody uwierzytelniania\n"
-#: src/usermod.c:1335
+#: src/usermod.c:1334
#, c-format
msgid "%s: error changing authentication method\n"
msgstr "%s: b³±d podczas zmiany metody uwierzytelniania\n"
-#: src/usermod.c:1352
+#: src/usermod.c:1351
#, c-format
msgid "%s: error changing password entry\n"
msgstr "%s: b³±d podczas zmiany wpisu w pliku z has³ami\n"
-#: src/usermod.c:1358
+#: src/usermod.c:1357
#, c-format
msgid "%s: error removing password entry\n"
msgstr "%s: b³±d podczas usuwania wpisu z pliku z has³ami\n"
-#: src/usermod.c:1366
+#: src/usermod.c:1365
#, c-format
msgid "%s: error adding password dbm entry\n"
msgstr "%s: b³±d podczas dodawania wpisu dbm do pliku z has³ami\n"
-#: src/usermod.c:1373
+#: src/usermod.c:1372
#, c-format
msgid "%s: error removing passwd dbm entry\n"
msgstr "%s: b³±d podczas usuwania wpisu dbm z pliku z has³ami\n"
-#: src/usermod.c:1390
+#: src/usermod.c:1389
#, c-format
msgid "%s: error removing shadow password entry\n"
msgstr "%s: b³±d podczas usuwania wpisu z pliku z ukrytymi has³ami\n"
-#: src/usermod.c:1405
+#: src/usermod.c:1404
#, c-format
msgid "%s: error removing shadow passwd dbm entry\n"
msgstr "%s: b³±d podczas usuwania wpisu dbm z pliku z ukrytymi has³ami\n"
-#: src/usermod.c:1436
+#: src/usermod.c:1435
#, c-format
msgid "%s: directory %s exists\n"
msgstr "%s: katalog %s isnieje\n"
-#: src/usermod.c:1443
+#: src/usermod.c:1442
#, c-format
msgid "%s: can't create %s\n"
msgstr "%s: nie mogê utworzyæ %s\n"
-#: src/usermod.c:1449
+#: src/usermod.c:1448
#, c-format
msgid "%s: can't chown %s\n"
msgstr "%s: nie mogê zmieniæ w³a¶ciciela %s\n"
-#: src/usermod.c:1465
+#: src/usermod.c:1464
#, c-format
msgid "%s: cannot rename directory %s to %s\n"
msgstr "%s: nie mogê zmieniæ nazwy katalogu z %s na %s\n"
#. better leave it alone
-#: src/usermod.c:1562
+#: src/usermod.c:1561
#, c-format
msgid "%s: warning: %s not owned by %s\n"
msgstr "%s: ostrze¿enie: w³a¶cicielem %s nie jest %s\n"
-#: src/usermod.c:1568
+#: src/usermod.c:1567
msgid "failed to change mailbox owner"
msgstr "nie powiod³a siê zmiana w³a¶ciciela skrzynki pocztowej"
-#: src/usermod.c:1575
+#: src/usermod.c:1574
msgid "failed to rename mailbox"
msgstr "zmiana nazwy skrzynki pocztowej nie powiod³a siê"
-#: src/vipw.c:103
+#: src/vipw.c:102
#, c-format
msgid ""
"\n"
"\n"
"%s: %s jest niezmieniony\n"
-#: src/vipw.c:128
+#: src/vipw.c:127
#, fuzzy
msgid "Couldn't lock file"
msgstr "%s: nie mogê usun±c blokady z pliku\n"
-#: src/vipw.c:135
+#: src/vipw.c:134
msgid "Couldn't make backup"
msgstr ""
-#: src/vipw.c:174
+#: src/vipw.c:187
#, c-format
msgid "%s: can't restore %s: %s (your changes are in %s)\n"
msgstr "%s: nie mogê odzyskaæ %s: %s (twoje zmiany s± w %s)\n"
-#: src/vipw.c:213
+#: src/vipw.c:226
msgid ""
"Usage:\n"
"`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n"
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 1999-08-27 21:03+0200\n"
+"POT-Creation-Date: 2000-08-26 20:28+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "You have mail."
msgstr ""
-#: libmisc/obscure.c:281 src/passwd.c:311
+#: libmisc/obscure.c:281 src/passwd.c:309
#, c-format
msgid "Bad password: %s. "
msgstr ""
msgid "Dialup Password: "
msgstr ""
-#: lib/getdef.c:249
+#: lib/getdef.c:253
msgid "Could not allocate space for config info.\n"
msgstr ""
#.
#. * Item was never found.
#.
-#: lib/getdef.c:303
+#: lib/getdef.c:307
#, c-format
msgid "configuration error - unknown item '%s' (notify administrator)\n"
msgstr ""
-#: lib/getdef.c:390
+#: lib/getdef.c:394
#, c-format
msgid "error - lookup '%s' failed\n"
msgstr ""
-#: lib/getdef.c:398
+#: lib/getdef.c:402
#, c-format
msgid "%s not found\n"
msgstr ""
#. * get the password from her, and set the salt for
#. * the decryption from the group file.
#.
-#: lib/pwauth.c:54 src/newgrp.c:297
+#: lib/pwauth.c:54 src/newgrp.c:305
msgid "Password: "
msgstr ""
msgid "Account Expires:\t"
msgstr ""
-#: src/chage.c:468
+#: src/chage.c:471
#, c-format
msgid "%s: do not include \"l\" with other flags\n"
msgstr ""
-#: src/chage.c:480 src/chage.c:592 src/login.c:529
+#: src/chage.c:483 src/chage.c:595 src/login.c:529
#, c-format
msgid "%s: permission denied\n"
msgstr ""
-#: src/chage.c:492 src/chpasswd.c:122
+#: src/chage.c:495 src/chpasswd.c:120
#, c-format
msgid "%s: can't lock password file\n"
msgstr ""
-#: src/chage.c:498 src/chpasswd.c:126
+#: src/chage.c:501 src/chpasswd.c:124
#, c-format
msgid "%s: can't open password file\n"
msgstr ""
-#: src/chage.c:505
+#: src/chage.c:508
#, c-format
msgid "%s: unknown user: %s\n"
msgstr ""
-#: src/chage.c:524
+#: src/chage.c:527
#, c-format
msgid "%s: can't lock shadow password file\n"
msgstr ""
-#: src/chage.c:531
+#: src/chage.c:534
#, c-format
msgid "%s: can't open shadow password file\n"
msgstr ""
-#: src/chage.c:613
+#: src/chage.c:616
#, c-format
msgid "Changing the aging information for %s\n"
msgstr ""
-#: src/chage.c:615
+#: src/chage.c:618
#, c-format
msgid "%s: error changing fields\n"
msgstr ""
-#: src/chage.c:642 src/chage.c:705 src/pwunconv.c:184
+#: src/chage.c:645 src/chage.c:708 src/pwunconv.c:183
#, c-format
msgid "%s: can't update password file\n"
msgstr ""
-#: src/chage.c:672 src/pwunconv.c:179
+#: src/chage.c:675 src/pwunconv.c:178
#, c-format
msgid "%s: can't update shadow password file\n"
msgstr ""
-#: src/chage.c:721 src/chage.c:736 src/chfn.c:572 src/chsh.c:411
-#: src/passwd.c:827 src/passwd.c:928
+#: src/chage.c:724 src/chage.c:739 src/chfn.c:571 src/chsh.c:410
+#: src/passwd.c:825 src/passwd.c:926
msgid "Error updating the DBM password entry.\n"
msgstr ""
-#: src/chage.c:753
+#: src/chage.c:756
#, c-format
msgid "%s: can't rewrite shadow password file\n"
msgstr ""
-#: src/chage.c:767
+#: src/chage.c:770
#, c-format
msgid "%s: can't rewrite password file\n"
msgstr ""
-#: src/chage.c:816
+#: src/chage.c:821
#, c-format
msgid "%s: no aging information present\n"
msgstr ""
-#: src/chfn.c:108
+#: src/chfn.c:107
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n"
"\t[ -h home_ph ] [ -o other ] [ user ]\n"
msgstr ""
-#: src/chfn.c:112
+#: src/chfn.c:111
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n"
msgstr ""
-#: src/chfn.c:164 src/chsh.c:120
+#: src/chfn.c:163 src/chsh.c:119
msgid "Enter the new value, or press return for the default\n"
msgstr ""
-#: src/chfn.c:167
+#: src/chfn.c:166
msgid "Full Name"
msgstr ""
-#: src/chfn.c:169
+#: src/chfn.c:168
#, c-format
msgid "\tFull Name: %s\n"
msgstr ""
-#: src/chfn.c:172
+#: src/chfn.c:171
msgid "Room Number"
msgstr ""
-#: src/chfn.c:174
+#: src/chfn.c:173
#, c-format
msgid "\tRoom Number: %s\n"
msgstr ""
-#: src/chfn.c:177
+#: src/chfn.c:176
msgid "Work Phone"
msgstr ""
-#: src/chfn.c:179
+#: src/chfn.c:178
#, c-format
msgid "\tWork Phone: %s\n"
msgstr ""
-#: src/chfn.c:182
+#: src/chfn.c:181
msgid "Home Phone"
msgstr ""
-#: src/chfn.c:184
+#: src/chfn.c:183
#, c-format
msgid "\tHome Phone: %s\n"
msgstr ""
-#: src/chfn.c:187
+#: src/chfn.c:186
msgid "Other"
msgstr ""
-#: src/chfn.c:300 src/chfn.c:308 src/chfn.c:316 src/chfn.c:324 src/chfn.c:332
-#: src/chfn.c:393 src/passwd.c:1228
+#: src/chfn.c:299 src/chfn.c:307 src/chfn.c:315 src/chfn.c:323 src/chfn.c:331
+#: src/chfn.c:392 src/passwd.c:1226
#, c-format
msgid "%s: Permission denied.\n"
msgstr ""
-#: src/chfn.c:353 src/chsh.c:226 src/passwd.c:1279
+#: src/chfn.c:352 src/chsh.c:225 src/passwd.c:1277
#, c-format
msgid "%s: Unknown user %s\n"
msgstr ""
-#: src/chfn.c:359 src/chsh.c:234 src/passwd.c:1209
+#: src/chfn.c:358 src/chsh.c:233 src/passwd.c:1207
#, c-format
msgid "%s: Cannot determine your user name.\n"
msgstr ""
-#: src/chfn.c:375 src/chsh.c:252
+#: src/chfn.c:374 src/chsh.c:251
#, c-format
msgid "%s: cannot change user `%s' on NIS client.\n"
msgstr ""
-#: src/chfn.c:380 src/chsh.c:259
+#: src/chfn.c:379 src/chsh.c:258
#, c-format
msgid "%s: `%s' is the NIS master for this client.\n"
msgstr ""
-#: src/chfn.c:455
+#: src/chfn.c:454
#, c-format
msgid "Changing the user information for %s\n"
msgstr ""
-#: src/chfn.c:464
+#: src/chfn.c:463
#, c-format
msgid "%s: invalid name: \"%s\"\n"
msgstr ""
-#: src/chfn.c:469
+#: src/chfn.c:468
#, c-format
msgid "%s: invalid room number: \"%s\"\n"
msgstr ""
-#: src/chfn.c:474
+#: src/chfn.c:473
#, c-format
msgid "%s: invalid work phone: \"%s\"\n"
msgstr ""
-#: src/chfn.c:479
+#: src/chfn.c:478
#, c-format
msgid "%s: invalid home phone: \"%s\"\n"
msgstr ""
-#: src/chfn.c:484
+#: src/chfn.c:483
#, c-format
msgid "%s: \"%s\" contains illegal characters\n"
msgstr ""
-#: src/chfn.c:496
+#: src/chfn.c:495
#, c-format
msgid "%s: fields too long\n"
msgstr ""
-#: src/chfn.c:511 src/chsh.c:349 src/gpasswd.c:583 src/passwd.c:1390
+#: src/chfn.c:510 src/chsh.c:348 src/gpasswd.c:582 src/passwd.c:1388
msgid "Cannot change ID to root.\n"
msgstr ""
-#: src/chfn.c:524 src/chsh.c:363 src/passwd.c:737 src/passwd.c:882
+#: src/chfn.c:523 src/chsh.c:362 src/passwd.c:735 src/passwd.c:880
msgid "Cannot lock the password file; try again later.\n"
msgstr ""
-#: src/chfn.c:530 src/chsh.c:369 src/passwd.c:742 src/passwd.c:887
+#: src/chfn.c:529 src/chsh.c:368 src/passwd.c:740 src/passwd.c:885
msgid "Cannot open the password file.\n"
msgstr ""
-#: src/chfn.c:547 src/chsh.c:384 src/passwd.c:748 src/usermod.c:1272
+#: src/chfn.c:546 src/chsh.c:383 src/passwd.c:746 src/usermod.c:1271
#, c-format
msgid "%s: %s not found in /etc/passwd\n"
msgstr ""
-#: src/chfn.c:564 src/chsh.c:403 src/passwd.c:821 src/passwd.c:922
-#: src/passwd.c:962
+#: src/chfn.c:563 src/chsh.c:402 src/passwd.c:819 src/passwd.c:920
+#: src/passwd.c:960
msgid "Error updating the password entry.\n"
msgstr ""
-#: src/chfn.c:587 src/chsh.c:426 src/passwd.c:834 src/passwd.c:935
+#: src/chfn.c:586 src/chsh.c:425 src/passwd.c:832 src/passwd.c:933
msgid "Cannot commit password file changes.\n"
msgstr ""
-#: src/chfn.c:594 src/chsh.c:433
+#: src/chfn.c:593 src/chsh.c:432
msgid "Cannot unlock the password file.\n"
msgstr ""
-#: src/chpasswd.c:78
+#: src/chpasswd.c:76
#, c-format
msgid "usage: %s [-e]\n"
msgstr ""
-#: src/chpasswd.c:134 src/pwconv.c:105
+#: src/chpasswd.c:132 src/pwconv.c:104
#, c-format
msgid "%s: can't lock shadow file\n"
msgstr ""
-#: src/chpasswd.c:139 src/gpasswd.c:609 src/pwconv.c:110 src/pwunconv.c:119
-#: src/pwunconv.c:124
+#: src/chpasswd.c:137 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:118
+#: src/pwunconv.c:123
#, c-format
msgid "%s: can't open shadow file\n"
msgstr ""
-#: src/chpasswd.c:161 src/newusers.c:418
+#: src/chpasswd.c:159 src/newusers.c:415
#, c-format
msgid "%s: line %d: line too long\n"
msgstr ""
-#: src/chpasswd.c:181
+#: src/chpasswd.c:179
#, c-format
msgid "%s: line %d: missing new password\n"
msgstr ""
-#: src/chpasswd.c:197
+#: src/chpasswd.c:195
#, c-format
msgid "%s: line %d: unknown user %s\n"
msgstr ""
-#: src/chpasswd.c:249
+#: src/chpasswd.c:247
#, c-format
msgid "%s: line %d: cannot update password entry\n"
msgstr ""
-#: src/chpasswd.c:265 src/newusers.c:538
+#: src/chpasswd.c:263 src/newusers.c:535
#, c-format
msgid "%s: error detected, changes ignored\n"
msgstr ""
-#: src/chpasswd.c:276
+#: src/chpasswd.c:274
#, c-format
msgid "%s: error updating shadow file\n"
msgstr ""
-#: src/chpasswd.c:284
+#: src/chpasswd.c:282
#, c-format
msgid "%s: error updating password file\n"
msgstr ""
-#: src/chsh.c:106
+#: src/chsh.c:105
#, c-format
msgid "Usage: %s [ -s shell ] [ name ]\n"
msgstr ""
-#: src/chsh.c:121
+#: src/chsh.c:120
msgid "Login Shell"
msgstr ""
-#: src/chsh.c:275 src/chsh.c:288
+#: src/chsh.c:274 src/chsh.c:287
#, c-format
msgid "You may not change the shell for %s.\n"
msgstr ""
-#: src/chsh.c:317
+#: src/chsh.c:316
#, c-format
msgid "Changing the login shell for %s\n"
msgstr ""
-#: src/chsh.c:329
+#: src/chsh.c:328
#, c-format
msgid "%s: Invalid entry: %s\n"
msgstr ""
-#: src/chsh.c:334
+#: src/chsh.c:333
#, c-format
msgid "%s is an invalid shell.\n"
msgstr ""
-#: src/dpasswd.c:71
+#: src/dpasswd.c:69
#, c-format
msgid "Usage: %s [ -(a|d) ] shell\n"
msgstr ""
-#: src/dpasswd.c:136
+#: src/dpasswd.c:134
msgid "Shell password: "
msgstr ""
-#: src/dpasswd.c:142
+#: src/dpasswd.c:140
msgid "re-enter Shell password: "
msgstr ""
-#: src/dpasswd.c:149
+#: src/dpasswd.c:147
#, c-format
msgid "%s: Passwords do not match, try again.\n"
msgstr ""
-#: src/dpasswd.c:169
+#: src/dpasswd.c:167
#, c-format
msgid "%s: can't create %s"
msgstr ""
-#: src/dpasswd.c:174
+#: src/dpasswd.c:172
#, c-format
msgid "%s: can't open %s"
msgstr ""
-#: src/dpasswd.c:202
+#: src/dpasswd.c:200
#, c-format
msgid "%s: Shell %s not found.\n"
msgstr ""
-#: src/expiry.c:85
+#: src/expiry.c:84
msgid "Usage: expiry { -f | -c }\n"
msgstr ""
-#: src/expiry.c:138
+#: src/expiry.c:137
#, c-format
msgid "%s: WARNING! Must be set-UID root!\n"
msgstr ""
-#: src/expiry.c:149
+#: src/expiry.c:148
#, c-format
msgid "%s: unknown user\n"
msgstr ""
-#: src/faillog.c:80
+#: src/faillog.c:79
#, c-format
msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n"
msgstr ""
-#: src/faillog.c:135 src/lastlog.c:95
+#: src/faillog.c:134 src/lastlog.c:94
#, c-format
msgid "Unknown User: %s\n"
msgstr ""
-#: src/faillog.c:216
+#: src/faillog.c:215
msgid "Username Failures Maximum Latest\n"
msgstr ""
-#: src/faillog.c:233
+#: src/faillog.c:232
#, c-format
msgid " %s on %s"
msgstr ""
-#: src/faillog.c:237
+#: src/faillog.c:236
#, c-format
msgid " [%lds left]"
msgstr ""
-#: src/faillog.c:240
+#: src/faillog.c:239
#, c-format
msgid " [%lds lock]"
msgstr ""
-#: src/gpasswd.c:91
+#: src/gpasswd.c:89
#, c-format
msgid "usage: %s [-r|-R] group\n"
msgstr ""
-#: src/gpasswd.c:92
+#: src/gpasswd.c:90
#, c-format
msgid " %s [-a user] group\n"
msgstr ""
-#: src/gpasswd.c:93
+#: src/gpasswd.c:91
#, c-format
msgid " %s [-d user] group\n"
msgstr ""
-#: src/gpasswd.c:95
+#: src/gpasswd.c:93
#, c-format
msgid " %s [-A user,...] [-M user,...] group\n"
msgstr ""
-#: src/gpasswd.c:98
+#: src/gpasswd.c:96
#, c-format
msgid " %s [-M user,...] group\n"
msgstr ""
-#: src/gpasswd.c:162 src/gpasswd.c:247
+#: src/gpasswd.c:160 src/gpasswd.c:245
#, c-format
msgid "%s: unknown user %s\n"
msgstr ""
-#: src/gpasswd.c:174
+#: src/gpasswd.c:172
msgid "Permission denied.\n"
msgstr ""
-#: src/gpasswd.c:259
+#: src/gpasswd.c:257
#, c-format
msgid "%s: shadow group passwords required for -A\n"
msgstr ""
-#: src/gpasswd.c:310
+#: src/gpasswd.c:308
msgid "Who are you?\n"
msgstr ""
-#: src/gpasswd.c:330 src/newgrp.c:247
+#: src/gpasswd.c:328 src/newgrp.c:251
#, c-format
msgid "unknown group: %s\n"
msgstr ""
-#: src/gpasswd.c:438
+#: src/gpasswd.c:436
#, c-format
msgid "Adding user %s to group %s\n"
msgstr ""
-#: src/gpasswd.c:455
+#: src/gpasswd.c:453
#, c-format
msgid "Removing user %s from group %s\n"
msgstr ""
-#: src/gpasswd.c:468
+#: src/gpasswd.c:466
#, c-format
msgid "%s: unknown member %s\n"
msgstr ""
-#: src/gpasswd.c:515
+#: src/gpasswd.c:513
#, c-format
msgid "%s: Not a tty\n"
msgstr ""
#. * the old password since the invoker is either the group
#. * owner, or root.
#.
-#: src/gpasswd.c:537
+#: src/gpasswd.c:535
#, c-format
msgid "Changing the password for group %s\n"
msgstr ""
-#: src/gpasswd.c:540
+#: src/gpasswd.c:538
msgid "New Password: "
msgstr ""
-#: src/gpasswd.c:545 src/passwd.c:424
+#: src/gpasswd.c:543 src/passwd.c:422
msgid "Re-enter new password: "
msgstr ""
-#: src/gpasswd.c:557
+#: src/gpasswd.c:555
msgid "They don't match; try again"
msgstr ""
-#: src/gpasswd.c:561
+#: src/gpasswd.c:559
#, c-format
msgid "%s: Try again later\n"
msgstr ""
-#: src/gpasswd.c:591
+#: src/gpasswd.c:590
#, c-format
msgid "%s: can't get lock\n"
msgstr ""
-#: src/gpasswd.c:597
+#: src/gpasswd.c:596
#, c-format
msgid "%s: can't get shadow lock\n"
msgstr ""
-#: src/gpasswd.c:603
+#: src/gpasswd.c:602
#, c-format
msgid "%s: can't open file\n"
msgstr ""
-#: src/gpasswd.c:615
+#: src/gpasswd.c:614
#, c-format
msgid "%s: can't update entry\n"
msgstr ""
-#: src/gpasswd.c:621
+#: src/gpasswd.c:620
#, c-format
msgid "%s: can't update shadow entry\n"
msgstr ""
-#: src/gpasswd.c:627
+#: src/gpasswd.c:626
#, c-format
msgid "%s: can't re-write file\n"
msgstr ""
-#: src/gpasswd.c:633
+#: src/gpasswd.c:632
#, c-format
msgid "%s: can't re-write shadow file\n"
msgstr ""
-#: src/gpasswd.c:641
+#: src/gpasswd.c:640
#, c-format
msgid "%s: can't unlock file\n"
msgstr ""
-#: src/gpasswd.c:646
+#: src/gpasswd.c:645
#, c-format
msgid "%s: can't update DBM files\n"
msgstr ""
-#: src/gpasswd.c:653
+#: src/gpasswd.c:652
#, c-format
msgid "%s: can't update DBM shadow files\n"
msgstr ""
-#: src/groupadd.c:106
+#: src/groupadd.c:105
msgid "usage: groupadd [-g gid [-o]] group\n"
msgstr ""
-#: src/groupadd.c:174 src/groupadd.c:197 src/groupmod.c:184 src/groupmod.c:231
-#: src/useradd.c:932 src/usermod.c:513 src/usermod.c:649
+#: src/groupadd.c:173 src/groupadd.c:196 src/groupmod.c:183 src/groupmod.c:230
+#: src/useradd.c:931 src/usermod.c:512 src/usermod.c:648
#, c-format
msgid "%s: error adding new group entry\n"
msgstr ""
-#: src/groupadd.c:184 src/groupadd.c:207 src/groupmod.c:200 src/useradd.c:943
-#: src/usermod.c:525 src/usermod.c:661
+#: src/groupadd.c:183 src/groupadd.c:206 src/groupmod.c:199 src/useradd.c:942
+#: src/usermod.c:524 src/usermod.c:660
#, c-format
msgid "%s: cannot add new dbm group entry\n"
msgstr ""
-#: src/groupadd.c:259 src/useradd.c:997
+#: src/groupadd.c:258 src/useradd.c:996
#, c-format
msgid "%s: name %s is not unique\n"
msgstr ""
-#: src/groupadd.c:274
+#: src/groupadd.c:273
#, c-format
msgid "%s: gid %ld is not unique\n"
msgstr ""
-#: src/groupadd.c:298
+#: src/groupadd.c:297
#, c-format
msgid "%s: can't get unique gid\n"
msgstr ""
#.
#. * All invalid group names land here.
#.
-#: src/groupadd.c:322 src/groupmod.c:342
+#: src/groupadd.c:321 src/groupmod.c:341
#, c-format
msgid "%s: %s is a not a valid group name\n"
msgstr ""
-#: src/groupadd.c:351 src/groupmod.c:368
+#: src/groupadd.c:350 src/groupmod.c:367
#, c-format
msgid "%s: invalid group %s\n"
msgstr ""
-#: src/groupadd.c:368 src/useradd.c:1273
+#: src/groupadd.c:367 src/useradd.c:1272
#, c-format
msgid "%s: -O requires NAME=VALUE\n"
msgstr ""
-#: src/groupadd.c:413 src/groupdel.c:168 src/groupmod.c:404 src/useradd.c:1382
-#: src/userdel.c:273 src/usermod.c:537
+#: src/groupadd.c:412 src/groupdel.c:167 src/groupmod.c:403 src/useradd.c:1381
+#: src/userdel.c:303 src/usermod.c:536
#, c-format
msgid "%s: cannot rewrite group file\n"
msgstr ""
-#: src/groupadd.c:419 src/groupdel.c:174 src/groupmod.c:410 src/useradd.c:1390
-#: src/userdel.c:279 src/usermod.c:674
+#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1389
+#: src/userdel.c:309 src/usermod.c:673
#, c-format
msgid "%s: cannot rewrite shadow group file\n"
msgstr ""
-#: src/groupadd.c:438 src/groupdel.c:193 src/groupmod.c:429 src/userdel.c:359
+#: src/groupadd.c:437 src/groupdel.c:192 src/groupmod.c:428 src/userdel.c:389
#, c-format
msgid "%s: unable to lock group file\n"
msgstr ""
-#: src/groupadd.c:442 src/groupdel.c:197 src/groupmod.c:433
+#: src/groupadd.c:441 src/groupdel.c:196 src/groupmod.c:432
#, c-format
msgid "%s: unable to open group file\n"
msgstr ""
-#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 src/userdel.c:368
+#: src/groupadd.c:446 src/groupdel.c:201 src/groupmod.c:437 src/userdel.c:398
#, c-format
msgid "%s: unable to lock shadow group file\n"
msgstr ""
-#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443
+#: src/groupadd.c:451 src/groupdel.c:206 src/groupmod.c:442
#, c-format
msgid "%s: unable to open shadow group file\n"
msgstr ""
-#: src/groupadd.c:519
+#: src/groupadd.c:518
#, c-format
msgid "%s: group %s exists\n"
msgstr ""
-#: src/groupdel.c:87
+#: src/groupdel.c:86
msgid "usage: groupdel group\n"
msgstr ""
-#: src/groupdel.c:105 src/groupmod.c:188 src/groupmod.c:235
+#: src/groupdel.c:104 src/groupmod.c:187 src/groupmod.c:234
#, c-format
msgid "%s: error removing group entry\n"
msgstr ""
-#: src/groupdel.c:117 src/groupmod.c:207
+#: src/groupdel.c:116 src/groupmod.c:206
#, c-format
msgid "%s: error removing group dbm entry\n"
msgstr ""
-#: src/groupdel.c:132
+#: src/groupdel.c:131
#, c-format
msgid "%s: error removing shadow group entry\n"
msgstr ""
-#: src/groupdel.c:145 src/groupmod.c:253
+#: src/groupdel.c:144 src/groupmod.c:252
#, c-format
msgid "%s: error removing shadow group dbm entry\n"
msgstr ""
#.
#. * Can't remove the group.
#.
-#: src/groupdel.c:249
+#: src/groupdel.c:248
#, c-format
msgid "%s: cannot remove user's primary group.\n"
msgstr ""
-#: src/groupdel.c:306 src/groupmod.c:502
+#: src/groupdel.c:305 src/groupmod.c:501
#, c-format
msgid "%s: group %s does not exist\n"
msgstr ""
-#: src/groupdel.c:320 src/groupmod.c:518
+#: src/groupdel.c:319 src/groupmod.c:517
#, c-format
msgid "%s: group %s is a NIS group\n"
msgstr ""
-#: src/groupdel.c:326 src/groupmod.c:524 src/userdel.c:731 src/usermod.c:990
+#: src/groupdel.c:325 src/groupmod.c:523 src/userdel.c:761 src/usermod.c:989
#, c-format
msgid "%s: %s is the NIS master\n"
msgstr ""
-#: src/groupmod.c:106
+#: src/groupmod.c:105
msgid "usage: groupmod [-g gid [-o]] [-n name] group\n"
msgstr ""
-#: src/groupmod.c:166
+#: src/groupmod.c:165
#, c-format
msgid "%s: %s not found in /etc/group\n"
msgstr ""
-#: src/groupmod.c:247
+#: src/groupmod.c:246
#, c-format
msgid "%s: cannot add new dbm shadow group entry\n"
msgstr ""
-#: src/groupmod.c:300
+#: src/groupmod.c:299
#, c-format
msgid "%s: %ld is not a unique gid\n"
msgstr ""
-#: src/groupmod.c:331
+#: src/groupmod.c:330
#, c-format
msgid "%s: %s is not a unique name\n"
msgstr ""
-#: src/groups.c:63
+#: src/groups.c:62
#, c-format
msgid "unknown user %s\n"
msgstr ""
-#: src/grpck.c:99
+#: src/grpck.c:98
#, c-format
msgid "Usage: %s [ -r ] [ group [ gshadow ] ]\n"
msgstr ""
-#: src/grpck.c:101
+#: src/grpck.c:100
#, c-format
msgid "Usage: %s [ -r ] [ group ]\n"
msgstr ""
-#: src/grpck.c:120 src/pwck.c:120
+#: src/grpck.c:119 src/pwck.c:119
msgid "No"
msgstr ""
-#: src/grpck.c:235 src/grpck.c:243 src/pwck.c:217 src/pwck.c:226
+#: src/grpck.c:234 src/grpck.c:242 src/pwck.c:216 src/pwck.c:225
#, c-format
msgid "%s: cannot lock file %s\n"
msgstr ""
-#: src/grpck.c:258 src/grpck.c:266 src/mkpasswd.c:217 src/pwck.c:242
-#: src/pwck.c:251
+#: src/grpck.c:257 src/grpck.c:265 src/mkpasswd.c:216 src/pwck.c:241
+#: src/pwck.c:250
#, c-format
msgid "%s: cannot open file %s\n"
msgstr ""
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:299
+#: src/grpck.c:298
msgid "invalid group file entry\n"
msgstr ""
-#: src/grpck.c:300 src/grpck.c:363 src/grpck.c:455 src/grpck.c:518
-#: src/grpck.c:535 src/pwck.c:287 src/pwck.c:349 src/pwck.c:456 src/pwck.c:518
-#: src/pwck.c:542
+#: src/grpck.c:299 src/grpck.c:362 src/grpck.c:454 src/grpck.c:517
+#: src/grpck.c:534 src/pwck.c:286 src/pwck.c:348 src/pwck.c:455 src/pwck.c:517
+#: src/pwck.c:541
#, c-format
msgid "delete line `%s'? "
msgstr ""
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:362
+#: src/grpck.c:361
msgid "duplicate group entry\n"
msgstr ""
-#: src/grpck.c:379
+#: src/grpck.c:378
#, c-format
msgid "invalid group name `%s'\n"
msgstr ""
-#: src/grpck.c:389
+#: src/grpck.c:388
#, c-format
msgid "group %s: bad GID (%d)\n"
msgstr ""
-#: src/grpck.c:415
+#: src/grpck.c:414
#, c-format
msgid "group %s: no user %s\n"
msgstr ""
-#: src/grpck.c:417 src/grpck.c:586
+#: src/grpck.c:416 src/grpck.c:585
#, c-format
msgid "delete member `%s'? "
msgstr ""
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:454
+#: src/grpck.c:453
msgid "invalid shadow group file entry\n"
msgstr ""
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:517
+#: src/grpck.c:516
msgid "duplicate shadow group entry\n"
msgstr ""
-#: src/grpck.c:534
+#: src/grpck.c:533
msgid "no matching group file entry\n"
msgstr ""
-#: src/grpck.c:554
+#: src/grpck.c:553
#, c-format
msgid "shadow group %s: no administrative user %s\n"
msgstr ""
-#: src/grpck.c:556
+#: src/grpck.c:555
#, c-format
msgid "delete administrative member `%s'? "
msgstr ""
-#: src/grpck.c:584
+#: src/grpck.c:583
#, c-format
msgid "shadow group %s: no user %s\n"
msgstr ""
-#: src/grpck.c:611 src/grpck.c:617 src/pwck.c:573 src/pwck.c:581
+#: src/grpck.c:610 src/grpck.c:616 src/pwck.c:572 src/pwck.c:580
#, c-format
msgid "%s: cannot update file %s\n"
msgstr ""
-#: src/grpck.c:641 src/pwck.c:607
+#: src/grpck.c:640 src/pwck.c:606
#, c-format
msgid "%s: the files have been updated; run mkpasswd\n"
msgstr ""
-#: src/grpck.c:642 src/grpck.c:646 src/pwck.c:608 src/pwck.c:612
+#: src/grpck.c:641 src/grpck.c:645 src/pwck.c:607 src/pwck.c:611
#, c-format
msgid "%s: no changes\n"
msgstr ""
-#: src/grpck.c:645 src/pwck.c:611
+#: src/grpck.c:644 src/pwck.c:610
#, c-format
msgid "%s: the files have been updated\n"
msgstr ""
-#: src/grpconv.c:63 src/grpunconv.c:64
+#: src/grpconv.c:62 src/grpunconv.c:63
#, c-format
msgid "%s: can't lock group file\n"
msgstr ""
-#: src/grpconv.c:68 src/grpunconv.c:69
+#: src/grpconv.c:67 src/grpunconv.c:68
#, c-format
msgid "%s: can't open group file\n"
msgstr ""
-#: src/grpconv.c:73 src/grpunconv.c:74
+#: src/grpconv.c:72 src/grpunconv.c:73
#, c-format
msgid "%s: can't lock shadow group file\n"
msgstr ""
-#: src/grpconv.c:78 src/grpunconv.c:79
+#: src/grpconv.c:77 src/grpunconv.c:78
#, c-format
msgid "%s: can't open shadow group file\n"
msgstr ""
#.
#. * This shouldn't happen (the entry exists) but...
#.
-#: src/grpconv.c:94
+#: src/grpconv.c:93
#, c-format
msgid "%s: can't remove shadow group %s\n"
msgstr ""
-#: src/grpconv.c:135 src/pwconv.c:161
+#: src/grpconv.c:134 src/pwconv.c:160
#, c-format
msgid "%s: can't update shadow entry for %s\n"
msgstr ""
-#: src/grpconv.c:144 src/grpunconv.c:95
+#: src/grpconv.c:143 src/grpunconv.c:94
#, c-format
msgid "%s: can't update entry for group %s\n"
msgstr ""
-#: src/grpconv.c:151 src/grpunconv.c:103
+#: src/grpconv.c:150 src/grpunconv.c:102
#, c-format
msgid "%s: can't update shadow group file\n"
msgstr ""
-#: src/grpconv.c:155 src/grpunconv.c:108
+#: src/grpconv.c:154 src/grpunconv.c:107
#, c-format
msgid "%s: can't update group file\n"
msgstr ""
-#: src/grpconv.c:170 src/grpunconv.c:129
+#: src/grpconv.c:169 src/grpunconv.c:128
#, c-format
msgid "%s: not configured for shadow group support.\n"
msgstr ""
-#: src/grpunconv.c:113
+#: src/grpunconv.c:112
#, c-format
msgid "%s: can't delete shadow group file\n"
msgstr ""
-#: src/id.c:57
+#: src/id.c:56
msgid "usage: id [ -a ]\n"
msgstr ""
-#: src/id.c:59
+#: src/id.c:58
msgid "usage: id\n"
msgstr ""
-#: src/id.c:119
+#: src/id.c:118
#, c-format
msgid "uid=%d(%s)"
msgstr ""
-#: src/id.c:121
+#: src/id.c:120
#, c-format
msgid "uid=%d"
msgstr ""
-#: src/id.c:125
+#: src/id.c:124
#, c-format
msgid " gid=%d(%s)"
msgstr ""
-#: src/id.c:127
+#: src/id.c:126
#, c-format
msgid " gid=%d"
msgstr ""
-#: src/id.c:137
+#: src/id.c:136
#, c-format
msgid " euid=%d(%s)"
msgstr ""
-#: src/id.c:139
+#: src/id.c:138
#, c-format
msgid " euid=%d"
msgstr ""
-#: src/id.c:144
+#: src/id.c:143
#, c-format
msgid " egid=%d(%s)"
msgstr ""
-#: src/id.c:146
+#: src/id.c:145
#, c-format
msgid " egid=%d"
msgstr ""
#. * where "###" is a numerical value and "aaa" is the
#. * corresponding name for each respective numerical value.
#.
-#: src/id.c:167
+#: src/id.c:166
msgid " groups="
msgstr ""
-#: src/lastlog.c:168
+#: src/lastlog.c:167
msgid "Username Port From Latest\n"
msgstr ""
-#: src/lastlog.c:170
+#: src/lastlog.c:169
msgid "Username Port Latest\n"
msgstr ""
-#: src/lastlog.c:184
+#: src/lastlog.c:183
msgid "**Never logged in**"
msgstr ""
-#: src/login.c:199
+#: src/login.c:198
#, c-format
msgid "usage: %s [-p] [name]\n"
msgstr ""
-#: src/login.c:202
+#: src/login.c:201
#, c-format
msgid " %s [-p] [-h host] [-f name]\n"
msgstr ""
-#: src/login.c:204
+#: src/login.c:203
#, c-format
msgid " %s [-p] -r host\n"
msgstr ""
-#: src/login.c:287
+#: src/login.c:286
msgid "Invalid login time\n"
msgstr ""
-#: src/login.c:342
+#: src/login.c:341
msgid ""
"\n"
"System closed for routine maintenance\n"
msgstr ""
-#: src/login.c:352
+#: src/login.c:351
msgid ""
"\n"
"[Disconnect bypassed -- root login allowed.]\n"
msgstr ""
-#: src/login.c:391
+#: src/login.c:390
#, c-format
msgid ""
"\n"
msgid " on `%.100s'"
msgstr ""
-#: src/login.c:807
+#: src/login.c:834
#, c-format
msgid ""
"\n"
"%s login: "
msgstr ""
-#: src/login.c:809
+#: src/login.c:836
msgid "login: "
msgstr ""
-#: src/login.c:991 src/sulogin.c:233
+#: src/login.c:1026 src/sulogin.c:231
msgid "Login incorrect"
msgstr ""
-#: src/login.c:1163
+#: src/login.c:1213
msgid "Warning: login re-enabled after temporary lockout.\n"
msgstr ""
-#: src/login.c:1173
+#: src/login.c:1223
#, c-format
msgid "Last login: %s on %s"
msgstr ""
-#: src/login.c:1176
+#: src/login.c:1226
#, c-format
msgid "Last login: %.19s on %s"
msgstr ""
-#: src/login.c:1181
+#: src/login.c:1231
#, c-format
msgid " from %.*s"
msgstr ""
-#: src/login.c:1246
+#: src/login.c:1303
msgid "Starting rad_login\n"
msgstr ""
msgid "%s: no DBM database on system - no action performed\n"
msgstr ""
-#: src/mkpasswd.c:246 src/mkpasswd.c:250
+#: src/mkpasswd.c:245 src/mkpasswd.c:249
#, c-format
msgid "%s: cannot overwrite file %s\n"
msgstr ""
-#: src/mkpasswd.c:264
+#: src/mkpasswd.c:263
#, c-format
msgid "%s: cannot open DBM files for %s\n"
msgstr ""
-#: src/mkpasswd.c:297
+#: src/mkpasswd.c:296
#, c-format
msgid "%s: the beginning with "
msgstr ""
-#: src/mkpasswd.c:322
+#: src/mkpasswd.c:321
#, c-format
msgid "%s: error parsing line \"%s\"\n"
msgstr ""
-#: src/mkpasswd.c:327 src/mkpasswd.c:329 src/mkpasswd.c:331 src/mkpasswd.c:333
+#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332
msgid "adding record for name "
msgstr ""
-#: src/mkpasswd.c:337 src/mkpasswd.c:342 src/mkpasswd.c:346 src/mkpasswd.c:350
+#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349
#, c-format
msgid "%s: error adding record for "
msgstr ""
-#: src/mkpasswd.c:368
+#: src/mkpasswd.c:367
#, c-format
msgid "added %d entries, longest was %d\n"
msgstr ""
-#: src/mkpasswd.c:383
+#: src/mkpasswd.c:382
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n"
msgstr ""
-#: src/mkpasswd.c:385
+#: src/mkpasswd.c:384
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n"
msgstr ""
-#: src/mkpasswd.c:388
+#: src/mkpasswd.c:387
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g ] file\n"
msgstr ""
-#: src/newgrp.c:67
+#: src/newgrp.c:66
msgid "usage: newgrp [ - ] [ group ]\n"
msgstr ""
-#: src/newgrp.c:69
+#: src/newgrp.c:68
msgid "usage: sg group [[-c] command ]\n"
msgstr ""
-#: src/newgrp.c:122
+#: src/newgrp.c:125
#, c-format
msgid "unknown uid: %d\n"
msgstr ""
-#: src/newgrp.c:198
+#: src/newgrp.c:201
#, c-format
msgid "unknown gid: %ld\n"
msgstr ""
-#: src/newgrp.c:242
+#: src/newgrp.c:245
#, c-format
msgid "unknown gid: %d\n"
msgstr ""
-#: src/newgrp.c:315 src/newgrp.c:324
+#: src/newgrp.c:323 src/newgrp.c:332
msgid "Sorry.\n"
msgstr ""
-#: src/newgrp.c:356
+#: src/newgrp.c:364
msgid "too many groups\n"
msgstr ""
-#: src/newusers.c:79
+#: src/newusers.c:76
#, c-format
msgid "Usage: %s [ input ]\n"
msgstr ""
-#: src/newusers.c:367
+#: src/newusers.c:364
#, c-format
msgid "%s: can't lock /etc/passwd.\n"
msgstr ""
-#: src/newusers.c:378
+#: src/newusers.c:375
#, c-format
msgid "%s: can't lock files, try again later\n"
msgstr ""
-#: src/newusers.c:393
+#: src/newusers.c:390
#, c-format
msgid "%s: can't open files\n"
msgstr ""
-#: src/newusers.c:438
+#: src/newusers.c:435
#, c-format
msgid "%s: line %d: invalid line\n"
msgstr ""
-#: src/newusers.c:456
+#: src/newusers.c:453
#, c-format
msgid "%s: line %d: can't create GID\n"
msgstr ""
-#: src/newusers.c:472
+#: src/newusers.c:469
#, c-format
msgid "%s: line %d: can't create UID\n"
msgstr ""
-#: src/newusers.c:484
+#: src/newusers.c:481
#, c-format
msgid "%s: line %d: cannot find user %s\n"
msgstr ""
-#: src/newusers.c:492
+#: src/newusers.c:489
#, c-format
msgid "%s: line %d: can't update password\n"
msgstr ""
-#: src/newusers.c:509
+#: src/newusers.c:506
#, c-format
msgid "%s: line %d: mkdir failed\n"
msgstr ""
-#: src/newusers.c:513
+#: src/newusers.c:510
#, c-format
msgid "%s: line %d: chown failed\n"
msgstr ""
-#: src/newusers.c:522
+#: src/newusers.c:519
#, c-format
msgid "%s: line %d: can't update entry\n"
msgstr ""
-#: src/newusers.c:553
+#: src/newusers.c:550
#, c-format
msgid "%s: error updating files\n"
msgstr ""
-#: src/passwd.c:241
+#: src/passwd.c:239
#, c-format
msgid "usage: %s [ -f | -s ] [ name ]\n"
msgstr ""
-#: src/passwd.c:244
+#: src/passwd.c:242
#, c-format
msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n"
msgstr ""
-#: src/passwd.c:247
+#: src/passwd.c:245
#, c-format
msgid " %s { -l | -u | -d | -S | -e } name\n"
msgstr ""
-#: src/passwd.c:349
+#: src/passwd.c:347
#, c-format
msgid "User %s has a TCFS key, his old password is required.\n"
msgstr ""
-#: src/passwd.c:350
+#: src/passwd.c:348
msgid "You can use -t option to force the change.\n"
msgstr ""
-#: src/passwd.c:356
+#: src/passwd.c:354
msgid "Old password: "
msgstr ""
-#: src/passwd.c:363
+#: src/passwd.c:361
#, c-format
msgid "Incorrect password for `%s'\n"
msgstr ""
-#: src/passwd.c:376
+#: src/passwd.c:374
#, c-format
msgid "Warning: user %s has a TCFS key.\n"
msgstr ""
-#: src/passwd.c:394
+#: src/passwd.c:392
#, c-format
msgid ""
"Enter the new password (minimum of %d, maximum of %d characters)\n"
"Please use a combination of upper and lower case letters and numbers.\n"
msgstr ""
-#: src/passwd.c:401
+#: src/passwd.c:399
msgid "New password: "
msgstr ""
-#: src/passwd.c:411
+#: src/passwd.c:409
msgid "Try again.\n"
msgstr ""
-#: src/passwd.c:420
+#: src/passwd.c:418
msgid ""
"\n"
"Warning: weak password (enter it again to use it anyway).\n"
msgstr ""
-#: src/passwd.c:429
+#: src/passwd.c:427
msgid "They don't match; try again.\n"
msgstr ""
-#: src/passwd.c:514 src/passwd.c:530
+#: src/passwd.c:512 src/passwd.c:528
#, c-format
msgid "The password for %s cannot be changed.\n"
msgstr ""
-#: src/passwd.c:558
+#: src/passwd.c:556
#, c-format
msgid "Sorry, the password for %s cannot be changed yet.\n"
msgstr ""
-#: src/passwd.c:695
+#: src/passwd.c:693
#, c-format
msgid "%s: out of memory\n"
msgstr ""
-#: src/passwd.c:847
+#: src/passwd.c:845
msgid "Cannot lock the TCFS key database; try again later\n"
msgstr ""
-#: src/passwd.c:853
+#: src/passwd.c:851
msgid "Cannot open the TCFS key database.\n"
msgstr ""
-#: src/passwd.c:859
+#: src/passwd.c:857
msgid "Error updating the TCFS key database.\n"
msgstr ""
-#: src/passwd.c:864
+#: src/passwd.c:862
msgid "Cannot commit TCFS changes.\n"
msgstr ""
-#: src/passwd.c:1071
+#: src/passwd.c:1069
#, c-format
msgid "%s: Cannot execute %s"
msgstr ""
-#: src/passwd.c:1178
+#: src/passwd.c:1176
#, c-format
msgid "%s: repository %s not supported\n"
msgstr ""
-#: src/passwd.c:1265
+#: src/passwd.c:1263
#, c-format
msgid "%s: Permission denied\n"
msgstr ""
-#: src/passwd.c:1289
+#: src/passwd.c:1287
#, c-format
msgid "You may not change the password for %s.\n"
msgstr ""
-#: src/passwd.c:1354
+#: src/passwd.c:1352
#, c-format
msgid "Changing password for %s\n"
msgstr ""
-#: src/passwd.c:1358
+#: src/passwd.c:1356
#, c-format
msgid "The password for %s is unchanged.\n"
msgstr ""
-#: src/passwd.c:1414
+#: src/passwd.c:1412
msgid "Password changed.\n"
msgstr ""
-#: src/pwck.c:99
+#: src/pwck.c:98
#, c-format
msgid "Usage: %s [ -qr ] [ passwd [ shadow ] ]\n"
msgstr ""
-#: src/pwck.c:101
+#: src/pwck.c:100
#, c-format
msgid "Usage: %s [ -qr ] [ passwd ]\n"
msgstr ""
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:286
+#: src/pwck.c:285
msgid "invalid password file entry\n"
msgstr ""
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:348
+#: src/pwck.c:347
msgid "duplicate password entry\n"
msgstr ""
-#: src/pwck.c:364
+#: src/pwck.c:363
#, c-format
msgid "invalid user name `%s'\n"
msgstr ""
-#: src/pwck.c:374
+#: src/pwck.c:373
#, c-format
msgid "user %s: bad UID (%d)\n"
msgstr ""
#.
#. * No primary group, just give a warning
#.
-#: src/pwck.c:389
+#: src/pwck.c:388
#, c-format
msgid "user %s: no group %d\n"
msgstr ""
#.
#. * Home directory doesn't exist, give a warning
#.
-#: src/pwck.c:404
+#: src/pwck.c:403
#, c-format
msgid "user %s: directory %s does not exist\n"
msgstr ""
#.
#. * Login shell doesn't exist, give a warning
#.
-#: src/pwck.c:419
+#: src/pwck.c:418
#, c-format
msgid "user %s: program %s does not exist\n"
msgstr ""
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:455
+#: src/pwck.c:454
msgid "invalid shadow password file entry\n"
msgstr ""
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:517
+#: src/pwck.c:516
msgid "duplicate shadow password entry\n"
msgstr ""
#. * Tell the user this entry has no matching
#. * /etc/passwd entry and ask them to delete it.
#.
-#: src/pwck.c:541
+#: src/pwck.c:540
msgid "no matching password file entry\n"
msgstr ""
-#: src/pwck.c:558
+#: src/pwck.c:557
#, c-format
msgid "user %s: last password change in the future\n"
msgstr ""
-#: src/pwconv.c:95 src/pwunconv.c:109
+#: src/pwconv.c:94 src/pwunconv.c:108
#, c-format
msgid "%s: can't lock passwd file\n"
msgstr ""
-#: src/pwconv.c:100 src/pwunconv.c:114
+#: src/pwconv.c:99 src/pwunconv.c:113
#, c-format
msgid "%s: can't open passwd file\n"
msgstr ""
-#: src/pwconv.c:127
+#: src/pwconv.c:126
#, c-format
msgid "%s: can't remove shadow entry for %s\n"
msgstr ""
-#: src/pwconv.c:170
+#: src/pwconv.c:169
#, c-format
msgid "%s: can't update passwd entry for %s\n"
msgstr ""
-#: src/pwconv.c:177
+#: src/pwconv.c:176
#, c-format
msgid "%s: can't update shadow file\n"
msgstr ""
-#: src/pwconv.c:181
+#: src/pwconv.c:180
#, c-format
msgid "%s: can't update passwd file\n"
msgstr ""
msgid "%s: Shadow passwords are not configured.\n"
msgstr ""
-#: src/pwunconv.c:172
+#: src/pwunconv.c:171
#, c-format
msgid "%s: can't update entry for user %s\n"
msgstr ""
-#: src/pwunconv.c:189
+#: src/pwunconv.c:188
#, c-format
msgid "%s: can't delete shadow password file\n"
msgstr ""
-#: src/su.c:145
+#: src/su.c:140
msgid "Sorry."
msgstr ""
-#: src/su.c:227
+#: src/su.c:222
#, c-format
msgid "%s: must be run from a terminal\n"
msgstr ""
-#: src/su.c:319
+#: src/su.c:311
#, c-format
msgid "%s: pam_start: error %d\n"
msgstr ""
-#: src/su.c:345
+#: src/su.c:337
#, c-format
msgid "Unknown id: %s\n"
msgstr ""
#. access denied (-1) or unexpected value
-#: src/su.c:380 src/su.c:395
+#: src/su.c:372 src/su.c:387
#, c-format
msgid "You are not authorized to su %s\n"
msgstr ""
#. require own password
-#: src/su.c:391
+#: src/su.c:383
msgid "(Enter your own password.)"
msgstr ""
-#: src/su.c:412
+#: src/su.c:404
#, c-format
msgid "%s: permission denied (shell).\n"
msgstr ""
-#: src/su.c:436
+#: src/su.c:428
#, c-format
msgid ""
"%s: %s\n"
"(Ignored)\n"
msgstr ""
-#: src/su.c:605
+#: src/su.c:628
msgid "No shell\n"
msgstr ""
#. must be a password file!
-#: src/sulogin.c:138
+#: src/sulogin.c:136
msgid "No password file\n"
msgstr ""
#.
#. * Fail secure
#.
-#: src/sulogin.c:180
+#: src/sulogin.c:178
msgid "No password entry for 'root'\n"
msgstr ""
#. * given we just exit.
#.
#. get a password for root
-#: src/sulogin.c:194
+#: src/sulogin.c:192
msgid ""
"\n"
"Type control-d to proceed with normal startup,\n"
msgstr ""
#. make new environment active
-#: src/sulogin.c:243
+#: src/sulogin.c:241
msgid "Entering System Maintenance Mode\n"
msgstr ""
-#: src/useradd.c:244
+#: src/useradd.c:243
#, c-format
msgid "%s: rebuild the group database\n"
msgstr ""
-#: src/useradd.c:251
+#: src/useradd.c:250
#, c-format
msgid "%s: rebuild the shadow group database\n"
msgstr ""
-#: src/useradd.c:288 src/usermod.c:941
+#: src/useradd.c:287 src/usermod.c:940
#, c-format
msgid "%s: invalid numeric argument `%s'\n"
msgstr ""
-#: src/useradd.c:344
+#: src/useradd.c:343
#, c-format
msgid "%s: unknown gid %s\n"
msgstr ""
-#: src/useradd.c:351 src/useradd.c:643 src/useradd.c:1229 src/usermod.c:253
-#: src/usermod.c:1072
+#: src/useradd.c:350 src/useradd.c:642 src/useradd.c:1228 src/usermod.c:252
+#: src/usermod.c:1071
#, c-format
msgid "%s: unknown group %s\n"
msgstr ""
-#: src/useradd.c:419
+#: src/useradd.c:418
#, c-format
msgid "group=%s,%ld basedir=%s skel=%s\n"
msgstr ""
-#: src/useradd.c:422
+#: src/useradd.c:421
#, c-format
msgid "shell=%s "
msgstr ""
-#: src/useradd.c:424
+#: src/useradd.c:423
#, c-format
msgid "inactive=%ld expire=%s"
msgstr ""
-#: src/useradd.c:428
+#: src/useradd.c:427
#, c-format
msgid "GROUP=%ld\n"
msgstr ""
-#: src/useradd.c:429
+#: src/useradd.c:428
#, c-format
msgid "HOME=%s\n"
msgstr ""
-#: src/useradd.c:431
+#: src/useradd.c:430
#, c-format
msgid "INACTIVE=%ld\n"
msgstr ""
-#: src/useradd.c:432
+#: src/useradd.c:431
#, c-format
msgid "EXPIRE=%s\n"
msgstr ""
-#: src/useradd.c:434
+#: src/useradd.c:433
#, c-format
msgid "SHELL=%s\n"
msgstr ""
-#: src/useradd.c:435
+#: src/useradd.c:434
#, c-format
msgid "SKEL=%s\n"
msgstr ""
-#: src/useradd.c:471
+#: src/useradd.c:470
#, c-format
msgid "%s: cannot create new defaults file\n"
msgstr ""
-#: src/useradd.c:565 src/useradd.c:576
+#: src/useradd.c:564 src/useradd.c:575
#, c-format
msgid "%s: rename: %s"
msgstr ""
-#: src/useradd.c:663 src/usermod.c:273
+#: src/useradd.c:662 src/usermod.c:272
#, c-format
msgid "%s: group `%s' is a NIS group.\n"
msgstr ""
-#: src/useradd.c:671 src/usermod.c:281
+#: src/useradd.c:670 src/usermod.c:280
#, c-format
msgid "%s: too many groups specified (max %d).\n"
msgstr ""
-#: src/useradd.c:703 src/usermod.c:313
+#: src/useradd.c:702 src/usermod.c:312
#, c-format
msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n"
msgstr ""
-#: src/useradd.c:706
+#: src/useradd.c:705
msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n"
msgstr ""
-#: src/useradd.c:709 src/usermod.c:319
+#: src/useradd.c:708 src/usermod.c:318
msgid "[-f inactive] [-e expire ] "
msgstr ""
-#: src/useradd.c:712
+#: src/useradd.c:711
msgid "[-A program] "
msgstr ""
-#: src/useradd.c:714 src/usermod.c:324
+#: src/useradd.c:713 src/usermod.c:323
msgid "[-p passwd] name\n"
msgstr ""
-#: src/useradd.c:716
+#: src/useradd.c:715
#, c-format
msgid " %s\t-D [-g group] [-b base] [-s shell]\n"
msgstr ""
-#: src/useradd.c:719
+#: src/useradd.c:718
msgid "\t\t[-f inactive] [-e expire ]\n"
msgstr ""
-#: src/useradd.c:816 src/usermod.c:446
+#: src/useradd.c:815 src/usermod.c:445
#, c-format
msgid "%s: error locking group file\n"
msgstr ""
-#: src/useradd.c:820 src/usermod.c:451
+#: src/useradd.c:819 src/usermod.c:450
#, c-format
msgid "%s: error opening group file\n"
msgstr ""
-#: src/useradd.c:825 src/usermod.c:558
+#: src/useradd.c:824 src/usermod.c:557
#, c-format
msgid "%s: error locking shadow group file\n"
msgstr ""
-#: src/useradd.c:830 src/usermod.c:564
+#: src/useradd.c:829 src/usermod.c:563
#, c-format
msgid "%s: error opening shadow group file\n"
msgstr ""
-#: src/useradd.c:1002
+#: src/useradd.c:1001
#, c-format
msgid "%s: uid %d is not unique\n"
msgstr ""
-#: src/useradd.c:1032
+#: src/useradd.c:1031
#, c-format
msgid "%s: can't get unique uid\n"
msgstr ""
-#: src/useradd.c:1140 src/useradd.c:1284 src/usermod.c:1020 src/usermod.c:1031
-#: src/usermod.c:1041 src/usermod.c:1087 src/usermod.c:1122
+#: src/useradd.c:1139 src/useradd.c:1283 src/usermod.c:1019 src/usermod.c:1030
+#: src/usermod.c:1040 src/usermod.c:1086 src/usermod.c:1121
#, c-format
msgid "%s: invalid field `%s'\n"
msgstr ""
-#: src/useradd.c:1154
+#: src/useradd.c:1153
#, c-format
msgid "%s: invalid base directory `%s'\n"
msgstr ""
-#: src/useradd.c:1164
+#: src/useradd.c:1163
#, c-format
msgid "%s: invalid comment `%s'\n"
msgstr ""
-#: src/useradd.c:1174
+#: src/useradd.c:1173
#, c-format
msgid "%s: invalid home directory `%s'\n"
msgstr ""
-#: src/useradd.c:1192 src/usermod.c:1054
+#: src/useradd.c:1191 src/usermod.c:1053
#, c-format
msgid "%s: invalid date `%s'\n"
msgstr ""
-#: src/useradd.c:1204
+#: src/useradd.c:1203
#, c-format
msgid "%s: shadow passwords required for -e\n"
msgstr ""
-#: src/useradd.c:1219
+#: src/useradd.c:1218
#, c-format
msgid "%s: shadow passwords required for -f\n"
msgstr ""
-#: src/useradd.c:1293
+#: src/useradd.c:1292
#, c-format
msgid "%s: invalid shell `%s'\n"
msgstr ""
-#: src/useradd.c:1334
+#: src/useradd.c:1333
#, c-format
msgid "%s: invalid user name `%s'\n"
msgstr ""
-#: src/useradd.c:1370 src/userdel.c:262 src/usermod.c:1184
+#: src/useradd.c:1369 src/userdel.c:292 src/usermod.c:1183
#, c-format
msgid "%s: cannot rewrite password file\n"
msgstr ""
-#: src/useradd.c:1375 src/userdel.c:265 src/usermod.c:1189
+#: src/useradd.c:1374 src/userdel.c:295 src/usermod.c:1188
#, c-format
msgid "%s: cannot rewrite shadow password file\n"
msgstr ""
-#: src/useradd.c:1415 src/userdel.c:329 src/usermod.c:1224
+#: src/useradd.c:1414 src/userdel.c:359 src/usermod.c:1223
#, c-format
msgid "%s: unable to lock password file\n"
msgstr ""
-#: src/useradd.c:1419 src/userdel.c:333 src/usermod.c:1228
+#: src/useradd.c:1418 src/userdel.c:363 src/usermod.c:1227
#, c-format
msgid "%s: unable to open password file\n"
msgstr ""
-#: src/useradd.c:1425 src/userdel.c:338 src/usermod.c:1233
+#: src/useradd.c:1424 src/userdel.c:368 src/usermod.c:1232
#, c-format
msgid "%s: cannot lock shadow password file\n"
msgstr ""
-#: src/useradd.c:1431 src/userdel.c:343 src/usermod.c:1238
+#: src/useradd.c:1430 src/userdel.c:373 src/usermod.c:1237
#, c-format
msgid "%s: cannot open shadow password file\n"
msgstr ""
-#: src/useradd.c:1530 src/usermod.c:1325
+#: src/useradd.c:1529 src/usermod.c:1324
#, c-format
msgid "%s: error adding authentication method\n"
msgstr ""
-#: src/useradd.c:1553
+#: src/useradd.c:1552
#, c-format
msgid "%s: error adding new password entry\n"
msgstr ""
-#: src/useradd.c:1568
+#: src/useradd.c:1567
#, c-format
msgid "%s: error updating password dbm entry\n"
msgstr ""
-#: src/useradd.c:1584 src/usermod.c:1384
+#: src/useradd.c:1583 src/usermod.c:1383
#, c-format
msgid "%s: error adding new shadow password entry\n"
msgstr ""
-#: src/useradd.c:1600 src/usermod.c:1399
+#: src/useradd.c:1599 src/usermod.c:1398
#, c-format
msgid "%s: error updating shadow passwd dbm entry\n"
msgstr ""
-#: src/useradd.c:1632
+#: src/useradd.c:1631
#, c-format
msgid "%s: cannot create directory %s\n"
msgstr ""
-#: src/useradd.c:1709 src/usermod.c:1162
+#: src/useradd.c:1708 src/usermod.c:1161
#, c-format
msgid "%s: user %s exists\n"
msgstr ""
-#: src/useradd.c:1739
+#: src/useradd.c:1738
#, c-format
msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n"
msgstr ""
-#: src/userdel.c:128
+#: src/userdel.c:127
#, c-format
msgid "usage: %s [-r] name\n"
msgstr ""
-#: src/userdel.c:175 src/userdel.c:230
+#: src/userdel.c:178 src/userdel.c:260
#, c-format
msgid "%s: error updating group entry\n"
msgstr ""
-#: src/userdel.c:185 src/userdel.c:239
+#: src/userdel.c:188 src/userdel.c:269
#, c-format
msgid "%s: cannot update dbm group entry\n"
msgstr ""
-#: src/userdel.c:270
+#: src/userdel.c:215
+#, c-format
+msgid "%s: cannot remove dbm group entry\n"
+msgstr ""
+
+#: src/userdel.c:300
#, c-format
msgid "%s: cannot rewrite TCFS key file\n"
msgstr ""
-#: src/userdel.c:350
+#: src/userdel.c:380
#, c-format
msgid "%s: cannot lock TCFS key file\n"
msgstr ""
-#: src/userdel.c:354
+#: src/userdel.c:384
#, c-format
msgid "%s: cannot open TCFS key file\n"
msgstr ""
-#: src/userdel.c:363
+#: src/userdel.c:393
#, c-format
msgid "%s: cannot open group file\n"
msgstr ""
-#: src/userdel.c:373
+#: src/userdel.c:403
#, c-format
msgid "%s: cannot open shadow group file\n"
msgstr ""
-#: src/userdel.c:404 src/userdel.c:419
+#: src/userdel.c:434 src/userdel.c:449
#, c-format
msgid "%s: error deleting authentication\n"
msgstr ""
-#: src/userdel.c:428
+#: src/userdel.c:458
#, c-format
msgid "%s: error deleting password entry\n"
msgstr ""
-#: src/userdel.c:431
+#: src/userdel.c:461
#, c-format
msgid "%s: error deleting shadow password entry\n"
msgstr ""
-#: src/userdel.c:440
+#: src/userdel.c:470
#, c-format
msgid "%s: error deleting TCFS entry\n"
msgstr ""
-#: src/userdel.c:453
+#: src/userdel.c:483
#, c-format
msgid "%s: error deleting password dbm entry\n"
msgstr ""
-#: src/userdel.c:472
+#: src/userdel.c:502
#, c-format
msgid "%s: error deleting shadow passwd dbm entry\n"
msgstr ""
-#: src/userdel.c:513
+#: src/userdel.c:543
#, c-format
msgid "%s: user %s is currently logged in\n"
msgstr ""
-#: src/userdel.c:630
+#: src/userdel.c:660
#, c-format
msgid "%s: warning: %s not owned by %s, not removing\n"
msgstr ""
-#: src/userdel.c:636
+#: src/userdel.c:666
#, c-format
msgid "%s: warning: can't remove "
msgstr ""
-#: src/userdel.c:711 src/usermod.c:968
+#: src/userdel.c:741 src/usermod.c:967
#, c-format
msgid "%s: user %s does not exist\n"
msgstr ""
-#: src/userdel.c:725 src/usermod.c:984
+#: src/userdel.c:755 src/usermod.c:983
#, c-format
msgid "%s: user %s is a NIS user\n"
msgstr ""
-#: src/userdel.c:762
+#: src/userdel.c:792
#, c-format
msgid "%s: %s not owned by %s, not removing\n"
msgstr ""
-#: src/userdel.c:785
+#: src/userdel.c:815
#, c-format
msgid "%s: not removing directory %s (would remove home of user %s)\n"
msgstr ""
-#: src/userdel.c:798
+#: src/userdel.c:828
#, c-format
msgid "%s: error removing directory %s\n"
msgstr ""
-#: src/usermod.c:316
+#: src/usermod.c:315
msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n"
msgstr ""
-#: src/usermod.c:322
+#: src/usermod.c:321
msgid "[-A {DEFAULT|program},... ] "
msgstr ""
-#: src/usermod.c:478
+#: src/usermod.c:477
#, c-format
msgid "%s: out of memory in update_group\n"
msgstr ""
-#: src/usermod.c:601
+#: src/usermod.c:600
#, c-format
msgid "%s: out of memory in update_gshadow\n"
msgstr ""
-#: src/usermod.c:1139
+#: src/usermod.c:1138
#, c-format
msgid "%s: no flags given\n"
msgstr ""
-#: src/usermod.c:1146
+#: src/usermod.c:1145
#, c-format
msgid "%s: shadow passwords required for -e and -f\n"
msgstr ""
-#: src/usermod.c:1167
+#: src/usermod.c:1166
#, c-format
msgid "%s: uid %ld is not unique\n"
msgstr ""
-#: src/usermod.c:1315
+#: src/usermod.c:1314
#, c-format
msgid "%s: error deleting authentication method\n"
msgstr ""
-#: src/usermod.c:1335
+#: src/usermod.c:1334
#, c-format
msgid "%s: error changing authentication method\n"
msgstr ""
-#: src/usermod.c:1352
+#: src/usermod.c:1351
#, c-format
msgid "%s: error changing password entry\n"
msgstr ""
-#: src/usermod.c:1358
+#: src/usermod.c:1357
#, c-format
msgid "%s: error removing password entry\n"
msgstr ""
-#: src/usermod.c:1366
+#: src/usermod.c:1365
#, c-format
msgid "%s: error adding password dbm entry\n"
msgstr ""
-#: src/usermod.c:1373
+#: src/usermod.c:1372
#, c-format
msgid "%s: error removing passwd dbm entry\n"
msgstr ""
-#: src/usermod.c:1390
+#: src/usermod.c:1389
#, c-format
msgid "%s: error removing shadow password entry\n"
msgstr ""
-#: src/usermod.c:1405
+#: src/usermod.c:1404
#, c-format
msgid "%s: error removing shadow passwd dbm entry\n"
msgstr ""
-#: src/usermod.c:1436
+#: src/usermod.c:1435
#, c-format
msgid "%s: directory %s exists\n"
msgstr ""
-#: src/usermod.c:1443
+#: src/usermod.c:1442
#, c-format
msgid "%s: can't create %s\n"
msgstr ""
-#: src/usermod.c:1449
+#: src/usermod.c:1448
#, c-format
msgid "%s: can't chown %s\n"
msgstr ""
-#: src/usermod.c:1465
+#: src/usermod.c:1464
#, c-format
msgid "%s: cannot rename directory %s to %s\n"
msgstr ""
#. better leave it alone
-#: src/usermod.c:1562
+#: src/usermod.c:1561
#, c-format
msgid "%s: warning: %s not owned by %s\n"
msgstr ""
-#: src/usermod.c:1568
+#: src/usermod.c:1567
msgid "failed to change mailbox owner"
msgstr ""
-#: src/usermod.c:1575
+#: src/usermod.c:1574
msgid "failed to rename mailbox"
msgstr ""
-#: src/vipw.c:103
+#: src/vipw.c:102
#, c-format
msgid ""
"\n"
"%s: %s is unchanged\n"
msgstr ""
-#: src/vipw.c:128
+#: src/vipw.c:127
msgid "Couldn't lock file"
msgstr ""
-#: src/vipw.c:135
+#: src/vipw.c:134
msgid "Couldn't make backup"
msgstr ""
-#: src/vipw.c:174
+#: src/vipw.c:187
#, c-format
msgid "%s: can't restore %s: %s (your changes are in %s)\n"
msgstr ""
-#: src/vipw.c:213
+#: src/vipw.c:226
msgid ""
"Usage:\n"
"`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n"
msgid ""
msgstr ""
"Project-Id-Version: shadow 19990709\n"
-"POT-Creation-Date: 1999-08-27 21:03+0200\n"
+"POT-Creation-Date: 2000-08-26 20:28+0200\n"
"PO-Revision-Date: 1999-08-16 21:20+0100\n"
"Last-Translator: Kristoffer Brånemyr <ztion@swipnet.se>\n"
"Language-Team: sv <sv@li.org>\n"
msgid "You have mail."
msgstr "Du har post."
-#: libmisc/obscure.c:281 src/passwd.c:311
+#: libmisc/obscure.c:281 src/passwd.c:309
#, c-format
msgid "Bad password: %s. "
msgstr "Felaktigt lösenord: %s. "
msgid "Dialup Password: "
msgstr "Uppringningslösenord: "
-#: lib/getdef.c:249
+#: lib/getdef.c:253
msgid "Could not allocate space for config info.\n"
msgstr "Kunde inte allokera rum för konfigureringsinformation.\n"
#.
#. * Item was never found.
#.
-#: lib/getdef.c:303
+#: lib/getdef.c:307
#, c-format
msgid "configuration error - unknown item '%s' (notify administrator)\n"
msgstr "konfigurerings fel - okänt object \"%s\" (meddela systemoperatören)\n"
-#: lib/getdef.c:390
+#: lib/getdef.c:394
#, c-format
msgid "error - lookup '%s' failed\n"
msgstr "fel - kunde inte hitta \"%s\"\n"
-#: lib/getdef.c:398
+#: lib/getdef.c:402
#, c-format
msgid "%s not found\n"
msgstr "%s hittades inte\n"
#. * get the password from her, and set the salt for
#. * the decryption from the group file.
#.
-#: lib/pwauth.c:54 src/newgrp.c:297
+#: lib/pwauth.c:54 src/newgrp.c:305
msgid "Password: "
msgstr "Lösenord: "
msgid "Account Expires:\t"
msgstr "Lösenordet upphör:\t"
-#: src/chage.c:468
+#: src/chage.c:471
#, c-format
msgid "%s: do not include \"l\" with other flags\n"
msgstr "%s: inkludera inte \"l\" tillsammands med andra flaggor\n"
-#: src/chage.c:480 src/chage.c:592 src/login.c:529
+#: src/chage.c:483 src/chage.c:595 src/login.c:529
#, c-format
msgid "%s: permission denied\n"
msgstr "%s: tillåtelse nekas\n"
-#: src/chage.c:492 src/chpasswd.c:122
+#: src/chage.c:495 src/chpasswd.c:120
#, c-format
msgid "%s: can't lock password file\n"
msgstr "%s: kan inte låsa lösenordsfilen\n"
-#: src/chage.c:498 src/chpasswd.c:126
+#: src/chage.c:501 src/chpasswd.c:124
#, c-format
msgid "%s: can't open password file\n"
msgstr "%s: kan inte öppna lösenordsfilen\n"
-#: src/chage.c:505
+#: src/chage.c:508
#, c-format
msgid "%s: unknown user: %s\n"
msgstr "%s: okänd användare: %s\n"
-#: src/chage.c:524
+#: src/chage.c:527
#, c-format
msgid "%s: can't lock shadow password file\n"
msgstr "%s: kan inte låsa skugglösenordsfilen\n"
-#: src/chage.c:531
+#: src/chage.c:534
#, c-format
msgid "%s: can't open shadow password file\n"
msgstr "%s: kan inte öppna skugglösenordsfilen\n"
-#: src/chage.c:613
+#: src/chage.c:616
#, c-format
msgid "Changing the aging information for %s\n"
msgstr "Ändrar åldringsinformation för %s\n"
-#: src/chage.c:615
+#: src/chage.c:618
#, c-format
msgid "%s: error changing fields\n"
msgstr "%s: fel uppstod under byte av fält\n"
-#: src/chage.c:642 src/chage.c:705 src/pwunconv.c:184
+#: src/chage.c:645 src/chage.c:708 src/pwunconv.c:183
#, c-format
msgid "%s: can't update password file\n"
msgstr "%s: kan inte uppdatera lösenordsfilen\n"
-#: src/chage.c:672 src/pwunconv.c:179
+#: src/chage.c:675 src/pwunconv.c:178
#, c-format
msgid "%s: can't update shadow password file\n"
msgstr "%s: kan inte uppdatera skugglösenordsfilen\n"
-#: src/chage.c:721 src/chage.c:736 src/chfn.c:572 src/chsh.c:411
-#: src/passwd.c:827 src/passwd.c:928
+#: src/chage.c:724 src/chage.c:739 src/chfn.c:571 src/chsh.c:410
+#: src/passwd.c:825 src/passwd.c:926
msgid "Error updating the DBM password entry.\n"
msgstr "Fel under uppdatering av DBM-lösenordsnoteringen.\n"
-#: src/chage.c:753
+#: src/chage.c:756
#, c-format
msgid "%s: can't rewrite shadow password file\n"
msgstr "%s: kan inte skriva om skugglösenordsfilen\n"
-#: src/chage.c:767
+#: src/chage.c:770
#, c-format
msgid "%s: can't rewrite password file\n"
msgstr "%s: kan inte skriva om lösenordsfilen\n"
-#: src/chage.c:816
+#: src/chage.c:821
#, c-format
msgid "%s: no aging information present\n"
msgstr "%s: ingen åldringsinformation finns tillgänglig\n"
-#: src/chfn.c:108
+#: src/chfn.c:107
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ]\n"
"%s [ -f hela_namnet ] [ -r rumsnummer ] [ -w arbetstele ]\n"
"\t[ -h hemtele ] [ -o övrigt ] [ användare ]\n"
-#: src/chfn.c:112
+#: src/chfn.c:111
#, c-format
msgid ""
"Usage: %s [ -f full_name ] [ -r room_no ] [ -w work_ph ] [ -h home_ph ]\n"
"Användning: %s [ -f hela_namnet ] [ -r rumsnummer ] [ -w arbetstele ] [ -h "
"hemtele ]\n"
-#: src/chfn.c:164 src/chsh.c:120
+#: src/chfn.c:163 src/chsh.c:119
msgid "Enter the new value, or press return for the default\n"
msgstr "Skriv in det nya värdet, eller tryck return för standardvärdet\n"
-#: src/chfn.c:167
+#: src/chfn.c:166
msgid "Full Name"
msgstr "Hela namnet"
-#: src/chfn.c:169
+#: src/chfn.c:168
#, c-format
msgid "\tFull Name: %s\n"
msgstr "\tHela namnet: %s\n"
-#: src/chfn.c:172
+#: src/chfn.c:171
msgid "Room Number"
msgstr "Rumsnummer"
-#: src/chfn.c:174
+#: src/chfn.c:173
#, c-format
msgid "\tRoom Number: %s\n"
msgstr "\tRumsnummer: %s\n"
-#: src/chfn.c:177
+#: src/chfn.c:176
msgid "Work Phone"
msgstr "Arbetstelefonnummer"
-#: src/chfn.c:179
+#: src/chfn.c:178
#, c-format
msgid "\tWork Phone: %s\n"
msgstr "\tArbetstelefonnummer: %s\n"
-#: src/chfn.c:182
+#: src/chfn.c:181
msgid "Home Phone"
msgstr "Hemtelefonnummer"
-#: src/chfn.c:184
+#: src/chfn.c:183
#, c-format
msgid "\tHome Phone: %s\n"
msgstr "\tHemtelefonnummer: %s\n"
-#: src/chfn.c:187
+#: src/chfn.c:186
msgid "Other"
msgstr "Övrigt"
-#: src/chfn.c:300 src/chfn.c:308 src/chfn.c:316 src/chfn.c:324 src/chfn.c:332
-#: src/chfn.c:393 src/passwd.c:1228
+#: src/chfn.c:299 src/chfn.c:307 src/chfn.c:315 src/chfn.c:323 src/chfn.c:331
+#: src/chfn.c:392 src/passwd.c:1226
#, c-format
msgid "%s: Permission denied.\n"
msgstr "%s: Tillåtelse nekas.\n"
-#: src/chfn.c:353 src/chsh.c:226 src/passwd.c:1279
+#: src/chfn.c:352 src/chsh.c:225 src/passwd.c:1277
#, c-format
msgid "%s: Unknown user %s\n"
msgstr "%s: Okänd användare %s\n"
-#: src/chfn.c:359 src/chsh.c:234 src/passwd.c:1209
+#: src/chfn.c:358 src/chsh.c:233 src/passwd.c:1207
#, c-format
msgid "%s: Cannot determine your user name.\n"
msgstr "%s: Kan inte avgöra ditt användarnamn.\n"
-#: src/chfn.c:375 src/chsh.c:252
+#: src/chfn.c:374 src/chsh.c:251
#, c-format
msgid "%s: cannot change user `%s' on NIS client.\n"
msgstr "%s: kan inte ändra användare \"%s\" på NIS-klienten.\n"
-#: src/chfn.c:380 src/chsh.c:259
+#: src/chfn.c:379 src/chsh.c:258
#, c-format
msgid "%s: `%s' is the NIS master for this client.\n"
msgstr "%s: \"%s\" är NIS-mästare för denna klient.\n"
-#: src/chfn.c:455
+#: src/chfn.c:454
#, c-format
msgid "Changing the user information for %s\n"
msgstr "Ändrar användarinformation för %s\n"
-#: src/chfn.c:464
+#: src/chfn.c:463
#, c-format
msgid "%s: invalid name: \"%s\"\n"
msgstr "%s: felaktigt namn: \"%s\"\n"
-#: src/chfn.c:469
+#: src/chfn.c:468
#, c-format
msgid "%s: invalid room number: \"%s\"\n"
msgstr "%s: felaktigt rumsnummer: \"%s\"\n"
-#: src/chfn.c:474
+#: src/chfn.c:473
#, c-format
msgid "%s: invalid work phone: \"%s\"\n"
msgstr "%s: felaktigt arbetstelefonnummer: \"%s\"\n"
-#: src/chfn.c:479
+#: src/chfn.c:478
#, c-format
msgid "%s: invalid home phone: \"%s\"\n"
msgstr "%s: felaktigt hemtelefonnummer: \"%s\"\n"
-#: src/chfn.c:484
+#: src/chfn.c:483
#, c-format
msgid "%s: \"%s\" contains illegal characters\n"
msgstr "%s: \"%s\" innehåller otillåtna tecken\n"
-#: src/chfn.c:496
+#: src/chfn.c:495
#, c-format
msgid "%s: fields too long\n"
msgstr "%s: för långa fält\n"
-#: src/chfn.c:511 src/chsh.c:349 src/gpasswd.c:583 src/passwd.c:1390
+#: src/chfn.c:510 src/chsh.c:348 src/gpasswd.c:582 src/passwd.c:1388
msgid "Cannot change ID to root.\n"
msgstr "Kan inte ändra ID till root.\n"
-#: src/chfn.c:524 src/chsh.c:363 src/passwd.c:737 src/passwd.c:882
+#: src/chfn.c:523 src/chsh.c:362 src/passwd.c:735 src/passwd.c:880
msgid "Cannot lock the password file; try again later.\n"
msgstr "Kan inte låsa lösenordsfilen; försök igen senare.\n"
-#: src/chfn.c:530 src/chsh.c:369 src/passwd.c:742 src/passwd.c:887
+#: src/chfn.c:529 src/chsh.c:368 src/passwd.c:740 src/passwd.c:885
msgid "Cannot open the password file.\n"
msgstr "Kan inte öppna lösenordsfilen.\n"
-#: src/chfn.c:547 src/chsh.c:384 src/passwd.c:748 src/usermod.c:1272
+#: src/chfn.c:546 src/chsh.c:383 src/passwd.c:746 src/usermod.c:1271
#, c-format
msgid "%s: %s not found in /etc/passwd\n"
msgstr "%s: %s hittades inte i /etc/passwd\n"
-#: src/chfn.c:564 src/chsh.c:403 src/passwd.c:821 src/passwd.c:922
-#: src/passwd.c:962
+#: src/chfn.c:563 src/chsh.c:402 src/passwd.c:819 src/passwd.c:920
+#: src/passwd.c:960
msgid "Error updating the password entry.\n"
msgstr "Fel under uppdatering av lösenordsnoteringen.\n"
-#: src/chfn.c:587 src/chsh.c:426 src/passwd.c:834 src/passwd.c:935
+#: src/chfn.c:586 src/chsh.c:425 src/passwd.c:832 src/passwd.c:933
msgid "Cannot commit password file changes.\n"
msgstr "Kan inte genomföra ändringar i lösenordsfilen.\n"
-#: src/chfn.c:594 src/chsh.c:433
+#: src/chfn.c:593 src/chsh.c:432
msgid "Cannot unlock the password file.\n"
msgstr "Kan inte låsa upp lösenordsfilen.\n"
-#: src/chpasswd.c:78
+#: src/chpasswd.c:76
#, c-format
msgid "usage: %s [-e]\n"
msgstr "Användning: %s [-e]\n"
-#: src/chpasswd.c:134 src/pwconv.c:105
+#: src/chpasswd.c:132 src/pwconv.c:104
#, c-format
msgid "%s: can't lock shadow file\n"
msgstr "%s: kan inte låsa skuggfilen\n"
-#: src/chpasswd.c:139 src/gpasswd.c:609 src/pwconv.c:110 src/pwunconv.c:119
-#: src/pwunconv.c:124
+#: src/chpasswd.c:137 src/gpasswd.c:608 src/pwconv.c:109 src/pwunconv.c:118
+#: src/pwunconv.c:123
#, c-format
msgid "%s: can't open shadow file\n"
msgstr "%s: kan inte öppna skuggfilen\n"
-#: src/chpasswd.c:161 src/newusers.c:418
+#: src/chpasswd.c:159 src/newusers.c:415
#, c-format
msgid "%s: line %d: line too long\n"
msgstr "%s: rad %d: för lång rad\n"
-#: src/chpasswd.c:181
+#: src/chpasswd.c:179
#, c-format
msgid "%s: line %d: missing new password\n"
msgstr "%s: rad %d: det nya lösenordet saknas\n"
-#: src/chpasswd.c:197
+#: src/chpasswd.c:195
#, c-format
msgid "%s: line %d: unknown user %s\n"
msgstr "%s: rad %d: okänd användare %s\n"
-#: src/chpasswd.c:249
+#: src/chpasswd.c:247
#, c-format
msgid "%s: line %d: cannot update password entry\n"
msgstr "%s: rad %d: kan inte uppdatera lösenordsnoteringen\n"
-#: src/chpasswd.c:265 src/newusers.c:538
+#: src/chpasswd.c:263 src/newusers.c:535
#, c-format
msgid "%s: error detected, changes ignored\n"
msgstr "%s: fel upptäcktes, ändringarna ignorerades\n"
-#: src/chpasswd.c:276
+#: src/chpasswd.c:274
#, c-format
msgid "%s: error updating shadow file\n"
msgstr "%s: fel under uppdatering av skuggfilen\n"
-#: src/chpasswd.c:284
+#: src/chpasswd.c:282
#, c-format
msgid "%s: error updating password file\n"
msgstr "%s: fel under uppdatering av lösenordsfilen\n"
-#: src/chsh.c:106
+#: src/chsh.c:105
#, c-format
msgid "Usage: %s [ -s shell ] [ name ]\n"
msgstr "Användning: %s [ -s skal ] [ namn ]\n"
-#: src/chsh.c:121
+#: src/chsh.c:120
msgid "Login Shell"
msgstr "Inloggningsskal"
-#: src/chsh.c:275 src/chsh.c:288
+#: src/chsh.c:274 src/chsh.c:287
#, c-format
msgid "You may not change the shell for %s.\n"
msgstr "Du får inte ändra skal åt %s.\n"
-#: src/chsh.c:317
+#: src/chsh.c:316
#, c-format
msgid "Changing the login shell for %s\n"
msgstr "Ändrar inloggningsskal åt %s\n"
-#: src/chsh.c:329
+#: src/chsh.c:328
#, c-format
msgid "%s: Invalid entry: %s\n"
msgstr "%s: Felaktig notering: %s\n"
-#: src/chsh.c:334
+#: src/chsh.c:333
#, c-format
msgid "%s is an invalid shell.\n"
msgstr "%s är ett felaktigt skal.\n"
-#: src/dpasswd.c:71
+#: src/dpasswd.c:69
#, c-format
msgid "Usage: %s [ -(a|d) ] shell\n"
msgstr "Användning: %s [ -(a|d) ] skal\n"
-#: src/dpasswd.c:136
+#: src/dpasswd.c:134
msgid "Shell password: "
msgstr "Skallösenord: "
-#: src/dpasswd.c:142
+#: src/dpasswd.c:140
msgid "re-enter Shell password: "
msgstr "skriv in skallösenordet igen: "
-#: src/dpasswd.c:149
+#: src/dpasswd.c:147
#, c-format
msgid "%s: Passwords do not match, try again.\n"
msgstr "%s: Lösenorden matchar inte varandra, försök igen.\n"
-#: src/dpasswd.c:169
+#: src/dpasswd.c:167
#, c-format
msgid "%s: can't create %s"
msgstr "%s: kan inte skapa %s"
-#: src/dpasswd.c:174
+#: src/dpasswd.c:172
#, c-format
msgid "%s: can't open %s"
msgstr "%s: kan inte öppna %s"
-#: src/dpasswd.c:202
+#: src/dpasswd.c:200
#, c-format
msgid "%s: Shell %s not found.\n"
msgstr "%s: Hittade inte skalet %s.\n"
-#: src/expiry.c:85
+#: src/expiry.c:84
msgid "Usage: expiry { -f | -c }\n"
msgstr "Användning: expiry { -f | -c }\n"
-#: src/expiry.c:138
+#: src/expiry.c:137
#, c-format
msgid "%s: WARNING! Must be set-UID root!\n"
msgstr "%s: VARNING! Måste vara set-UID root!\n"
-#: src/expiry.c:149
+#: src/expiry.c:148
#, c-format
msgid "%s: unknown user\n"
msgstr "%s: okänd användare\n"
-#: src/faillog.c:80
+#: src/faillog.c:79
#, c-format
msgid "usage: %s [-a|-u user] [-m max] [-r] [-t days] [-l locksecs]\n"
msgstr ""
"Användning: %s [-a|-u användare] [-m högst] [-r] [-t dagar] [-l låssek]\n"
-#: src/faillog.c:135 src/lastlog.c:95
+#: src/faillog.c:134 src/lastlog.c:94
#, c-format
msgid "Unknown User: %s\n"
msgstr "Okänd användare: %s\n"
-#: src/faillog.c:216
+#: src/faillog.c:215
msgid "Username Failures Maximum Latest\n"
msgstr "Användarnamn Felaktiga inloggningar Högsta Senaste\n"
-#: src/faillog.c:233
+#: src/faillog.c:232
#, c-format
msgid " %s on %s"
msgstr " %s på %s"
-#: src/faillog.c:237
+#: src/faillog.c:236
#, c-format
msgid " [%lds left]"
msgstr " [%lds kvar]"
-#: src/faillog.c:240
+#: src/faillog.c:239
#, c-format
msgid " [%lds lock]"
msgstr " [%lds låsning]"
-#: src/gpasswd.c:91
+#: src/gpasswd.c:89
#, c-format
msgid "usage: %s [-r|-R] group\n"
msgstr "Användning: %s [-r|-R] grupp\n"
-#: src/gpasswd.c:92
+#: src/gpasswd.c:90
#, c-format
msgid " %s [-a user] group\n"
msgstr " %s [-a användare] grupp\n"
-#: src/gpasswd.c:93
+#: src/gpasswd.c:91
#, c-format
msgid " %s [-d user] group\n"
msgstr " %s [-d användare] grupp\n"
-#: src/gpasswd.c:95
+#: src/gpasswd.c:93
#, c-format
msgid " %s [-A user,...] [-M user,...] group\n"
msgstr " %s [-A användare,...] [-M användare,...] grupp\n"
-#: src/gpasswd.c:98
+#: src/gpasswd.c:96
#, c-format
msgid " %s [-M user,...] group\n"
msgstr " %s [-M användare,...] grupp\n"
-#: src/gpasswd.c:162 src/gpasswd.c:247
+#: src/gpasswd.c:160 src/gpasswd.c:245
#, c-format
msgid "%s: unknown user %s\n"
msgstr "%s: okänd användare %s\n"
-#: src/gpasswd.c:174
+#: src/gpasswd.c:172
msgid "Permission denied.\n"
msgstr "Tillåtelse nekas.\n"
-#: src/gpasswd.c:259
+#: src/gpasswd.c:257
#, c-format
msgid "%s: shadow group passwords required for -A\n"
msgstr "%s: skuggrupplösenord krävs för -A\n"
-#: src/gpasswd.c:310
+#: src/gpasswd.c:308
msgid "Who are you?\n"
msgstr "Vem är du?\n"
-#: src/gpasswd.c:330 src/newgrp.c:247
+#: src/gpasswd.c:328 src/newgrp.c:251
#, c-format
msgid "unknown group: %s\n"
msgstr "okänd grupp: %s\n"
-#: src/gpasswd.c:438
+#: src/gpasswd.c:436
#, c-format
msgid "Adding user %s to group %s\n"
msgstr "Lägger till användare %s till grupp %s\n"
-#: src/gpasswd.c:455
+#: src/gpasswd.c:453
#, c-format
msgid "Removing user %s from group %s\n"
msgstr "Tar bort användare %s från grupp %s\n"
-#: src/gpasswd.c:468
+#: src/gpasswd.c:466
#, c-format
msgid "%s: unknown member %s\n"
msgstr "%s: okänd medlem %s\n"
-#: src/gpasswd.c:515
+#: src/gpasswd.c:513
#, c-format
msgid "%s: Not a tty\n"
msgstr "%s: Inte en tty\n"
#. * the old password since the invoker is either the group
#. * owner, or root.
#.
-#: src/gpasswd.c:537
+#: src/gpasswd.c:535
#, c-format
msgid "Changing the password for group %s\n"
msgstr "Ändrar lösenordet för grupp %s\n"
-#: src/gpasswd.c:540
+#: src/gpasswd.c:538
msgid "New Password: "
msgstr "Nytt lösenord: "
-#: src/gpasswd.c:545 src/passwd.c:424
+#: src/gpasswd.c:543 src/passwd.c:422
msgid "Re-enter new password: "
msgstr "Skriv in det nya lösenordet igen: "
-#: src/gpasswd.c:557
+#: src/gpasswd.c:555
msgid "They don't match; try again"
msgstr "De matchar inte; försök igen"
-#: src/gpasswd.c:561
+#: src/gpasswd.c:559
#, c-format
msgid "%s: Try again later\n"
msgstr "%s: Försök igen senare\n"
-#: src/gpasswd.c:591
+#: src/gpasswd.c:590
#, c-format
msgid "%s: can't get lock\n"
msgstr "%s: kan inte låsa\n"
-#: src/gpasswd.c:597
+#: src/gpasswd.c:596
#, c-format
msgid "%s: can't get shadow lock\n"
msgstr "%s: kan inte låsa skuggfilen\n"
-#: src/gpasswd.c:603
+#: src/gpasswd.c:602
#, c-format
msgid "%s: can't open file\n"
msgstr "%s: kan inte öppna filen\n"
-#: src/gpasswd.c:615
+#: src/gpasswd.c:614
#, c-format
msgid "%s: can't update entry\n"
msgstr "%s: kan inte uppdatera noteringen\n"
-#: src/gpasswd.c:621
+#: src/gpasswd.c:620
#, c-format
msgid "%s: can't update shadow entry\n"
msgstr "%s: kan inte uppdatera noteringen i skuggfilen\n"
-#: src/gpasswd.c:627
+#: src/gpasswd.c:626
#, c-format
msgid "%s: can't re-write file\n"
msgstr "%s: kan inte skriva om filen\n"
-#: src/gpasswd.c:633
+#: src/gpasswd.c:632
#, c-format
msgid "%s: can't re-write shadow file\n"
msgstr "%s: kan inte skriva om skuggfilen\n"
-#: src/gpasswd.c:641
+#: src/gpasswd.c:640
#, c-format
msgid "%s: can't unlock file\n"
msgstr "%s: kan inte låsa upp filen\n"
-#: src/gpasswd.c:646
+#: src/gpasswd.c:645
#, c-format
msgid "%s: can't update DBM files\n"
msgstr "%s: kan inte uppdatera DBM-filer\n"
-#: src/gpasswd.c:653
+#: src/gpasswd.c:652
#, c-format
msgid "%s: can't update DBM shadow files\n"
msgstr "%s: kan inte uppdatera DBM-skuggfiler\n"
-#: src/groupadd.c:106
+#: src/groupadd.c:105
msgid "usage: groupadd [-g gid [-o]] group\n"
msgstr "Användning: groupadd [-g gid [-o]] grupp\n"
-#: src/groupadd.c:174 src/groupadd.c:197 src/groupmod.c:184 src/groupmod.c:231
-#: src/useradd.c:932 src/usermod.c:513 src/usermod.c:649
+#: src/groupadd.c:173 src/groupadd.c:196 src/groupmod.c:183 src/groupmod.c:230
+#: src/useradd.c:931 src/usermod.c:512 src/usermod.c:648
#, c-format
msgid "%s: error adding new group entry\n"
msgstr "%s: gick inte att lägga till en ny gruppnotering\n"
-#: src/groupadd.c:184 src/groupadd.c:207 src/groupmod.c:200 src/useradd.c:943
-#: src/usermod.c:525 src/usermod.c:661
+#: src/groupadd.c:183 src/groupadd.c:206 src/groupmod.c:199 src/useradd.c:942
+#: src/usermod.c:524 src/usermod.c:660
#, c-format
msgid "%s: cannot add new dbm group entry\n"
msgstr "%s: kan inte lägga till en ny dbm-gruppnotering\n"
-#: src/groupadd.c:259 src/useradd.c:997
+#: src/groupadd.c:258 src/useradd.c:996
#, c-format
msgid "%s: name %s is not unique\n"
msgstr "%s: namnet %s är inte unikt\n"
-#: src/groupadd.c:274
+#: src/groupadd.c:273
#, c-format
msgid "%s: gid %ld is not unique\n"
msgstr "%s: gid %ld är inte unikt\n"
-#: src/groupadd.c:298
+#: src/groupadd.c:297
#, c-format
msgid "%s: can't get unique gid\n"
msgstr "%s: kan inte hitta ett unikt gid\n"
#.
#. * All invalid group names land here.
#.
-#: src/groupadd.c:322 src/groupmod.c:342
+#: src/groupadd.c:321 src/groupmod.c:341
#, c-format
msgid "%s: %s is a not a valid group name\n"
msgstr "%s: %s är inte ett giltigt gruppnamn\n"
-#: src/groupadd.c:351 src/groupmod.c:368
+#: src/groupadd.c:350 src/groupmod.c:367
#, c-format
msgid "%s: invalid group %s\n"
msgstr "%s: ogiltig grupp %s\n"
-#: src/groupadd.c:368 src/useradd.c:1273
+#: src/groupadd.c:367 src/useradd.c:1272
#, c-format
msgid "%s: -O requires NAME=VALUE\n"
msgstr "%s: -O kräver NAME=VÄRDE\n"
-#: src/groupadd.c:413 src/groupdel.c:168 src/groupmod.c:404 src/useradd.c:1382
-#: src/userdel.c:273 src/usermod.c:537
+#: src/groupadd.c:412 src/groupdel.c:167 src/groupmod.c:403 src/useradd.c:1381
+#: src/userdel.c:303 src/usermod.c:536
#, c-format
msgid "%s: cannot rewrite group file\n"
msgstr "%s: kan inte skriva om gruppfilen\n"
-#: src/groupadd.c:419 src/groupdel.c:174 src/groupmod.c:410 src/useradd.c:1390
-#: src/userdel.c:279 src/usermod.c:674
+#: src/groupadd.c:418 src/groupdel.c:173 src/groupmod.c:409 src/useradd.c:1389
+#: src/userdel.c:309 src/usermod.c:673
#, c-format
msgid "%s: cannot rewrite shadow group file\n"
msgstr "%s: kan inte skriva om skuggruppfilen\n"
-#: src/groupadd.c:438 src/groupdel.c:193 src/groupmod.c:429 src/userdel.c:359
+#: src/groupadd.c:437 src/groupdel.c:192 src/groupmod.c:428 src/userdel.c:389
#, c-format
msgid "%s: unable to lock group file\n"
msgstr "%s: kan inte låsa gruppfilen\n"
-#: src/groupadd.c:442 src/groupdel.c:197 src/groupmod.c:433
+#: src/groupadd.c:441 src/groupdel.c:196 src/groupmod.c:432
#, c-format
msgid "%s: unable to open group file\n"
msgstr "%s: kan inte öppna gruppfilen\n"
-#: src/groupadd.c:447 src/groupdel.c:202 src/groupmod.c:438 src/userdel.c:368
+#: src/groupadd.c:446 src/groupdel.c:201 src/groupmod.c:437 src/userdel.c:398
#, c-format
msgid "%s: unable to lock shadow group file\n"
msgstr "%s: kan inte låsa skuggruppfilen\n"
-#: src/groupadd.c:452 src/groupdel.c:207 src/groupmod.c:443
+#: src/groupadd.c:451 src/groupdel.c:206 src/groupmod.c:442
#, c-format
msgid "%s: unable to open shadow group file\n"
msgstr "%s: kan inte öppna skuggruppfilen\n"
-#: src/groupadd.c:519
+#: src/groupadd.c:518
#, c-format
msgid "%s: group %s exists\n"
msgstr "%s: grupp %s existerar\n"
-#: src/groupdel.c:87
+#: src/groupdel.c:86
msgid "usage: groupdel group\n"
msgstr "Användning: groupdel grupp\n"
-#: src/groupdel.c:105 src/groupmod.c:188 src/groupmod.c:235
+#: src/groupdel.c:104 src/groupmod.c:187 src/groupmod.c:234
#, c-format
msgid "%s: error removing group entry\n"
msgstr "%s: fel under borttagning av gruppnotering\n"
-#: src/groupdel.c:117 src/groupmod.c:207
+#: src/groupdel.c:116 src/groupmod.c:206
#, c-format
msgid "%s: error removing group dbm entry\n"
msgstr "%s: fel under borttagning av dbm-gruppnotering\n"
-#: src/groupdel.c:132
+#: src/groupdel.c:131
#, c-format
msgid "%s: error removing shadow group entry\n"
msgstr "%s: fel under borttagning av skuggruppnotering\n"
-#: src/groupdel.c:145 src/groupmod.c:253
+#: src/groupdel.c:144 src/groupmod.c:252
#, c-format
msgid "%s: error removing shadow group dbm entry\n"
msgstr "%s: fel under borttagning av dbm-skuggruppnotering\n"
#.
#. * Can't remove the group.
#.
-#: src/groupdel.c:249
+#: src/groupdel.c:248
#, c-format
msgid "%s: cannot remove user's primary group.\n"
msgstr "%s: kan inte ta bort användarens primära grupp.\n"
-#: src/groupdel.c:306 src/groupmod.c:502
+#: src/groupdel.c:305 src/groupmod.c:501
#, c-format
msgid "%s: group %s does not exist\n"
msgstr "%s: grupp %s existerar inte\n"
-#: src/groupdel.c:320 src/groupmod.c:518
+#: src/groupdel.c:319 src/groupmod.c:517
#, c-format
msgid "%s: group %s is a NIS group\n"
msgstr "%s: grupp %s är en NIS-grupp\n"
-#: src/groupdel.c:326 src/groupmod.c:524 src/userdel.c:731 src/usermod.c:990
+#: src/groupdel.c:325 src/groupmod.c:523 src/userdel.c:761 src/usermod.c:989
#, c-format
msgid "%s: %s is the NIS master\n"
msgstr "%s: %s är NIS-mästeren\n"
-#: src/groupmod.c:106
+#: src/groupmod.c:105
msgid "usage: groupmod [-g gid [-o]] [-n name] group\n"
msgstr "Användning: groupmod [-g gid [-o]] [-n namn] grupp\n"
-#: src/groupmod.c:166
+#: src/groupmod.c:165
#, c-format
msgid "%s: %s not found in /etc/group\n"
msgstr "%s: %s hittades inte i /etc/group\n"
-#: src/groupmod.c:247
+#: src/groupmod.c:246
#, c-format
msgid "%s: cannot add new dbm shadow group entry\n"
msgstr "%s: kunde inte lägga till en ny dbm-skuggruppnotering\n"
-#: src/groupmod.c:300
+#: src/groupmod.c:299
#, c-format
msgid "%s: %ld is not a unique gid\n"
msgstr "%s: %ld är inte ett unikt gid\n"
-#: src/groupmod.c:331
+#: src/groupmod.c:330
#, c-format
msgid "%s: %s is not a unique name\n"
msgstr "%s: %s är inte ett unikt namn\n"
-#: src/groups.c:63
+#: src/groups.c:62
#, c-format
msgid "unknown user %s\n"
msgstr "okänd användare %s\n"
-#: src/grpck.c:99
+#: src/grpck.c:98
#, c-format
msgid "Usage: %s [ -r ] [ group [ gshadow ] ]\n"
msgstr "Användning: %s [ -r ] [ grupp [ gshadow ] ]\n"
-#: src/grpck.c:101
+#: src/grpck.c:100
#, c-format
msgid "Usage: %s [ -r ] [ group ]\n"
msgstr "Användning: %s [ -r ] [ grupp ]\n"
-#: src/grpck.c:120 src/pwck.c:120
+#: src/grpck.c:119 src/pwck.c:119
msgid "No"
msgstr "Nej"
-#: src/grpck.c:235 src/grpck.c:243 src/pwck.c:217 src/pwck.c:226
+#: src/grpck.c:234 src/grpck.c:242 src/pwck.c:216 src/pwck.c:225
#, c-format
msgid "%s: cannot lock file %s\n"
msgstr "%s: kan inte låsa filen %s\n"
-#: src/grpck.c:258 src/grpck.c:266 src/mkpasswd.c:217 src/pwck.c:242
-#: src/pwck.c:251
+#: src/grpck.c:257 src/grpck.c:265 src/mkpasswd.c:216 src/pwck.c:241
+#: src/pwck.c:250
#, c-format
msgid "%s: cannot open file %s\n"
msgstr "%s: kan inte öppna filen %s\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:299
+#: src/grpck.c:298
msgid "invalid group file entry\n"
msgstr "felaktig gruppfilsnotering\n"
-#: src/grpck.c:300 src/grpck.c:363 src/grpck.c:455 src/grpck.c:518
-#: src/grpck.c:535 src/pwck.c:287 src/pwck.c:349 src/pwck.c:456 src/pwck.c:518
-#: src/pwck.c:542
+#: src/grpck.c:299 src/grpck.c:362 src/grpck.c:454 src/grpck.c:517
+#: src/grpck.c:534 src/pwck.c:286 src/pwck.c:348 src/pwck.c:455 src/pwck.c:517
+#: src/pwck.c:541
#, c-format
msgid "delete line `%s'? "
msgstr "ta bort rad \"%s\"? "
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:362
+#: src/grpck.c:361
msgid "duplicate group entry\n"
msgstr "dubblett av gruppnotering\n"
-#: src/grpck.c:379
+#: src/grpck.c:378
#, c-format
msgid "invalid group name `%s'\n"
msgstr "ogiltigt gruppnamn \"%s\"\n"
-#: src/grpck.c:389
+#: src/grpck.c:388
#, c-format
msgid "group %s: bad GID (%d)\n"
msgstr "grupp %s: felaktigt GID (%d)\n"
-#: src/grpck.c:415
+#: src/grpck.c:414
#, c-format
msgid "group %s: no user %s\n"
msgstr "grupp %s: användaren %s finns inte\n"
-#: src/grpck.c:417 src/grpck.c:586
+#: src/grpck.c:416 src/grpck.c:585
#, c-format
msgid "delete member `%s'? "
msgstr "ta bort medlem \"%s\"? "
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/grpck.c:454
+#: src/grpck.c:453
msgid "invalid shadow group file entry\n"
msgstr "felaktig skuggruppfilsnotering\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/grpck.c:517
+#: src/grpck.c:516
msgid "duplicate shadow group entry\n"
msgstr "dubblett av skuggruppfilsnotering\n"
-#: src/grpck.c:534
+#: src/grpck.c:533
msgid "no matching group file entry\n"
msgstr "inga matchande gruppfilsnoteringar\n"
-#: src/grpck.c:554
+#: src/grpck.c:553
#, c-format
msgid "shadow group %s: no administrative user %s\n"
msgstr "skuggrupp %s: finns ingen administrativ användare %s\n"
-#: src/grpck.c:556
+#: src/grpck.c:555
#, c-format
msgid "delete administrative member `%s'? "
msgstr "ta bort administrativa medlemmen \"%s\"? "
-#: src/grpck.c:584
+#: src/grpck.c:583
#, c-format
msgid "shadow group %s: no user %s\n"
msgstr "skuggrupp %s: finns ingen användare %s\n"
-#: src/grpck.c:611 src/grpck.c:617 src/pwck.c:573 src/pwck.c:581
+#: src/grpck.c:610 src/grpck.c:616 src/pwck.c:572 src/pwck.c:580
#, c-format
msgid "%s: cannot update file %s\n"
msgstr "%s: kan inte uppdatera filen %s\n"
-#: src/grpck.c:641 src/pwck.c:607
+#: src/grpck.c:640 src/pwck.c:606
#, c-format
msgid "%s: the files have been updated; run mkpasswd\n"
msgstr "%s: filerna är uppdaterade; kör mkpasswd\n"
-#: src/grpck.c:642 src/grpck.c:646 src/pwck.c:608 src/pwck.c:612
+#: src/grpck.c:641 src/grpck.c:645 src/pwck.c:607 src/pwck.c:611
#, c-format
msgid "%s: no changes\n"
msgstr "%s: inga ändringar\n"
-#: src/grpck.c:645 src/pwck.c:611
+#: src/grpck.c:644 src/pwck.c:610
#, c-format
msgid "%s: the files have been updated\n"
msgstr "%s: filerna är uppdaterade\n"
-#: src/grpconv.c:63 src/grpunconv.c:64
+#: src/grpconv.c:62 src/grpunconv.c:63
#, c-format
msgid "%s: can't lock group file\n"
msgstr "%s: kan inte låsa gruppfilen\n"
-#: src/grpconv.c:68 src/grpunconv.c:69
+#: src/grpconv.c:67 src/grpunconv.c:68
#, c-format
msgid "%s: can't open group file\n"
msgstr "%s: kan inte öppna gruppfilen\n"
-#: src/grpconv.c:73 src/grpunconv.c:74
+#: src/grpconv.c:72 src/grpunconv.c:73
#, c-format
msgid "%s: can't lock shadow group file\n"
msgstr "%s: kan inte låsa skuggruppfilen\n"
-#: src/grpconv.c:78 src/grpunconv.c:79
+#: src/grpconv.c:77 src/grpunconv.c:78
#, c-format
msgid "%s: can't open shadow group file\n"
msgstr "%s: kan inte öppna skuggruppfilen\n"
#.
#. * This shouldn't happen (the entry exists) but...
#.
-#: src/grpconv.c:94
+#: src/grpconv.c:93
#, c-format
msgid "%s: can't remove shadow group %s\n"
msgstr "%s: kan inte ta bort skuggruppen %s\n"
-#: src/grpconv.c:135 src/pwconv.c:161
+#: src/grpconv.c:134 src/pwconv.c:160
#, c-format
msgid "%s: can't update shadow entry for %s\n"
msgstr "%s: kan inte uppdatera skuggnoteringen för %s\n"
-#: src/grpconv.c:144 src/grpunconv.c:95
+#: src/grpconv.c:143 src/grpunconv.c:94
#, c-format
msgid "%s: can't update entry for group %s\n"
msgstr "%s: kan inte uppdatera noteringen för gruppen %s\n"
-#: src/grpconv.c:151 src/grpunconv.c:103
+#: src/grpconv.c:150 src/grpunconv.c:102
#, c-format
msgid "%s: can't update shadow group file\n"
msgstr "%s: kan inte uppdatera skuggruppfilen\n"
-#: src/grpconv.c:155 src/grpunconv.c:108
+#: src/grpconv.c:154 src/grpunconv.c:107
#, c-format
msgid "%s: can't update group file\n"
msgstr "%s: kan inte uppdatera gruppfilen\n"
-#: src/grpconv.c:170 src/grpunconv.c:129
+#: src/grpconv.c:169 src/grpunconv.c:128
#, c-format
msgid "%s: not configured for shadow group support.\n"
msgstr "%s: inte konfigurerad med stöd för skuggrupper.\n"
-#: src/grpunconv.c:113
+#: src/grpunconv.c:112
#, c-format
msgid "%s: can't delete shadow group file\n"
msgstr "%s: kan inte ta bort skuggruppfilen\n"
-#: src/id.c:57
+#: src/id.c:56
msgid "usage: id [ -a ]\n"
msgstr "Användning: id [ -a ]\n"
-#: src/id.c:59
+#: src/id.c:58
msgid "usage: id\n"
msgstr "Användning: id\n"
-#: src/id.c:119
+#: src/id.c:118
#, c-format
msgid "uid=%d(%s)"
msgstr "uid=%d(%s)"
-#: src/id.c:121
+#: src/id.c:120
#, c-format
msgid "uid=%d"
msgstr "uid=%d"
-#: src/id.c:125
+#: src/id.c:124
#, c-format
msgid " gid=%d(%s)"
msgstr " gid=%d(%s)"
-#: src/id.c:127
+#: src/id.c:126
#, c-format
msgid " gid=%d"
msgstr " gid=%d"
-#: src/id.c:137
+#: src/id.c:136
#, c-format
msgid " euid=%d(%s)"
msgstr " euid=%d(%s)"
-#: src/id.c:139
+#: src/id.c:138
#, c-format
msgid " euid=%d"
msgstr " euid=%d"
-#: src/id.c:144
+#: src/id.c:143
#, c-format
msgid " egid=%d(%s)"
msgstr " egid=%d(%s)"
-#: src/id.c:146
+#: src/id.c:145
#, c-format
msgid " egid=%d"
msgstr " egid=%d"
#. * where "###" is a numerical value and "aaa" is the
#. * corresponding name for each respective numerical value.
#.
-#: src/id.c:167
+#: src/id.c:166
msgid " groups="
msgstr " grupper="
-#: src/lastlog.c:168
+#: src/lastlog.c:167
msgid "Username Port From Latest\n"
msgstr "Användarnamn Port Från Senaste\n"
-#: src/lastlog.c:170
+#: src/lastlog.c:169
msgid "Username Port Latest\n"
msgstr "Användarnamn Port Senaste\n"
-#: src/lastlog.c:184
+#: src/lastlog.c:183
msgid "**Never logged in**"
msgstr "**Aldrig inloggad**"
-#: src/login.c:199
+#: src/login.c:198
#, c-format
msgid "usage: %s [-p] [name]\n"
msgstr "Användning: %s [-p] [namn]\n"
-#: src/login.c:202
+#: src/login.c:201
#, c-format
msgid " %s [-p] [-h host] [-f name]\n"
msgstr " %s [-p] [-h värd] [-f namn]\n"
-#: src/login.c:204
+#: src/login.c:203
#, c-format
msgid " %s [-p] -r host\n"
msgstr " %s [-p] -r värd\n"
-#: src/login.c:287
+#: src/login.c:286
msgid "Invalid login time\n"
msgstr "Felaktig inloggningstid\n"
-#: src/login.c:342
+#: src/login.c:341
msgid ""
"\n"
"System closed for routine maintenance\n"
"\n"
"Systemet är stängt för rutinunderhåll\n"
-#: src/login.c:352
+#: src/login.c:351
msgid ""
"\n"
"[Disconnect bypassed -- root login allowed.]\n"
"\n"
"[Nerkoppling kringgicks -- root inloggning tillåten.]\n"
-#: src/login.c:391
+#: src/login.c:390
#, c-format
msgid ""
"\n"
msgid " on `%.100s'"
msgstr " på \"%.100s\""
-#: src/login.c:807
+#: src/login.c:834
#, c-format
msgid ""
"\n"
"\n"
"%s användare: "
-#: src/login.c:809
+#: src/login.c:836
msgid "login: "
msgstr "användare: "
-#: src/login.c:991 src/sulogin.c:233
+#: src/login.c:1026 src/sulogin.c:231
msgid "Login incorrect"
msgstr "Felaktig inloggning"
-#: src/login.c:1163
+#: src/login.c:1213
msgid "Warning: login re-enabled after temporary lockout.\n"
msgstr "Varning: inloggning på nytt aktiv efter den temporära utelåsningen.\n"
-#: src/login.c:1173
+#: src/login.c:1223
#, c-format
msgid "Last login: %s on %s"
msgstr "Senaste inloggning: %s på %s"
-#: src/login.c:1176
+#: src/login.c:1226
#, c-format
msgid "Last login: %.19s on %s"
msgstr "Senaste inloggning: %.19s på %s"
-#: src/login.c:1181
+#: src/login.c:1231
#, c-format
msgid " from %.*s"
msgstr " från %.*s"
-#: src/login.c:1246
+#: src/login.c:1303
msgid "Starting rad_login\n"
msgstr "Startar rad_login\n"
msgid "%s: no DBM database on system - no action performed\n"
msgstr "%s: ingen DBM-databas på systemet - ingen åtgärd genomfördes\n"
-#: src/mkpasswd.c:246 src/mkpasswd.c:250
+#: src/mkpasswd.c:245 src/mkpasswd.c:249
#, c-format
msgid "%s: cannot overwrite file %s\n"
msgstr "%s: kan inte skriva över filen %s\n"
-#: src/mkpasswd.c:264
+#: src/mkpasswd.c:263
#, c-format
msgid "%s: cannot open DBM files for %s\n"
msgstr "%s: kan inte öppna DBM-filer för %s\n"
-#: src/mkpasswd.c:297
+#: src/mkpasswd.c:296
#, c-format
msgid "%s: the beginning with "
msgstr "%s: början med "
-#: src/mkpasswd.c:322
+#: src/mkpasswd.c:321
#, c-format
msgid "%s: error parsing line \"%s\"\n"
msgstr "%s: fel under analysering av rad \"%s\"\n"
-#: src/mkpasswd.c:327 src/mkpasswd.c:329 src/mkpasswd.c:331 src/mkpasswd.c:333
+#: src/mkpasswd.c:326 src/mkpasswd.c:328 src/mkpasswd.c:330 src/mkpasswd.c:332
msgid "adding record for name "
msgstr "lägger till notering för namn "
-#: src/mkpasswd.c:337 src/mkpasswd.c:342 src/mkpasswd.c:346 src/mkpasswd.c:350
+#: src/mkpasswd.c:336 src/mkpasswd.c:341 src/mkpasswd.c:345 src/mkpasswd.c:349
#, c-format
msgid "%s: error adding record for "
msgstr "%s: fel under tillägg av notering för "
-#: src/mkpasswd.c:368
+#: src/mkpasswd.c:367
#, c-format
msgid "added %d entries, longest was %d\n"
msgstr "lade till %d noteringar, den längsta var %d\n"
-#: src/mkpasswd.c:383
+#: src/mkpasswd.c:382
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp|sg ] file\n"
msgstr "Användning: %s [ -vf ] [ -p|g|sp|sg ] fil\n"
-#: src/mkpasswd.c:385
+#: src/mkpasswd.c:384
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g|sp ] file\n"
msgstr "Användning: %s [ -vf ] [ -p|g|sp ] fil\n"
-#: src/mkpasswd.c:388
+#: src/mkpasswd.c:387
#, c-format
msgid "Usage: %s [ -vf ] [ -p|g ] file\n"
msgstr "Användning: %s [ -vf ] [ -p|g ] fil\n"
-#: src/newgrp.c:67
+#: src/newgrp.c:66
msgid "usage: newgrp [ - ] [ group ]\n"
msgstr "Användning: newgrp [ - ] [ grupp ]\n"
-#: src/newgrp.c:69
+#: src/newgrp.c:68
#, fuzzy
msgid "usage: sg group [[-c] command ]\n"
msgstr "Användning: sg grupp [ kommando ]\n"
-#: src/newgrp.c:122
+#: src/newgrp.c:125
#, c-format
msgid "unknown uid: %d\n"
msgstr "okänt uid: %d\n"
-#: src/newgrp.c:198
+#: src/newgrp.c:201
#, c-format
msgid "unknown gid: %ld\n"
msgstr "okänt gid: %ld\n"
-#: src/newgrp.c:242
+#: src/newgrp.c:245
#, c-format
msgid "unknown gid: %d\n"
msgstr "okänt gid: %d\n"
-#: src/newgrp.c:315 src/newgrp.c:324
+#: src/newgrp.c:323 src/newgrp.c:332
msgid "Sorry.\n"
msgstr "Tyvärr.\n"
-#: src/newgrp.c:356
+#: src/newgrp.c:364
msgid "too many groups\n"
msgstr "för många grupper\n"
-#: src/newusers.c:79
+#: src/newusers.c:76
#, c-format
msgid "Usage: %s [ input ]\n"
msgstr "Användning: %s [ indata ]\n"
-#: src/newusers.c:367
+#: src/newusers.c:364
#, c-format
msgid "%s: can't lock /etc/passwd.\n"
msgstr "%s: kan inte låsa /etc/passwd.\n"
-#: src/newusers.c:378
+#: src/newusers.c:375
#, c-format
msgid "%s: can't lock files, try again later\n"
msgstr "%s: kan inte låsa filerna, försök igen senare\n"
-#: src/newusers.c:393
+#: src/newusers.c:390
#, c-format
msgid "%s: can't open files\n"
msgstr "%s: kan inte öppna filerna\n"
-#: src/newusers.c:438
+#: src/newusers.c:435
#, c-format
msgid "%s: line %d: invalid line\n"
msgstr "%s: rad %d: ogiltig rad\n"
-#: src/newusers.c:456
+#: src/newusers.c:453
#, c-format
msgid "%s: line %d: can't create GID\n"
msgstr "%s: rad %d: kan inte skapa GID\n"
-#: src/newusers.c:472
+#: src/newusers.c:469
#, c-format
msgid "%s: line %d: can't create UID\n"
msgstr "%s: rad %d: kan inte skapa UID\n"
-#: src/newusers.c:484
+#: src/newusers.c:481
#, c-format
msgid "%s: line %d: cannot find user %s\n"
msgstr "%s: rad %d: kan inte hitta användaren %s\n"
-#: src/newusers.c:492
+#: src/newusers.c:489
#, c-format
msgid "%s: line %d: can't update password\n"
msgstr "%s: rad %d: kan inte uppdatera lösenordet\n"
-#: src/newusers.c:509
+#: src/newusers.c:506
#, c-format
msgid "%s: line %d: mkdir failed\n"
msgstr "%s: rad %d: mkdir misslyckades\n"
-#: src/newusers.c:513
+#: src/newusers.c:510
#, c-format
msgid "%s: line %d: chown failed\n"
msgstr "%s: rad %d: chown misslyckades\n"
-#: src/newusers.c:522
+#: src/newusers.c:519
#, c-format
msgid "%s: line %d: can't update entry\n"
msgstr "%s: rad %d: kan inte uppdatera notering\n"
-#: src/newusers.c:553
+#: src/newusers.c:550
#, c-format
msgid "%s: error updating files\n"
msgstr "%s: kunde inte uppdatera filerna\n"
-#: src/passwd.c:241
+#: src/passwd.c:239
#, c-format
msgid "usage: %s [ -f | -s ] [ name ]\n"
msgstr "Användning: %s [ -f | -s ] [ namn ]\n"
-#: src/passwd.c:244
+#: src/passwd.c:242
#, c-format
msgid " %s [ -x max ] [ -n min ] [ -w warn ] [ -i inact ] name\n"
msgstr " %s [ -x högst ] [ -n minst ] [ -w varna ] [ -i inaktiv ] namn\n"
-#: src/passwd.c:247
+#: src/passwd.c:245
#, c-format
msgid " %s { -l | -u | -d | -S | -e } name\n"
msgstr " %s { -l | -u | -d | -S | -e } namn\n"
-#: src/passwd.c:349
+#: src/passwd.c:347
#, c-format
msgid "User %s has a TCFS key, his old password is required.\n"
msgstr "Användare %s har en TCFS-nyckel, hans förra lösenord krävs.\n"
-#: src/passwd.c:350
+#: src/passwd.c:348
msgid "You can use -t option to force the change.\n"
msgstr "Du kan använda flaggan -t för att påtvinga ändringen.\n"
-#: src/passwd.c:356
+#: src/passwd.c:354
msgid "Old password: "
msgstr "Förra lösenordet: "
-#: src/passwd.c:363
+#: src/passwd.c:361
#, c-format
msgid "Incorrect password for `%s'\n"
msgstr "Felaktigt lösenord för \"%s\"\n"
-#: src/passwd.c:376
+#: src/passwd.c:374
#, c-format
msgid "Warning: user %s has a TCFS key.\n"
msgstr "Varning: användare %s har en TCFS-nyckel.\n"
-#: src/passwd.c:394
+#: src/passwd.c:392
#, c-format
msgid ""
"Enter the new password (minimum of %d, maximum of %d characters)\n"
"Skriv in det nya lösenordet (minst %d, högst %d tecken)\n"
"Var god använd en kombination av versaler, gemener och siffror.\n"
-#: src/passwd.c:401
+#: src/passwd.c:399
msgid "New password: "
msgstr "Nytt lösenord: "
-#: src/passwd.c:411
+#: src/passwd.c:409
msgid "Try again.\n"
msgstr "Försök igen.\n"
-#: src/passwd.c:420
+#: src/passwd.c:418
msgid ""
"\n"
"Warning: weak password (enter it again to use it anyway).\n"
"\n"
"Varning: svagt lösenord (skriv in det igen för att använda det ändå).\n"
-#: src/passwd.c:429
+#: src/passwd.c:427
msgid "They don't match; try again.\n"
msgstr "De matchar inte; försök igen.\n"
-#: src/passwd.c:514 src/passwd.c:530
+#: src/passwd.c:512 src/passwd.c:528
#, c-format
msgid "The password for %s cannot be changed.\n"
msgstr "Lösenordet för %s kan inte bytas.\n"
-#: src/passwd.c:558
+#: src/passwd.c:556
#, c-format
msgid "Sorry, the password for %s cannot be changed yet.\n"
msgstr "Tyvärr, lösenordet för %s kan inte ändras än.\n"
-#: src/passwd.c:695
+#: src/passwd.c:693
#, c-format
msgid "%s: out of memory\n"
msgstr "%s: slut på minne\n"
-#: src/passwd.c:847
+#: src/passwd.c:845
msgid "Cannot lock the TCFS key database; try again later\n"
msgstr "Kan inte låsa TCFS-nyckeldatabasen; försök igen senare\n"
-#: src/passwd.c:853
+#: src/passwd.c:851
msgid "Cannot open the TCFS key database.\n"
msgstr "Kan inte öppna TCFS-nyckeldatabasen.\n"
-#: src/passwd.c:859
+#: src/passwd.c:857
msgid "Error updating the TCFS key database.\n"
msgstr "Fel under uppdatering av TCFS-nyckeldatabasen.\n"
-#: src/passwd.c:864
+#: src/passwd.c:862
msgid "Cannot commit TCFS changes.\n"
msgstr "Kan inte utföra TCFS ändringar.\n"
-#: src/passwd.c:1071
+#: src/passwd.c:1069
#, c-format
msgid "%s: Cannot execute %s"
msgstr "%s: Kan inte starta %s"
-#: src/passwd.c:1178
+#: src/passwd.c:1176
#, c-format
msgid "%s: repository %s not supported\n"
msgstr "%s: förvaringsplatsen %s stöds ej\n"
-#: src/passwd.c:1265
+#: src/passwd.c:1263
#, c-format
msgid "%s: Permission denied\n"
msgstr "%s: Tillåtelse nekas\n"
-#: src/passwd.c:1289
+#: src/passwd.c:1287
#, c-format
msgid "You may not change the password for %s.\n"
msgstr "Du får inte ändra lösenordet för %s.\n"
-#: src/passwd.c:1354
+#: src/passwd.c:1352
#, c-format
msgid "Changing password for %s\n"
msgstr "Ändrar lösenord för %s\n"
-#: src/passwd.c:1358
+#: src/passwd.c:1356
#, c-format
msgid "The password for %s is unchanged.\n"
msgstr "Lösenordet för %s är oförändrat.\n"
-#: src/passwd.c:1414
+#: src/passwd.c:1412
msgid "Password changed.\n"
msgstr "Lösenordet ändrat.\n"
-#: src/pwck.c:99
+#: src/pwck.c:98
#, c-format
msgid "Usage: %s [ -qr ] [ passwd [ shadow ] ]\n"
msgstr "Användning: %s [ -qr ] [ passwd [ shadow ] ]\n"
-#: src/pwck.c:101
+#: src/pwck.c:100
#, c-format
msgid "Usage: %s [ -qr ] [ passwd ]\n"
msgstr "Användning: %s [ -qr ] [ passwd ]\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:286
+#: src/pwck.c:285
msgid "invalid password file entry\n"
msgstr "felaktig notering i lösenordsfilen\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:348
+#: src/pwck.c:347
msgid "duplicate password entry\n"
msgstr "dubblett av lösenords notering\n"
-#: src/pwck.c:364
+#: src/pwck.c:363
#, c-format
msgid "invalid user name `%s'\n"
msgstr "ogiltigt användarnamn \"%s\"\n"
-#: src/pwck.c:374
+#: src/pwck.c:373
#, c-format
msgid "user %s: bad UID (%d)\n"
msgstr "användare %s: felaktigt UID (%d)\n"
#.
#. * No primary group, just give a warning
#.
-#: src/pwck.c:389
+#: src/pwck.c:388
#, c-format
msgid "user %s: no group %d\n"
msgstr "användare %s: ingen grupp %d\n"
#.
#. * Home directory doesn't exist, give a warning
#.
-#: src/pwck.c:404
+#: src/pwck.c:403
#, c-format
msgid "user %s: directory %s does not exist\n"
msgstr "användare %s: katalogen %s finns inte\n"
#.
#. * Login shell doesn't exist, give a warning
#.
-#: src/pwck.c:419
+#: src/pwck.c:418
#, c-format
msgid "user %s: program %s does not exist\n"
msgstr "användare %s: programmet %s finns inte\n"
#. * Tell the user this entire line is bogus and
#. * ask them to delete it.
#.
-#: src/pwck.c:455
+#: src/pwck.c:454
msgid "invalid shadow password file entry\n"
msgstr "felaktig notering i skugglösenordsfilen\n"
#. * Tell the user this entry is a duplicate of
#. * another and ask them to delete it.
#.
-#: src/pwck.c:517
+#: src/pwck.c:516
msgid "duplicate shadow password entry\n"
msgstr "dubblett av notering i skugglösenordsfilen\n"
#. * Tell the user this entry has no matching
#. * /etc/passwd entry and ask them to delete it.
#.
-#: src/pwck.c:541
+#: src/pwck.c:540
msgid "no matching password file entry\n"
msgstr "ingen matchande notering i lösenordsfilen\n"
-#: src/pwck.c:558
+#: src/pwck.c:557
#, c-format
msgid "user %s: last password change in the future\n"
msgstr "användare %s: senaste lösenordsändring i framtiden\n"
-#: src/pwconv.c:95 src/pwunconv.c:109
+#: src/pwconv.c:94 src/pwunconv.c:108
#, c-format
msgid "%s: can't lock passwd file\n"
msgstr "%s: kan inte låsa lösenordsfilen\n"
-#: src/pwconv.c:100 src/pwunconv.c:114
+#: src/pwconv.c:99 src/pwunconv.c:113
#, c-format
msgid "%s: can't open passwd file\n"
msgstr "%s: kan inte öppna lösenordsfilen\n"
-#: src/pwconv.c:127
+#: src/pwconv.c:126
#, c-format
msgid "%s: can't remove shadow entry for %s\n"
msgstr "%s: kan inte ta bort notering i skugglösenordsfilen för %s\n"
-#: src/pwconv.c:170
+#: src/pwconv.c:169
#, c-format
msgid "%s: can't update passwd entry for %s\n"
msgstr "%s: kan inte uppdatera noteringen i lösenordsfilen för %s\n"
-#: src/pwconv.c:177
+#: src/pwconv.c:176
#, c-format
msgid "%s: can't update shadow file\n"
msgstr "%s: kan inte uppdatera skuggfilen\n"
-#: src/pwconv.c:181
+#: src/pwconv.c:180
#, c-format
msgid "%s: can't update passwd file\n"
msgstr "%s: kan inte uppdatera lösenordsfilen\n"
msgid "%s: Shadow passwords are not configured.\n"
msgstr "%s: Shadowlösenord är inte konfigurerade.\n"
-#: src/pwunconv.c:172
+#: src/pwunconv.c:171
#, c-format
msgid "%s: can't update entry for user %s\n"
msgstr "%s: kan inte uppdatera noteringen för användaren %s\n"
-#: src/pwunconv.c:189
+#: src/pwunconv.c:188
#, c-format
msgid "%s: can't delete shadow password file\n"
msgstr "%s: kan inte ta bort skugglösenordsfilen\n"
-#: src/su.c:145
+#: src/su.c:140
msgid "Sorry."
msgstr "Tyvärr."
-#: src/su.c:227
+#: src/su.c:222
#, c-format
msgid "%s: must be run from a terminal\n"
msgstr "%s: måste köras från en terminal\n"
-#: src/su.c:319
+#: src/su.c:311
#, c-format
msgid "%s: pam_start: error %d\n"
msgstr "%s: pam_start: fel %d\n"
-#: src/su.c:345
+#: src/su.c:337
#, c-format
msgid "Unknown id: %s\n"
msgstr "Okänt id: %s\n"
#. access denied (-1) or unexpected value
-#: src/su.c:380 src/su.c:395
+#: src/su.c:372 src/su.c:387
#, c-format
msgid "You are not authorized to su %s\n"
msgstr "Du har inte tillåtelse att köra su till %s\n"
#. require own password
-#: src/su.c:391
+#: src/su.c:383
msgid "(Enter your own password.)"
msgstr "(Skriv in ditt eget lösenord.)"
-#: src/su.c:412
+#: src/su.c:404
#, c-format
msgid "%s: permission denied (shell).\n"
msgstr "%s: tillåtelse nekas (skal).\n"
-#: src/su.c:436
+#: src/su.c:428
#, c-format
msgid ""
"%s: %s\n"
"%s: %s\n"
"(Ignorerad)\n"
-#: src/su.c:605
+#: src/su.c:628
msgid "No shell\n"
msgstr "Inget skal\n"
#. must be a password file!
-#: src/sulogin.c:138
+#: src/sulogin.c:136
msgid "No password file\n"
msgstr "Ingen lösenordsfil\n"
#.
#. * Fail secure
#.
-#: src/sulogin.c:180
+#: src/sulogin.c:178
msgid "No password entry for 'root'\n"
msgstr "Ingen lösenordsnotering för \"root\"\n"
#. * given we just exit.
#.
#. get a password for root
-#: src/sulogin.c:194
+#: src/sulogin.c:192
msgid ""
"\n"
"Type control-d to proceed with normal startup,\n"
"(eller skriv in lösenordet för root för systemunderhåll):"
#. make new environment active
-#: src/sulogin.c:243
+#: src/sulogin.c:241
msgid "Entering System Maintenance Mode\n"
msgstr "Går in i systemunderhållsläge\n"
-#: src/useradd.c:244
+#: src/useradd.c:243
#, c-format
msgid "%s: rebuild the group database\n"
msgstr "%s: bygg om gruppdatabasen\n"
-#: src/useradd.c:251
+#: src/useradd.c:250
#, c-format
msgid "%s: rebuild the shadow group database\n"
msgstr "%s: bygg om skuggruppdatabasen\n"
-#: src/useradd.c:288 src/usermod.c:941
+#: src/useradd.c:287 src/usermod.c:940
#, c-format
msgid "%s: invalid numeric argument `%s'\n"
msgstr "%s: ogiltigt numeriskt argument \"%s\"\n"
-#: src/useradd.c:344
+#: src/useradd.c:343
#, c-format
msgid "%s: unknown gid %s\n"
msgstr "%s: okänt gid %s\n"
-#: src/useradd.c:351 src/useradd.c:643 src/useradd.c:1229 src/usermod.c:253
-#: src/usermod.c:1072
+#: src/useradd.c:350 src/useradd.c:642 src/useradd.c:1228 src/usermod.c:252
+#: src/usermod.c:1071
#, c-format
msgid "%s: unknown group %s\n"
msgstr "%s: okänd grupp %s\n"
-#: src/useradd.c:419
+#: src/useradd.c:418
#, c-format
msgid "group=%s,%ld basedir=%s skel=%s\n"
msgstr "grupp=%s,%ld baskatalog=%s skel=%s\n"
-#: src/useradd.c:422
+#: src/useradd.c:421
#, c-format
msgid "shell=%s "
msgstr "skal=%s "
-#: src/useradd.c:424
+#: src/useradd.c:423
#, c-format
msgid "inactive=%ld expire=%s"
msgstr "inaktiv=%ld upphör=%s"
-#: src/useradd.c:428
+#: src/useradd.c:427
#, c-format
msgid "GROUP=%ld\n"
msgstr "GRUPP=%ld\n"
-#: src/useradd.c:429
+#: src/useradd.c:428
#, c-format
msgid "HOME=%s\n"
msgstr "HEM=%s\n"
-#: src/useradd.c:431
+#: src/useradd.c:430
#, c-format
msgid "INACTIVE=%ld\n"
msgstr "INAKTIV=%ld\n"
-#: src/useradd.c:432
+#: src/useradd.c:431
#, c-format
msgid "EXPIRE=%s\n"
msgstr "UPPHÖR=%s\n"
-#: src/useradd.c:434
+#: src/useradd.c:433
#, c-format
msgid "SHELL=%s\n"
msgstr "SKAL=%s\n"
-#: src/useradd.c:435
+#: src/useradd.c:434
#, c-format
msgid "SKEL=%s\n"
msgstr "SKEL=%s\n"
-#: src/useradd.c:471
+#: src/useradd.c:470
#, c-format
msgid "%s: cannot create new defaults file\n"
msgstr "%s: kan inte skapa en ny standardfil\n"
-#: src/useradd.c:565 src/useradd.c:576
+#: src/useradd.c:564 src/useradd.c:575
#, c-format
msgid "%s: rename: %s"
msgstr "%s: rename: %s"
-#: src/useradd.c:663 src/usermod.c:273
+#: src/useradd.c:662 src/usermod.c:272
#, c-format
msgid "%s: group `%s' is a NIS group.\n"
msgstr "%s: grupp \"%s\" är en NIS-grupp.\n"
-#: src/useradd.c:671 src/usermod.c:281
+#: src/useradd.c:670 src/usermod.c:280
#, c-format
msgid "%s: too many groups specified (max %d).\n"
msgstr "%s: för många grupper speciferade (max %d).\n"
-#: src/useradd.c:703 src/usermod.c:313
+#: src/useradd.c:702 src/usermod.c:312
#, c-format
msgid "usage: %s\t[-u uid [-o]] [-g group] [-G group,...] \n"
msgstr "Användning: %s\t[-u uid [-o]] [-g grupp] [-G grupp,...] \n"
-#: src/useradd.c:706
+#: src/useradd.c:705
msgid "\t\t[-d home] [-s shell] [-c comment] [-m [-k template]]\n"
msgstr "\t\t[-d hem] [-s skal] [-c kommentar] [-m [-k mall]]\n"
-#: src/useradd.c:709 src/usermod.c:319
+#: src/useradd.c:708 src/usermod.c:318
msgid "[-f inactive] [-e expire ] "
msgstr "[-f inaktiv] [-e upphör ] "
-#: src/useradd.c:712
+#: src/useradd.c:711
msgid "[-A program] "
msgstr "[-A program] "
-#: src/useradd.c:714 src/usermod.c:324
+#: src/useradd.c:713 src/usermod.c:323
msgid "[-p passwd] name\n"
msgstr "[-p passwd] namn\n"
-#: src/useradd.c:716
+#: src/useradd.c:715
#, c-format
msgid " %s\t-D [-g group] [-b base] [-s shell]\n"
msgstr " %s\t-D [-g grupp] [-b bas] [-s skal]\n"
-#: src/useradd.c:719
+#: src/useradd.c:718
msgid "\t\t[-f inactive] [-e expire ]\n"
msgstr "\t\t[-f inaktiv] [-e utgång ]\n"
-#: src/useradd.c:816 src/usermod.c:446
+#: src/useradd.c:815 src/usermod.c:445
#, c-format
msgid "%s: error locking group file\n"
msgstr "%s: fel under låsning av gruppfilen\n"
-#: src/useradd.c:820 src/usermod.c:451
+#: src/useradd.c:819 src/usermod.c:450
#, c-format
msgid "%s: error opening group file\n"
msgstr "%s: fel under öppning av gruppfilen\n"
-#: src/useradd.c:825 src/usermod.c:558
+#: src/useradd.c:824 src/usermod.c:557
#, c-format
msgid "%s: error locking shadow group file\n"
msgstr "%s: fel under låsning av skuggruppfilen\n"
-#: src/useradd.c:830 src/usermod.c:564
+#: src/useradd.c:829 src/usermod.c:563
#, c-format
msgid "%s: error opening shadow group file\n"
msgstr "%s: fel under öppning av skuggruppfilen\n"
-#: src/useradd.c:1002
+#: src/useradd.c:1001
#, c-format
msgid "%s: uid %d is not unique\n"
msgstr "%s: uid %d är inte unikt\n"
-#: src/useradd.c:1032
+#: src/useradd.c:1031
#, c-format
msgid "%s: can't get unique uid\n"
msgstr "%s: kan inte hitta ett unikt uid\n"
-#: src/useradd.c:1140 src/useradd.c:1284 src/usermod.c:1020 src/usermod.c:1031
-#: src/usermod.c:1041 src/usermod.c:1087 src/usermod.c:1122
+#: src/useradd.c:1139 src/useradd.c:1283 src/usermod.c:1019 src/usermod.c:1030
+#: src/usermod.c:1040 src/usermod.c:1086 src/usermod.c:1121
#, c-format
msgid "%s: invalid field `%s'\n"
msgstr "%s: felaktigt fält \"%s\"\n"
-#: src/useradd.c:1154
+#: src/useradd.c:1153
#, c-format
msgid "%s: invalid base directory `%s'\n"
msgstr "%s: felaktig baskatalog \"%s\"\n"
-#: src/useradd.c:1164
+#: src/useradd.c:1163
#, c-format
msgid "%s: invalid comment `%s'\n"
msgstr "%s: felaktig kommentar \"%s\"\n"
-#: src/useradd.c:1174
+#: src/useradd.c:1173
#, c-format
msgid "%s: invalid home directory `%s'\n"
msgstr "%s: felaktig hemkatalog \"%s\"\n"
-#: src/useradd.c:1192 src/usermod.c:1054
+#: src/useradd.c:1191 src/usermod.c:1053
#, c-format
msgid "%s: invalid date `%s'\n"
msgstr "%s: felaktigt datum \"%s\"\n"
-#: src/useradd.c:1204
+#: src/useradd.c:1203
#, c-format
msgid "%s: shadow passwords required for -e\n"
msgstr "%s: skugglösenord krävs för -e\n"
-#: src/useradd.c:1219
+#: src/useradd.c:1218
#, c-format
msgid "%s: shadow passwords required for -f\n"
msgstr "%s: skugglösenord krävs för -f\n"
-#: src/useradd.c:1293
+#: src/useradd.c:1292
#, c-format
msgid "%s: invalid shell `%s'\n"
msgstr "%s: felaktigt skal \"%s\"\n"
-#: src/useradd.c:1334
+#: src/useradd.c:1333
#, c-format
msgid "%s: invalid user name `%s'\n"
msgstr "%s: felaktigt användar namn \"%s\"\n"
-#: src/useradd.c:1370 src/userdel.c:262 src/usermod.c:1184
+#: src/useradd.c:1369 src/userdel.c:292 src/usermod.c:1183
#, c-format
msgid "%s: cannot rewrite password file\n"
msgstr "%s: kan inte skriva om lösenordsfilen\n"
-#: src/useradd.c:1375 src/userdel.c:265 src/usermod.c:1189
+#: src/useradd.c:1374 src/userdel.c:295 src/usermod.c:1188
#, c-format
msgid "%s: cannot rewrite shadow password file\n"
msgstr "%s: kan inte skriva om skugglösenordsfilen\n"
-#: src/useradd.c:1415 src/userdel.c:329 src/usermod.c:1224
+#: src/useradd.c:1414 src/userdel.c:359 src/usermod.c:1223
#, c-format
msgid "%s: unable to lock password file\n"
msgstr "%s: kan inte låsa lösenordsfilen\n"
-#: src/useradd.c:1419 src/userdel.c:333 src/usermod.c:1228
+#: src/useradd.c:1418 src/userdel.c:363 src/usermod.c:1227
#, c-format
msgid "%s: unable to open password file\n"
msgstr "%s: kan inte öppna lösenordsfilen\n"
-#: src/useradd.c:1425 src/userdel.c:338 src/usermod.c:1233
+#: src/useradd.c:1424 src/userdel.c:368 src/usermod.c:1232
#, c-format
msgid "%s: cannot lock shadow password file\n"
msgstr "%s: kan inte låsa skugglösenordsfilen\n"
-#: src/useradd.c:1431 src/userdel.c:343 src/usermod.c:1238
+#: src/useradd.c:1430 src/userdel.c:373 src/usermod.c:1237
#, c-format
msgid "%s: cannot open shadow password file\n"
msgstr "%s: kan inte öppna skugglösenordsfilen\n"
-#: src/useradd.c:1530 src/usermod.c:1325
+#: src/useradd.c:1529 src/usermod.c:1324
#, c-format
msgid "%s: error adding authentication method\n"
msgstr "%s: fel under tillägning av metod för äkthetsbevisning\n"
-#: src/useradd.c:1553
+#: src/useradd.c:1552
#, c-format
msgid "%s: error adding new password entry\n"
msgstr "%s: fel under tilläggning av ny lösenordsnotering\n"
-#: src/useradd.c:1568
+#: src/useradd.c:1567
#, c-format
msgid "%s: error updating password dbm entry\n"
msgstr "%s: fel under uppdatering av dbm-lösenordsnotering\n"
-#: src/useradd.c:1584 src/usermod.c:1384
+#: src/useradd.c:1583 src/usermod.c:1383
#, c-format
msgid "%s: error adding new shadow password entry\n"
msgstr "%s: fel under tilläggning av ny skugglösenordsnotering\n"
-#: src/useradd.c:1600 src/usermod.c:1399
+#: src/useradd.c:1599 src/usermod.c:1398
#, c-format
msgid "%s: error updating shadow passwd dbm entry\n"
msgstr "%s: fel under uppdatering av dbm-skugglösenordsnotering\n"
-#: src/useradd.c:1632
+#: src/useradd.c:1631
#, c-format
msgid "%s: cannot create directory %s\n"
msgstr "%s: kan inte skapa katalog %s\n"
-#: src/useradd.c:1709 src/usermod.c:1162
+#: src/useradd.c:1708 src/usermod.c:1161
#, c-format
msgid "%s: user %s exists\n"
msgstr "%s: användare %s existerar\n"
-#: src/useradd.c:1739
+#: src/useradd.c:1738
#, c-format
msgid "%s: warning: CREATE_HOME not supported, please use -m instead.\n"
msgstr "%s: varning: CREATE_HOME stöds inte, använd -m istället.\n"
-#: src/userdel.c:128
+#: src/userdel.c:127
#, c-format
msgid "usage: %s [-r] name\n"
msgstr "Användning: %s [-r] namn\n"
-#: src/userdel.c:175 src/userdel.c:230
+#: src/userdel.c:178 src/userdel.c:260
#, c-format
msgid "%s: error updating group entry\n"
msgstr "%s: fel under uppdatering av gruppnotering\n"
-#: src/userdel.c:185 src/userdel.c:239
+#: src/userdel.c:188 src/userdel.c:269
#, c-format
msgid "%s: cannot update dbm group entry\n"
msgstr "%s: kan inte uppdatera dbm-gruppnotering\n"
-#: src/userdel.c:270
+#: src/userdel.c:215
+#, fuzzy, c-format
+msgid "%s: cannot remove dbm group entry\n"
+msgstr "%s: kan inte uppdatera dbm-gruppnotering\n"
+
+#: src/userdel.c:300
#, c-format
msgid "%s: cannot rewrite TCFS key file\n"
msgstr "%s: kan inte skriva om TCFS-nyckelfilen\n"
-#: src/userdel.c:350
+#: src/userdel.c:380
#, c-format
msgid "%s: cannot lock TCFS key file\n"
msgstr "%s: kan inte låsa TCFS-nyckelfilen\n"
-#: src/userdel.c:354
+#: src/userdel.c:384
#, c-format
msgid "%s: cannot open TCFS key file\n"
msgstr "%s: kan inte öppna TCFS-nyckelfilen\n"
-#: src/userdel.c:363
+#: src/userdel.c:393
#, c-format
msgid "%s: cannot open group file\n"
msgstr "%s: kan inte öppna gruppfilen\n"
-#: src/userdel.c:373
+#: src/userdel.c:403
#, c-format
msgid "%s: cannot open shadow group file\n"
msgstr "%s: kan inte öppna skuggruppfilen\n"
-#: src/userdel.c:404 src/userdel.c:419
+#: src/userdel.c:434 src/userdel.c:449
#, c-format
msgid "%s: error deleting authentication\n"
msgstr "%s: fel under borttagning av metod för äkthetsbevisning\n"
-#: src/userdel.c:428
+#: src/userdel.c:458
#, c-format
msgid "%s: error deleting password entry\n"
msgstr "%s: fel under borttagning av lösenordsnotering\n"
-#: src/userdel.c:431
+#: src/userdel.c:461
#, c-format
msgid "%s: error deleting shadow password entry\n"
msgstr "%s: fel under borttagning av skugglösenordsnotering\n"
-#: src/userdel.c:440
+#: src/userdel.c:470
#, c-format
msgid "%s: error deleting TCFS entry\n"
msgstr "%s: fel under borttagning av TCFS-notering\n"
-#: src/userdel.c:453
+#: src/userdel.c:483
#, c-format
msgid "%s: error deleting password dbm entry\n"
msgstr "%s: fel under borttagning av dbm-lösenordsnotering\n"
-#: src/userdel.c:472
+#: src/userdel.c:502
#, c-format
msgid "%s: error deleting shadow passwd dbm entry\n"
msgstr "%s: fel under borttagning av dbm-skugglösenordsnotering\n"
-#: src/userdel.c:513
+#: src/userdel.c:543
#, c-format
msgid "%s: user %s is currently logged in\n"
msgstr "%s: användare %s är inloggad\n"
-#: src/userdel.c:630
+#: src/userdel.c:660
#, c-format
msgid "%s: warning: %s not owned by %s, not removing\n"
msgstr "%s: varning: %s ägs inte av %s, tar inte bort\n"
-#: src/userdel.c:636
+#: src/userdel.c:666
#, c-format
msgid "%s: warning: can't remove "
msgstr "%s: varning: kan inte ta bort "
-#: src/userdel.c:711 src/usermod.c:968
+#: src/userdel.c:741 src/usermod.c:967
#, c-format
msgid "%s: user %s does not exist\n"
msgstr "%s: användare %s finns inte\n"
-#: src/userdel.c:725 src/usermod.c:984
+#: src/userdel.c:755 src/usermod.c:983
#, c-format
msgid "%s: user %s is a NIS user\n"
msgstr "%s: användare %s är en NIS-användare\n"
-#: src/userdel.c:762
+#: src/userdel.c:792
#, c-format
msgid "%s: %s not owned by %s, not removing\n"
msgstr "%s: %s ägs inte av %s, tar inte bort\n"
-#: src/userdel.c:785
+#: src/userdel.c:815
#, c-format
msgid "%s: not removing directory %s (would remove home of user %s)\n"
msgstr "%s: tar inte bort katalogen %s (skulle ta bort hemkatalogen för %s)\n"
-#: src/userdel.c:798
+#: src/userdel.c:828
#, c-format
msgid "%s: error removing directory %s\n"
msgstr "%s: fel under borttagning av katalogen %s\n"
-#: src/usermod.c:316
+#: src/usermod.c:315
msgid "\t\t[-d home [-m]] [-s shell] [-c comment] [-l new_name]\n"
msgstr "\t\t[-d hem [-m]] [-s skal] [-c kommentar] [-l nytt_namn]\n"
-#: src/usermod.c:322
+#: src/usermod.c:321
msgid "[-A {DEFAULT|program},... ] "
msgstr "[-A {DEFAULT|program},... ] "
-#: src/usermod.c:478
+#: src/usermod.c:477
#, c-format
msgid "%s: out of memory in update_group\n"
msgstr "%s: slut på minne i update_group\n"
-#: src/usermod.c:601
+#: src/usermod.c:600
#, c-format
msgid "%s: out of memory in update_gshadow\n"
msgstr "%s: slut på minne i update_gshadow\n"
-#: src/usermod.c:1139
+#: src/usermod.c:1138
#, c-format
msgid "%s: no flags given\n"
msgstr "%s: inga flaggor givna\n"
-#: src/usermod.c:1146
+#: src/usermod.c:1145
#, c-format
msgid "%s: shadow passwords required for -e and -f\n"
msgstr "%s: skugglösenord krävs för -e och -f\n"
-#: src/usermod.c:1167
+#: src/usermod.c:1166
#, c-format
msgid "%s: uid %ld is not unique\n"
msgstr "%s: uid %ld är inte unikt\n"
-#: src/usermod.c:1315
+#: src/usermod.c:1314
#, c-format
msgid "%s: error deleting authentication method\n"
msgstr "%s: fel under borttagning av metod för äkthetsbevisning\n"
-#: src/usermod.c:1335
+#: src/usermod.c:1334
#, c-format
msgid "%s: error changing authentication method\n"
msgstr "%s: fel under ändring av metod för äkthetsbevisning\n"
-#: src/usermod.c:1352
+#: src/usermod.c:1351
#, c-format
msgid "%s: error changing password entry\n"
msgstr "%s: fel under ändring av lösenordsnotering\n"
-#: src/usermod.c:1358
+#: src/usermod.c:1357
#, c-format
msgid "%s: error removing password entry\n"
msgstr "%s: fel under borttagning av lösenordsnotering\n"
-#: src/usermod.c:1366
+#: src/usermod.c:1365
#, c-format
msgid "%s: error adding password dbm entry\n"
msgstr "%s: fel under tilläggning av dbm-lösenordsnotering\n"
-#: src/usermod.c:1373
+#: src/usermod.c:1372
#, c-format
msgid "%s: error removing passwd dbm entry\n"
msgstr "%s: fel under borttagning av dbm-lösenordsnotering\n"
-#: src/usermod.c:1390
+#: src/usermod.c:1389
#, c-format
msgid "%s: error removing shadow password entry\n"
msgstr "%s: fel under borttagning av skugglösenordsnotering\n"
-#: src/usermod.c:1405
+#: src/usermod.c:1404
#, c-format
msgid "%s: error removing shadow passwd dbm entry\n"
msgstr "%s: fel under borttagning av dbm-skugglösenordsnotering\n"
-#: src/usermod.c:1436
+#: src/usermod.c:1435
#, c-format
msgid "%s: directory %s exists\n"
msgstr "%s: katalogen %s existerar\n"
-#: src/usermod.c:1443
+#: src/usermod.c:1442
#, c-format
msgid "%s: can't create %s\n"
msgstr "%s: kan inte skapa %s\n"
-#: src/usermod.c:1449
+#: src/usermod.c:1448
#, c-format
msgid "%s: can't chown %s\n"
msgstr "%s: kan inte byta ägare på %s\n"
-#: src/usermod.c:1465
+#: src/usermod.c:1464
#, c-format
msgid "%s: cannot rename directory %s to %s\n"
msgstr "%s: kan inte byta namn på katalogen %s till %s\n"
#. better leave it alone
-#: src/usermod.c:1562
+#: src/usermod.c:1561
#, c-format
msgid "%s: warning: %s not owned by %s\n"
msgstr "%s: varning: %s ägs inte av %s\n"
-#: src/usermod.c:1568
+#: src/usermod.c:1567
msgid "failed to change mailbox owner"
msgstr "kunde inte byta ägare av brevlådan"
-#: src/usermod.c:1575
+#: src/usermod.c:1574
msgid "failed to rename mailbox"
msgstr "kunde inte byta namn på brevlådan"
-#: src/vipw.c:103
+#: src/vipw.c:102
#, c-format
msgid ""
"\n"
"\n"
"%s: %s är oförändrad\n"
-#: src/vipw.c:128
+#: src/vipw.c:127
msgid "Couldn't lock file"
msgstr "Kunde inte låsa filen"
-#: src/vipw.c:135
+#: src/vipw.c:134
msgid "Couldn't make backup"
msgstr "Kunde inte göra en backup"
-#: src/vipw.c:174
+#: src/vipw.c:187
#, c-format
msgid "%s: can't restore %s: %s (your changes are in %s)\n"
msgstr "%s: kan inte återställa %s: %s (dina ändringar är i %s)\n"
-#: src/vipw.c:213
+#: src/vipw.c:226
msgid ""
"Usage:\n"
"`vipw' edits /etc/passwd `vipw -s' edits /etc/shadow\n"
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
+++ /dev/null
-# shadow-utils.spec generated automatically from shadow-utils.spec.in
-# $Id: shadow-utils.spec.in,v 1.2 1999/06/07 16:40:45 marekm Exp $
-Summary: Shadow password file utilities for Linux
-Name: shadow-utils
-Version: 19990827
-Release: 1
-Copyright: Free
-Group: Utilities/System
-Source: ftp://ftp.ists.pwr.wroc.pl/pub/linux/shadow/shadow-19990827.tar.gz
-BuildRoot: /var/tmp/shadow-utils
-Packager: Timo Karjalainen <timok@iki.fi>
-# Obsoletes: adduser
-
-%description
-This package includes the programs necessary to convert traditional
-V7 UNIX password files to the SVR4 shadow password format and additional
-tools to work with shadow passwords.
- - 'pwconv' converts everything to the shadow password format.
- - 'pwunconv' converts back to non-shadow passwords.
- - 'pwck' checks the integrity of the password and shadow files.
- - 'lastlog' prints out the last login times of all users.
- - 'useradd', 'userdel', 'usermod' to manage user accounts.
- - 'groupadd', 'groupdel', 'groupmod' to manage groups.
-
-A number of man pages are also included that relate to these utilities,
-and shadow passwords in general.
-
-%changelog
-
-* Sun Dec 14 1997 Marek Michalkiewicz <marekm@piast.t19.ds.pwr.wroc.pl>
-
-- Lots of changes, see doc/CHANGES for more details
-
-* Sun Jun 08 1997 Timo Karjalainen <timok@iki.fi>
-
-- Initial release
-
-%prep
-# This is just a few of the core utilities from the shadow suite...
-# packaged up for use w/PAM
-%setup -n shadow-19990827
-
-%build
-# shared lib support is untested, so...
-CFLAGS="$RPM_OPT_FLAGS" ./configure --disable-shared --prefix=/usr --exec-prefix=/usr
-make
-
-%install
-if [ -d $RPM_BUILD_ROOT ] ; then
- rm -rf $RPM_BUILD_ROOT
-fi
-mkdir -p $RPM_BUILD_ROOT/usr
-# neato trick, heh ? :-)
-./configure --prefix=$RPM_BUILD_ROOT/usr
-make install
-mkdir -p $RPM_BUILD_ROOT/etc/default
-
-# FIXME
-#install -m 0600 -o root $RPM_SOURCE_DIR/shadow-970616.useradd $RPM_BUILD_ROOT/etc/default/useradd
-#install -m 0644 -o root $RPM_SOURCE_DIR/shadow-970616.login.defs $RPM_BUILD_ROOT/etc/login.defs
-#ln -s useradd $RPM_BUILD_ROOT/usr/sbin/adduser
-#ln -s useradd.8 $RPM_BUILD_ROOT/usr/man/man8/adduser.8
-
-#make prefix=$RPM_BUILD_ROOT/usr exec_prefix=$RPM_BUILD_ROOT/usr install
-#touch $RPM_BUILD_ROOT/etc/{login.defs,default/useradd}
-#chmod 640 $RPM_BUILD_ROOT/etc/{login.defs,default/useradd}
-#chown root $RPM_BUILD_ROOT/etc/{login.defs,default/useradd}
-#chgrp root $RPM_BUILD_ROOT/etc/{login.defs,default/useradd}
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%files
-%doc doc/ANNOUNCE doc/CHANGES doc/HOWTO
-%doc doc/LICENSE doc/README doc/README.linux
-%dir /etc/default
-%config /etc/default/useradd
-# %config /etc/limits
-# %config /etc/login.access
-%config /etc/login.defs
-# %config /etc/limits
-# %config /etc/porttime
-# %config /etc/securetty
-# %config /etc/shells
-# %config /etc/suauth
-# /bin/login
-# /bin/su
-/usr/bin/chage
-# /usr/bin/chfn
-# /usr/bin/chsh
-# /usr/bin/expiry
-# /usr/bin/faillog
-/usr/bin/gpasswd
-/usr/bin/lastlog
-# /usr/bin/newgrp
-# /usr/bin/passwd
-# /usr/bin/sg
-/usr/man/man1/chage.1
-# /usr/man/man1/chfn.1
-# /usr/man/man1/chsh.1
-/usr/man/man1/gpasswd.1
-# /usr/man/man1/login.1
-# /usr/man/man1/passwd.1
-# /usr/man/man1/sg.1
-# /usr/man/man1/su.1
-/usr/man/man3/shadow.3
-# /usr/man/man5/faillog.5
-# /usr/man/man5/limits.5
-# /usr/man/man5/login.access.5
-# /usr/man/man5/login.defs.5
-# /usr/man/man5/passwd.5
-# /usr/man/man5/porttime.5
-/usr/man/man5/shadow.5
-# /usr/man/man5/suauth.5
-# /usr/man/man8/adduser.8
-/usr/man/man8/chpasswd.8
-# /usr/man/man8/faillog.8
-/usr/man/man8/groupadd.8
-/usr/man/man8/groupdel.8
-/usr/man/man8/groupmod.8
-/usr/man/man8/grpck.8
-/usr/man/man8/lastlog.8
-# /usr/man/man8/logoutd.8
-/usr/man/man8/newusers.8
-/usr/man/man8/pwck.8
-/usr/man/man8/pwconv.8
-# /usr/man/man8/shadowconfig.8
-/usr/man/man8/useradd.8
-/usr/man/man8/userdel.8
-/usr/man/man8/usermod.8
-# /usr/man/man8/vigr.8
-# /usr/man/man8/vipw.8
-# /usr/sbin/adduser
-/usr/sbin/chpasswd
-/usr/sbin/groupadd
-/usr/sbin/groupdel
-/usr/sbin/groupmod
-/usr/sbin/grpck
-/usr/sbin/grpconv
-/usr/sbin/grpunconv
-# /usr/sbin/logoutd
-/usr/sbin/newusers
-/usr/sbin/pwck
-/usr/sbin/pwconv
-/usr/sbin/pwunconv
-# /usr/sbin/shadowconfig
-/usr/sbin/useradd
-/usr/sbin/userdel
-/usr/sbin/usermod
-# /usr/sbin/vigr
-# /usr/sbin/vipw
install-exec-hook:
for i in $(suidbins); do \
- chmod 4755 $(bindir)/$$i; \
+ chmod 4755 $(DESTDIR)$(bindir)/$$i; \
done
install-data-hook:
for i in $(suidubins); do \
- chmod 4755 $(ubindir)/$$i; \
+ chmod 4755 $(DESTDIR)$(ubindir)/$$i; \
done
- rm -f $(ubindir)/sg
- ln -s newgrp $(ubindir)/sg
+ rm -f $(DESTDIR)$(ubindir)/sg
+ ln -s newgrp $(DESTDIR)$(ubindir)/sg
noinst_PROGRAMS = groups id sulogin
shlibs = ../lib/libshadow.la
# With glibc2, almost all programs need libcrypt for some reason,
# even those that don't actually use crypt().
-LDADD = ${shlibs} ../libmisc/libmisc.a ../lib/libshadow.a @INTLLIBS@ @LIBCRYPT@ @LIBTCFS@ @LIBSKEY@
+LDADD = ${shlibs} ../libmisc/libmisc.a ../lib/libshadow.a @INTLLIBS@ @LIBCRYPT@ @LIBTCFS@ @LIBSKEY@ @LIBMD@
INCLUDES = -I${top_srcdir}/lib -I$(top_srcdir)/libmisc
chfn_LDADD = ${LDADD} @LIBPAM@
LD = @LD@
LIBCRACK = @LIBCRACK@
LIBCRYPT = @LIBCRYPT@
+LIBMD = @LIBMD@
LIBPAM = @LIBPAM@
LIBSKEY = @LIBSKEY@
LIBTCFS = @LIBTCFS@
shlibs = ../lib/libshadow.la
# With glibc2, almost all programs need libcrypt for some reason,
# even those that don't actually use crypt().
-LDADD = ${shlibs} ../libmisc/libmisc.a ../lib/libshadow.a @INTLLIBS@ @LIBCRYPT@ @LIBTCFS@ @LIBSKEY@
+LDADD = ${shlibs} ../libmisc/libmisc.a ../lib/libshadow.a @INTLLIBS@ @LIBCRYPT@ @LIBTCFS@ @LIBSKEY@ @LIBMD@
INCLUDES = -I${top_srcdir}/lib -I$(top_srcdir)/libmisc
chfn_LDADD = ${LDADD} @LIBPAM@
install-exec-hook:
for i in $(suidbins); do \
- chmod 4755 $(bindir)/$$i; \
+ chmod 4755 $(DESTDIR)$(bindir)/$$i; \
done
install-data-hook:
for i in $(suidubins); do \
- chmod 4755 $(ubindir)/$$i; \
+ chmod 4755 $(DESTDIR)$(ubindir)/$$i; \
done
- rm -f $(ubindir)/sg
- ln -s newgrp $(ubindir)/sg
+ rm -f $(DESTDIR)$(ubindir)/sg
+ ln -s newgrp $(DESTDIR)$(ubindir)/sg
# 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.
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: chage.c,v 1.16 1999/08/27 19:02:51 marekm Exp $")
+RCSID(PKG_VER "$Id: chage.c,v 1.17 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
#endif /* SHADOWPWD */
static char *Prog;
+static int amroot;
#ifdef AGING /*{*/
#endif
/* local function prototypes */
-static void usage P_((void));
-static void date_to_str P_((char *, size_t, time_t));
-static int new_fields P_((void));
-static void print_date P_((time_t));
-static void list_fields P_((void));
-int main P_((int, char **));
-static void cleanup P_((int));
+static void usage(void);
+static void date_to_str(char *, size_t, time_t);
+static int new_fields(void);
+static void print_date(time_t);
+static void list_fields(void);
+static void cleanup(int);
/*
* usage - print command line syntax and exit
#else
char new_age[5];
#endif
- uid_t ruid = getuid ();
+ uid_t ruid;
const struct passwd *pw;
struct passwd pwent;
char name[BUFSIZ];
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
+ ruid = getuid();
+ amroot = (ruid == 0);
+
/*
* Get the program name so that error messages can use it.
*/
* information.
*/
- if (ruid != 0 && ! lflg) {
+ if (!amroot && !lflg) {
fprintf (stderr, _("%s: permission denied\n"), Prog);
closelog();
exit (1);
* password file entries into memory. Then we get a pointer
* to the password file entry for the requested user.
*/
-
- if (!pw_lock()) {
+ /* We don't lock the password file if we are not root */
+ if (amroot && !pw_lock()) {
fprintf(stderr, _("%s: can't lock password file\n"), Prog);
SYSLOG((LOG_ERR, LOCK_FAIL, PASSWD_FILE));
closelog();
exit(1);
}
- if (!pw_open((ruid != 0 || lflg) ? O_RDONLY:O_RDWR)) {
+ if (!pw_open((!amroot || lflg) ? O_RDONLY:O_RDWR)) {
fprintf(stderr, _("%s: can't open password file\n"), Prog);
cleanup(1);
SYSLOG((LOG_ERR, OPEN_FAIL, PASSWD_FILE));
* a new entry will be created for this user if one does
* not exist already.
*/
-
- if (!spw_lock()) {
+ /* We don't lock the shadow file if we are not root */
+ if (amroot && !spw_lock()) {
fprintf(stderr, _("%s: can't lock shadow password file\n"), Prog);
cleanup(1);
SYSLOG((LOG_ERR, LOCK_FAIL, SHADOW_FILE));
closelog();
exit(1);
}
- if (!spw_open((ruid != 0 || lflg) ? O_RDONLY:O_RDWR)) {
+ if (!spw_open((!amroot || lflg) ? O_RDONLY : O_RDWR)) {
fprintf(stderr, _("%s: can't open shadow password file\n"), Prog);
cleanup(2);
SYSLOG((LOG_ERR, OPEN_FAIL, SHADOW_FILE));
*/
if (lflg) {
- if (ruid != 0 && ruid != pwent.pw_uid) {
+ if (!amroot && (ruid != pwent.pw_uid)) {
fprintf(stderr, _("%s: permission denied\n"), Prog);
closelog();
exit(1);
cleanup(int state)
{
switch (state) {
- case 2:
+ case 2:
#ifdef SHADOWPWD
- spw_unlock ();
+ if (amroot)
+ spw_unlock();
#endif
- case 1:
- pw_unlock ();
- case 0:
- break;
+ case 1:
+ if (amroot)
+ pw_unlock();
+ case 0:
+ break;
}
}
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: chfn.c,v 1.15 1999/07/09 18:02:43 marekm Exp $")
+RCSID(PKG_VER "$Id: chfn.c,v 1.16 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
#define CHGGECOS "changed user `%s' information.\n"
/* local function prototypes */
-static void usage P_((void));
-static int may_change_field P_((int));
-static void new_fields P_((void));
-static char *copy_field P_((char *, char *, char *));
-int main P_((int, char **));
+static void usage(void);
+static int may_change_field(int);
+static void new_fields(void);
+static char *copy_field(char *, char *, char *);
/*
* usage - print command line syntax and exit
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: chpasswd.c,v 1.9 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: chpasswd.c,v 1.10 2000/08/26 18:27:18 marekm Exp $")
#include <stdio.h>
#include "prototypes.h"
static int is_shadow_pwd;
#endif
-extern char *crypt_make_salt P_((void));
extern char *l64a();
/* local function prototypes */
-static void usage P_((void));
-int main P_((int, char **));
+static void usage(void);
/*
* usage - display usage message and exit
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: chsh.c,v 1.15 1999/07/09 18:02:43 marekm Exp $")
+RCSID(PKG_VER "$Id: chsh.c,v 1.16 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
#define CHGSHELL "changed user `%s' shell to `%s'\n"
/* local function prototypes */
-static void usage P_((void));
-static void new_fields P_((void));
-static int restricted_shell P_((const char *));
-int main P_((int, char **));
+static void usage(void);
+static void new_fields(void);
+static int restricted_shell(const char *);
/*
* usage - print command line syntax and exit
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: dpasswd.c,v 1.10 1999/08/27 19:02:51 marekm Exp $")
+RCSID(PKG_VER "$Id: dpasswd.c,v 1.11 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <sys/stat.h>
extern int optind;
extern char *optarg;
-extern char *crypt_make_salt P_((void));
extern char *getpass();
/* local function prototypes */
-static void usage P_((void));
-int main P_((int, char **));
+static void usage(void);
static void
usage(void)
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: expiry.c,v 1.8 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: expiry.c,v 1.9 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <signal.h>
#endif
#endif
-int main P_((int, char **));
#if !defined(SHADOWPWD) && !defined(AGING) /*{*/
#else /*} AGING || SHADOWPWD {*/
/* local function prototypes */
-static RETSIGTYPE catch P_((int));
-static void usage P_((void));
+static RETSIGTYPE catch(int);
+static void usage(void);
/*
* catch - signal catcher
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: faillog.c,v 1.9 1999/07/09 18:02:43 marekm Exp $")
+RCSID(PKG_VER "$Id: faillog.c,v 1.10 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <sys/stat.h>
#define NOW (time((time_t *) 0))
/* local function prototypes */
-static void usage P_((void));
-int main P_((int, char **));
-static void print P_((void));
-static void print_one P_((const struct faillog *, uid_t));
-static void reset P_((void));
-static int reset_one P_((uid_t));
-static void setmax P_((int));
-static void setmax_one P_((uid_t, int));
-static void set_locktime P_((long));
-static void set_locktime_one P_((uid_t, long));
+static void usage(void);
+static void print(void);
+static void print_one(const struct faillog *, uid_t);
+static void reset(void);
+static int reset_one(uid_t);
+static void setmax(int);
+static void setmax_one(uid_t, int);
+static void set_locktime(long);
+static void set_locktime_one(uid_t, long);
static void
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: gpasswd.c,v 1.15 1999/08/27 19:02:51 marekm Exp $")
+RCSID(PKG_VER "$Id: gpasswd.c,v 1.16 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
#define RETRIES 3
#endif
-extern char *crypt_make_salt P_((void));
extern int optind;
extern char *optarg;
#ifdef NDBM
#endif
/* local function prototypes */
-static void usage P_((void));
-static RETSIGTYPE die P_((int));
-static int check_list P_((const char *));
-int main P_((int, char **));
+static void usage(void);
+static RETSIGTYPE die(int);
+static int check_list(const char *);
/*
* usage - display usage message
cp = pw_encrypt(pass, crypt_make_salt());
memzero(pass, sizeof pass);
-#ifdef SHADOWGRP
- sgent.sg_passwd = cp;
-#else
- grent.gr_passwd = cp;
+#ifdef SHADOWGRP
+ if (is_shadowgrp)
+ sgent.sg_passwd = cp;
+ else
#endif
+ grent.gr_passwd = cp;
SYSLOG((LOG_INFO, "change the password for group %s by %s\n", group, myname));
/*
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: groupadd.c,v 1.14 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: groupadd.c,v 1.15 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
extern char *optarg;
/* local function prototypes */
-static void usage P_((void));
-static void new_grent P_((struct group *));
+static void usage(void);
+static void new_grent(struct group *);
#ifdef SHADOWGRP
-static void new_sgent P_((struct sgrp *));
+static void new_sgent(struct sgrp *);
#endif
-static void grp_update P_((void));
-static void find_new_gid P_((void));
-static void check_new_name P_((void));
-static void process_flags P_((int, char **));
-static void close_files P_((void));
-static void open_files P_((void));
-static void fail_exit P_((int));
-int main P_((int, char **));
+static void grp_update(void);
+static void find_new_gid(void);
+static void check_new_name(void);
+static void process_flags(int, char **);
+static void close_files(void);
+static void open_files(void);
+static void fail_exit(int);
/*
* usage - display usage message and exit
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: groupdel.c,v 1.10 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: groupdel.c,v 1.11 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
#define E_GRP_UPDATE 10 /* can't update group file */
/* local function prototypes */
-static void usage P_((void));
-static void grp_update P_((void));
-static void close_files P_((void));
-static void open_files P_((void));
-static void group_busy P_((gid_t));
-int main P_((int, char **));
+static void usage(void);
+static void grp_update(void);
+static void close_files(void);
+static void open_files(void);
+static void group_busy(gid_t);
/*
* usage - display usage message and exit
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: groupmod.c,v 1.12 1999/07/09 18:02:43 marekm Exp $")
+RCSID(PKG_VER "$Id: groupmod.c,v 1.13 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
extern char *optarg;
/* local function prototypes */
-static void usage P_((void));
-static void new_grent P_((struct group *));
+static void usage(void);
+static void new_grent(struct group *);
#ifdef SHADOWGRP
-static void new_sgent P_((struct sgrp *));
+static void new_sgent(struct sgrp *);
#endif
-static void grp_update P_((void));
-static void check_new_gid P_((void));
-static void check_new_name P_((void));
-static void process_flags P_((int, char **));
-static void close_files P_((void));
-static void open_files P_((void));
-int main P_((int, char **));
+static void grp_update(void);
+static void check_new_gid(void);
+static void check_new_name(void);
+static void process_flags(int, char **);
+static void close_files(void);
+static void open_files(void);
/*
* usage - display usage message and exit
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: groups.c,v 1.5 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: groups.c,v 1.6 2000/08/26 18:27:18 marekm Exp $")
#include <stdio.h>
#include <pwd.h>
#include "defines.h"
/* local function prototypes */
-static void print_groups P_((const char *));
-int main P_((int, char **));
+static void print_groups(const char *);
/*
* print_groups - print the groups which the named user is a member of
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: grpck.c,v 1.12 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: grpck.c,v 1.13 2000/08/26 18:27:18 marekm Exp $")
#include <stdio.h>
#include <fcntl.h>
#include "commonio.h"
#include "groupio.h"
-extern void __gr_del_entry P_((const struct commonio_entry *));
-extern struct commonio_entry *__gr_get_head P_((void));
+extern void __gr_del_entry(const struct commonio_entry *);
+extern struct commonio_entry *__gr_get_head(void);
#ifdef SHADOWGRP
#include "sgroupio.h"
-extern void __sgr_del_entry P_((const struct commonio_entry *));
-extern struct commonio_entry *__sgr_get_head P_((void));
+extern void __sgr_del_entry(const struct commonio_entry *);
+extern struct commonio_entry *__sgr_get_head(void);
#endif
/*
static int read_only = 0;
/* local function prototypes */
-static void usage P_((void));
-static int yes_or_no P_((void));
-static void delete_member P_((char **, const char *));
-int main P_((int, char **));
+static void usage(void);
+static int yes_or_no(void);
+static void delete_member(char **, const char *);
/*
* usage - print syntax message and exit
* be parsed properly.
*/
- if (!gre->entry) {
+ if (!gre->eptr) {
/*
* Tell the user this entire line is bogus and
* Group structure is good, start using it.
*/
- grp = gre->entry;
+ grp = gre->eptr;
/*
* Make sure this entry has a unique name.
for (tgre = __gr_get_head(); tgre; tgre = tgre->next) {
- const struct group *ent = tgre->entry;
+ const struct group *ent = tgre->eptr;
/*
* Don't check this entry
* be parsed properly.
*/
- if (!sge->entry) {
+ if (!sge->eptr) {
/*
* Tell the user this entire line is bogus and
* Shadow group structure is good, start using it.
*/
- sgr = sge->entry;
+ sgr = sge->eptr;
/*
* Make sure this entry has a unique name.
for (tsge = __sgr_get_head(); tsge; tsge = tsge->next) {
- const struct sgrp *ent = tsge->entry;
+ const struct sgrp *ent = tsge->eptr;
/*
* Don't check this entry
#include "sgroupio.h"
#include "rcsid.h"
-RCSID(PKG_VER "$Id: grpconv.c,v 1.10 1999/07/09 18:02:43 marekm Exp $")
+RCSID(PKG_VER "$Id: grpconv.c,v 1.11 2000/08/26 18:27:18 marekm Exp $")
static int group_locked = 0;
static int gshadow_locked = 0;
/* local function prototypes */
-static void fail_exit P_((int));
-int main P_((int, char **));
+static void fail_exit(int);
static void
fail_exit(int status)
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: grpunconv.c,v 1.9 1999/07/09 18:02:43 marekm Exp $")
+RCSID(PKG_VER "$Id: grpunconv.c,v 1.10 2000/08/26 18:27:18 marekm Exp $")
#include <stdio.h>
#include <stdlib.h>
static int gshadow_locked = 0;
/* local function prototypes */
-static void fail_exit P_((int));
-int main P_((int, char **));
+static void fail_exit(int);
static void
fail_exit(int status)
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: id.c,v 1.5 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: id.c,v 1.6 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
#include "defines.h"
/* local function prototypes */
-static void usage P_((void));
-int main P_((int, char **));
+static void usage(void);
static void
usage(void)
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: lastlog.c,v 1.5 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: lastlog.c,v 1.6 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <sys/stat.h>
#define NOW (time ((time_t *) 0))
/* local function prototypes */
-int main P_((int, char **));
-static void print P_((void));
-static void print_one P_((const struct passwd *));
+static void print(void);
+static void print_one(const struct passwd *);
int
main(int argc, char **argv)
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: login.c,v 1.16 1999/08/27 19:02:51 marekm Exp $")
+RCSID(PKG_VER "$Id: login.c,v 1.17 2000/08/26 18:27:18 marekm Exp $")
#include "prototypes.h"
#include "defines.h"
#include <netdb.h>
#endif
-#ifdef USE_PAM_not_yet
+#ifdef USE_PAM
#include "pam_defs.h"
static const struct pam_conv conv = {
#define PAM_END { retcode = pam_close_session(pamh,0); \
pam_end(pamh,retcode); }
-#endif /* USE_PAM_not_yet */
+#endif /* USE_PAM */
/*
* Needed for MkLinux DR1/2/2.1 - J.
extern char **newenvp;
extern size_t newenvc;
-extern char *tz P_((const char *));
-extern void subsystem P_((const struct passwd *));
-extern void dolastlog P_((struct lastlog *, const struct passwd *, const char *, const char *));
+extern void dolastlog(struct lastlog *, const struct passwd *, const char *, const char *);
extern int optind;
extern char *optarg;
extern char **environ;
-extern int login_access P_((const char *user, const char *from));
-extern void login_fbtab P_((const char *tty, uid_t uid, gid_t gid));
+extern int login_access(const char *, const char *);
+extern void login_fbtab(const char *, uid_t, gid_t);
#ifndef ALARM
#define ALARM 60
#define MANY_FAILS "REPEATED login failures%s\n"
/* local function prototypes */
-static void usage P_((void));
-static void setup_tty P_((void));
-static void bad_time_notify P_((void));
-static void check_flags P_((int, char * const *));
-static void check_nologin P_((void));
-static void init_env P_((void));
-static RETSIGTYPE alarm_handler P_((int));
-int main P_((int, char **));
+static void usage(void);
+static void setup_tty(void);
+static void bad_time_notify(void);
+static void check_flags(int, char * const *);
+#ifndef USE_PAM
+static void check_nologin(void);
+#endif
+static void init_env(void);
+static RETSIGTYPE alarm_handler(int);
/*
* usage - print login command usage and exit
}
}
-
+#ifndef USE_PAM
static void
check_nologin(void)
{
printf(_("\n[Disconnect bypassed -- root login allowed.]\n"));
}
}
-
+#endif /* !USE_PAM */
static void
init_env(void)
char **envp = environ;
static char temp_pw[2];
static char temp_shell[] = "/bin/sh";
-#ifdef USE_PAM_not_yet
+#ifdef USE_PAM
int retcode;
pid_t child;
-#endif /* USE_PAM_not_yet */
+ char *pam_user;
+#endif /* USE_PAM */
#ifdef SHADOWPWD
struct spwd *spwd=NULL;
#endif
delay = getdef_num("FAIL_DELAY", 1);
retries = getdef_num("LOGIN_RETRIES", RETRIES);
-#ifdef USE_PAM_not_yet
+#ifdef USE_PAM
retcode = pam_start("login", username, &conv, &pamh);
if(retcode != PAM_SUCCESS) {
fprintf(stderr,"login: PAM Failure, aborting: %s\n",
exit(99);
}
/* hostname & tty are either set to NULL or their correct values,
- depending on how much we know */
+ depending on how much we know. We also set PAM's fail delay
+ to ours. */
retcode = pam_set_item(pamh, PAM_RHOST, hostname);
PAM_FAIL_CHECK;
retcode = pam_set_item(pamh, PAM_TTY, tty);
PAM_FAIL_CHECK;
-
+#ifdef HAVE_PAM_FAIL_DELAY
+ retcode = pam_fail_delay(pamh, 1000000*delay);
+ PAM_FAIL_CHECK;
+#endif
/* if fflg == 1, then the user has already been authenticated */
if (!fflg || (getuid() != 0)) {
- int failcount = 0;
+ int failcount;
+ char hostn[256];
+ char login_prompt[256]; /* That's one hell of a prompt :) */
+
+ /* Make the login prompt look like we want it */
+ if (!gethostname(hostn, sizeof(hostn)))
+ snprintf(login_prompt, sizeof(login_prompt),
+ "%s login: ", hostn);
+ else
+ snprintf(login_prompt, sizeof(login_prompt),
+ "login: ");
+
+ retcode = pam_set_item(pamh, PAM_USER_PROMPT, login_prompt);
+ PAM_FAIL_CHECK;
+
+ /* if we didn't get a user on the command line,
+ set it to NULL */
+ pam_get_item(pamh, PAM_USER, (const void **) &pam_user);
+ if (pam_user[0] == '\0')
+ pam_set_item(pamh, PAM_USER, NULL);
/* there may be better ways to deal with some of these
conditions, but at least this way I don't think we'll
(retcode == PAM_USER_UNKNOWN) ||
(retcode == PAM_CRED_INSUFFICIENT) ||
(retcode == PAM_AUTHINFO_UNAVAIL))) {
- pam_get_item(pamh, PAM_USER, (const void **) &username);
+ pam_get_item(pamh, PAM_USER, (const void **) &pam_user);
syslog(LOG_NOTICE,"FAILED LOGIN %d FROM %s FOR %s, %s",
- failcount, hostname, username,
+ failcount, hostname, pam_user,
PAM_STRERROR(pamh, retcode));
- fprintf(stderr,"Login incorrect\n\n");
- pam_set_item(pamh,PAM_USER,NULL);
+#ifdef HAVE_PAM_FAIL_DELAY
+ pam_fail_delay(pamh, 1000000*delay);
+#endif
+ fprintf(stderr, "Login incorrect\n\n");
+ pam_set_item(pamh, PAM_USER, NULL);
retcode = pam_authenticate(pamh, 0);
}
if (retcode != PAM_SUCCESS) {
- pam_get_item(pamh, PAM_USER, (const void **) &username);
+ pam_get_item(pamh, PAM_USER, (const void **) &pam_user);
if (retcode == PAM_MAXTRIES)
syslog(LOG_NOTICE,
"TOO MANY LOGIN TRIES (%d) FROM %s FOR %s, %s",
- failcount, hostname, username,
+ failcount, hostname, pam_user,
PAM_STRERROR(pamh, retcode));
else
syslog(LOG_NOTICE,
"FAILED LOGIN SESSION FROM %s FOR %s, %s",
- hostname, username,
+ hostname, pam_user,
PAM_STRERROR(pamh, retcode));
- fprintf(stderr,"\nLogin incorrect\n");
+ fprintf(stderr, "\nLogin incorrect\n");
pam_end(pamh, retcode);
exit(0);
}
/* Grab the user information out of the password file for future usage
First get the username that we are actually using, though.
*/
- retcode = pam_get_item(pamh, PAM_USER, (const void **) &username);
+ retcode = pam_get_item(pamh, PAM_USER, (const void **) &pam_user);
setpwent();
- pwd = getpwnam(username);
- if (pwd)
- initgroups(username, pwd->pw_gid);
+ pwd = getpwnam(pam_user);
+
+ if (!pwd || setup_groups(pwd))
+ exit(1);
retcode = pam_setcred(pamh, PAM_ESTABLISH_CRED);
PAM_FAIL_CHECK;
PAM_FAIL_CHECK;
-#else /* ! USE_PAM_not_yet */
+#else /* ! USE_PAM */
while (1) { /* repeatedly get login/password pairs */
failed = 0; /* haven't failed authentication yet */
#ifdef RADIUS
#endif
continue;
}
- if (! (pwd = getpwnam(username))) {
+#endif /* ! USE_PAM */
+
+#ifdef USE_PAM
+ if (!(pwd = getpwnam(pam_user))) {
+ pwent.pw_name = pam_user;
+#else
+ if (!(pwd = getpwnam(username))) {
pwent.pw_name = username;
+#endif
strcpy(temp_pw, "!");
pwent.pw_passwd = temp_pw;
pwent.pw_shell = temp_shell;
} else {
pwent = *pwd;
}
-#ifdef SHADOWPWD
+#ifndef USE_PAM
+#ifdef SHADOWPWD
spwd = NULL;
if (pwd && strcmp(pwd->pw_passwd, SHADOW_PASSWD_STRING) == 0) {
spwd = getspnam(username);
else
SYSLOG((LOG_WARN, NO_SHADOW, username, fromhost));
}
-#endif /* SHADOWPWD */
+#endif /* SHADOWPWD */
/*
* If the encrypted password begins with a "!", the account
exit(1);
}
} /* while (1) */
-#endif /* ! USE_PAM_not_yet */
+#endif /* ! USE_PAM */
(void) alarm (0); /* turn off alarm clock */
-#if 1
+#ifndef USE_PAM /* PAM does this */
/*
* porttime checks moved here, after the user has been
* authenticated. now prints a message, as suggested
bad_time_notify();
exit(1);
}
-#endif
check_nologin();
+#endif
if (getenv("IFS")) /* don't export user IFS ... */
addenv("IFS= \t\n", NULL); /* ... instead, set a safe IFS */
+#ifdef USE_PAM
+ setutmp(pam_user, tty, hostname); /* make entry in utmp & wtmp files */
+#else
setutmp(username, tty, hostname); /* make entry in utmp & wtmp files */
+#endif
if (pwent.pw_shell[0] == '*') { /* subsystem root */
subsystem (&pwent); /* figure out what to execute */
subroot++; /* say i was here again */
#endif
goto top; /* go do all this all over again */
}
+#ifndef USE_PAM /* pam_lastlog handles this */
if (getdef_bool("LASTLOG_ENAB")) /* give last login and log this one */
dolastlog(&lastlog, &pwent, utent.ut_line, hostname);
+#endif
#ifdef SVR4_SI86_EUA
sysi86(SI86LIMUSER, EUA_ADD_USER); /* how do we test for fail? */
#endif
-#ifdef AGING
+#ifndef USE_PAM /* PAM handles this as well */
+#ifdef AGING
/*
* Have to do this while we still have root privileges, otherwise
* we don't have access to /etc/shadow. expire() closes password
}
#endif /* ATT_AGE */
#endif /* SHADOWPWD */
-#endif /* AGING */
+#endif /* AGING */
#ifdef RADIUS
if (is_rad_login) {
}
#endif
setup_limits(&pwent); /* nice, ulimit etc. */
+#endif /* ! USE_PAM */
chown_tty(tty, &pwent);
#ifdef LOGIN_FBTAB
login_fbtab(tty, pwent.pw_uid, pwent.pw_gid);
#endif
+ /* We call set_groups() above because this clobbers pam_groups.so */
+#ifndef USE_PAM
if (setup_uid_gid(&pwent, is_console))
+#else
+ if (change_uid(&pwent))
+#endif
exit(1);
#ifdef KERBEROS
setup_env(&pwent); /* set env vars, cd to the home dir */
-#ifdef USE_PAM_not_yet
+#ifdef USE_PAM
{
int i;
const char * const * env;
if (!hushed(&pwent)) {
addenv("HUSHLOGIN=FALSE", NULL);
+ /* pam_unix, pam_mail and pam_lastlog should take care of this */
+#ifndef USE_PAM
motd(); /* print the message of the day */
if (getdef_bool("FAILLOG_ENAB") && faillog.fail_cnt != 0) {
failprint(&faillog);
#endif
#endif /* AGING */
mailcheck(); /* report on the status of mail */
+#endif /* !USE_PAM */
} else
addenv("HUSHLOGIN=TRUE", NULL);
signal(SIGALRM, SIG_DFL); /* default alarm signal */
signal(SIGHUP, SIG_DFL); /* added this. --marekm */
-#ifdef USE_PAM_not_yet
+#ifdef USE_PAM
/* We must fork before setuid() because we need to call
* pam_close_session() as root.
*/
the parent process of login (init, telnetd, ...) is responsible
for calling pam_close_session(). This avoids an extra process
for each login. Maybe we should do this on Linux too? -MM */
- signal(SIGINT, SIG_IGN);
- child = fork();
- if (child < 0) {
- /* error in fork() */
- fprintf(stderr,"login: failure forking: %s", strerror(errno));
- PAM_END;
- exit(0);
- } else if (child) {
- /* parent - wait for child to finish, then cleanup session */
- wait(NULL);
- PAM_END;
- exit(0);
+ /* We let the admin configure whether they need to keep login
+ around to close sessions */
+ if (getdef_bool("CLOSE_SESSIONS")) {
+ signal(SIGINT, SIG_IGN);
+ child = fork();
+ if (child < 0) {
+ /* error in fork() */
+ fprintf(stderr, "login: failure forking: %s",
+ strerror(errno));
+ PAM_END;
+ exit(0);
+ } else if (child) {
+ /* parent - wait for child to finish,
+ then cleanup session */
+ wait(NULL);
+ PAM_END;
+ exit(0);
+ }
+ /* child */
}
- /* child */
#endif
signal(SIGINT, SIG_DFL); /* default interrupt signal */
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: logoutd.c,v 1.14 1999/08/27 19:02:51 marekm Exp $")
+RCSID(PKG_VER "$Id: logoutd.c,v 1.15 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <sys/stat.h>
#endif
/* local function prototypes */
-static int check_login P_((const struct utmp *));
-int main P_((int, char **));
+static int check_login(const struct utmp *);
/*
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: mkpasswd.c,v 1.6 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: mkpasswd.c,v 1.7 2000/08/26 18:27:18 marekm Exp $")
#include <sys/stat.h>
#include "prototypes.h"
#endif
/* local function prototypes */
-int main P_((int, char **));
-static void usage P_((void));
+static void usage(void);
/*
* mkpasswd - create DBM files for /etc/passwd-like input file
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: newgrp.c,v 1.14 1999/08/27 19:02:51 marekm Exp $")
+RCSID(PKG_VER "$Id: newgrp.c,v 1.15 2000/08/26 18:27:18 marekm Exp $")
#include <stdio.h>
#include <errno.h>
static int is_newgrp;
/* local function prototypes */
-static void usage P_((void));
-int main P_((int, char **));
+static void usage(void);
/*
* usage - print command usage message
int initflag = 0;
int needspasswd = 0;
int i;
+ int their_grp = 0;
int cflag = 0;
gid_t gid;
char *cp;
struct sgrp *sgrp;
#endif
+#if ENABLE_NLS
+ /* XXX - remove when gettext is safe to use in setuid programs */
sanitize_env();
+#endif
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
goto failure;
}
group = grp->gr_name;
+ their_grp = 1;
} else if (! (grp = getgrnam (group))) {
fprintf (stderr, _("unknown group: %s\n"), group);
goto failure;
* if she isn't a member, she needs to provide the
* group password. if there is no group password, she
* will be denied access anyway.
+ *
+ * we also check if this is the users default group, eg.
+ * they aren't a member, but this is the group listed as
+ * the one they belong to in their pwd entry.
*/
- if (!is_on_list(grp->gr_mem, name))
+ if (!is_on_list(grp->gr_mem, name) && !their_grp)
needspasswd = 1;
/*
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: newusers.c,v 1.10 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: newusers.c,v 1.11 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <sys/stat.h>
static char *Prog;
-extern char *crypt_make_salt P_((void));
-
#include "getdef.h"
#include "pwio.h"
#include "groupio.h"
#endif
/* local function prototypes */
-static void usage P_((void));
-static int add_group P_((const char *, const char *, gid_t *));
-static int add_user P_((const char *, const char *, uid_t *, gid_t));
-static void update_passwd P_((struct passwd *, const char *));
-static int add_passwd P_((struct passwd *, const char *));
-int main P_((int, char **));
+static void usage(void);
+static int add_group(const char *, const char *, gid_t *);
+static int add_user(const char *, const char *, uid_t *, gid_t);
+static void update_passwd(struct passwd *, const char *);
+static int add_passwd(struct passwd *, const char *);
/*
* usage - display usage message and exit
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: passwd.c,v 1.18 1999/08/27 19:02:51 marekm Exp $")
+RCSID(PKG_VER "$Id: passwd.c,v 1.19 2000/08/26 18:27:18 marekm Exp $")
#include "prototypes.h"
#include "defines.h"
* External identifiers
*/
-extern char *crypt_make_salt P_((void));
#ifdef ATT_AGE
extern char *l64a();
#endif
#define NOCHGPASSWD "did not change password for `%s'"
/* local function prototypes */
-static void usage P_((int));
+static void usage(int);
#ifndef USE_PAM
#ifdef AUTH_METHODS
-static char *get_password P_((const char *));
-static int uses_default_method P_((const char *));
+static char *get_password(const char *);
+static int uses_default_method(const char *);
#endif /* AUTH_METHODS */
-static int reuse P_((const char *, const struct passwd *));
-static int new_password P_((const struct passwd *));
+static int reuse(const char *, const struct passwd *);
+static int new_password(const struct passwd *);
#ifdef SHADOWPWD
-static void check_password P_((const struct passwd *, const struct spwd *));
+static void check_password(const struct passwd *, const struct spwd *);
#else /* !SHADOWPWD */
-static void check_password P_((const struct passwd *));
+static void check_password(const struct passwd *);
#endif /* !SHADOWPWD */
-static char *insert_crypt_passwd P_((const char *, const char *));
+static char *insert_crypt_passwd(const char *, const char *);
#endif /* !USE_PAM */
-static char *date_to_str P_((time_t));
-static const char *pw_status P_((const char *));
-static void print_status P_((const struct passwd *));
-static void fail_exit P_((int));
-static void oom P_((void));
-static char *update_crypt_pw P_((char *));
-static void update_noshadow P_((void));
+static char *date_to_str(time_t);
+static const char *pw_status(const char *);
+static void print_status(const struct passwd *);
+static void fail_exit(int);
+static void oom(void);
+static char *update_crypt_pw(char *);
+static void update_noshadow(void);
#ifdef SHADOWPWD
-static void update_shadow P_((void));
+static void update_shadow(void);
#endif
#ifdef HAVE_TCFS
-static void update_tcfs P_((void));
+static void update_tcfs(void);
#endif
#ifdef HAVE_USERSEC_H
-static void update_userpw P_((char *));
+static void update_userpw(char *);
#endif
-static long getnumber P_((const char *));
-int main P_((int, char **));
+static long getnumber(const char *);
/*
* usage - print command usage and exit
#ifdef HAVE_LIBCRACK_HIST
const char *reason;
#ifdef HAVE_LIBCRACK_PW
- const char *FascistHistoryPw P_((const char *,const struct passwd *));
+ const char *FascistHistoryPw(const char *,const struct passwd *);
reason = FascistHistory(pass, pw);
#else
- const char *FascistHistory P_((const char *, int));
+ const char *FascistHistory(const char *, int);
reason = FascistHistory(pass, pw->pw_uid);
#endif
if (reason) {
int warned;
int pass_max_len;
#ifdef HAVE_LIBCRACK_HIST
- int HistUpdate P_((const char *, const char *));
+ int HistUpdate(const char *, const char *);
#endif
/*
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: pwck.c,v 1.13 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: pwck.c,v 1.14 2000/08/26 18:27:18 marekm Exp $")
#include <stdio.h>
#include <fcntl.h>
#include "commonio.h"
#include "pwio.h"
-extern void __pw_del_entry P_((const struct commonio_entry *));
-extern struct commonio_entry *__pw_get_head P_((void));
+extern void __pw_del_entry(const struct commonio_entry *);
+extern struct commonio_entry *__pw_get_head(void);
#ifdef SHADOWPWD
#include "shadowio.h"
-extern void __spw_del_entry P_((const struct commonio_entry *));
-extern struct commonio_entry *__spw_get_head P_((void));
+extern void __spw_del_entry(const struct commonio_entry *);
+extern struct commonio_entry *__spw_get_head(void);
#endif
/*
static int quiet = 0; /* don't report warnings, only errors */
/* local function prototypes */
-static void usage P_((void));
-static int yes_or_no P_((void));
-int main P_((int, char **));
+static void usage(void);
+static int yes_or_no(void);
/*
* usage - print syntax message and exit
* be parsed properly.
*/
- if (!pfe->entry) {
+ if (!pfe->eptr) {
/*
* Tell the user this entire line is bogus and
* Password structure is good, start using it.
*/
- pwd = pfe->entry;
+ pwd = pfe->eptr;
/*
* Make sure this entry has a unique name.
*/
for (tpfe = __pw_get_head(); tpfe; tpfe = tpfe->next) {
- const struct passwd *ent = tpfe->entry;
+ const struct passwd *ent = tpfe->eptr;
/*
* Don't check this entry
* be parsed properly.
*/
- if (!spe->entry) {
+ if (!spe->eptr) {
/*
* Tell the user this entire line is bogus and
* Shadow password structure is good, start using it.
*/
- spw = spe->entry;
+ spw = spe->eptr;
/*
* Make sure this entry has a unique name.
*/
for (tspe = __spw_get_head(); tspe; tspe = tspe->next) {
- const struct spwd *ent = tspe->entry;
+ const struct spwd *ent = tspe->eptr;
/*
* Don't check this entry
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: pwconv.c,v 1.10 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: pwconv.c,v 1.11 2000/08/26 18:27:18 marekm Exp $")
#include <stdio.h>
#include <stdlib.h>
passwd_locked = 0;
/* local function prototypes */
-static void fail_exit P_((int));
-int main P_((int, char **));
+static void fail_exit(int);
static void
fail_exit(int status)
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: pwunconv.c,v 1.8 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: pwunconv.c,v 1.9 2000/08/26 18:27:18 marekm Exp $")
#include "defines.h"
#include <sys/types.h>
passwd_locked = 0;
/* local function prototypes */
-static void fail_exit P_((int));
-int main P_((int, char **));
+static void fail_exit(int);
static void
fail_exit(int status)
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: su.c,v 1.13 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: su.c,v 1.14 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <stdio.h>
* Global variables
*/
-/* needed by sulog.c */
-char name[BUFSIZ];
-char oldname[BUFSIZ];
+/* not needed by sulog.c anymore */
+static char name[BUFSIZ];
+static char oldname[BUFSIZ];
static char *Prog;
extern char **newenvp;
extern size_t newenvc;
-extern void sulog P_((const char *, int));
-extern void subsystem P_((const struct passwd *));
-extern char *tz P_((const char *));
-extern int check_su_auth P_((const char *, const char *));
extern char **environ;
/* local function prototypes */
-int main P_((int, char **));
#ifndef USE_PAM
-static RETSIGTYPE die P_((int));
-static int iswheel P_((const char *));
+static RETSIGTYPE die(int);
+static int iswheel(const char *);
/*
* die - set or reset termio modes.
static void
su_failure(const char *tty)
{
- sulog(tty, 0); /* log failed attempt */
+ sulog(tty, 0, oldname, name); /* log failed attempt */
#ifdef USE_SYSLOG
if (getdef_bool("SYSLOG_SU_ENAB"))
SYSLOG((pwent.pw_uid ? LOG_INFO:LOG_NOTICE,
* be ignored and a new one created later on.
*/
- if (! fakelogin)
- while (*envp)
- addenv(*envp++, NULL);
-
- if (fakelogin && (cp=getdef_str("ENV_TZ")))
- addenv(*cp == '/' ? tz(cp) : cp, NULL);
-
+ if (fakelogin) {
+ if ((cp=getdef_str("ENV_TZ")))
+ addenv(*cp == '/' ? tz(cp) : cp, NULL);
/*
* The clock frequency will be reset to the login value if required
*/
-
- if (fakelogin && (cp=getdef_str("ENV_HZ")) )
- addenv(cp, NULL); /* set the default $HZ, if one */
-
+ if ((cp=getdef_str("ENV_HZ")))
+ addenv(cp, NULL); /* set the default $HZ, if one */
/*
* The terminal type will be left alone if it is present in the
* environment already.
*/
-
- if (fakelogin && (cp = getenv ("TERM")))
- addenv("TERM", cp);
+ if ((cp = getenv ("TERM")))
+ addenv("TERM", cp);
+ } else {
+ while (*envp)
+ addenv(*envp++, NULL);
+ }
/*
* The next argument must be either a user ID, or some flag to
}
#endif /* !USE_PAM */
- cp = getdef_str(pwent.pw_uid == 0 ? "ENV_SUPATH" : "ENV_PATH");
+ cp = getdef_str((pwent.pw_uid == 0) ? "ENV_SUPATH" : "ENV_PATH");
+#if 0
addenv(cp ? cp : "PATH=/bin:/usr/bin", NULL);
+#else
+ /* XXX very similar code duplicated in libmisc/setupenv.c */
+ if (!cp) {
+ addenv("PATH=/bin:/usr/bin", NULL);
+ } else if (strchr(cp, '=')) {
+ addenv(cp, NULL);
+ } else {
+ addenv("PATH", cp);
+ }
+#endif
environ = newenvp; /* make new environment active */
goto top;
}
- sulog (tty, 1); /* save SU information */
+ sulog(tty, 1, oldname, name); /* save SU information */
endpwent ();
#ifdef SHADOWPWD
endspent ();
* arguments.
*/
- if (! doshell) {
-
- /*
- * Use new user's shell from /etc/passwd and create an
- * argv with the rest of the command line included.
- */
-
- argv[-1] = pwent.pw_shell;
- (void) execv (pwent.pw_shell, &argv[-1]);
- (void) fprintf (stderr, _("No shell\n"));
- SYSLOG((LOG_WARN, "Cannot execute %s\n", pwent.pw_shell));
- closelog();
- exit (1);
- }
if (fakelogin) {
char *arg0;
} else
cp = Basename(pwent.pw_shell);
+ if (! doshell) {
+
+ /*
+ * Use new user's shell from /etc/passwd and create an
+ * argv with the rest of the command line included.
+ */
+
+ argv[-1] = pwent.pw_shell;
+ (void) execv (pwent.pw_shell, &argv[-1]);
+ (void) fprintf (stderr, _("No shell\n"));
+ SYSLOG((LOG_WARN, "Cannot execute %s\n", pwent.pw_shell));
+ closelog();
+ exit (1);
+ }
+
shell(pwent.pw_shell, cp);
/*NOTREACHED*/
exit(1);
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: sulogin.c,v 1.10 1999/08/27 19:02:51 marekm Exp $")
+RCSID(PKG_VER "$Id: sulogin.c,v 1.11 2000/08/26 18:27:18 marekm Exp $")
#include "prototypes.h"
#include "defines.h"
extern size_t newenvc;
extern char **environ;
-extern char *tz P_((const char *));
#ifndef ALARM
#define ALARM 60
#endif
/* local function prototypes */
-static RETSIGTYPE catch P_((int));
-int main P_((int, char **));
+static RETSIGTYPE catch(int);
static RETSIGTYPE
catch(int sig)
alarm (ALARM); /* only wait so long ... */
while (1) { /* repeatedly get login/password pairs */
- entry (name, &pwent); /* get entry from password file */
+ pw_entry(name, &pwent); /* get entry from password file */
if (pwent.pw_name == (char *) 0) {
/*
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: useradd.c,v 1.16 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: useradd.c,v 1.17 2000/08/26 18:27:18 marekm Exp $")
#include "prototypes.h"
#include "defines.h"
#endif
/* local function prototypes */
-static void fail_exit P_((int));
-static struct group *getgr_nam_gid P_((const char *));
-static long get_number P_((const char *));
-static void get_defaults P_((void));
-static void show_defaults P_((void));
-static int set_defaults P_((void));
-static int get_groups P_((char *));
-static void usage P_((void));
-static void new_pwent P_((struct passwd *));
+static void fail_exit(int);
+static struct group *getgr_nam_gid(const char *);
+static long get_number(const char *);
+static void get_defaults(void);
+static void show_defaults(void);
+static int set_defaults(void);
+static int get_groups(char *);
+static void usage(void);
+static void new_pwent(struct passwd *);
#ifdef SHADOWPWD
-static long scale_age P_((long));
-static void new_spent P_((struct spwd *));
+static long scale_age(long);
+static void new_spent(struct spwd *);
#endif
-static void grp_update P_((void));
-static void find_new_uid P_((void));
+static void grp_update(void);
+static void find_new_uid(void);
#ifdef AUTH_METHODS
-static void convert_auth P_((char *, const char *));
-static int valid_auth P_((const char *));
+static void convert_auth(char *, const char *);
+static int valid_auth(const char *);
#endif
-static void process_flags P_((int argc, char **argv));
-static void close_files P_((void));
-static void open_files P_((void));
-static void faillog_reset P_((uid_t));
-static void lastlog_reset P_((uid_t));
-static void usr_update P_((void));
-static void create_home P_((void));
-int main P_((int, char **));
+static void process_flags(int argc, char **argv);
+static void close_files(void);
+static void open_files(void);
+static void faillog_reset(uid_t);
+static void lastlog_reset(uid_t);
+static void usr_update(void);
+static void create_home(void);
/*
* fail_exit - undo as much as possible
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: userdel.c,v 1.15 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: userdel.c,v 1.16 2000/08/26 18:27:18 marekm Exp $")
#include <sys/stat.h>
#include <stdio.h>
extern int optind;
/* local function prototypes */
-static void usage P_((void));
-static void update_groups P_((void));
-static void close_files P_((void));
-static void fail_exit P_((int));
-static void open_files P_((void));
-static void update_user P_((void));
-static void user_busy P_((const char *, uid_t));
-static void user_cancel P_((const char *));
+static void usage(void);
+static void update_groups(void);
+static void close_files(void);
+static void fail_exit(int);
+static void open_files(void);
+static void update_user(void);
+static void user_busy(const char *, uid_t);
+static void user_cancel(const char *);
#ifdef EXTRA_CHECK_HOME_DIR
-static int path_prefix P_((const char *, const char *));
+static int path_prefix(const char *, const char *);
#endif
-static int is_owner P_((uid_t, const char *));
+static int is_owner(uid_t, const char *);
#ifndef NO_REMOVE_MAILBOX
-static void remove_mailbox P_((void));
+static void remove_mailbox(void);
#endif
-int main P_((int, char **));
/*
* usage - display usage message and exit
*
* update_groups() takes the user name that was given and searches
* the group files for membership in any group.
+ *
+ * we also check to see if they have any groups they own (the same
+ * name is their user name) and delete them too (only if USERGROUPS_ENAB
+ * is enabled).
*/
static void
SYSLOG((LOG_INFO, "delete `%s' from group `%s'\n",
user_name, ngrp->gr_name));
}
-#ifdef NDBM
+#ifdef NDBM
+ endgrent();
+#endif
+ /*
+ * we've removed their name from all the groups above, so
+ * now if they have a group with the same name as their
+ * user name, with no members, we delete it.
+ */
+
+ grp = getgrnam(user_name);
+ if (grp && getdef_bool("USERGROUPS_ENAB") && (grp->gr_mem[0] == NULL)) {
+
+ gr_remove(grp->gr_name);
+
+ /*
+ * Update the DBM group file with the new entry as well.
+ */
+
+#ifdef NDBM
+ if (!gr_dbm_remove(grp))
+ fprintf(stderr,
+ _("%s: cannot remove dbm group entry\n"),
+ Prog);
+#endif
+ SYSLOG((LOG_INFO, "removed group `%s' owned by `%s'\n",
+ grp->gr_name, user_name));
+ }
+#ifdef NDBM
endgrent ();
-#endif /* NDBM */
+#endif
#ifdef SHADOWGRP
if (!is_shadow_grp)
return;
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: usermod.c,v 1.17 1999/06/07 16:40:45 marekm Exp $")
+RCSID(PKG_VER "$Id: usermod.c,v 1.18 2000/08/26 18:27:18 marekm Exp $")
#include <sys/types.h>
#include <sys/stat.h>
extern int optind;
/* local function prototypes */
-static int get_groups P_((char *));
-static void usage P_((void));
-static void new_pwent P_((struct passwd *));
+static int get_groups(char *);
+static void usage(void);
+static void new_pwent(struct passwd *);
#ifdef SHADOWPWD
-static void new_spent P_((struct spwd *));
+static void new_spent(struct spwd *);
#endif
-static void fail_exit P_((int));
-static int update_group P_((void));
+static void fail_exit(int);
+static int update_group(void);
#ifdef SHADOWGRP
-static int update_gshadow P_((void));
+static int update_gshadow(void);
#endif
-static int grp_update P_((void));
+static int grp_update(void);
#ifdef AUTH_METHODS
-static char *get_password P_((const char *));
-static void split_auths P_((char *, char **));
-static void update_auths P_((const char *, const char *, char *));
-static void add_auths P_((const char *, const char *, char *));
-static void delete_auths P_((const char *, const char *, char *));
-static void convert_auth P_((char *, const char *, const char *));
-static int valid_auth P_((const char *));
+static char *get_password(const char *);
+static void split_auths(char *, char **);
+static void update_auths(const char *, const char *, char *);
+static void add_auths(const char *, const char *, char *);
+static void delete_auths(const char *, const char *, char *);
+static void convert_auth(char *, const char *, const char *);
+static int valid_auth(const char *);
#endif
-static long get_number P_((const char *));
-static void process_flags P_((int, char **));
-static void close_files P_((void));
-static void open_files P_((void));
-static void usr_update P_((void));
-static void move_home P_((void));
-static void update_files P_((void));
+static long get_number(const char *);
+static void process_flags(int, char **);
+static void close_files(void);
+static void open_files(void);
+static void usr_update(void);
+static void move_home(void);
+static void update_files(void);
#ifndef NO_MOVE_MAILBOX
-static void move_mailbox P_((void));
+static void move_mailbox(void);
#endif
-int main P_((int, char **));
/* Had to move this over from useradd.c since we have groups named
* "56k-family"... ergh.
#include <config.h>
#include "rcsid.h"
-RCSID(PKG_VER "$Id: vipw.c,v 1.1 1999/07/09 18:02:43 marekm Exp $")
+RCSID(PKG_VER "$Id: vipw.c,v 1.2 2000/08/26 18:27:19 marekm Exp $")
#include "defines.h"
static const char *progname, *filename, *fileeditname;
static int filelocked = 0, createedit = 0;
-static int (*unlock)();
+static int (*unlock)(void);
/* local function prototypes */
-static int create_backup_file P_((FILE *, const char *, struct stat *));
-static void vipwexit P_((const char *, int, int));
-static void vipwedit P_((const char *, int (*) P_((void)), int (*) P_((void))));
-int main P_((int, char **));
+static int create_backup_file(FILE *, const char *, struct stat *);
+static void vipwexit(const char *, int, int);
+static void vipwedit(const char *, int (*)(void), int (*)(void));
static int
create_backup_file(FILE *fp, const char *backup, struct stat *sb)
#endif
static void
-vipwedit(const char *file, int (*file_lock) P_((void)), int (*file_unlock) P_((void)))
+vipwedit(const char *file, int (*file_lock)(void), int (*file_unlock)(void))
{
const char *editor;
pid_t pid;
if ((pid = fork()) == -1) vipwexit("fork", 1, 1);
else if (!pid) {
+#if 0
execlp(editor, editor, fileedit, (char *) 0);
fprintf(stderr, "%s: %s: %s\n", progname, editor, strerror(errno));
exit(1);
+#else
+ /* use the system() call to invoke the editor so that it accepts
+ command line args in the EDITOR and VISUAL environment vars */
+ char *buf;
+ buf = (char *) malloc (strlen(editor) + strlen(fileedit) + 2);
+ snprintf(buf, strlen(editor) + strlen(fileedit) + 2, "%s %s",
+ editor, fileedit);
+ if (system(buf) != 0) {
+ fprintf(stderr, "%s: %s: %s\n", progname, editor, strerror(errno));
+ exit(1);
+ } else
+ exit(0);
+#endif
}
for (;;) {