From efd7efa9f1874ffeae28a1d8784ad033504d8fe8 Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Sun, 7 Oct 2007 11:44:14 +0000 Subject: [PATCH] [svn-upgrade] Integrating new upstream version, shadow (20000826) --- Makefile.am | 4 +- Makefile.in | 10 +- ansi2knr.1 | 36 -- ansi2knr.c | 609 ------------------ config.h.in | 6 + configure | 242 ++++--- configure.in | 13 +- contrib/Makefile.am | 3 +- contrib/Makefile.in | 3 +- contrib/groupmems.shar | 546 ++++++++++++++++ debian/Makefile.in | 1 + debian/login.copyright | 2 +- debian/passwd.copyright | 2 +- debian/secure-su.copyright | 2 +- doc/ANNOUNCE | 6 +- doc/CHANGES | 21 +- doc/LSM | 8 +- doc/Makefile.in | 1 + doc/README | 4 +- doc/README.linux | 8 +- doc/README.mirrors | 6 +- doc/README.pam | 25 +- doc/WISHLIST | 10 +- etc/Makefile.in | 1 + etc/login.defs.hurd | 4 +- etc/login.defs.linux | 4 +- etc/pam.d/Makefile.in | 1 + lib/Makefile.am | 2 +- lib/Makefile.in | 14 +- lib/commonio.c | 92 +-- lib/commonio.h | 44 +- lib/defines.h | 30 +- lib/dialchk.h | 4 +- lib/dialup.h | 16 +- lib/encrypt.c | 4 +- lib/getdef.c | 12 +- lib/getdef.h | 10 +- lib/groupio.c | 6 +- lib/groupio.h | 24 +- lib/prototypes.h | 181 +++--- lib/pwauth.c | 4 +- lib/pwio.c | 6 +- lib/pwio.h | 24 +- lib/rad64.c | 6 +- lib/sgroupio.c | 6 +- lib/sgroupio.h | 26 +- lib/shadowio.h | 26 +- lib/tcfsio.h | 18 +- libmisc/Makefile.in | 5 +- libmisc/chkname.h | 6 +- libmisc/chowndir.c | 16 +- libmisc/copydir.c | 14 +- libmisc/entry.c | 6 +- libmisc/failure.h | 10 +- libmisc/getdate.h | 2 +- libmisc/hushed.c | 4 +- libmisc/loginprompt.c | 6 +- libmisc/setupenv.c | 19 +- libmisc/suauth.c | 6 +- libmisc/sulog.c | 9 +- man/Makefile.am | 23 +- man/Makefile.in | 167 ++++- man/chage.1 | 4 +- man/chfn.1 | 4 +- man/chpasswd.8 | 4 +- man/chsh.1 | 4 +- man/dialups.5 | 22 + man/dpasswd.8 | 4 +- man/faillog.5 | 4 +- man/faillog.8 | 4 +- man/groupadd.8 | 4 +- man/groupdel.8 | 4 +- man/groupmod.8 | 4 +- man/groups.1 | 4 +- man/grpck.8 | 4 +- man/id.1 | 4 +- man/lastlog.8 | 10 +- man/login.1 | 31 +- man/login.defs.5 | 18 +- man/logoutd.8 | 4 +- man/mkpasswd.8 | 4 +- man/newgrp.1 | 4 +- man/newusers.8 | 4 +- man/passwd.1 | 6 +- man/passwd.5 | 4 +- man/pl/Makefile.am | 60 ++ {old => man/pl}/Makefile.in | 141 ++++- man/pl/chage.1 | 110 ++++ man/pl/chfn.1 | 77 +++ man/pl/chpasswd.8 | 62 ++ man/pl/chsh.1 | 70 +++ man/pl/d_passwd.5 | 30 + man/pl/dialups.5 | 24 + old/pwunconv-old.8 => man/pl/dpasswd.8 | 57 +- old/pwconv.8 => man/pl/faillog.5 | 64 +- man/pl/faillog.8 | 95 +++ man/pl/gpasswd.1 | 65 ++ man/pl/groupadd.8 | 72 +++ old/pwconv-old.8 => man/pl/groupdel.8 | 76 +-- man/pl/groupmod.8 | 77 +++ man/pl/groups.1 | 61 ++ man/pl/grpck.8 | 103 +++ man/pl/id.1 | 57 ++ man/pl/lastlog.8 | 64 ++ man/pl/limits.5 | 79 +++ man/pl/login.1 | 134 ++++ man/pl/login.access.5 | 54 ++ man/pl/login.defs.5 | 557 +++++++++++++++++ old/pwunconv.8 => man/pl/logoutd.8 | 47 +- man/pl/mkpasswd.8 | 80 +++ man/pl/newgrp.1 | 87 +++ man/pl/newusers.8 | 69 ++ man/pl/passwd.1 | 201 ++++++ man/pl/passwd.5 | 88 +++ man/pl/porttime.5 | 81 +++ man/pl/pw_auth.3 | 152 +++++ man/pl/pwauth.8 | 65 ++ man/pl/pwck.8 | 109 ++++ man/pl/pwconv.8 | 66 ++ man/pl/shadow.3 | 148 +++++ man/pl/shadow.5 | 92 +++ man/pl/shadowconfig.8 | 27 + man/pl/su.1 | 87 +++ man/pl/suauth.5 | 115 ++++ man/pl/sulogin.8 | 94 +++ man/porttime.5 | 4 +- man/pw_auth.3 | 4 +- man/pwauth.8 | 4 +- man/pwck.8 | 4 +- man/shadow.3 | 4 +- man/shadow.5 | 4 +- man/su.1 | 8 +- man/sulogin.8 | 4 +- man/useradd.8 | 4 +- man/userdel.8 | 8 +- man/usermod.8 | 4 +- mkinstalldirs | 4 +- old/Makefile.am | 7 - old/Makefile.linux | 751 ---------------------- old/Makefile.sun4 | 685 -------------------- old/Makefile.svr4 | 681 -------------------- old/Makefile.xenix | 723 --------------------- old/config.h.linux | 454 -------------- old/config.h.sun4 | 189 ------ old/config.h.svr4 | 217 ------- old/config.h.xenix | 224 ------- old/orig-config.h | 454 -------------- old/pwconv-old.c | 217 ------- old/pwd.h.m4 | 138 ---- old/pwunconv-old.c | 150 ----- old/scologin.c | 107 ---- old/vipw.8 | 69 -- po/cat-id-tbl.c | 95 +-- po/el.po | 833 +++++++++++++------------ po/fr.gmo | Bin 40067 -> 40067 bytes po/fr.po | 833 +++++++++++++------------ po/pl.gmo | Bin 40513 -> 40513 bytes po/pl.po | 833 +++++++++++++------------ po/shadow.pot | 833 +++++++++++++------------ po/sv.po | 833 +++++++++++++------------ redhat/Makefile.in | 1 + redhat/shadow-utils.spec | 151 ----- src/Makefile.am | 10 +- src/Makefile.in | 11 +- src/chage.c | 51 +- src/chfn.c | 11 +- src/chpasswd.c | 6 +- src/chsh.c | 9 +- src/dpasswd.c | 6 +- src/expiry.c | 7 +- src/faillog.c | 21 +- src/gpasswd.c | 19 +- src/groupadd.c | 23 +- src/groupdel.c | 13 +- src/groupmod.c | 21 +- src/groups.c | 5 +- src/grpck.c | 29 +- src/grpconv.c | 5 +- src/grpunconv.c | 5 +- src/id.c | 5 +- src/lastlog.c | 7 +- src/login.c | 177 ++++-- src/logoutd.c | 5 +- src/mkpasswd.c | 5 +- src/newgrp.c | 16 +- src/newusers.c | 15 +- src/passwd.c | 48 +- src/pwck.c | 27 +- src/pwconv.c | 5 +- src/pwunconv.c | 5 +- src/su.c | 88 +-- src/sulogin.c | 8 +- src/useradd.c | 47 +- src/userdel.c | 60 +- src/usermod.c | 49 +- src/vipw.c | 27 +- 196 files changed, 7675 insertions(+), 9087 deletions(-) delete mode 100644 ansi2knr.1 delete mode 100644 ansi2knr.c create mode 100644 contrib/groupmems.shar create mode 100644 man/dialups.5 create mode 100644 man/pl/Makefile.am rename {old => man/pl}/Makefile.in (50%) create mode 100644 man/pl/chage.1 create mode 100644 man/pl/chfn.1 create mode 100644 man/pl/chpasswd.8 create mode 100644 man/pl/chsh.1 create mode 100644 man/pl/d_passwd.5 create mode 100644 man/pl/dialups.5 rename old/pwunconv-old.8 => man/pl/dpasswd.8 (62%) rename old/pwconv.8 => man/pl/faillog.5 (58%) create mode 100644 man/pl/faillog.8 create mode 100644 man/pl/gpasswd.1 create mode 100644 man/pl/groupadd.8 rename old/pwconv-old.8 => man/pl/groupdel.8 (53%) create mode 100644 man/pl/groupmod.8 create mode 100644 man/pl/groups.1 create mode 100644 man/pl/grpck.8 create mode 100644 man/pl/id.1 create mode 100644 man/pl/lastlog.8 create mode 100644 man/pl/limits.5 create mode 100644 man/pl/login.1 create mode 100644 man/pl/login.access.5 create mode 100644 man/pl/login.defs.5 rename old/pwunconv.8 => man/pl/logoutd.8 (67%) create mode 100644 man/pl/mkpasswd.8 create mode 100644 man/pl/newgrp.1 create mode 100644 man/pl/newusers.8 create mode 100644 man/pl/passwd.1 create mode 100644 man/pl/passwd.5 create mode 100644 man/pl/porttime.5 create mode 100644 man/pl/pw_auth.3 create mode 100644 man/pl/pwauth.8 create mode 100644 man/pl/pwck.8 create mode 100644 man/pl/pwconv.8 create mode 100644 man/pl/shadow.3 create mode 100644 man/pl/shadow.5 create mode 100644 man/pl/shadowconfig.8 create mode 100644 man/pl/su.1 create mode 100644 man/pl/suauth.5 create mode 100644 man/pl/sulogin.8 delete mode 100644 old/Makefile.am delete mode 100644 old/Makefile.linux delete mode 100644 old/Makefile.sun4 delete mode 100644 old/Makefile.svr4 delete mode 100644 old/Makefile.xenix delete mode 100644 old/config.h.linux delete mode 100644 old/config.h.sun4 delete mode 100644 old/config.h.svr4 delete mode 100644 old/config.h.xenix delete mode 100644 old/orig-config.h delete mode 100644 old/pwconv-old.c delete mode 100644 old/pwd.h.m4 delete mode 100644 old/pwunconv-old.c delete mode 100644 old/scologin.c delete mode 100644 old/vipw.8 delete mode 100644 redhat/shadow-utils.spec diff --git a/Makefile.am b/Makefile.am index 5a55194b..36b1db1e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -AUTOMAKE_OPTIONS = 1.0 foreign ansi2knr +AUTOMAKE_OPTIONS = 1.0 foreign SUBDIRS = intl po man lib libmisc src \ - contrib debian doc etc old redhat + contrib debian doc etc redhat # old diff --git a/Makefile.in b/Makefile.in index 5babccf0..b608fad7 100644 --- a/Makefile.in +++ b/Makefile.in @@ -79,6 +79,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ @@ -101,18 +102,17 @@ VERSION = @VERSION@ YACC = @YACC@ l = @l@ -AUTOMAKE_OPTIONS = 1.0 foreign ansi2knr +AUTOMAKE_OPTIONS = 1.0 foreign -SUBDIRS = intl po man lib libmisc src contrib debian doc etc old redhat +SUBDIRS = intl po man lib libmisc src contrib debian doc etc redhat # old ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = DIST_COMMON = ./stamp-h.in ABOUT-NLS Makefile.am Makefile.in acconfig.h \ -aclocal.m4 ansi2knr.1 ansi2knr.c config.guess config.h.in config.sub \ -configure configure.in install-sh ltconfig ltmain.sh missing \ -mkinstalldirs +aclocal.m4 config.guess config.h.in config.sub configure configure.in \ +install-sh ltconfig ltmain.sh missing mkinstalldirs DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) diff --git a/ansi2knr.1 b/ansi2knr.1 deleted file mode 100644 index f9ee5a63..00000000 --- a/ansi2knr.1 +++ /dev/null @@ -1,36 +0,0 @@ -.TH ANSI2KNR 1 "19 Jan 1996" -.SH NAME -ansi2knr \- convert ANSI C to Kernighan & Ritchie C -.SH SYNOPSIS -.I ansi2knr -[--varargs] input_file [output_file] -.SH DESCRIPTION -If no output_file is supplied, output goes to stdout. -.br -There are no error messages. -.sp -.I ansi2knr -recognizes function definitions by seeing a non-keyword identifier at the left -margin, followed by a left parenthesis, with a right parenthesis as the last -character on the line, and with a left brace as the first token on the -following line (ignoring possible intervening comments). It will recognize a -multi-line header provided that no intervening line ends with a left or right -brace or a semicolon. These algorithms ignore whitespace and comments, except -that the function name must be the first thing on the line. -.sp -The following constructs will confuse it: -.br - - Any other construct that starts at the left margin and follows the -above syntax (such as a macro or function call). -.br - - Some macros that tinker with the syntax of the function header. -.sp -The --varargs switch is obsolete, and is recognized only for -backwards compatibility. The present version of -.I ansi2knr -will always attempt to convert a ... argument to va_alist and va_dcl. -.SH AUTHOR -L. Peter Deutsch 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 and Jim Avera . diff --git a/ansi2knr.c b/ansi2knr.c deleted file mode 100644 index 49624346..00000000 --- a/ansi2knr.c +++ /dev/null @@ -1,609 +0,0 @@ -/* Copyright (C) 1989, 1997, 1998 Aladdin Enterprises. All rights reserved. */ - -/*$Id: ansi2knr.c,v 1.10 1998/12/02 12:42:23 tromey Exp $*/ -/* Convert ANSI C function definitions to K&R ("traditional C") syntax */ - -/* -ansi2knr is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY. No author or distributor accepts responsibility to anyone for the -consequences of using it or for whether it serves any particular purpose or -works at all, unless he says so in writing. Refer to the GNU General Public -License (the "GPL") for full details. - -Everyone is granted permission to copy, modify and redistribute ansi2knr, -but only under the conditions described in the GPL. A copy of this license -is supposed to have been given to you along with ansi2knr so you can know -your rights and responsibilities. It should be in a file named COPYLEFT, -or, if there is no file named COPYLEFT, a file named COPYING. Among other -things, the copyright notice and this notice must be preserved on all -copies. - -We explicitly state here what we believe is already implied by the GPL: if -the ansi2knr program is distributed as a separate set of sources and a -separate executable file which are aggregated on a storage medium together -with another program, this in itself does not bring the other program under -the GPL, nor does the mere fact that such a program or the procedures for -constructing it invoke the ansi2knr executable bring any other part of the -program under the GPL. -*/ - -/* - * Usage: - ansi2knr [--filename FILENAME] [INPUT_FILE [OUTPUT_FILE]] - * --filename provides the file name for the #line directive in the output, - * overriding input_file (if present). - * If no input_file is supplied, input is read from stdin. - * If no output_file is supplied, output goes to stdout. - * There are no error messages. - * - * ansi2knr recognizes function definitions by seeing a non-keyword - * identifier at the left margin, followed by a left parenthesis, - * with a right parenthesis as the last character on the line, - * and with a left brace as the first token on the following line - * (ignoring possible intervening comments), except that a line - * consisting of only - * identifier1(identifier2) - * will not be considered a function definition unless identifier2 is - * the word "void". ansi2knr will recognize a multi-line header provided - * that no intervening line ends with a left or right brace or a semicolon. - * These algorithms ignore whitespace and comments, except that - * the function name must be the first thing on the line. - * The following constructs will confuse it: - * - Any other construct that starts at the left margin and - * follows the above syntax (such as a macro or function call). - * - Some macros that tinker with the syntax of the function header. - */ - -/* - * The original and principal author of ansi2knr is L. Peter Deutsch - * . 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 - ) - 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 - - 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 ; - 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 ; - properly erase prototype args in function parameters, - contributed by Jim Avera ; - 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 -#endif - -#include -#include - -#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 -# else -# include -# endif - -#else /* not HAVE_CONFIG_H */ - -/* Otherwise do it the hard way */ - -# ifdef BSD -# include -# else -# ifdef VMS - extern int strlen(), strncmp(); -# else -# include -# endif -# endif - -#endif /* not HAVE_CONFIG_H */ - -#if STDC_HEADERS -# include -#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 -# 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; -} diff --git a/config.h.in b/config.h.in index 61868105..716b7583 100644 --- a/config.h.in +++ b/config.h.in @@ -260,9 +260,15 @@ /* Define if you have the initgroups function. */ #undef HAVE_INITGROUPS +/* Define if you have the lchown function. */ +#undef HAVE_LCHOWN + /* Define if you have the lckpwdf function. */ #undef HAVE_LCKPWDF +/* Define if you have the lstat function. */ +#undef HAVE_LSTAT + /* Define if you have the memcpy function. */ #undef HAVE_MEMCPY diff --git a/configure b/configure index 4a6617af..4c7f3918 100755 --- a/configure +++ b/configure @@ -723,7 +723,7 @@ fi PACKAGE=shadow -VERSION=19990827 +VERSION=20000826 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } @@ -3231,7 +3231,7 @@ else fi done -for ac_func in gettimeofday getusershell getutent initgroups lckpwdf +for ac_func in gettimeofday getusershell getutent initgroups lchown lckpwdf do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:3238: checking for $ac_func" >&5 @@ -3286,7 +3286,7 @@ else fi done -for ac_func in memcpy memset setgroups sigaction strchr updwtmp updwtmpx +for ac_func in lstat memcpy memset setgroups sigaction strchr updwtmp updwtmpx do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:3293: checking for $ac_func" >&5 @@ -4410,17 +4410,58 @@ fi fi + if test "$with_libskey" = "yes"; then + echo $ac_n "checking for MD5Init in -lmd""... $ac_c" 1>&6 +echo "configure:4417: checking for MD5Init in -lmd" >&5 +ac_lib_var=`echo md'_'MD5Init | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lmd $LIBS" +cat > conftest.$ac_ext <&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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4456,7 +4497,7 @@ fi elif test "$with_libopie" = "yes"; then echo $ac_n "checking for opiechallenge in -lopie""... $ac_c" 1>&6 -echo "configure:4460: checking for opiechallenge in -lopie" >&5 +echo "configure:4501: checking for opiechallenge in -lopie" >&5 ac_lib_var=`echo opie'_'opiechallenge | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4464,7 +4505,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lopie $LIBCRYPT $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4503,7 +4544,7 @@ fi if test "$with_libtcfs" = "yes"; then echo $ac_n "checking for tcfs_encrypt_key in -ltcfs""... $ac_c" 1>&6 -echo "configure:4507: checking for tcfs_encrypt_key in -ltcfs" >&5 +echo "configure:4548: checking for tcfs_encrypt_key in -ltcfs" >&5 ac_lib_var=`echo tcfs'_'tcfs_encrypt_key | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4511,7 +4552,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ltcfs -lgdbm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4558,19 +4599,19 @@ if test "$with_libpam" = "yes"; then EOF echo $ac_n "checking whether pam_strerror needs two arguments""... $ac_c" 1>&6 -echo "configure:4562: checking whether pam_strerror needs two arguments" >&5 +echo "configure:4603: checking whether pam_strerror needs two arguments" >&5 if eval "test \"`echo '$''{'ac_cv_pam_strerror_needs_two_args'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { pam_handle_t *pamh; pam_strerror(pamh, PAM_SUCCESS); ; return 0; } EOF -if { (eval echo configure:4574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4615: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_pam_strerror_needs_two_args=yes else @@ -4597,21 +4638,21 @@ LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'` echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:4601: checking for inline" >&5 +echo "configure:4642: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -4637,12 +4678,12 @@ EOF esac echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:4641: checking for size_t" >&5 +echo "configure:4682: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4672,19 +4713,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:4676: checking for working alloca.h" >&5 +echo "configure:4717: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:4688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -4705,12 +4746,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:4709: checking for alloca" >&5 +echo "configure:4750: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -4770,12 +4811,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:4774: checking whether alloca needs Cray hooks" >&5 +echo "configure:4815: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4804: checking for $ac_func" >&5 +echo "configure:4845: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4855,7 +4896,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:4859: checking stack direction for C alloca" >&5 +echo "configure:4900: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4863,7 +4904,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -4907,17 +4948,17 @@ for ac_hdr in unistd.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4911: checking for $ac_hdr" >&5 +echo "configure:4952: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4962: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4946,12 +4987,12 @@ done for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4950: checking for $ac_func" >&5 +echo "configure:4991: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4999,7 +5040,7 @@ fi done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:5003: checking for working mmap" >&5 +echo "configure:5044: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5007,7 +5048,7 @@ else ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -5175,17 +5216,17 @@ unistd.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5179: checking for $ac_hdr" >&5 +echo "configure:5220: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5215,12 +5256,12 @@ done strdup __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5219: checking for $ac_func" >&5 +echo "configure:5260: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5272,12 +5313,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5276: checking for $ac_func" >&5 +echo "configure:5317: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5345: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5334,19 +5375,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:5338: checking for LC_MESSAGES" >&5 +echo "configure:5379: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:5350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -5367,7 +5408,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:5371: checking whether NLS is requested" >&5 +echo "configure:5412: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -5387,7 +5428,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:5391: checking whether included gettext is requested" >&5 +echo "configure:5432: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -5406,17 +5447,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:5410: checking for libintl.h" >&5 +echo "configure:5451: checking for libintl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5420: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5433,19 +5474,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:5437: checking for gettext in libc" >&5 +echo "configure:5478: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:5449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5490: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -5461,7 +5502,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:5465: checking for bindtextdomain in -lintl" >&5 +echo "configure:5506: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5469,7 +5510,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5496,12 +5537,12 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:5500: checking for gettext in libintl" >&5 +echo "configure:5541: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:5505: checking for gettext in -lintl" >&5 +echo "configure:5546: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5509,7 +5550,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5559,7 +5600,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5563: checking for $ac_word" >&5 +echo "configure:5604: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5593,12 +5634,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5597: checking for $ac_func" >&5 +echo "configure:5638: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5648,7 +5689,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5652: checking for $ac_word" >&5 +echo "configure:5693: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5684,7 +5725,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5688: checking for $ac_word" >&5 +echo "configure:5729: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5716,7 +5757,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -5747,7 +5788,7 @@ fi if test "$CATOBJEXT" = "NONE"; then echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6 -echo "configure:5751: checking whether catgets can be used" >&5 +echo "configure:5792: checking whether catgets can be used" >&5 # Check whether --with-catgets or --without-catgets was given. if test "${with_catgets+set}" = set; then withval="$with_catgets" @@ -5760,7 +5801,7 @@ fi if test "$nls_cv_use_catgets" = "yes"; then echo $ac_n "checking for main in -li""... $ac_c" 1>&6 -echo "configure:5764: checking for main in -li" >&5 +echo "configure:5805: checking for main in -li" >&5 ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5768,14 +5809,14 @@ else ac_save_LIBS="$LIBS" LIBS="-li $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5803,12 +5844,12 @@ else fi echo $ac_n "checking for catgets""... $ac_c" 1>&6 -echo "configure:5807: checking for catgets" >&5 +echo "configure:5848: checking for catgets" >&5 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_catgets=yes" else @@ -5853,7 +5894,7 @@ EOF # Extract the first word of "gencat", so it can be a program name with args. set dummy gencat; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5857: checking for $ac_word" >&5 +echo "configure:5898: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5889,7 +5930,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5893: checking for $ac_word" >&5 +echo "configure:5934: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5926,7 +5967,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5930: checking for $ac_word" >&5 +echo "configure:5971: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5961,7 +6002,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:5965: checking for $ac_word" >&5 +echo "configure:6006: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6019,7 +6060,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6023: checking for $ac_word" >&5 +echo "configure:6064: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6053,7 +6094,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6057: checking for $ac_word" >&5 +echo "configure:6098: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6089,7 +6130,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6093: checking for $ac_word" >&5 +echo "configure:6134: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6182,7 +6223,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:6186: checking for catalogs to be installed" >&5 +echo "configure:6227: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -6210,17 +6251,17 @@ echo "configure:6186: checking for catalogs to be installed" >&5 if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:6214: checking for linux/version.h" >&5 +echo "configure:6255: checking for linux/version.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6386,7 +6427,8 @@ done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" -trap 'rm -fr `echo "libmisc/Makefile man/Makefile lib/Makefile src/Makefile Makefile +trap 'rm -fr `echo "libmisc/Makefile man/Makefile man/pl/Makefile + lib/Makefile src/Makefile Makefile contrib/Makefile debian/Makefile doc/Makefile etc/Makefile intl/Makefile intl/po2tbl.sed po/Makefile.in etc/pam.d/Makefile old/Makefile @@ -6457,6 +6499,7 @@ s%@LIBOBJS@%$LIBOBJS%g s%@LIBCRYPT@%$LIBCRYPT%g s%@LIBCRACK@%$LIBCRACK%g s%@LIBSKEY@%$LIBSKEY%g +s%@LIBMD@%$LIBMD%g s%@LIBTCFS@%$LIBTCFS%g s%@LIBPAM@%$LIBPAM%g s%@LTLIBOBJS@%$LTLIBOBJS%g @@ -6523,7 +6566,8 @@ EOF cat >> $CONFIG_STATUS <. +# 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 +#include +#include +#include +#include +#include +#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 diff --git a/debian/Makefile.in b/debian/Makefile.in index f1ad4f6b..4e64b180 100644 --- a/debian/Makefile.in +++ b/debian/Makefile.in @@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ diff --git a/debian/login.copyright b/debian/login.copyright index 727bc1b7..a848548c 100644 --- a/debian/login.copyright +++ b/debian/login.copyright @@ -32,7 +32,7 @@ SUCH DAMAGE. This source code is currently archived on ftp.uu.net in the comp.sources.misc portion of the USENET archives. You may also contact -the author, Julianne F. Haugh, at jfh@bga.com if you have +the author, Julianne F. Haugh, at jfh@austin.ibm.com if you have any questions regarding this package. THIS SOFTWARE IS BEING DISTRIBUTED AS-IS. THE AUTHORS DISCLAIM ALL diff --git a/debian/passwd.copyright b/debian/passwd.copyright index e032df5f..701d899f 100644 --- a/debian/passwd.copyright +++ b/debian/passwd.copyright @@ -32,7 +32,7 @@ SUCH DAMAGE. This source code is currently archived on ftp.uu.net in the comp.sources.misc portion of the USENET archives. You may also contact -the author, Julianne F. Haugh, at jfh@bga.com if you have +the author, Julianne F. Haugh, at jfh@austin.ibm.com if you have any questions regarding this package. THIS SOFTWARE IS BEING DISTRIBUTED AS-IS. THE AUTHORS DISCLAIM ALL diff --git a/debian/secure-su.copyright b/debian/secure-su.copyright index 4e5a0ea7..de1479c6 100644 --- a/debian/secure-su.copyright +++ b/debian/secure-su.copyright @@ -31,7 +31,7 @@ SUCH DAMAGE. This source code is currently archived on ftp.uu.net in the comp.sources.misc portion of the USENET archives. You may also contact -the author, Julianne F. Haugh, at jfh@bga.com if you have +the author, Julianne F. Haugh, at jfh@austin.ibm.com if you have any questions regarding this package. THIS SOFTWARE IS BEING DISTRIBUTED AS-IS. THE AUTHORS DISCLAIM ALL diff --git a/doc/ANNOUNCE b/doc/ANNOUNCE index e4c24101..a19ad596 100644 --- a/doc/ANNOUNCE +++ b/doc/ANNOUNCE @@ -1,4 +1,4 @@ -$Id: ANNOUNCE,v 1.3 1998/01/29 23:22:25 marekm Exp $ +$Id: ANNOUNCE,v 1.4 2000/08/26 18:27:09 marekm Exp $ [ This is the original comp.os.linux.announce posting (only the author's name and e-mail address has been updated), kept here @@ -10,7 +10,7 @@ $Id: ANNOUNCE,v 1.3 1998/01/29 23:22:25 marekm Exp $ This is a new beta release of the Shadow Password Suite for Linux. Many bugs have been reported (and fixed!), and the package is now under a BSD-style copyright. It was written by Julianne F. Haugh -, and the Linux port is now maintained by me. +, and the Linux port is now maintained by me. Again, this is beta software which may still have some bugs, please treat it as such. Please don't install it if you don't know what @@ -34,7 +34,7 @@ Version: 3.3.3-951218 Entered-date: 18DEC95 Description: Keywords: login passwd security shadow -Author: jfh@tab.com (Julie Haugh) +Author: jfh@austin.ibm.com (Julie Haugh) Maintained-by: marekm@i17linuxb.ists.pwr.wroc.pl (Marek Michalkiewicz) Primary-site: sunsite.unc.edu /pub/Linux/system/Admin 220K shadow-951218.tar.gz diff --git a/doc/CHANGES b/doc/CHANGES index 2e1c54be..d25ec5b1 100644 --- a/doc/CHANGES +++ b/doc/CHANGES @@ -1,4 +1,23 @@ -$Id: CHANGES,v 1.28 1999/08/27 19:02:50 marekm Exp $ +$Id: CHANGES,v 1.29 2000/08/26 18:27:09 marekm Exp $ + +shadow-19990827 => shadow-20000826 + +WARNING: this release is not tested (other than that it compiles for me), +please be careful. Previous release was a year ago, so it is really time +to release something and start looking for a new, better maintainer... +(I've been extremely busy recently. Credit for most of the real work, +such as complete PAM support, should go to Ben Collins +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 diff --git a/doc/LSM b/doc/LSM index def653a3..39186a20 100644 --- a/doc/LSM +++ b/doc/LSM @@ -1,17 +1,17 @@ Begin3 Title: Shadow Password Suite -Version: 19990827 -Entered-date: 27AUG99 +Version: 20000826 +Entered-date: 26AUG00 Description: Shadow password file utilities. This package includes the programs necessary to convert traditional V7 UNIX password files to the SVR4 shadow password format, and additional tools to maintain password and group files (that work with both shadow and non-shadow passwords). Keywords: login passwd security shadow -Author: jfh@bga.com (Julianne F. Haugh) +Author: jfh@austin.ibm.com (Julianne F. Haugh) Maintained-by: marekm@linux.org.pl (Marek Michalkiewicz) Primary-site: piast.t19.ds.pwr.wroc.pl /pub/linux/shadow/ - 707K shadow-19990827.tar.gz + 717K shadow-20000826.tar.gz Alternate-site: ftp.ists.pwr.wroc.pl /pub/linux/shadow/ Original-site: ftp.uu.net ? Platforms: Linux, SunOS, ... diff --git a/doc/Makefile.in b/doc/Makefile.in index 49102d75..b4ee0917 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ diff --git a/doc/README b/doc/README index b94f3322..c177638f 100644 --- a/doc/README +++ b/doc/README @@ -1,4 +1,4 @@ -[ $Id: README,v 1.3 1998/12/28 20:34:27 marekm Exp $ ] +[ $Id: README,v 1.4 2000/08/26 18:27:09 marekm Exp $ ] This is the explanatory document for Julianne Frances Haugh's login replacement, release 3. This document was last updated 16 Feb 1997. @@ -32,7 +32,7 @@ SUCH DAMAGE. This source code is currently archived on ftp.uu.net in the comp.sources.misc portion of the USENET archives. You may also contact -the author, Julianne F. Haugh, at jfh@bga.com if you have any questions +the author, Julianne F. Haugh, at jfh@austin.ibm.com if you have any questions regarding this package. THIS SOFTWARE IS BEING DISTRIBUTED AS-IS. THE AUTHORS DISCLAIM ALL diff --git a/doc/README.linux b/doc/README.linux index 4159b0a7..cd55c940 100644 --- a/doc/README.linux +++ b/doc/README.linux @@ -1,4 +1,4 @@ -$Id: README.linux,v 1.19 1999/06/07 16:40:44 marekm Exp $ +$Id: README.linux,v 1.20 2000/08/26 18:27:09 marekm Exp $ This is the shadow suite hacked a bit for Linux. See CHANGES for short description of changes. See also WISHLIST if you have too @@ -66,7 +66,7 @@ The code feels like stabilizing now - while still BETA, it should work quite well. Many bugs have been fixed, but there may be still a few lurking. Again, please test it and report any problems. -Thanks to Julianne Frances Haugh who wrote the thing +Thanks to Julianne Frances Haugh who wrote the thing in the first place, sent me the latest version, and released it under a "free" BSD-style license, so that it can be included in Linux distributions (at least Debian 1.3 and Slackware 3.2 are already @@ -75,6 +75,9 @@ the standard source tree). David Frey , Michael Meskes and Guy Maor have done a lot of work to integrate shadow passwords into Debian Linux. +Ben Collins maintains this package for Debian +and added complete PAM support, now available in Debian 2.2. + Thanks to Bradley Glonka of Linux System Labs (http://www.lsl.com/) for sending me a free Red Hat 4.2 CD-ROM, making it possible to test this package on this distribution. @@ -110,6 +113,7 @@ Judd Bourgeois Ulisses Alonso Camaro Ed Carp Rani Chouha +Ben Collins Joshua Cowan Alan Curry Frank Denis diff --git a/doc/README.mirrors b/doc/README.mirrors index fbb3a57e..ddc96115 100644 --- a/doc/README.mirrors +++ b/doc/README.mirrors @@ -19,10 +19,12 @@ Working mirrors that I know of, sorted by country (note: I removed a few mirrors that didn't work when I tried to access them several times - if any of them are still alive, please let me know): +(XXX - list may be out of date now.) + Brazil: - ftp://ftp.athena.del.ufrj.br/pub/linux/shadow_password/ - Rafael Jorge Csura Szendrodi + ftp://ftp.athena.pads.ufrj.br/pub/linux/shadow/ + Rafael Jorge Csura Szendrodi Czech Republic: diff --git a/doc/README.pam b/doc/README.pam index 222b5820..4a873640 100644 --- a/doc/README.pam +++ b/doc/README.pam @@ -1,18 +1,24 @@ About PAM support in the Shadow Password Suite -Warning: this code is still considered ALPHA. It is still incomplete, -and needs more testing. Please let me know if it works, or if something -doesn't work. +Warning: this code is still considered BETA. It needs more testing. +Please let me know if it works, or if something doesn't work. -Use "./configure --with-libpam" to enable PAM support. Right now it only -works for the passwd and su applications. PAM support still needs to be -implemented in login. +Use "./configure --with-libpam" to enable PAM support in the login, +passwd and su applications. When compiled with PAM support enabled, the following traditional features of the shadow suite are not implemented directly in the applications - instead, they should be implemented in the PAM modules. +login: + - /etc/login.access + - /etc/porttime + - resource limits + - console groups + - password expiration / password strength checks + - /etc/motd and mail check + passwd: - administrator defined authentication methods - TCFS support @@ -27,10 +33,3 @@ su: - time restrictions - resource limits -Known problems: - - the pam_limits module doesn't work with su - it should be changed - to set the limits in pam_setcred() instead of pam_open_session() - (this version of su doesn't open any new sessions, like Solaris su - and unlike SimplePAMApps su) - - PAM support still needs to be implemented in login - diff --git a/doc/WISHLIST b/doc/WISHLIST index abdb1919..8ae49d50 100644 --- a/doc/WISHLIST +++ b/doc/WISHLIST @@ -1,4 +1,4 @@ -$Id: WISHLIST,v 1.23 1999/08/27 19:02:50 marekm Exp $ +$Id: WISHLIST,v 1.24 2000/08/26 18:27:09 marekm Exp $ This is my wishlist for the shadow suite, in no particular order. Feel free to do anything from this list and mail me the diffs :-). @@ -16,7 +16,6 @@ New ideas to add to this list are welcome, too. --marekm - update man pages to reflect all the changes (real programmers ... :-) - patch for rlogind/telnetd to create utmp entry and fill in ut_addr - fix the usermod -l bug properly [for now it's OK - #undef AUTH_METHODS] -- IMPORTANT: finish PAM support (passwd, su - done, untested; login - started) - option to specify encrypted password in passwd (for yppasswdd, so it doesn't need to know about shadow/non-shadow); should probably use a pipe (less insecure than command line arguments) @@ -28,7 +27,7 @@ New ideas to add to this list are welcome, too. --marekm - poppassd (remote password change for eudora etc.) - add support for passwd/shadow db files (glibc) - better documentation -- su -l, -m, -p, -s options (as in GNU su) +- su -l, -m, -p, -s options (as in GNU su) - done in the Debian patches - vipw: check password files for errors after editing - clean up login utmp(x) handling code - add "maximum time users allowed to stay logged in" limit option to logoutd @@ -46,10 +45,7 @@ New ideas to add to this list are welcome, too. --marekm (and use UID_MIN, UID_MAX from login.defs) - newusers should be able to copy /etc/skel to the new home directory (like useradd) -- include i18n files in Debian packages -- integrate the latest upstream version into the Debian distribution - (as of this writing, they still have shadow-980403 with huge diff, - and many bugs have been fixed since then) +- integrate the changes from Debian (complete PAM support, bug fixes) - add directories where other packages can add hooks for package-specific per-user configuration, to be executed with run-parts. Some hooks should be executed at package install time for existing users, likewise for diff --git a/etc/Makefile.in b/etc/Makefile.in index 935cbba1..c27dab48 100644 --- a/etc/Makefile.in +++ b/etc/Makefile.in @@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ diff --git a/etc/login.defs.hurd b/etc/login.defs.hurd index 0f4e8852..e7cdb4df 100644 --- a/etc/login.defs.hurd +++ b/etc/login.defs.hurd @@ -1,7 +1,7 @@ # # /etc/login.defs - Configuration control definitions for the login package. # -# $Id: login.defs.hurd,v 1.1 1999/08/27 19:02:50 marekm Exp $ +# $Id: login.defs.hurd,v 1.2 2000/08/26 18:27:10 marekm Exp $ # # One item must be defined: MAIL_DIR. # If unspecified, some arbitrary (and possibly incorrect) value will @@ -137,5 +137,7 @@ CHFN_RESTRICT rwh # (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is # the same as gid, and username is the same as the primary group name. # +# This also enables userdel to remove user groups if no members exist. +# USERGROUPS_ENAB yes diff --git a/etc/login.defs.linux b/etc/login.defs.linux index 71eac826..94402934 100644 --- a/etc/login.defs.linux +++ b/etc/login.defs.linux @@ -1,7 +1,7 @@ # # /etc/login.defs - Configuration control definitions for the login package. # -# $Id: login.defs.linux,v 1.11 1999/08/27 19:02:50 marekm Exp $ +# $Id: login.defs.linux,v 1.12 2000/08/26 18:27:10 marekm Exp $ # # Three items must be defined: MAIL_DIR, ENV_SUPATH, and ENV_PATH. # If unspecified, some arbitrary (and possibly incorrect) value will @@ -364,5 +364,7 @@ ENVIRON_FILE /etc/environment # (examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is # the same as gid, and username is the same as the primary group name. # +# This also enables userdel to remove user groups if no members exist. +# USERGROUPS_ENAB yes diff --git a/etc/pam.d/Makefile.in b/etc/pam.d/Makefile.in index 53198294..83dbbb8b 100644 --- a/etc/pam.d/Makefile.in +++ b/etc/pam.d/Makefile.in @@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ diff --git a/lib/Makefile.am b/lib/Makefile.am index d9b8572f..f3de6fe0 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -45,7 +45,7 @@ libdir = ${exec_prefix}/lib #lib_PROGRAMS = libshadow.la lib_LTLIBRARIES = libshadow.la libshadow_la_SOURCES = ${libshadow_a_SOURCES} -#libshadow_la_LIBADD = @LTLIBOBJS@ +libshadow_la_LIBADD = @LTLIBOBJS@ #libshadow_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir) libshadow_la_LDFLAGS = -version-info 0:0:0 diff --git a/lib/Makefile.in b/lib/Makefile.in index 9def3a2b..d28a1db4 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -78,6 +78,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ @@ -138,7 +139,7 @@ libdir = ${exec_prefix}/lib #lib_PROGRAMS = libshadow.la lib_LTLIBRARIES = libshadow.la libshadow_la_SOURCES = ${libshadow_a_SOURCES} -#libshadow_la_LIBADD = @LTLIBOBJS@ +libshadow_la_LIBADD = @LTLIBOBJS@ #libshadow_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir) libshadow_la_LDFLAGS = -version-info 0:0:0 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs @@ -156,7 +157,7 @@ rad64.o sgroupio.o shadow.o shadowio.o utent.o tcfsio.o AR = ar LTLIBRARIES = $(lib_LTLIBRARIES) -libshadow_la_LIBADD = +libshadow_la_DEPENDENCIES = @LTLIBOBJS@ libshadow_la_OBJECTS = commonio.lo dialchk.lo dialup.lo encrypt.lo \ fputsx.lo getdef.lo getpass.lo groupio.lo gshadow.lo lockpw.lo port.lo \ pwauth.lo pwio.lo rad64.lo sgroupio.lo shadow.lo shadowio.lo utent.lo \ @@ -335,14 +336,17 @@ gshadow.lo gshadow.o : gshadow.c ../config.h rcsid.h prototypes.h \ defines.h gshadow_.h lockpw.lo lockpw.o : lockpw.c ../config.h port.lo port.o : port.c ../config.h rcsid.h defines.h gshadow_.h port.h -putgrent.o: putgrent.c ../config.h prototypes.h defines.h gshadow_.h +putgrent.lo putgrent.o : putgrent.c ../config.h prototypes.h defines.h \ + gshadow_.h pwauth.lo pwauth.o : pwauth.c ../config.h rcsid.h prototypes.h defines.h \ gshadow_.h pwauth.h getdef.h pwio.lo pwio.o : pwio.c ../config.h rcsid.h prototypes.h defines.h \ gshadow_.h commonio.h pwio.h rad64.lo rad64.o : rad64.c ../config.h rcsid.h -sgetgrent.o: sgetgrent.c ../config.h rcsid.h defines.h gshadow_.h -sgetpwent.o: sgetpwent.c ../config.h rcsid.h defines.h gshadow_.h +sgetgrent.lo sgetgrent.o : sgetgrent.c ../config.h rcsid.h defines.h \ + gshadow_.h +sgetpwent.lo sgetpwent.o : sgetpwent.c ../config.h rcsid.h defines.h \ + gshadow_.h sgroupio.lo sgroupio.o : sgroupio.c ../config.h rcsid.h prototypes.h \ defines.h gshadow_.h commonio.h sgroupio.h shadowio.lo shadowio.o : shadowio.c ../config.h rcsid.h prototypes.h \ diff --git a/lib/commonio.c b/lib/commonio.c index 2bee8838..6343f956 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -2,7 +2,7 @@ #include #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 @@ -19,15 +19,15 @@ RCSID("$Id: commonio.c,v 1.14 1998/07/23 22:13:15 marekm Exp $") #include "commonio.h" /* local function prototypes */ -static int check_link_count P_((const char *)); -static int do_lock_file P_((const char *, const char *)); -static FILE *fopen_set_perms P_((const char *, const char *, const struct stat *)); -static int create_backup P_((const char *, FILE *)); -static void free_linked_list P_((struct commonio_db *)); -static void add_one_entry P_((struct commonio_db *, struct commonio_entry *)); -static int name_is_nis P_((const char *)); -static int write_all P_((const struct commonio_db *)); -static struct commonio_entry *find_entry_by_name P_((struct commonio_db *, const char *)); +static int check_link_count(const char *); +static int do_lock_file(const char *, const char *); +static FILE *fopen_set_perms(const char *, const char *, const struct stat *); +static int create_backup(const char *, FILE *); +static void free_linked_list(struct commonio_db *); +static void add_one_entry(struct commonio_db *, struct commonio_entry *); +static int name_is_nis(const char *); +static int write_all(const struct commonio_db *); +static struct commonio_entry *find_entry_by_name(struct commonio_db *, const char *); #ifdef HAVE_LCKPWDF static int lock_count = 0; @@ -199,8 +199,8 @@ free_linked_list(struct commonio_db *db) if (p->line) free(p->line); - if (p->entry) - db->ops->free(p->entry); + if (p->eptr) + db->ops->free(p->eptr); free(p); } @@ -354,26 +354,26 @@ name_is_nis(const char *n) #if KEEP_NIS_AT_END /* prototype */ -static void add_one_entry_nis P_((struct commonio_db *, struct commonio_entry *)); +static void add_one_entry_nis(struct commonio_db *, struct commonio_entry *); static void -add_one_entry_nis(struct commonio_db *db, struct commonio_entry *new) +add_one_entry_nis(struct commonio_db *db, struct commonio_entry *newp) { struct commonio_entry *p; for (p = db->head; p; p = p->next) { - if (name_is_nis(p->entry ? db->ops->getname(p->entry) : p->line)) { - new->next = p; - new->prev = p->prev; + if (name_is_nis(p->eptr ? db->ops->getname(p->eptr) : p->line)) { + newp->next = p; + newp->prev = p->prev; if (p->prev) - p->prev->next = new; + p->prev->next = newp; else - db->head = new; - p->prev = new; + db->head = newp; + p->prev = newp; return; } } - add_one_entry(db, new); + add_one_entry(db, newp); } #endif /* KEEP_NIS_AT_END */ @@ -385,7 +385,7 @@ commonio_open(struct commonio_db *db, int mode) char *cp; char *line; struct commonio_entry *p; - void *entry; + void *eptr; int flags = mode; mode &= ~O_CREAT; @@ -425,10 +425,10 @@ commonio_open(struct commonio_db *db, int mode) goto cleanup; if (name_is_nis(line)) { - entry = NULL; - } else if ((entry = db->ops->parse(line))) { - entry = db->ops->dup(entry); - if (!entry) + eptr = NULL; + } else if ((eptr = db->ops->parse(line))) { + eptr = db->ops->dup(eptr); + if (!eptr) goto cleanup_line; } @@ -436,7 +436,7 @@ commonio_open(struct commonio_db *db, int mode) if (!p) goto cleanup_entry; - p->entry = entry; + p->eptr = eptr; p->line = line; p->changed = 0; @@ -447,8 +447,8 @@ commonio_open(struct commonio_db *db, int mode) return 1; cleanup_entry: - if (entry) - db->ops->free(entry); + if (eptr) + db->ops->free(eptr); cleanup_line: free(line); cleanup: @@ -464,12 +464,12 @@ static int write_all(const struct commonio_db *db) { const struct commonio_entry *p; - void *entry; + void *eptr; for (p = db->head; p; p = p->next) { if (p->changed) { - entry = p->entry; - if (db->ops->put(entry, db->fp)) + eptr = p->eptr; + if (db->ops->put(eptr, db->fp)) return -1; } else if (p->line) { if (db->ops->fputs(p->line, db->fp) == EOF) @@ -581,7 +581,7 @@ find_entry_by_name(struct commonio_db *db, const char *name) void *ep; for (p = db->head; p; p = p->next) { - ep = p->entry; + ep = p->eptr; if (ep && strcmp(db->ops->getname(ep), name) == 0) break; } @@ -590,7 +590,7 @@ find_entry_by_name(struct commonio_db *db, const char *name) int -commonio_update(struct commonio_db *db, const void *entry) +commonio_update(struct commonio_db *db, const void *eptr) { struct commonio_entry *p; void *nentry; @@ -599,14 +599,14 @@ commonio_update(struct commonio_db *db, const void *entry) errno = EINVAL; return 0; } - if (!(nentry = db->ops->dup(entry))) { + if (!(nentry = db->ops->dup(eptr))) { errno = ENOMEM; return 0; } - p = find_entry_by_name(db, db->ops->getname(entry)); + p = find_entry_by_name(db, db->ops->getname(eptr)); if (p) { - db->ops->free(p->entry); - p->entry = nentry; + db->ops->free(p->eptr); + p->eptr = nentry; p->changed = 1; db->cursor = p; @@ -621,7 +621,7 @@ commonio_update(struct commonio_db *db, const void *entry) return 0; } - p->entry = nentry; + p->eptr = nentry; p->line = NULL; p->changed = 1; @@ -676,8 +676,8 @@ commonio_remove(struct commonio_db *db, const char *name) if (p->line) free(p->line); - if (p->entry) - db->ops->free(p->entry); + if (p->eptr) + db->ops->free(p->eptr); return 1; } @@ -698,7 +698,7 @@ commonio_locate(struct commonio_db *db, const char *name) return NULL; } db->cursor = p; - return p->entry; + return p->eptr; } @@ -717,7 +717,7 @@ commonio_rewind(struct commonio_db *db) const void * commonio_next(struct commonio_db *db) { - void *entry; + void *eptr; if (!db->isopen) { errno = EINVAL; @@ -729,9 +729,9 @@ commonio_next(struct commonio_db *db) db->cursor = db->cursor->next; while (db->cursor) { - entry = db->cursor->entry; - if (entry) - return entry; + eptr = db->cursor->eptr; + if (eptr) + return eptr; db->cursor = db->cursor->next; } diff --git a/lib/commonio.h b/lib/commonio.h index 98da1640..6968692b 100644 --- a/lib/commonio.h +++ b/lib/commonio.h @@ -1,11 +1,11 @@ -/* $Id: commonio.h,v 1.4 1998/01/29 23:22:27 marekm Exp $ */ +/* $Id: commonio.h,v 1.5 2000/08/26 18:27:17 marekm Exp $ */ /* * Linked list entry. */ struct commonio_entry { char *line; - void *entry; /* struct passwd, struct spwd, ... */ + void *eptr; /* struct passwd, struct spwd, ... */ struct commonio_entry *prev, *next; int changed:1; }; @@ -18,37 +18,37 @@ struct commonio_ops { * Make a copy of the object (for example, struct passwd) * and all strings pointed by it, in malloced memory. */ - void * (*dup) P_((const void *)); + void *(*dup)(const void *); /* * free() the object including any strings pointed by it. */ - void (*free) P_((void *)); + void (*free)(void *); /* * Return the name of the object (for example, pw_name * for struct passwd). */ - const char * (*getname) P_((const void *)); + const char *(*getname)(const void *); /* * Parse a string, return object (in static area - * should be copied using the dup operation above). */ - void * (*parse) P_((const char *)); + void *(*parse)(const char *); /* * Write the object to the file (this calls putpwent() * for struct passwd, for example). */ - int (*put) P_((const void *, FILE *)); + int (*put)(const void *, FILE *); /* * fgets and fputs (can be replaced by versions that * understand line continuation conventions). */ - char * (*fgets) P_((char *, int, FILE *)); - int (*fputs) P_((const char *, FILE *)); + char *(*fgets)(char *, int, FILE *); + int (*fputs)(const char *, FILE *); }; /* @@ -85,17 +85,17 @@ struct commonio_db { int use_lckpwdf:1; }; -extern int commonio_setname P_((struct commonio_db *, const char *)); -extern int commonio_present P_((const struct commonio_db *)); -extern int commonio_lock P_((struct commonio_db *)); -extern int commonio_lock_nowait P_((struct commonio_db *)); -extern int commonio_open P_((struct commonio_db *, int)); -extern const void *commonio_locate P_((struct commonio_db *, const char *)); -extern int commonio_update P_((struct commonio_db *, const void *)); -extern int commonio_remove P_((struct commonio_db *, const char *)); -extern int commonio_rewind P_((struct commonio_db *)); -extern const void *commonio_next P_((struct commonio_db *)); -extern int commonio_close P_((struct commonio_db *)); -extern int commonio_unlock P_((struct commonio_db *)); -extern void commonio_del_entry P_((struct commonio_db *, const struct commonio_entry *)); +extern int commonio_setname(struct commonio_db *, const char *); +extern int commonio_present(const struct commonio_db *); +extern int commonio_lock(struct commonio_db *); +extern int commonio_lock_nowait(struct commonio_db *); +extern int commonio_open(struct commonio_db *, int); +extern const void *commonio_locate(struct commonio_db *, const char *); +extern int commonio_update(struct commonio_db *, const void *); +extern int commonio_remove(struct commonio_db *, const char *); +extern int commonio_rewind(struct commonio_db *); +extern const void *commonio_next(struct commonio_db *); +extern int commonio_close(struct commonio_db *); +extern int commonio_unlock(struct commonio_db *); +extern void commonio_del_entry(struct commonio_db *, const struct commonio_entry *); diff --git a/lib/defines.h b/lib/defines.h index 9ee90f29..7294a7f9 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -1,4 +1,4 @@ -/* $Id: defines.h,v 1.15 1999/08/27 19:02:50 marekm Exp $ */ +/* $Id: defines.h,v 1.16 2000/08/26 18:27:17 marekm Exp $ */ /* some useful defines */ #ifndef _DEFINES_H_ @@ -29,14 +29,6 @@ # define _(Text) Text #endif -#ifndef P_ -# ifdef PROTOTYPES -# define P_(x) x -# else -# define P_(x) () -# endif -#endif - #if STDC_HEADERS # include # include @@ -194,7 +186,25 @@ char *strchr(), *strrchr(), *strtok(); #ifdef STAT_MACROS_BROKEN # define S_ISDIR(x) ((x) & S_IFMT) == S_IFDIR) # define S_ISREG(x) ((x) & S_IFMT) == S_IFREG) -# define S_ISLNK(x) ((x) & S_IFMT) == S_IFLNK) +# ifdef S_IFLNK +# define S_ISLNK(x) ((x) & S_IFMT) == S_IFLNK) +# endif +#endif + +#ifndef S_ISLNK +#define S_ISLNK(x) (0) +#endif + +#if HAVE_LCHOWN +#define LCHOWN lchown +#else +#define LCHOWN chown +#endif + +#if HAVE_LSTAT +#define LSTAT lstat +#else +#define LSTAT stat #endif #if HAVE_TERMIOS_H diff --git a/lib/dialchk.h b/lib/dialchk.h index 9da2d31e..75f1829e 100644 --- a/lib/dialchk.h +++ b/lib/dialchk.h @@ -1,4 +1,4 @@ -/* $Id: dialchk.h,v 1.1 1997/12/07 23:26:49 marekm Exp $ */ +/* $Id: dialchk.h,v 1.2 2000/08/26 18:27:17 marekm Exp $ */ #ifndef _DIALCHK_H_ #define _DIALCHK_H_ @@ -11,6 +11,6 @@ * line. If so, a dialup password may be required if the shell * is listed as one which requires a second password. */ -extern int dialcheck P_((const char *tty, const char *sh)); +extern int dialcheck(const char *, const char *); #endif diff --git a/lib/dialup.h b/lib/dialup.h index e261b14e..2b3892bd 100644 --- a/lib/dialup.h +++ b/lib/dialup.h @@ -41,7 +41,7 @@ * lines. Each line consists of the last component of the path * name. The leading "/dev/" string is removed. * - * $Id: dialup.h,v 1.2 1997/05/01 23:14:39 marekm Exp $ + * $Id: dialup.h,v 1.3 2000/08/26 18:27:17 marekm Exp $ */ #ifndef _DIALUP_H @@ -52,13 +52,13 @@ struct dialup { char *du_passwd; }; -extern void setduent P_((void)); -extern void endduent P_((void)); -extern struct dialup *fgetduent P_((FILE *)); -extern struct dialup *getduent P_((void)); -extern struct dialup *getdushell P_((const char *)); -extern int putduent P_((const struct dialup *, FILE *)); -extern int isadialup P_((const char *)); +extern void setduent(void); +extern void endduent(void); +extern struct dialup *fgetduent(FILE *); +extern struct dialup *getduent(void); +extern struct dialup *getdushell(const char *); +extern int putduent(const struct dialup *, FILE *); +extern int isadialup(const char *); #define DIALPWD "/etc/d_passwd" #define DIALUPS "/etc/dialups" diff --git a/lib/encrypt.c b/lib/encrypt.c index 42f04d66..51c16e7a 100644 --- a/lib/encrypt.c +++ b/lib/encrypt.c @@ -30,13 +30,13 @@ #include #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) diff --git a/lib/getdef.c b/lib/getdef.c index f3cae104..12ce99e8 100644 --- a/lib/getdef.c +++ b/lib/getdef.c @@ -30,7 +30,7 @@ #include #include "rcsid.h" -RCSID("$Id: getdef.c,v 1.13 1999/08/27 19:02:51 marekm Exp $") +RCSID("$Id: getdef.c,v 1.14 2000/08/26 18:27:17 marekm Exp $") #include "prototypes.h" #include "defines.h" @@ -55,6 +55,9 @@ struct itemdef { static struct itemdef def_table[] = { { "CHFN_AUTH", NULL }, { "CHFN_RESTRICT", NULL }, +#ifdef USE_PAM + { "CLOSE_SESSIONS", NULL }, +#endif { "CONSOLE", NULL }, { "CONSOLE_GROUPS", NULL }, { "CRACKLIB_DICTPATH", NULL }, @@ -63,7 +66,8 @@ static struct itemdef def_table[] = { { "DIALUPS_CHECK_ENAB", NULL }, { "ENVIRON_FILE", NULL }, { "ENV_HZ", NULL }, - { "ENV_PATH" , NULL }, + { "ENV_PATH", NULL }, + { "ENV_ROOTPATH", NULL }, /* SuSE compatibility? */ { "ENV_SUPATH", NULL }, { "ENV_TZ", NULL }, { "ERASECHAR", NULL }, @@ -130,8 +134,8 @@ static int def_loaded = 0; /* are defs already loaded? */ extern long strtol(); /* local function prototypes */ -static struct itemdef *def_find P_((const char *)); -static void def_load P_((void)); +static struct itemdef *def_find(const char *); +static void def_load(void); /* diff --git a/lib/getdef.h b/lib/getdef.h index 3b14d5ae..304e1096 100644 --- a/lib/getdef.h +++ b/lib/getdef.h @@ -2,10 +2,10 @@ #define _GETDEF_H /* getdef.c */ -extern int getdef_bool P_((const char *)); -extern long getdef_long P_((const char *, long)); -extern int getdef_num P_((const char *, int)); -extern char *getdef_str P_((const char *)); -extern int putdef_str P_((const char *, const char *)); +extern int getdef_bool(const char *); +extern long getdef_long(const char *, long); +extern int getdef_num(const char *, int); +extern char *getdef_str(const char *); +extern int putdef_str(const char *, const char *); #endif /* _GETDEF_H */ diff --git a/lib/groupio.c b/lib/groupio.c index 5e67f996..04d470bd 100644 --- a/lib/groupio.c +++ b/lib/groupio.c @@ -2,7 +2,7 @@ #include #include "rcsid.h" -RCSID("$Id: groupio.c,v 1.7 1998/01/29 23:22:28 marekm Exp $") +RCSID("$Id: groupio.c,v 1.8 2000/08/26 18:27:17 marekm Exp $") #include "prototypes.h" #include "defines.h" @@ -10,8 +10,8 @@ RCSID("$Id: groupio.c,v 1.7 1998/01/29 23:22:28 marekm Exp $") #include "commonio.h" #include "groupio.h" -extern int putgrent P_((const struct group *, FILE *)); -extern struct group *sgetgrent P_((const char *)); +extern int putgrent(const struct group *, FILE *); +extern struct group *sgetgrent(const char *); struct group * __gr_dup(const struct group *grent) diff --git a/lib/groupio.h b/lib/groupio.h index 37792fbb..7c083cea 100644 --- a/lib/groupio.h +++ b/lib/groupio.h @@ -1,12 +1,12 @@ -extern struct group *__gr_dup P_((const struct group *)); -extern void __gr_set_changed P_((void)); -extern int gr_close P_((void)); -extern const struct group *gr_locate P_((const char *)); -extern int gr_lock P_((void)); -extern int gr_name P_((const char *)); -extern const struct group *gr_next P_((void)); -extern int gr_open P_((int)); -extern int gr_remove P_((const char *)); -extern int gr_rewind P_((void)); -extern int gr_unlock P_((void)); -extern int gr_update P_((const struct group *)); +extern struct group *__gr_dup(const struct group *); +extern void __gr_set_changed(void); +extern int gr_close(void); +extern const struct group *gr_locate(const char *); +extern int gr_lock(void); +extern int gr_name(const char *); +extern const struct group *gr_next(void); +extern int gr_open(int); +extern int gr_remove(const char *); +extern int gr_rewind(void); +extern int gr_unlock(void); +extern int gr_update(const struct group *); diff --git a/lib/prototypes.h b/lib/prototypes.h index 4fff4f9b..20436dcf 100644 --- a/lib/prototypes.h +++ b/lib/prototypes.h @@ -6,7 +6,7 @@ * Juha Virtanen, ; November 1995 */ /* - * $Id: prototypes.h,v 1.13 1999/07/09 18:02:43 marekm Exp $ + * $Id: prototypes.h,v 1.14 2000/08/26 18:27:17 marekm Exp $ * * Added a macro to work around ancient (non-ANSI) compilers, just in case * someone ever tries to compile this with SunOS cc... --marekm @@ -23,191 +23,206 @@ #include "defines.h" /* addgrps.c */ -extern int add_groups P_((const char *)); -extern void add_cons_grps P_((void)); +extern int add_groups(const char *); +extern void add_cons_grps(void); /* age.c */ #ifdef SHADOWPWD -extern void agecheck P_((const struct passwd *pw, const struct spwd *sp)); -extern int expire P_((const struct passwd *pw, const struct spwd *sp)); -extern int isexpired P_((const struct passwd *pw, const struct spwd *sp)); +extern void agecheck(const struct passwd *, const struct spwd *); +extern int expire(const struct passwd *, const struct spwd *); +extern int isexpired(const struct passwd *, const struct spwd *); #else -extern void agecheck P_((const struct passwd *pw)); -extern int expire P_((const struct passwd *pw)); -extern int isexpired P_((const struct passwd *pw)); +extern void agecheck(const struct passwd *); +extern int expire(const struct passwd *); +extern int isexpired(const struct passwd *); #endif /* basename() renamed to Basename() to avoid libc name space confusion */ /* basename.c */ -extern char *Basename P_((char *str)); +extern char *Basename(char *str); /* chkshell.c */ -extern int check_shell P_((const char *)); +extern int check_shell(const char *); /* chowndir.c */ -extern int chown_tree P_((const char *, uid_t, uid_t, gid_t, gid_t)); +extern int chown_tree(const char *, uid_t, uid_t, gid_t, gid_t); /* chowntty.c */ -extern void chown_tty P_((const char *, const struct passwd *)); +extern void chown_tty(const char *, const struct passwd *); /* console.c */ -extern int console P_((const char *tty)); -extern int is_listed P_((const char *cfgin, const char *tty, int def)); +extern int console(const char *); +extern int is_listed(const char *, const char *, int); /* copydir.c */ -extern int copy_tree P_((const char *, const char *, uid_t, gid_t)); -extern int remove_tree P_((const char *)); +extern int copy_tree(const char *, const char *, uid_t, gid_t); +extern int remove_tree(const char *); /* encrypt.c */ -extern char *pw_encrypt P_((const char *, const char *)); +extern char *pw_encrypt(const char *, const char *); /* entry.c */ -extern void entry P_((const char *name, struct passwd *pwent)); +extern void pw_entry(const char *, struct passwd *); /* env.c */ -extern void addenv P_((const char *, const char *)); -extern void initenv P_((void)); -extern void set_env P_((int, char * const *)); -extern void sanitize_env P_((void)); +extern void addenv(const char *, const char *); +extern void initenv(void); +extern void set_env(int, char * const *); +extern void sanitize_env(void); /* fields.c */ -extern void change_field P_((char *buf, size_t maxsize, const char *prompt)); -extern int valid_field P_((const char *field, const char *illegal)); +extern void change_field(char *, size_t, const char *); +extern int valid_field(const char *, const char *); /* fputsx.c */ -extern char *fgetsx P_((char *, int, FILE *)); -extern int fputsx P_((const char *, FILE *)); +extern char *fgetsx(char *, int, FILE *); +extern int fputsx(const char *, FILE *); /* grdbm.c */ -extern int gr_dbm_remove P_((const struct group *gr)); -extern int gr_dbm_update P_((const struct group *gr)); -extern int gr_dbm_present P_((void)); +extern int gr_dbm_remove(const struct group *); +extern int gr_dbm_update(const struct group *); +extern int gr_dbm_present(void); /* grent.c */ -extern int putgrent P_((const struct group *, FILE *)); +extern int putgrent(const struct group *, FILE *); /* grpack.c */ -extern int gr_pack P_((const struct group *group, char *buf)); -extern int gr_unpack P_((char *buf, int len, struct group *group)); +extern int gr_pack(const struct group *, char *); +extern int gr_unpack(char *, int, struct group *); #ifdef SHADOWGRP /* gsdbm.c */ -extern int sg_dbm_remove P_((const char *name)); -extern int sg_dbm_update P_((const struct sgrp *sgr)); -extern int sg_dbm_present P_((void)); +extern int sg_dbm_remove(const char *); +extern int sg_dbm_update(const struct sgrp *); +extern int sg_dbm_present(void); /* gspack.c */ -extern int sgr_pack P_((const struct sgrp *sgrp, char *buf)); -extern int sgr_unpack P_((char *buf, int len, struct sgrp *sgrp)); +extern int sgr_pack(const struct sgrp *, char *); +extern int sgr_unpack(char *, int, struct sgrp *); #endif /* hushed.c */ -extern int hushed P_((const struct passwd *pw)); +extern int hushed(const struct passwd *); /* limits.c */ -extern void setup_limits P_((const struct passwd *)); +extern void setup_limits(const struct passwd *); /* list.c */ -extern char **add_list P_((char **list, const char *member)); -extern char **del_list P_((char **list, const char *member)); -extern char **dup_list P_((char * const *list)); -extern int is_on_list P_((char * const *list, const char *member)); -extern char **comma_to_list P_((const char *comma)); +extern char **add_list(char **, const char *); +extern char **del_list(char **, const char *); +extern char **dup_list(char * const *); +extern int is_on_list(char * const *, const char *); +extern char **comma_to_list(const char *); /* login.c */ -extern void login_prompt P_((const char *, char *, int)); +extern void login_prompt(const char *, char *, int); /* login_desrpc.c */ -extern int login_desrpc P_((const char *)); +extern int login_desrpc(const char *); /* mail.c */ -extern void mailcheck P_((void)); +extern void mailcheck(void); /* motd.c */ -extern void motd P_((void)); +extern void motd(void); /* myname.c */ -extern struct passwd *get_my_pwent P_((void)); +extern struct passwd *get_my_pwent(void); /* obscure.c */ -extern int obscure P_((const char *, const char *, const struct passwd *)); +extern int obscure(const char *, const char *, const struct passwd *); /* pam_pass.c */ -extern int do_pam_passwd P_((const char *, int, int)); +extern int do_pam_passwd(const char *, int, int); /* port.c */ -extern int isttytime P_((const char *, const char *, time_t)); +extern int isttytime(const char *, const char *, time_t); /* pwd2spwd.c */ #ifdef SHADOWPWD -extern struct spwd *pwd_to_spwd P_((const struct passwd *pw)); +extern struct spwd *pwd_to_spwd(const struct passwd *); #endif /* pwdcheck.c */ -extern void passwd_check P_((const char *, const char *, const char *)); +extern void passwd_check(const char *, const char *, const char *); /* pwd_init.c */ -extern void pwd_init P_((void)); +extern void pwd_init(void); /* pwdbm.c */ -extern int pw_dbm_remove P_((const struct passwd *pw)); -extern int pw_dbm_update P_((const struct passwd *pw)); -extern int pw_dbm_present P_((void)); +extern int pw_dbm_remove(const struct passwd *); +extern int pw_dbm_update(const struct passwd *); +extern int pw_dbm_present(void); /* pwpack.c */ -extern int pw_pack P_((const struct passwd *passwd, char *buf)); -extern int pw_unpack P_((char *buf, int len, struct passwd *passwd)); +extern int pw_pack(const struct passwd *, char *); +extern int pw_unpack(char *, int, struct passwd *); /* rad64.c */ -extern int c64i P_((char c)); -extern int i64c P_((int i)); +extern int c64i(int); +extern int i64c(int); /* rlogin.c */ -extern int do_rlogin P_((const char *, char *, int, char *, int)); +extern int do_rlogin(const char *, char *, int, char *, int); + +/* salt.c */ +extern char *crypt_make_salt(void); /* setugid.c */ -extern int setup_groups P_((const struct passwd *)); -extern int change_uid P_((const struct passwd *)); -extern int setup_uid_gid P_((const struct passwd *, int)); +extern int setup_groups(const struct passwd *); +extern int change_uid(const struct passwd *); +extern int setup_uid_gid(const struct passwd *, int); /* setup.c */ -extern void setup P_((struct passwd *info)); +extern void setup(struct passwd *); /* setupenv.c */ -extern void setup_env P_((struct passwd *)); +extern void setup_env(struct passwd *); /* shell.c */ -extern void shell P_((const char *file, const char *arg)); +extern void shell(const char *, const char *); #ifdef SHADOWPWD /* spdbm.c */ -extern int sp_dbm_remove P_((const char *user)); -extern int sp_dbm_update P_((const struct spwd *sp)); -extern int sp_dbm_present P_((void)); +extern int sp_dbm_remove(const char *); +extern int sp_dbm_update(const struct spwd *); +extern int sp_dbm_present(void); /* sppack.c */ -extern int spw_pack P_((const struct spwd *spwd, char *buf)); -extern int spw_unpack P_((char *buf, int len, struct spwd *spwd)); +extern int spw_pack(const struct spwd *, char *); +extern int spw_unpack(char *, int, struct spwd *); #endif /* strtoday.c */ -extern long strtoday P_((const char *str)); +extern long strtoday(const char *); + +/* suauth.c */ +extern int check_su_auth(const char *, const char *); + +/* sulog.c */ +extern void sulog(const char *, int, const char *, const char *); + +/* sub.c */ +extern void subsystem(const struct passwd *); /* ttytype.c */ -extern void ttytype P_((const char *line)); +extern void ttytype(const char *); + +/* tz.c */ +extern char *tz(const char *); /* ulimit.c */ -extern void set_filesize_limit P_((int)); +extern void set_filesize_limit(int); /* utmp.c */ -extern void checkutmp P_((int)); -extern void setutmp P_((const char *, const char *, const char *)); +extern void checkutmp(int); +extern void setutmp(const char *, const char *, const char *); /* valid.c */ -extern int valid P_((const char *, const struct passwd *)); +extern int valid(const char *, const struct passwd *); /* xmalloc.c */ -extern char *xmalloc P_((size_t size)); -extern char *xstrdup P_((const char *str)); +extern char *xmalloc(size_t); +extern char *xstrdup(const char *); #endif /* _PROTOTYPES_H */ diff --git a/lib/pwauth.c b/lib/pwauth.c index 67867ff6..bce32f22 100644 --- a/lib/pwauth.c +++ b/lib/pwauth.c @@ -30,7 +30,7 @@ #include #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 #include @@ -68,7 +68,7 @@ extern char *getpass_with_echo(); struct method { char *name; - int (*func) P_((const char *, int, const char *)); + int (*func)(const char *, int, const char *); }; #ifdef PAD_AUTH diff --git a/lib/pwio.c b/lib/pwio.c index 7dc7e9ad..4fa25da9 100644 --- a/lib/pwio.c +++ b/lib/pwio.c @@ -2,7 +2,7 @@ #include #include "rcsid.h" -RCSID("$Id: pwio.c,v 1.9 1998/01/29 23:22:31 marekm Exp $") +RCSID("$Id: pwio.c,v 1.10 2000/08/26 18:27:17 marekm Exp $") #include "prototypes.h" #include "defines.h" @@ -12,8 +12,8 @@ RCSID("$Id: pwio.c,v 1.9 1998/01/29 23:22:31 marekm Exp $") #include "commonio.h" #include "pwio.h" -extern struct passwd *sgetpwent P_((const char *)); -extern int putpwent P_((const struct passwd *, FILE *)); +extern struct passwd *sgetpwent(const char *); +extern int putpwent(const struct passwd *, FILE *); struct passwd * __pw_dup(const struct passwd *pwent) diff --git a/lib/pwio.h b/lib/pwio.h index 88bace77..199f67da 100644 --- a/lib/pwio.h +++ b/lib/pwio.h @@ -1,12 +1,12 @@ -extern struct passwd *__pw_dup P_((const struct passwd *)); -extern void __pw_set_changed P_((void)); -extern int pw_close P_((void)); -extern const struct passwd *pw_locate P_((const char *)); -extern int pw_lock P_((void)); -extern int pw_name P_((const char *)); -extern const struct passwd *pw_next P_((void)); -extern int pw_open P_((int)); -extern int pw_remove P_((const char *)); -extern int pw_rewind P_((void)); -extern int pw_unlock P_((void)); -extern int pw_update P_((const struct passwd *)); +extern struct passwd *__pw_dup(const struct passwd *); +extern void __pw_set_changed(void); +extern int pw_close(void); +extern const struct passwd *pw_locate(const char *); +extern int pw_lock(void); +extern int pw_name(const char *); +extern const struct passwd *pw_next(void); +extern int pw_open(int); +extern int pw_remove(const char *); +extern int pw_rewind(void); +extern int pw_unlock(void); +extern int pw_update(const struct passwd *); diff --git a/lib/rad64.c b/lib/rad64.c index 5b22e96e..249a71e1 100644 --- a/lib/rad64.c +++ b/lib/rad64.c @@ -30,14 +30,14 @@ #include #include "rcsid.h" -RCSID("$Id: rad64.c,v 1.4 1997/12/07 23:26:56 marekm Exp $") +RCSID("$Id: rad64.c,v 1.5 2000/08/26 18:27:17 marekm Exp $") /* * c64i - convert a radix 64 character to an integer */ int -c64i(char c) +c64i(int c) { if (c == '.') return (0); @@ -117,7 +117,7 @@ a64l(const char *s) long shift = 0; for (i = 0, value = 0L;i < 6 && *s;s++) { - value += (c64i (*s) << shift); + value += (c64i ((int) *s) << shift); shift += 6; } return (value); diff --git a/lib/sgroupio.c b/lib/sgroupio.c index a10e422e..4f0c56b4 100644 --- a/lib/sgroupio.c +++ b/lib/sgroupio.c @@ -4,7 +4,7 @@ #ifdef SHADOWGRP #include "rcsid.h" -RCSID("$Id: sgroupio.c,v 1.9 1998/01/29 23:22:31 marekm Exp $") +RCSID("$Id: sgroupio.c,v 1.10 2000/08/26 18:27:17 marekm Exp $") #include "prototypes.h" #include "defines.h" @@ -12,8 +12,8 @@ RCSID("$Id: sgroupio.c,v 1.9 1998/01/29 23:22:31 marekm Exp $") #include "commonio.h" #include "sgroupio.h" -extern int putsgent P_((const struct sgrp *, FILE *)); -extern struct sgrp *sgetsgent P_((const char *)); +extern int putsgent(const struct sgrp *, FILE *); +extern struct sgrp *sgetsgent(const char *); struct sgrp * __sgr_dup(const struct sgrp *sgent) diff --git a/lib/sgroupio.h b/lib/sgroupio.h index 7f41a8fa..e9c93bf6 100644 --- a/lib/sgroupio.h +++ b/lib/sgroupio.h @@ -1,13 +1,13 @@ -extern struct sgrp *__sgr_dup P_((const struct sgrp *)); -extern void __sgr_set_changed P_((void)); -extern int sgr_close P_((void)); -extern int sgr_file_present P_((void)); -extern const struct sgrp *sgr_locate P_((const char *)); -extern int sgr_lock P_((void)); -extern int sgr_name P_((const char *)); -extern const struct sgrp *sgr_next P_((void)); -extern int sgr_open P_((int)); -extern int sgr_remove P_((const char *)); -extern int sgr_rewind P_((void)); -extern int sgr_unlock P_((void)); -extern int sgr_update P_((const struct sgrp *)); +extern struct sgrp *__sgr_dup(const struct sgrp *); +extern void __sgr_set_changed(void); +extern int sgr_close(void); +extern int sgr_file_present(void); +extern const struct sgrp *sgr_locate(const char *); +extern int sgr_lock(void); +extern int sgr_name(const char *); +extern const struct sgrp *sgr_next(void); +extern int sgr_open(int); +extern int sgr_remove(const char *); +extern int sgr_rewind(void); +extern int sgr_unlock(void); +extern int sgr_update(const struct sgrp *); diff --git a/lib/shadowio.h b/lib/shadowio.h index 5c8934f6..b3118d5c 100644 --- a/lib/shadowio.h +++ b/lib/shadowio.h @@ -1,13 +1,13 @@ -extern struct spwd *__spw_dup P_((const struct spwd *)); -extern void __spw_set_changed P_((void)); -extern int spw_close P_((void)); -extern int spw_file_present P_((void)); -extern const struct spwd *spw_locate P_((const char *)); -extern int spw_lock P_((void)); -extern int spw_name P_((const char *)); -extern const struct spwd *spw_next P_((void)); -extern int spw_open P_((int)); -extern int spw_remove P_((const char *)); -extern int spw_rewind P_((void)); -extern int spw_unlock P_((void)); -extern int spw_update P_((const struct spwd *)); +extern struct spwd *__spw_dup(const struct spwd *); +extern void __spw_set_changed(void); +extern int spw_close(void); +extern int spw_file_present(void); +extern const struct spwd *spw_locate(const char *); +extern int spw_lock(void); +extern int spw_name(const char *); +extern const struct spwd *spw_next(void); +extern int spw_open(int); +extern int spw_remove(const char *); +extern int spw_rewind(void); +extern int spw_unlock(void); +extern int spw_update(const struct spwd *); diff --git a/lib/tcfsio.h b/lib/tcfsio.h index 3a8ff6c5..3f53fca5 100644 --- a/lib/tcfsio.h +++ b/lib/tcfsio.h @@ -3,12 +3,12 @@ struct tcfspwd { char tcfsorig[200]; /* old password */ }; -extern int tcfs_close P_((void)); -extern int tcfs_file_present P_((void)); -extern tcfspwdb *tcfs_locate P_((char *)); -extern int tcfs_lock P_((void)); -extern int tcfs_name P_((char *)); -extern int tcfs_open P_((int)); -extern int tcfs_remove P_((char *)); -extern int tcfs_unlock P_((void)); -extern int tcfs_update P_((char *, struct tcfspwd *)); +extern int tcfs_close(void); +extern int tcfs_file_present(void); +extern tcfspwdb *tcfs_locate(char *); +extern int tcfs_lock(void); +extern int tcfs_name(char *); +extern int tcfs_open(int); +extern int tcfs_remove(char *); +extern int tcfs_unlock(void); +extern int tcfs_update(char *, struct tcfspwd *); diff --git a/libmisc/Makefile.in b/libmisc/Makefile.in index 9b85780a..760788b5 100644 --- a/libmisc/Makefile.in +++ b/libmisc/Makefile.in @@ -78,6 +78,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ @@ -339,8 +340,8 @@ suauth.o: suauth.c ../config.h ../lib/prototypes.h ../lib/defines.h \ ../lib/gshadow_.h sub.o: sub.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \ ../lib/defines.h ../lib/gshadow_.h -sulog.o: sulog.c ../config.h ../lib/rcsid.h ../lib/defines.h \ - ../lib/gshadow_.h ../lib/getdef.h +sulog.o: sulog.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \ + ../lib/defines.h ../lib/gshadow_.h ../lib/getdef.h ttytype.o: ttytype.c ../config.h ../lib/rcsid.h ../lib/prototypes.h \ ../lib/defines.h ../lib/gshadow_.h ../lib/getdef.h tz.o: tz.c ../config.h ../lib/rcsid.h ../lib/defines.h ../lib/gshadow_.h \ diff --git a/libmisc/chkname.h b/libmisc/chkname.h index c706f15d..b9e3ae02 100644 --- a/libmisc/chkname.h +++ b/libmisc/chkname.h @@ -1,4 +1,4 @@ -/* $Id: chkname.h,v 1.1 1997/12/07 23:27:00 marekm Exp $ */ +/* $Id: chkname.h,v 1.2 2000/08/26 18:27:17 marekm Exp $ */ #ifndef _CHKNAME_H_ #define _CHKNAME_H_ @@ -9,7 +9,7 @@ #include "defines.h" -extern int check_user_name P_((const char *)); -extern int check_group_name P_((const char *name)); +extern int check_user_name(const char *); +extern int check_group_name(const char *name); #endif diff --git a/libmisc/chowndir.c b/libmisc/chowndir.c index b8fe4c0d..b89c5973 100644 --- a/libmisc/chowndir.c +++ b/libmisc/chowndir.c @@ -30,7 +30,7 @@ #include #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 #include @@ -94,10 +94,11 @@ chown_tree(const char *root, uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t snprintf(new_name, sizeof new_name, "%s/%s", root, ent->d_name); - if (stat (new_name, &sb) == -1) + /* Don't follow symbolic links! */ + if (LSTAT(new_name, &sb) == -1) continue; - if (S_ISDIR(sb.st_mode)) { + if (S_ISDIR(sb.st_mode) && !S_ISLNK(sb.st_mode)) { /* * Do the entire subdirectory. @@ -107,8 +108,13 @@ chown_tree(const char *root, uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t old_gid, new_gid))) break; } +#ifndef HAVE_LCHOWN + /* don't use chown (follows symbolic links!) */ + if (S_ISLNK(sb.st_mode)) + continue; +#endif if (sb.st_uid == old_uid) - chown (new_name, new_uid, + LCHOWN(new_name, new_uid, sb.st_gid == old_gid ? new_gid:sb.st_gid); } closedir (dir); @@ -119,7 +125,7 @@ chown_tree(const char *root, uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t if (! stat (root, &sb)) { if (sb.st_uid == old_uid) - chown (root, new_uid, + LCHOWN(root, new_uid, sb.st_gid == old_gid ? new_gid:sb.st_gid); } return rc; diff --git a/libmisc/copydir.c b/libmisc/copydir.c index cb1a470a..0f7fed2d 100644 --- a/libmisc/copydir.c +++ b/libmisc/copydir.c @@ -30,7 +30,7 @@ #include #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 @@ -192,11 +192,7 @@ copy_tree(const char *src_root, const char *dst_root, uid_t uid, gid_t gid) } snprintf(dst_name, sizeof dst_name, "%s/%s", dst_root, ent->d_name); -#ifdef S_IFLNK - if (lstat (src_name, &sb) == -1) -#else - if (stat (src_name, &sb) == -1) -#endif + if (LSTAT(src_name, &sb) == -1) continue; if (S_ISDIR(sb.st_mode)) { @@ -380,11 +376,7 @@ remove_tree(const char *root) break; } snprintf(new_name, sizeof new_name, "%s/%s", root, ent->d_name); -#ifdef S_IFLNK - if (lstat (new_name, &sb) == -1) -#else - if (stat (new_name, &sb) == -1) -#endif + if (LSTAT(new_name, &sb) == -1) continue; if (S_ISDIR(sb.st_mode)) { diff --git a/libmisc/entry.c b/libmisc/entry.c index 5baa8ed6..746dfb0a 100644 --- a/libmisc/entry.c +++ b/libmisc/entry.c @@ -30,7 +30,7 @@ #include #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 #include @@ -38,10 +38,10 @@ RCSID("$Id: entry.c,v 1.3 1997/12/07 23:27:03 marekm Exp $") #include "defines.h" #include -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 diff --git a/libmisc/failure.h b/libmisc/failure.h index 7fbac2bf..1795b50d 100644 --- a/libmisc/failure.h +++ b/libmisc/failure.h @@ -1,4 +1,4 @@ -/* $Id: failure.h,v 1.1 1997/12/07 23:27:04 marekm Exp $ */ +/* $Id: failure.h,v 1.2 2000/08/26 18:27:17 marekm Exp $ */ #ifndef _FAILURE_H_ #define _FAILURE_H_ @@ -12,7 +12,7 @@ * failure() creates a new (struct faillog) entry or updates an * existing one with the current failed login information. */ -extern void failure P_((uid_t, const char *, struct faillog *)); +extern void failure(uid_t, const char *, struct faillog *); /* * failcheck - check for failures > allowable @@ -22,7 +22,7 @@ extern void failure P_((uid_t, const char *, struct faillog *)); * returns FALSE to indicate that the login should be denied even though * the password is valid. */ -extern int failcheck P_((uid_t, struct faillog *, int)); +extern int failcheck(uid_t, struct faillog *, int); /* * failprint - print line of failure information @@ -30,7 +30,7 @@ extern int failcheck P_((uid_t, struct faillog *, int)); * failprint takes a (struct faillog) entry and formats it into a * message which is displayed at login time. */ -extern void failprint P_((const struct faillog *)); +extern void failprint(const struct faillog *); /* * failtmp - update the cummulative failure log @@ -38,7 +38,7 @@ extern void failprint P_((const struct faillog *)); * failtmp updates the (struct utmp) formatted failure log which * maintains a record of all login failures. */ -extern void failtmp P_((const struct utmp *)); +extern void failtmp(const struct utmp *); #endif diff --git a/libmisc/getdate.h b/libmisc/getdate.h index c866afce..691a508f 100644 --- a/libmisc/getdate.h +++ b/libmisc/getdate.h @@ -4,5 +4,5 @@ #include #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 diff --git a/libmisc/hushed.c b/libmisc/hushed.c index c9990d16..fbc7a19d 100644 --- a/libmisc/hushed.c +++ b/libmisc/hushed.c @@ -30,7 +30,7 @@ #include #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 #include @@ -68,7 +68,7 @@ hushed(const struct passwd *pw) */ if (hushfile[0] != '/') { - strcat(strcat(strcpy(buf, pw->pw_dir), "/"), hushfile); + snprintf(buf, sizeof(buf), "%s/%s", pw->pw_dir, hushfile); return (access(buf, F_OK) == 0); } diff --git a/libmisc/loginprompt.c b/libmisc/loginprompt.c index eb0958f1..abe81d3a 100644 --- a/libmisc/loginprompt.c +++ b/libmisc/loginprompt.c @@ -30,7 +30,7 @@ #include #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 #include @@ -62,9 +62,9 @@ login_prompt(const char *prompt, char *name, int namesize) char *cp; int i; FILE *fp; - RETSIGTYPE (*sigquit) P_((int)); + RETSIGTYPE (*sigquit)(int); #ifdef SIGTSTP - RETSIGTYPE (*sigtstp) P_((int)); + RETSIGTYPE (*sigtstp)(int); #endif /* diff --git a/libmisc/setupenv.c b/libmisc/setupenv.c index 90e5b179..1e428ba7 100644 --- a/libmisc/setupenv.c +++ b/libmisc/setupenv.c @@ -34,7 +34,7 @@ #include #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 #include @@ -235,8 +235,21 @@ setup_env(struct passwd *info) * Create the PATH environmental variable and export it. */ - cp = getdef_str( info->pw_uid == 0 ? "ENV_SUPATH" : "ENV_PATH" ); + cp = getdef_str((info->pw_uid == 0) ? "ENV_SUPATH" : "ENV_PATH"); +#if 0 addenv(cp ? cp : "PATH=/bin:/usr/bin", NULL); +#else + if (!cp) { + /* not specified, use a minimal default */ + addenv("PATH=/bin:/usr/bin", NULL); + } else if (strchr(cp, '=')) { + /* specified as name=value (PATH=...) */ + addenv(cp, NULL); + } else { + /* only value specified without "PATH=" */ + addenv("PATH", cp); + } +#endif /* * Export the user name. For BSD derived systems, it's "USER", for @@ -269,9 +282,11 @@ setup_env(struct passwd *info) #endif } +#ifndef USE_PAM /* * Read environment from optional config file. --marekm */ if ((envf = getdef_str("ENVIRON_FILE"))) read_env_file(envf); +#endif } diff --git a/libmisc/suauth.c b/libmisc/suauth.c index 313a6ec6..77cf9292 100644 --- a/libmisc/suauth.c +++ b/libmisc/suauth.c @@ -23,10 +23,10 @@ * strings output to the user or the syslog. -- chris */ -static int applies P_((const char *, char *)); +static int applies(const char *, char *); -int check_su_auth P_((const char *, const char *)); -int isgrp P_((const char *, const char *)); +int check_su_auth(const char *, const char *); +int isgrp(const char *, const char *); static int lines = 0; diff --git a/libmisc/sulog.c b/libmisc/sulog.c index f20152e7..3de68692 100644 --- a/libmisc/sulog.c +++ b/libmisc/sulog.c @@ -30,25 +30,22 @@ #include #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 #include #include #include +#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; diff --git a/man/Makefile.am b/man/Makefile.am index 22aacad9..16a40e7e 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -1,10 +1,12 @@ AUTOMAKE_OPTIONS = 1.0 foreign +SUBDIRS = pl + man_MANS = chage.1 chfn.1 chsh.1 gpasswd.1 \ login.1 newgrp.1 passwd.1 su.1 \ shadow.3 \ - faillog.5 limits.5 login.access.5 login.defs.5 \ + dialups.5 faillog.5 limits.5 login.access.5 login.defs.5 \ passwd.5 porttime.5 shadow.5 suauth.5 \ chpasswd.8 dpasswd.8 faillog.8 \ groupadd.8 groupdel.8 groupmod.8 \ @@ -12,21 +14,8 @@ man_MANS = chage.1 chfn.1 chsh.1 gpasswd.1 \ pwck.8 pwconv.8 shadowconfig.8 \ useradd.8 userdel.8 usermod.8 vipw.8 -# XXX - for some reason "make dist" no longer distributes man_MANS -# automatically after upgrade to automake-1.2 (it worked with 1.0). -# So they are now all listed in EXTRA_DIST. --marekm -# -#EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 +EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 ${man_MANS} -EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 \ - chage.1 chfn.1 chsh.1 gpasswd.1 \ - login.1 newgrp.1 passwd.1 su.1 \ - shadow.3 \ - faillog.5 limits.5 login.access.5 login.defs.5 \ - passwd.5 porttime.5 shadow.5 suauth.5 \ - chpasswd.8 dpasswd.8 faillog.8 \ - groupadd.8 groupdel.8 groupmod.8 \ - grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 \ - pwck.8 pwconv.8 shadowconfig.8 \ - useradd.8 userdel.8 usermod.8 vipw.8 +# subdirectories for translated manual pages +SUBDIRS = pl diff --git a/man/Makefile.in b/man/Makefile.in index fe5efa27..076af868 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -79,6 +79,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ @@ -103,17 +104,13 @@ l = @l@ AUTOMAKE_OPTIONS = 1.0 foreign -man_MANS = chage.1 chfn.1 chsh.1 gpasswd.1 login.1 newgrp.1 passwd.1 su.1 shadow.3 faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 porttime.5 shadow.5 suauth.5 chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwck.8 pwconv.8 shadowconfig.8 useradd.8 userdel.8 usermod.8 vipw.8 +# subdirectories for translated manual pages +SUBDIRS = pl +man_MANS = chage.1 chfn.1 chsh.1 gpasswd.1 login.1 newgrp.1 passwd.1 su.1 shadow.3 dialups.5 faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 porttime.5 shadow.5 suauth.5 chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwck.8 pwconv.8 shadowconfig.8 useradd.8 userdel.8 usermod.8 vipw.8 -# XXX - for some reason "make dist" no longer distributes man_MANS -# automatically after upgrade to automake-1.2 (it worked with 1.0). -# So they are now all listed in EXTRA_DIST. --marekm -# -#EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 - -EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 chage.1 chfn.1 chsh.1 gpasswd.1 login.1 newgrp.1 passwd.1 su.1 shadow.3 faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 porttime.5 shadow.5 suauth.5 chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwck.8 pwconv.8 shadowconfig.8 useradd.8 userdel.8 usermod.8 vipw.8 +EXTRA_DIST = groups.1 id.1 pw_auth.3 pwauth.8 sulogin.8 ${man_MANS} mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h CONFIG_CLEAN_FILES = @@ -280,9 +277,95 @@ uninstall-man: @$(NORMAL_UNINSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-man1 uninstall-man3 uninstall-man5 \ uninstall-man8 + +# 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) @@ -299,30 +382,41 @@ distdir: $(DISTFILES) || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done info-am: -info: info-am +info: info-recursive dvi-am: -dvi: dvi-am +dvi: dvi-recursive check-am: all-am -check: check-am +check: check-recursive installcheck-am: -installcheck: installcheck-am +installcheck: installcheck-recursive install-exec-am: -install-exec: install-exec-am +install-exec: install-exec-recursive install-data-am: install-man -install-data: install-data-am +install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am +install: install-recursive uninstall-am: uninstall-man -uninstall: uninstall-am +uninstall: uninstall-recursive all-am: Makefile $(MANS) -all-redirect: all-am +all-redirect: all-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: +installdirs: installdirs-recursive +installdirs-am: $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man3 \ $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man8 @@ -336,33 +430,40 @@ distclean-generic: -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: -mostlyclean-am: mostlyclean-generic +mostlyclean-am: mostlyclean-tags mostlyclean-generic -mostlyclean: mostlyclean-am +mostlyclean: mostlyclean-recursive -clean-am: clean-generic mostlyclean-am +clean-am: clean-tags clean-generic mostlyclean-am -clean: clean-am +clean: clean-recursive -distclean-am: distclean-generic clean-am +distclean-am: distclean-tags distclean-generic clean-am -rm -f libtool -distclean: distclean-am +distclean: distclean-recursive -maintainer-clean-am: maintainer-clean-generic distclean-am +maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ + distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." -maintainer-clean: maintainer-clean-am +maintainer-clean: maintainer-clean-recursive .PHONY: install-man1 uninstall-man1 install-man3 uninstall-man3 \ install-man5 uninstall-man5 install-man8 uninstall-man8 install-man \ -uninstall-man tags distdir info-am info dvi-am dvi check check-am \ -installcheck-am installcheck install-exec-am install-exec \ -install-data-am install-data install-am install uninstall-am uninstall \ -all-redirect all-am all installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean +uninstall-man install-data-recursive uninstall-data-recursive \ +install-exec-recursive uninstall-exec-recursive installdirs-recursive \ +uninstalldirs-recursive all-recursive check-recursive \ +installcheck-recursive info-recursive dvi-recursive \ +mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. diff --git a/man/chage.1 b/man/chage.1 index 86d0c1fa..2c09fc72 100644 --- a/man/chage.1 +++ b/man/chage.1 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: chage.1,v 1.5 1999/03/07 19:14:45 marekm Exp $ +.\" $Id: chage.1,v 1.6 2000/08/26 18:27:17 marekm Exp $ .\" .TH CHAGE 1 .SH NAME @@ -106,4 +106,4 @@ The current value is displayed between a pair of \fB[ ]\fR marks. .BR passwd (5), .BR shadow (5) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/chfn.1 b/man/chfn.1 index 6f62023b..e0ae8828 100644 --- a/man/chfn.1 +++ b/man/chfn.1 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: chfn.1,v 1.4 1998/12/28 20:34:58 marekm Exp $ +.\" $Id: chfn.1,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH CHFN 1 .SH NAME @@ -63,4 +63,4 @@ Without options, chfn prompts for the current user account. .SH SEE ALSO .BR passwd (5) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/chpasswd.8 b/man/chpasswd.8 index 33aabd74..860a1cdc 100644 --- a/man/chpasswd.8 +++ b/man/chpasswd.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: chpasswd.8,v 1.5 1998/12/28 20:34:59 marekm Exp $ +.\" $Id: chpasswd.8,v 1.6 2000/08/26 18:27:17 marekm Exp $ .\" .TH CHPASSWD 8 .SH NAME @@ -59,4 +59,4 @@ The input file must be protected if it contains unencrypted passwords. .BR useradd (8), .BR newusers (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/chsh.1 b/man/chsh.1 index 6b9ac9cc..c2c1ee3e 100644 --- a/man/chsh.1 +++ b/man/chsh.1 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: chsh.1,v 1.4 1998/12/28 20:35:01 marekm Exp $ +.\" $Id: chsh.1,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH CHSH 1 .SH NAME @@ -63,4 +63,4 @@ The current value is displayed between a pair of \fB[ ]\fR marks. .BR chfn (1), .BR passwd (5) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/dialups.5 b/man/dialups.5 new file mode 100644 index 00000000..df33d6cd --- /dev/null +++ b/man/dialups.5 @@ -0,0 +1,22 @@ +.TH DIALUPS 5 "03 Oct 1999" +.SH NAME +d_passwd \- The dialup shell password file +.br +dialups \- List of dialup lines +.SH DESCRIPTION +The \fBd_passwd\fR file contains the names of login shells which require +dialup passwords. Each line contains the fully qualified path name +for the shell, followed by an optional password. Each field is separated +by a '\fB:\fR'. +.PP +The \fBdialups\fR file contains the names of ports which may be dialup +lines. Each line consists of the last component of the path name. The +leading "\fB/dev/\fR" string is removed. +.SH FILES +/etc/d_passwd \- dialup shell password file +.br +/etc/dialups \- dialup line list +.SH SEE ALSO +.BR login (1), +.SH AUTHOR +Ben Collins diff --git a/man/dpasswd.8 b/man/dpasswd.8 index 00d54105..b19b36f8 100644 --- a/man/dpasswd.8 +++ b/man/dpasswd.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: dpasswd.8,v 1.4 1998/12/28 20:35:02 marekm Exp $ +.\" $Id: dpasswd.8,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH DPASSWD 8 .SH NAME @@ -52,4 +52,4 @@ program. .SH SEE ALSO .BR login (1) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/faillog.5 b/man/faillog.5 index b1f39f3a..8beffdf9 100644 --- a/man/faillog.5 +++ b/man/faillog.5 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: faillog.5,v 1.4 1998/12/28 20:35:03 marekm Exp $ +.\" $Id: faillog.5,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH FAILLOG 5 .SH NAME @@ -56,4 +56,4 @@ The structure of the file is .SH SEE ALSO .BR faillog (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/faillog.8 b/man/faillog.8 index d0a0d871..3ce76a1e 100644 --- a/man/faillog.8 +++ b/man/faillog.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: faillog.8,v 1.6 1999/07/09 18:02:43 marekm Exp $ +.\" $Id: faillog.8,v 1.7 2000/08/26 18:27:17 marekm Exp $ .\" .TH FAILLOG 8 .SH NAME @@ -97,4 +97,4 @@ Some systems may replace /var/log with /var/adm or /usr/adm. .BR login (1), .BR faillog (5) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/groupadd.8 b/man/groupadd.8 index 5a50351d..2d3de403 100644 --- a/man/groupadd.8 +++ b/man/groupadd.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: groupadd.8,v 1.4 1998/12/28 20:35:05 marekm Exp $ +.\" $Id: groupadd.8,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH GROUPADD 8 .SH NAME @@ -61,4 +61,4 @@ Values between 0 and 99 are typically reserved for system accounts. .BR groupdel (8), .BR groupmod (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/groupdel.8 b/man/groupdel.8 index 375b889d..19621a6b 100644 --- a/man/groupdel.8 +++ b/man/groupdel.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: groupdel.8,v 1.4 1998/12/28 20:35:06 marekm Exp $ +.\" $Id: groupdel.8,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH GROUPDEL 8 .SH NAME @@ -57,4 +57,4 @@ You must remove the user before you remove the group. .BR groupadd (8), .BR groupmod (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/groupmod.8 b/man/groupmod.8 index ff3a537a..28815dc8 100644 --- a/man/groupmod.8 +++ b/man/groupmod.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: groupmod.8,v 1.4 1998/12/28 20:35:07 marekm Exp $ +.\" $Id: groupmod.8,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH GROUPMOD 8 .SH NAME @@ -63,4 +63,4 @@ The name of the group will be changed from \fIgroup\fR to .BR groupadd (8), .BR groupdel (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/groups.1 b/man/groups.1 index 075a87b5..bae98989 100644 --- a/man/groups.1 +++ b/man/groups.1 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: groups.1,v 1.4 1998/12/28 20:35:08 marekm Exp $ +.\" $Id: groups.1,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH GROUPS 1 .SH NAME @@ -54,4 +54,4 @@ effective group ID. .BR getgid (2), .BR getgroups (2) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/grpck.8 b/man/grpck.8 index 50109f37..3d2f7948 100644 --- a/man/grpck.8 +++ b/man/grpck.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: grpck.8,v 1.4 1998/12/28 20:35:09 marekm Exp $ +.\" $Id: grpck.8,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH GRPCK 1 .SH NAME @@ -98,4 +98,4 @@ Cannot lock group files .IP 5 5 Cannot update group files .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/id.1 b/man/id.1 index 40cfdeac..19cf6a24 100644 --- a/man/id.1 +++ b/man/id.1 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: id.1,v 1.4 1998/12/28 20:35:10 marekm Exp $ +.\" $Id: id.1,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH ID 1 .SH NAME @@ -51,4 +51,4 @@ support multiple concurrent group membership. .BR getgid (2), .BR getgroups (2) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/lastlog.8 b/man/lastlog.8 index 2c268479..85acc13b 100644 --- a/man/lastlog.8 +++ b/man/lastlog.8 @@ -26,7 +26,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)lastlog.8 3.3 08:24:58 29 Sep 1993 (National Guard Release) -.\" $Id: lastlog.8,v 1.5 1998/12/28 20:35:11 marekm Exp $ +.\" $Id: lastlog.8,v 1.6 2000/08/26 18:27:17 marekm Exp $ .\" .TH LASTLOG 8 .SH NAME @@ -34,15 +34,15 @@ lastlog \- examine lastlog file .SH SYNOPSIS .B lastlog .RB [ -u -.IR uid ] +.IR login-name ] .RB [ -t .IR days ] .SH DESCRIPTION \fBlastlog\fR formats and prints the contents of the last login log, \fI/var/log/lastlog\fR. The \fBlogin-name\fR, \fBport\fR, and \fBlast login time\fR will be printed. -The default (no flags) causes lastlog entries to be printed in UID -order. +The default (no flags) causes lastlog entries to be printed, sorted +by the numerical UID. Entering \fB-u \fIlogin-name\fR flag will cause the lastlog record for \fIlogin-name\fR only to be printed. Entering \fB-t \fIdays\fR will cause only the @@ -58,6 +58,6 @@ Large gaps in uid numbers will cause the lastlog program to run longer with no output to the screen (i.e. if mmdf=800 and last uid=170, program will appear to hang as it processes uid 171-799). .SH AUTHORS -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) .br Phillip Street diff --git a/man/login.1 b/man/login.1 index 8735ad80..45a42b5f 100644 --- a/man/login.1 +++ b/man/login.1 @@ -25,15 +25,17 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: login.1,v 1.6 1999/06/07 16:40:44 marekm Exp $ +.\" $Id: login.1,v 1.7 2000/08/26 18:27:17 marekm Exp $ .\" .TH LOGIN 1 .SH NAME login \- Begin session on the system .SH SYNOPSIS -.B login -.RI [ username " [" environmental-variables ]] -.\" XXX - document -f -h -p -r options +\fBlogin\fR [\fB-p\fR] [\fIusername\fR] [\fIENV=VAR ...\fR] +.br +\fBlogin\fR [\fB-p\fR] [\fB-h\fR \fIhost\fR] [\fB-f\fR \fIusername\fR] +.br +\fBlogin\fR [\fB-p\fR] \fB-r\fR \fIhost\fR .SH DESCRIPTION .B login is used to establish a new session with the system. @@ -94,6 +96,25 @@ An initialization script for your command interpreter may also be executed. Please see the appropriate manual section for more information on this function. +.PP +A subsystem login is indicated by the presense of a "*" as the first +character of the login shell. The given home directory will be used as +the root of a new filesystem which the user is actually logged into. +.SH OPTIONS +.TP +.B -p +Preserve environment. +.TP +.B -f +Do not perform authentication, user is preauthenticated. +.TP +.B -h +Name of the remote host for this login. +.TP +.B -r +Perform autologin protocol for rlogin. +.PP +The \fB-r -h\fP and \fB-f\fP options are only used when \fBlogin\fP is invoked by root. .SH CAVEATS .PP This version of \fBlogin\fR has many compilation options, only some of which @@ -131,4 +152,4 @@ $HOME/.hushlogin \- suppress printing of system messages .BR passwd (5), .BR nologin (5) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/login.defs.5 b/man/login.defs.5 index 69414238..d21a3cc9 100644 --- a/man/login.defs.5 +++ b/man/login.defs.5 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: login.defs.5,v 1.6 1998/12/28 20:35:13 marekm Exp $ +.\" $Id: login.defs.5,v 1.7 2000/08/26 18:27:17 marekm Exp $ .\" .TH LOGIN 5 .SH NAME @@ -79,6 +79,14 @@ program. It can be any combination of letters for Full name, Room number, Work phone, and Home phone, respectively. If not specified, only the superuser can make any changes. .\" +.IP "CLOSE_SESSIONS (boolean)" +Enable pam_close_session() calling. When using normal (pam_unix.so) +session handling modules, this is not needed. However with modules +(such as kerberos or other persistent session models), +.B login +needs to fork and wait for the shell to exit, so that sessions can be +cleaned up. +.\" .IP "CONSOLE (string)" If specified, this definition provides for a restricted set of lines on which root logins will be allowed. An attempted root login which @@ -134,7 +142,8 @@ dialups, one per line, for example: .fi .\" .IP "ENVIRON_FILE (string)" -XXX needs to be documented. +File containing a list of environment variables (one per line) to set +when logging in or su'ing. .\" .IP "ENV_HZ (string)" This parameter specifies a value for an HZ environment parameter. @@ -502,7 +511,8 @@ type and a terminal line, seperated by whitespace, for example: .ft R .sp .fi -This information is used to initialize the TERM environment parameter. +This information is only used to initialize the TERM environment parameter +when it does not already exist. A line starting with a ``#'' pound sign will be treated as a comment. If this paramter is not specified, the file does not exist, or the terminal line is not found in the file, then the TERM environment parameter will not @@ -558,6 +568,6 @@ manual page. .BR porttime (5), .BR faillog (8) .SH AUTHORS -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) .br Chip Rosenthal (chip@unicom.com) diff --git a/man/logoutd.8 b/man/logoutd.8 index 9acf4c31..b611d4f9 100644 --- a/man/logoutd.8 +++ b/man/logoutd.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: logoutd.8,v 1.4 1998/12/28 20:35:14 marekm Exp $ +.\" $Id: logoutd.8,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH LOGOUTD 8 .SH NAME @@ -48,4 +48,4 @@ is terminated. .br /etc/utmp \- current login sessions .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/mkpasswd.8 b/man/mkpasswd.8 index 13be2c43..ad4ed796 100644 --- a/man/mkpasswd.8 +++ b/man/mkpasswd.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: mkpasswd.8,v 1.4 1998/12/28 20:35:15 marekm Exp $ +.\" $Id: mkpasswd.8,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH MKPASSWD 1 .SH NAME @@ -78,4 +78,4 @@ deleted or corrupted database file. .BR group (5), .BR shadow (5) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/newgrp.1 b/man/newgrp.1 index bfd5a157..f3308357 100644 --- a/man/newgrp.1 +++ b/man/newgrp.1 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: newgrp.1,v 1.5 1999/08/27 19:02:51 marekm Exp $ +.\" $Id: newgrp.1,v 1.6 2000/08/26 18:27:17 marekm Exp $ .\" .TH NEWGRP 1 .SH NAME @@ -77,4 +77,4 @@ only some of which may be in use at any particular site. .BR id (1), .BR su (1) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/newusers.8 b/man/newusers.8 index 02c4c584..447b8d91 100644 --- a/man/newusers.8 +++ b/man/newusers.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: newusers.8,v 1.4 1998/12/28 20:35:17 marekm Exp $ +.\" $Id: newusers.8,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH NEWUSERS 8 .SH NAME @@ -65,4 +65,4 @@ The input file must be protected since it contains unencrypted passwords. .BR passwd (1), .BR useradd (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/passwd.1 b/man/passwd.1 index 20c6b1ff..8090db76 100644 --- a/man/passwd.1 +++ b/man/passwd.1 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: passwd.1,v 1.4 1998/12/28 20:35:18 marekm Exp $ +.\" $Id: passwd.1,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH PASSWD 1 .SH NAME @@ -183,8 +183,8 @@ is enabled and they are not logged into the NIS server. /etc/shadow \- encrypted user passwords .SH SEE ALSO .BR passwd (3), -.BR shadow (3), +.\" .BR shadow (3), .BR group (5), .BR passwd (5) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/passwd.5 b/man/passwd.5 index d93758b1..3b21d092 100644 --- a/man/passwd.5 +++ b/man/passwd.5 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: passwd.5,v 1.4 1998/12/28 20:35:19 marekm Exp $ +.\" $Id: passwd.5,v 1.5 2000/08/26 18:27:17 marekm Exp $ .\" .TH PASSWD 5 .SH NAME @@ -108,4 +108,4 @@ If this field is empty, it defaults to the value \fB/bin/sh\fR. .BR pwconv (8), .BR pwunconv (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/pl/Makefile.am b/man/pl/Makefile.am new file mode 100644 index 00000000..2ef48e2c --- /dev/null +++ b/man/pl/Makefile.am @@ -0,0 +1,60 @@ +AUTOMAKE_OPTIONS = 1.0 foreign + +manpldir = $(mandir)/pl +manpl1dir = $(manpldir)/man1 +manpl3dir = $(manpldir)/man3 +manpl5dir = $(manpldir)/man5 +manpl8dir = $(manpldir)/man8 + + +manpl1_DATA = \ + chage.1 \ + chfn.1 \ + chsh.1 \ + groups.1 \ + gpasswd.1 \ + id.1 \ + login.1 \ + newgrp.1 \ + passwd.1 \ + su.1 + +manpl3_DATA = \ + pw_auth.3 \ + shadow.3 + +manpl5_DATA = \ + d_passwd.5 \ + dialups.5 \ + faillog.5 \ + limits.5 \ + login.access.5 \ + login.defs.5 \ + passwd.5 \ + porttime.5 \ + shadow.5 \ + suauth.5 + +manpl8_DATA = \ + chpasswd.8 \ + dpasswd.8 \ + faillog.8 \ + groupadd.8 \ + groupdel.8 \ + groupmod.8 \ + grpck.8 \ + lastlog.8 \ + logoutd.8 \ + mkpasswd.8 \ + newusers.8 \ + pwauth.8 \ + pwck.8 \ + pwconv.8 \ + shadowconfig.8 \ + sulogin.8 + useradd.8 \ + userdel.8 \ + usermod.8 \ + vipw.8 + +EXTRA_DIST = $(manpl1_DATA) $(manpl3_DATA) $(manpl5_DATA) $(manpl8_DATA) diff --git a/old/Makefile.in b/man/pl/Makefile.in similarity index 50% rename from old/Makefile.in rename to man/pl/Makefile.in index 996e51fd..277746be 100644 --- a/old/Makefile.in +++ b/man/pl/Makefile.in @@ -10,9 +10,6 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. -# This is a dummy Makefile.am to get automake work flawlessly, -# and also cooperate to make a distribution for `make dist' - SHELL = @SHELL@ @@ -41,7 +38,7 @@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. +top_builddir = ../.. ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ @@ -82,6 +79,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ @@ -104,11 +102,32 @@ VERSION = @VERSION@ YACC = @YACC@ l = @l@ -EXTRA_DIST = Makefile.linux Makefile.sun4 Makefile.svr4 Makefile.xenix config.h.linux config.h.sun4 config.h.svr4 config.h.xenix orig-config.h pwconv.8 pwconv-old.8 pwconv-old.c pwd.h.m4 pwunconv.8 pwunconv-old.8 pwunconv-old.c scologin.c vipw.8 +AUTOMAKE_OPTIONS = 1.0 foreign + +manpldir = $(mandir)/pl +manpl1dir = $(manpldir)/man1 +manpl3dir = $(manpldir)/man3 +manpl5dir = $(manpldir)/man5 +manpl8dir = $(manpldir)/man8 + +manpl1_DATA = chage.1 chfn.1 chsh.1 groups.1 gpasswd.1 id.1 login.1 newgrp.1 passwd.1 su.1 + + +manpl3_DATA = pw_auth.3 shadow.3 + + +manpl5_DATA = d_passwd.5 dialups.5 faillog.5 limits.5 login.access.5 login.defs.5 passwd.5 porttime.5 shadow.5 suauth.5 + +manpl8_DATA = chpasswd.8 dpasswd.8 faillog.8 groupadd.8 groupdel.8 groupmod.8 grpck.8 lastlog.8 logoutd.8 mkpasswd.8 newusers.8 pwauth.8 pwck.8 pwconv.8 shadowconfig.8 sulogin.8 + + +EXTRA_DIST = $(manpl1_DATA) $(manpl3_DATA) $(manpl5_DATA) $(manpl8_DATA) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../config.h +CONFIG_HEADER = ../../config.h CONFIG_CLEAN_FILES = +DATA = $(manpl1_DATA) $(manpl3_DATA) $(manpl5_DATA) $(manpl8_DATA) + DIST_COMMON = Makefile.am Makefile.in @@ -119,19 +138,95 @@ GZIP_ENV = --best all: all-redirect .SUFFIXES: $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps old/Makefile + cd $(top_srcdir) && $(AUTOMAKE) --foreign --include-deps man/pl/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +install-manpl1DATA: $(manpl1_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(manpl1dir) + @list='$(manpl1_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl1dir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl1dir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(manpl1dir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(manpl1dir)/$$p; \ + fi; fi; \ + done + +uninstall-manpl1DATA: + @$(NORMAL_UNINSTALL) + list='$(manpl1_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(manpl1dir)/$$p; \ + done + +install-manpl3DATA: $(manpl3_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(manpl3dir) + @list='$(manpl3_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl3dir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl3dir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(manpl3dir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(manpl3dir)/$$p; \ + fi; fi; \ + done + +uninstall-manpl3DATA: + @$(NORMAL_UNINSTALL) + list='$(manpl3_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(manpl3dir)/$$p; \ + done + +install-manpl5DATA: $(manpl5_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(manpl5dir) + @list='$(manpl5_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl5dir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl5dir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(manpl5dir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(manpl5dir)/$$p; \ + fi; fi; \ + done + +uninstall-manpl5DATA: + @$(NORMAL_UNINSTALL) + list='$(manpl5_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(manpl5dir)/$$p; \ + done + +install-manpl8DATA: $(manpl8_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(manpl8dir) + @list='$(manpl8_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl8dir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(manpl8dir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(manpl8dir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(manpl8dir)/$$p; \ + fi; fi; \ + done + +uninstall-manpl8DATA: + @$(NORMAL_UNINSTALL) + list='$(manpl8_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(manpl8dir)/$$p; \ + done tags: TAGS TAGS: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -subdir = old +subdir = man/pl distdir: $(DISTFILES) @for file in $(DISTFILES); do \ @@ -155,19 +250,23 @@ installcheck: installcheck-am install-exec-am: install-exec: install-exec-am -install-data-am: +install-data-am: install-manpl1DATA install-manpl3DATA \ + install-manpl5DATA install-manpl8DATA install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am -uninstall-am: +uninstall-am: uninstall-manpl1DATA uninstall-manpl3DATA \ + uninstall-manpl5DATA uninstall-manpl8DATA uninstall: uninstall-am -all-am: Makefile +all-am: Makefile $(DATA) all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: + $(mkinstalldirs) $(DESTDIR)$(manpl1dir) $(DESTDIR)$(manpl3dir) \ + $(DESTDIR)$(manpl5dir) $(DESTDIR)$(manpl8dir) mostlyclean-generic: @@ -198,13 +297,19 @@ maintainer-clean-am: maintainer-clean-generic distclean-am maintainer-clean: maintainer-clean-am -.PHONY: tags distdir info-am info dvi-am dvi check check-am \ -installcheck-am installcheck install-exec-am install-exec \ -install-data-am install-data install-am install uninstall-am uninstall \ -all-redirect all-am all installdirs mostlyclean-generic \ -distclean-generic clean-generic maintainer-clean-generic clean \ -mostlyclean distclean maintainer-clean - +.PHONY: uninstall-manpl1DATA install-manpl1DATA uninstall-manpl3DATA \ +install-manpl3DATA uninstall-manpl5DATA install-manpl5DATA \ +uninstall-manpl8DATA install-manpl8DATA tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs \ +mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + useradd.8 \ + userdel.8 \ + usermod.8 \ + vipw.8 # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/man/pl/chage.1 b/man/pl/chage.1 new file mode 100644 index 00000000..48f1c879 --- /dev/null +++ b/man/pl/chage.1 @@ -0,0 +1,110 @@ +.\" {PTM/WK/1999-09-16} +.\" Copyright 1990 - 1994 Julianne Frances Haugh +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.TH CHAGE 1 +.SH NAZWA +chage \- zmieñ informacjê o terminie wa¿no¶ci has³a u¿ytkownika +.SH SK£ADNIA +.TP 6 +.B chage +.RB [ -m +.IR mindni ] +.RB [ -M +.IR maxdni ] +.RB [ -d +.IR ostatni ] +.RB [ -I +.IR nieaktywne ] +.br +.RB [ -E +.IR data_wa¿no¶ci ] +.RB [ -W +.IR dni_ostrzegania ] +.I u¿ytkownik +.TP 6 +.B chage -l \fIu¿ytkownik\fR +.SH OPIS +\fBchage\fR zmienia liczbê dni pomiêdzy zmianami has³a i datê ostatniej +zmiany has³a. Informacjê tê system wykorzystuje do ustalenia, kiedy +u¿ytkownik musi zmieniæ has³o. +Polecenia \fBchage\fR mo¿e u¿yæ tylko u¿ytkownik root, za wyj±tkiem +opcji \fB-l\fR. Mo¿e siê ni± pos³u¿yæ siê u¿ytkownik nieuprzywilejowany +do stwierdzenia, kiedy wygasa jego w³asne has³o lub konto. +.PP +Opcja \fB-m\fR ustawia minimaln± liczbê dni pomiêdzy zmianami has³a +na warto¶æ \fImindni\fR. Warto¶æ zerowa oznacza, ¿e u¿ytkownik mo¿e je zmieniaæ +w dowolnym czasie. +.PP +Opcja \fB-M\fR ustawia maksymaln± liczbê dni, przez jakie has³o jest wa¿ne +na warto¶æ \fImaxdni\fR. +Gdy \fImaxdni\fR plus \fIostatni\fR jest mniejsze ni¿ bie¿±cy dzieñ, +od u¿ytkownika wymagana jest zmiana has³a przed skorzystaniem z konta. +Zdarzenie to mo¿e byæ zaplanowane z wyprzedzeniem przez wykorzystanie +opcji \fB-W\fR, ostrzegaj±cej zawczasu u¿ytkownika o zbli¿aj±cym siê terminie +zmiany. +.PP +Opcja \fB-d\fR ustawia liczbê dni od 1 stycznia 1970 do dnia kiedy ostatnio +zmieniono has³o na \fIostatni\fR. Data mo¿e równie¿ zostaæ podana w postaci +RRRR-MM-DD (lub postaci powszechniej u¿ywanej w twoim regionie). +.PP +Opcja \fB-E\fR s³u¿y do ustawiania daty, od której konto u¿ytkownika +nie bêdzie ju¿ dostêpne. +\fIdata_wa¿no¶ci\fR jest liczb± dni od 1 stycznia 1970, od której konto jest +blokowane. Data mo¿e byæ te¿ wyra¿ona w postaci RRRR-MM-DD (lub innej, +powszechniej u¿ywanej w twoim regionie). +U¿ytkownik, którego konto jest zablokowane musi skontaktowaæ siê +z administratorem systemu zanim bêdzie móg³ z niego ponownie skorzystaæ. +.PP +Opcja \fB-I\fR s³u¿y do ustawiania czasu nieaktywno¶ci po wyga¶niêciu +has³a, po którym konto jest blokowane. Parametr \fInieaktywne\fR podaje +liczbê dni nieaktywno¶ci. Warto¶æ 0 wy³±cza tê funkcjê. +U¿ytkownik, którego konto jest zablokowane musi skontaktowaæ siê +z administratorem systemu zanim bêdzie móg³ z niego ponownie skorzystaæ. +.PP +Opcja \fB-W\fR s³u¿y do ustawiania ostrzegania przed wymagan± zmian± has³a. +Parametr \fIdni_ostrzegania\fR jest liczb± dni przed up³ywem wa¿no¶ci has³a; +od tego dnia u¿ytkownik bêdzie ostrzegany o nadchodz±cym terminie. +.PP +Wszystkie powy¿sze warto¶ci przechowywane s± jako liczba dni, je¿eli u¿ywany +jest dodatkowy, przes³aniany plik hase³ (shadow). Jednak je¿eli u¿ywany jest +standardowy plik hase³, to s± one zamieniane (w obie strony) na liczbê tygodni. +Z powodu powy¿szej konwersji mog± pojawiæ siê b³êdy zaokr±gleñ. +.PP +Je¶li nie podano ¿adnej opcji, to \fBchage\fR dzia³a w trybie interaktywnym, +proponuj±c u¿ytkownikowi warto¶ci bie¿±ce dla ka¿dego z pól. Wprowad¼ now± +warto¶æ by zmieniæ pole, lub pozostaw pust± by u¿yæ warto¶ci bie¿±cej. +Bie¿±ca warto¶æ pola wy¶wietlana jest miêdzy par± znaczników \fB[ ]\fR. +.SH PLIKI +.IR /etc/passwd " - informacje o kontach u¿ytkowników" +.br +.IR /etc/shadow " - chronione informacje o kontach u¿ytkowników" +.SH ZOBACZ TAK¯E +.BR passwd (5), +.BR shadow (5) +.SH AUTOR +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/pl/chfn.1 b/man/pl/chfn.1 new file mode 100644 index 00000000..8b254764 --- /dev/null +++ b/man/pl/chfn.1 @@ -0,0 +1,77 @@ +.\" {PTM/WK/1999-09-25} +.\" Copyright 1990 - 1994 Julianne Frances Haugh +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.TH CHFN 1 +.SH NAZWA +chfn \- zmieñ nazwê u¿ytkownika i informacjê o nim +.SH SK£ADNIA +.TP 5 +.B chfn +.RB [ -f +.IR pe³na_nazwa ] +.RB [ -r +.IR nr_pokoju ] +.br +.RB [ -w +.IR tel_s³u¿b ] +.RB [ -h +.IR tel_dom ] +.RB [ -o +.IR inne ] +.RI [ u¿ytkownik ] +.SH OPIS +\fBchfn\fR zmienia pe³n± nazwê (imiê i nazwisko), telefon s³u¿bowy i domowy +dla danego konta u¿ytkownika. Informacja ta jest zwykle drukowana przez +\fBfinger\fR(1) i podobne mu programy. +Zwyk³y u¿ytkownik mo¿e zmieniaæ wy³±cznie pola opisuj±ce w³asne konto. +Tylko superu¿ytkownik mo¿e zmieniaæ pola dowolnego konta. +Równie¿ tylko on mo¿e pos³u¿yæ siê opcj± \fB-o\fR by zmieniæ niezdefiniowane +czê¶ci pola GECOS. +.PP +Jedynym ograniczeniem nak³adanym na zawarto¶æ pól jest zakaz u¿ywania w nich +znaków kontrolnych oraz przecinka, dwukropka i znaku równo¶ci. +Pola \fIinne\fR (other) nie obowi±zuje to ograniczenie. Pole to s³u¿y do +przechowywania informacji rozliczeniowej u¿ywanej przez inne aplikacje. +.PP +Je¶li nie wybrano ¿adnej z opcji, to \fBchfn\fR dzia³a w trybie interaktywnym, +proponuj±c u¿ytkownikowi warto¶ci bie¿±ce dla ka¿dego z pól. Wprowad¼ now± +warto¶æ by zmieniæ pole, lub pozostaw pust± by u¿yæ warto¶ci bie¿±cej. +Bie¿±ca warto¶æ pola wy¶wietlana jest miêdzy par± znaczników \fB[ ]\fR. +Bez podania opcji \fBchfn\fR pyta o konto u¿ytkownika, które ma podlegaæ +zmianie. +.SH PLIKI +.IR /etc/passwd " - informacja o kontach u¿ytkowników" +.SH ZOBACZ TAK¯E +.BR passwd (5) +.SH AUTOR +Julianne Frances Haugh (jfh@austin.ibm.com) +.SH OD T£UMACZA +Niniejsza dokumentacja opisuje polecenie wchodz±ce w sk³ad pakietu +shadow-password. +Z uwagi na powtarzaj±ce siê nazwy poleceñ, upewnij siê, ¿e korzystasz +z w³a¶ciwej dokumentacji. diff --git a/man/pl/chpasswd.8 b/man/pl/chpasswd.8 new file mode 100644 index 00000000..eea01899 --- /dev/null +++ b/man/pl/chpasswd.8 @@ -0,0 +1,62 @@ +.\" {PTM/WK/1999-09-16} +.\" Copyright 1991, Julianne Frances Haugh +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.TH CHPASSWD 8 +.SH NAZWA +chpasswd - wsadowa aktualizacja pliku hase³ +.SH SK£ADNIA +.B chpasswd +.RB [ -e ] +.SH OPIS +\fBchpasswd\fR odczytuje ze standardowego wej¶cia plik zawieraj±cy pary: +nazwa u¿ytkownika i has³o. Odczytan± informacje wykorzystuje do aktualizacji +grupy istniej±cych u¿ytkowników. +Bez prze³±cznika -e, has³a traktowane s± jako podane jawnie. Z prze³±cznikiem +-e has³a powinny byæ dostarczone w postaci zakodowanej (encrypted). +Ka¿dy wiersz ma postaæ +.sp 1 + \fInazwa_U¿ytkownika\fR:\fIhas³o\fR +.sp 1 +Dany u¿ytkownik musi istnieæ. +Je¿eli bêdzie to konieczne, podane has³o zostanie zakodowane a wiek has³a, +je¶li wystêpuje, zaktualizowany. +.PP +Polecenie to przeznaczone jest do u¿ytku w du¿ych systemach, gdzie aktualizuje +siê wiele kont naraz. +.SH PRZESTROGI +.\" Po u¿yciu \fBchpasswd\fR musi zostaæ wykonane polecenie \fImkpasswd\fR, +.\" aktualizuj±ce pliki DBM hase³ (DBM password files). +Plik ¼ród³owy, je¶li zawiera niezakodowane has³a, musi byæ chroniony. +.\" Polecenie to mo¿e byæ zaniechane na rzecz polecenia newusers(8). +.SH ZOBACZ TAK¯E +.\" mkpasswd(8), passwd(1), useradd(1) +.BR passwd (1), +.BR useradd (8), +.BR newusers (8) +.SH AUTOR +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/pl/chsh.1 b/man/pl/chsh.1 new file mode 100644 index 00000000..7f20e865 --- /dev/null +++ b/man/pl/chsh.1 @@ -0,0 +1,70 @@ +.\" {PTM/WK/1999-09-25} +.\" Copyright 1990, Julianne Frances Haugh +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.TH CHSH 1 +.SH NAZWA +chsh \- zmieñ pow³okê zg³oszeniow± +.SH SK£ADNIA +.TP 5 +.B chsh +.RB [ -s +.IR pow³oka ] +.RI [ u¿ytkownik ] +.SH OPIS +\fBchsh\fR zmienia pow³okê zg³oszeniow± u¿ytkownika. +Okre¶la nazwê pocz±tkowego polecenia zg³oszeniowego u¿ytkownika. +Zwyk³y u¿ytkownik mo¿e zmieniæ wy³±cznie pow³okê zg³oszeniow± w³asnego konta, +superu¿ytkownik mo¿e zmieniæ pow³okê zg³oszeniow± dla dowolnego konta. +.PP +Jedynym ograniczeniem na³o¿onym na pow³okê zg³oszeniow± jest to, ¿e jej nazwa +musi byæ ujêta w \fI/etc/shells\fR, chyba ¿e polecenie \fBchsh\fR wywo³ywane +jest przez superu¿ytkownika, wówczas mo¿e byæ podana nazwa dowolnego polecenia. +U¿ytkownicy kont z ograniczon± pow³ok± logowania nie mog± jej zmieniaæ. +Odradza siê z tego powodu umieszczanie \fB/bin/rsh\fR w pliku \fI/etc/shells\fR, +gdy¿ przypadkowa zmiana na pow³okê ograniczon± uniemo¿liwi u¿ytkownikowi +jak±kolwiek zmianê pow³oki logowania, nawet z powrotem na dotychczasow±. +.PP +je¿eli nie podano opcji \fB-s\fR, to \fBchsh\fR dzia³a w trybie interaktywnym, +proponuj±c u¿ytkownikowi bie¿±c± pow³okê logowania. Wprowad¼ now± warto¶æ +do pola lub pozostaw je puste, by pozostawiæ aktualn± warto¶æ. +Bie¿±ca warto¶æ wy¶wietlana jest pomiêdzy par± znaczników \fB[ ]\fR. +.SH PLIKI +.IR /etc/passwd " - informacja o kontach u¿ytkowników" +.br +.IR /etc/shells " - lista dozwolonych pow³ok zg³oszeniowych" +.SH ZOBACZ TAK¯E +.BR chfn (1), +.BR passwd (5) +.SH AUTOR +Julianne Frances Haugh (jfh@austin.ibm.com) +.SH OD T£UMACZA +Niniejsza dokumentacja opisuje polecenie wchodz±ce w sk³ad pakietu +shadow-password. +Istnieje wiele programów i skryptów do zarz±dzania kontami +u¿ytkowników czy grup. Z uwagi na powtarzaj±ce siê nazwy poleceñ, upewnij +siê, ¿e korzystasz z w³a¶ciwej dokumentacji. diff --git a/man/pl/d_passwd.5 b/man/pl/d_passwd.5 new file mode 100644 index 00000000..0b3989b2 --- /dev/null +++ b/man/pl/d_passwd.5 @@ -0,0 +1,30 @@ +.\" +.\" {PTM/WK/1999-09-22} +.\" +.TH D_PASSWD 5 +.SH NAZWA +d_passwd - plik hase³ telefonicznych +.SH OPIS +Z dostêpem do systemu przez liniê telefoniczn± zwi±zane s± dwa pliki +konfiguracyjne: \fI/etc/d_passwd\fR, zawieraj±cy has³a i \fI/etc/dialups\fR, +zawieraj±cy linie. +Ka¿dorazowo, zanim u¿ytkownik ³±cz±cy siê za po¶rednictwem modemu otrzyma +dostêp do systemu, musi podaæ has³o telefoniczne. Has³a te s± niezale¿ne +od hase³ u¿ytkowników i przypisane nie do u¿ytkownika, ani linii terminalowej, +lecz do pow³oki zg³oszeniowej u¿ytkownika. +Do rozpoczêcia sesji wymagane jest zarówno has³o u¿ytkownika jak +i telefoniczne. Zauwa¿ jednak, ¿e has³a telefoniczne nie posiadaj± kontroli +terminu wa¿no¶ci. Nale¿y, po uzgodnieniu, okresowo zmieniaæ je rêcznie. +W pliku \fId_passwd\fR kolejne wiersze definiuj± has³a dla rozmaitych pow³ok: +.br +.sp 1 + pow³oka:zakodowane_has³o: +.br +.sp 1 +Zauwa¿, ¿e po polu has³a wystêpuje dwukropek. Pow³oka powinna byæ +okre¶lona przez bezwzglêdn± nazwê ¶cie¿kow± pliku interpretatora poleceñ. +Do zarz±dzania has³ami telefonicznymi s³u¿y polecenie \fBdpasswd\fR (1). +.SH ZOBACZ TAK¯E +.BR dpasswd (1), +.BR login (1), +.BR dialups (5). diff --git a/man/pl/dialups.5 b/man/pl/dialups.5 new file mode 100644 index 00000000..3edb8a2c --- /dev/null +++ b/man/pl/dialups.5 @@ -0,0 +1,24 @@ +.\" +.\" {PTM/WK/1999-09-22} +.\" +.TH DIALUPS +.SH NAZWA +dialups - plik terminalowych linii telefonicznych +.SH OPIS +Z dostêpem do systemu przez liniê telefoniczn± zwi±zane s± dwa pliki +konfiguracyjne: \fI/etc/d_passwd\fR, zawieraj±cy has³a i \fI/etc/dialups\fR, +zawieraj±cy linie. W ka¿dym wierszu pliku \fIdialups\fR zawarta jest nazwa +pliku specjalnego linii terminalowej, do której pod³±czony jest modem: +.br +.sp 1 + /dev/tty12 + /dev/tty13 +.br +.sp 1 +Warto jest uj±æ w nim \fBwszystkie\fR linie z dostêpem modemowym. +Po³±czenie z linii pominiêtej nie bêdzie dodatkowo weryfikowane - u¿ytkownicy +³±cz±cy siê ni± nie bêd± musieli podawaæ has³a telefonicznego. +.SH ZOBACZ TAK¯E +.BR dpasswd (1), +.BR login (1), +.BR d_passwd (5). diff --git a/old/pwunconv-old.8 b/man/pl/dpasswd.8 similarity index 62% rename from old/pwunconv-old.8 rename to man/pl/dpasswd.8 index 381dc808..b5cf5624 100644 --- a/old/pwunconv-old.8 +++ b/man/pl/dpasswd.8 @@ -1,4 +1,5 @@ -.\" Copyright 1989 - 1993 Julianne Frances Haugh +.\" {PTM/WK/1999-09-17} +.\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -25,33 +26,31 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: pwunconv-old.8,v 1.1 1997/09/29 22:01:31 marekm Exp $ -.\" -.TH PWUNCONV 8 -.SH NAME -pwunconv \- restore old password file from shadow password file -.SH SYNOPSIS -.B pwunconv -.SH DESCRIPTION -\fBPwunconv\fR copies the password file information from the shadow -password file, -merging entries from an optional existing shadow file. -The new password file is left in \fInpasswd\fR. -This file is created with modes which allow read access for -the owner only. -There is no new shadow file. -Password aging information is translated where possible. -There is some loss of resolution in the password aging information. -.SH FILES -/etc/passwd \- old encrypted passwords and password aging +.TH DPASSWD 8 +.SH NAZWA +\fBdpasswd\fR - zmieñ has³o telefoniczne +.SH SK£ADNIA +.B dpasswd +.RB [ - ( a | d )] +.I pow³oka +.SH OPIS +\fBdpasswd\fR dodaje, usuwa i aktualizuje has³a telefoniczne (dialup +passwords) dla pow³ok logowania u¿ytkowników. +Ka¿dorazowo, gdy u¿ytkownik loguje siê przez liniê telefoniczn±, +¿±dane jest od niego has³o telefoniczne (po poprawnym uwierzytelnieniu +jego w³asnego has³a). +.PP +\fBdpasswd\fR bêdzie prosiæ o podanie nowego has³a dwukrotnie, by upewniæ +siê, ¿e zosta³o ono poprawnie wprowadzone. +.PP +Argument \fIpow³oka\fR musi byæ pe³n±, ¶cie¿kow± nazw± programu zg³oszenia +(logowania). +.SH PLIKI .br -/etc/shadow \- previously converted shadow password file +.I /etc/d_passwd .br -./npasswd \- new password file -.SH SEE ALSO -.BR passwd (1), -.BR passwd (5), -.BR shadow (5), -.BR pwconv (8) -.SH AUTHOR -Julianne Frances Haugh (jfh@tab.com) +.I /etc/dialups +.SH ZOBACZ TAK¯E +.BR login (1) +.SH AUTOR +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/old/pwconv.8 b/man/pl/faillog.5 similarity index 58% rename from old/pwconv.8 rename to man/pl/faillog.5 index c13bdba4..6fc16cdf 100644 --- a/old/pwconv.8 +++ b/man/pl/faillog.5 @@ -1,4 +1,4 @@ -.\" Copyright 1989 - 1993, Julianne Frances Haugh +.\" Copyright 1989 - 1994, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -25,35 +25,35 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: pwconv.8,v 1.1 1997/12/07 23:27:13 marekm Exp $ +.\" Translation (c) 1998 "Gwidon S. Naskrent" +.\" $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) diff --git a/man/pl/faillog.8 b/man/pl/faillog.8 new file mode 100644 index 00000000..a180cc4b --- /dev/null +++ b/man/pl/faillog.8 @@ -0,0 +1,95 @@ +.\" {PTM/WK/1999-09-18} +.\" Copyright 1989 - 1994, Julianne Frances Haugh +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.TH FAILLOG 8 +.SH NAZWA +faillog \- sprawd¼ faillog i ustaw limity b³êdnych logowañ +.SH SK£ADNIA +.TP 8 +.B faillog +.RB [ -u +.IR nazwa ] +.RB [ -a ] +.RB [ -t +.IR dni ] +.RB [ -m +.IR max ] +.RB [ -pr ] +.SH OPIS +\fBfaillog\fR formatuje zawarto¶æ rejestru nieudanych prób rozpoczêcia sesji, +\fI/var/log/faillog\fR, oraz obs³uguje ograniczenia i liczniki b³êdnych prób. +Kolejno¶æ argumentów \fBfaillog\fR jest znacz±ca. Ka¿dy z argumentów jest +natychmiast przetwarzany w zadanej kolejno¶ci. +.PP +Flaga \fB-p\fR powoduje, ¿e zapisy o nieudanych logowaniach wy¶wietlane bêd± +w kolejno¶ci rosn±cych identyfikatorów u¿ytkowników (UID). +Pos³u¿enie siê flag± \fB-u \fInazwa\fR spowoduje, ¿e zostanie wy¶wietlony +wy³±cznie zapis dotycz±cy u¿ytkownika o tej \fInazwie\fR. +U¿ycie \fB-t \fIdni\fR powoduje wy¶wietlanie wy³±cznie nieudanych prób +logowania ¶wie¿szych ni¿ sprzed zadanej liczby \fIdni\fR. +Flaga \fB-t\fR uniewa¿nia u¿ycie \fB-u\fR. +Flaga \fB-a\fR powoduje wybranie wszystkich u¿ytkowników. +W po³±czeniu z flag± \fB-p\fR flag, opcja ta wybiera wszystkich u¿ytkowników, +dla których kiedykolwiek odnotowano niepomy¶ln± próbê logowania. +Opcja ta nie ma znaczenia w po³±czeniu z flag± \fB-r\fR. +.PP +\fB-r\fR s³u¿y do zerowania licznika b³êdnych logowañ. Do poprawnego dzia³ania +tej opcji wymagane jest prawo zapisu do \fI/var/log/faillog\fR. +W po³±czeniu z \fB-u \fInazwa\fR s³u¿y do zerowania licznika b³êdów u¿ytkownika +o podanej \fInazwie\fR. +.PP +Flaga \fB-m\fR ustawia maksymaln± liczbê b³êdów logowania, po której konto +zostanie wy³±czone. Dla tej opcji wymagane jest prawo zapisu do +\fI/var/log/faillog\fR. +Argumenty \fB-m \fImax\fR powoduj±, ¿e wszystkie konta bêd± wy³±czane po +\fImax\fR nieudanych próbach logowania. +U¿ycie dodatkowo \fB-u \fInazwa\fR, ogranicza dzia³anie tej funkcji do +u¿ytkownika o podanej \fInazwie\fR. +Pos³u¿enie siê zerow± warto¶ci± \fImax\fR powoduje, ¿e liczba nieudanych prób +rozpoczêcia sesji jest nieograniczona. +Dla u¿ytkownika \fBroot\fR maksymalna liczba niepowodzeñ powinna byæ zawsze +ustawiona na 0, by zapobiec atakom typu denial of service (odmowa obs³ugi). +.PP +Opcje mog± byæ ³±czone w praktycznie dowolny sposób. Ka¿da z opcji \fB-p\fR, +\fB-r\fR i \fB-m\fR powoduje natychmiastowe wykonanie przy u¿yciu modyfikatora +\fB-u\fR lub \fB-t\fR. +.SH PRZESTROGI +\fBfaillog\fR wy¶wietla wy³±cznie u¿ytkowników, którzy od ostatniej nieudanej +próby nie mieli poprawnych logowañ. +Chc±c wy¶wietliæ u¿ytkownika, który po ostatniej pora¿ce logowa³ siê ju¿ +pomy¶lnie, musisz jawnie za¿±daæ o nim informacji przy pomocy flagi \fB-u\fR. +Mo¿esz tak¿e wy¶wietliæ wszystkich u¿ytkowników pos³uguj±c siê flag± \fB-a\fR. +.PP +W niektórych systemach zamiast /var/log wystêpuje /var/adm lub /usr/adm. +.SH PLIKI +.IR /var/log/faillog " - plik rejestracji b³êdów logowania" +.SH ZOBACZ TAK¯E +.BR login (1), +.BR faillog (5) +.SH AUTOR +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/pl/gpasswd.1 b/man/pl/gpasswd.1 new file mode 100644 index 00000000..17f5e4ba --- /dev/null +++ b/man/pl/gpasswd.1 @@ -0,0 +1,65 @@ +.\" {PTM/WK/1999-09-16} +.\" Copyright 1996, Rafal Maszkowski, rzm@pdi.net +.\" All rights reserved. You can redistribute this man page and/or +.\" modify it under the terms of the GNU General Public License as +.\" published by the Free Software Foundation; either version 2 of the +.\" License, or (at your option) any later version. +.\" +.TH GPASSWD 1 +.SH NAZWA +gpasswd \- administracja plikiem /etc/group +.br +.SH SK£ADNIA +.B gpasswd \fIgrupa\fR +.br +.B gpasswd -a +.I u¿ytkownik grupa +.br +.B gpasswd -d +.I u¿ytkownik grupa +.br +.B gpasswd -R +.I grupa +.br +.B gpasswd -r +.I grupa +.br +.B gpasswd +.RB [ -A +.IR u¿ytkownik ,...] +.RB [ -M +.IR u¿ytkownik ,...] +.I grupa +.SH OPIS +.B gpasswd +s³u¿y do administrowania plikiem \fI/etc/group\fR (oraz \fI/etc/gshadow\fR +je¶li zosta³a wykonana kompilacja ze zdefiniowanym SHADOWGRP). Ka¿da z grup +mo¿e posiadaæ administratorów, cz³onków i has³o. Administrator systemu mo¿e +pos³u¿yæ siê opcj± \fB-A\fR do zdefiniowania administratora(ów) grupy oraz +opcj± \fB-M\fR do zdefiniowania jej cz³onków. Posiada on wszystkie prawa +administratorów i cz³onków grup. +.PP +Administrator grupy mo¿e dodawaæ i usuwaæ u¿ytkowników przy pomocy, +odpowiednio, opcji \fB-a\fR i \fB-d\fR. Administratorzy mog± te¿ u¿ywaæ opcji +\fB-r\fR w celu usuniêcia has³a grupy. Je¿eli grupa nie posiada has³a, +to polecenia +.BR newgrp (1) +do przy³±czenia siê do grupy mog± u¿ywaæ tylko jej cz³onkowie. +Opcja \fB-R\fR wy³±cza dostêp do grupy za pomoc± polecenia +.BR newgrp (1). +.PP +.B gpasswd +wywo³ane przez administratora grupy tylko z nazw± grupy pyta o jej has³o. +Je¿eli has³o jest ustawione, to cz³onkowie grupy mog± nadal wykonywaæ +.BR newgrp (1) +bez has³a, inni musz± natomiast podaæ has³o. +.SH PLIKI +.IR /etc/group " - informacja o grupach" +.br +.IR /etc/gshadow " - chroniona informacja o grupach" +.SH ZOBACZ TAK¯E +.BR newgrp (1), +.BR groupadd (8), +.BR groupdel (8), +.BR groupmod (8), +.BR grpck (8) diff --git a/man/pl/groupadd.8 b/man/pl/groupadd.8 new file mode 100644 index 00000000..e80b4bd0 --- /dev/null +++ b/man/pl/groupadd.8 @@ -0,0 +1,72 @@ +.\" {PTM/WK/0.1/VIII-1999} +.\" Copyright 1991, Julianne Frances Haugh +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $Id: groupadd.8,v 1.1 2000/08/26 18:27:17 marekm Exp $ +.\" +.TH GROUPADD 8 +.SH NAZWA +groupadd - twórz now± grupê +.SH SK£ADNIA +.B groupadd +.RB [ -g +.I gid +.RB [ -o ]] +.I grupa +.SH OPIS +Polecenie \fBgroupadd\fR tworzy nowe konto grupy pos³uguj±c siê +warto¶ciami podanymi w wierszu poleceñ i domy¶lnymi warto¶ciami z systemu. +W razie potrzeby zostanie wprowadzona do systemu nowa grupa. +Polecenie \fBgroupadd\fR posiada opcje: +.TP +.BI -g " gid" +Numeryczna warto¶æ identyfikatora grupy. Warto¶æ ta musi byæ niepowtarzalna, +chyba ¿e u¿yto opcji \fB-o\fR. Warto¶æ ID grupy nie mo¿e byæ ujemna. Domy¶lnie +u¿ywana jest najmniejsza warto¶æ identyfikatora wiêksza ni¿ 99 a wiêksza ni¿ +jakiejkolwiek innej grupy. +Warto¶ci miêdzy 0 a 99 s± zwykle zarezerwowane dla kont systemowych. +.SH PLIKI +.IR /etc/group " - informacja o kontach grup" +.br +.IR /etc/gshadow " - bezpieczna informacja o kontach grup" +.SH ZOBACZ TAK¯E +.BR chfn (1), +.BR chsh (1), +.BR useradd (8), +.BR userdel (8), +.BR usermod (8), +.BR passwd (1), +.BR groupdel (8), +.BR groupmod (8). +.SH AUTOR +Julianne Frances Haugh (jfh@austin.ibm.com) +.SH OD T£UMACZA +Niniejsza dokumentacja opisuje polecenie wchodz±ce w sk³ad pakietu +shadow-password. +Istnieje wiele programów i skryptów do zarz±dzania kontami +u¿ytkowników czy grup. Z uwagi na powtarzaj±ce siê nazwy poleceñ, upewnij +siê, ¿e korzystasz z w³a¶ciwej dokumentacji. diff --git a/old/pwconv-old.8 b/man/pl/groupdel.8 similarity index 53% rename from old/pwconv-old.8 rename to man/pl/groupdel.8 index a8ad7bbb..24cd254e 100644 --- a/old/pwconv-old.8 +++ b/man/pl/groupdel.8 @@ -1,4 +1,5 @@ -.\" Copyright 1989 - 1993, Julianne Frances Haugh +.\" {PTM/WK/0.1/VIII-1999} +.\" Copyright 1991 - 1993, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -25,42 +26,43 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: pwconv-old.8,v 1.1 1997/09/29 22:01:31 marekm Exp $ +.\" $Id: groupdel.8,v 1.1 2000/08/26 18:27:17 marekm Exp $ .\" -.TH PWCONV 8 -.SH NAME -pwconv \- convert and update shadow password files -.SH SYNOPSIS -.B pwconv -.SH DESCRIPTION -\fBPwconv\fR copies the old password file information to a new shadow -password file, -merging entries from an optional existing shadow file. -The new password file is left in \fInpasswd\fR, -the new shadow file is left in \fInshadow\fR. -Both of these are files are created with modes which only permit -read access to the owner. -Existing shadow entries are copied as is. -Shadow entries in the System V Release 3.2 format will be silently -converted to the new System V Release 4 format on output. -Any entries which are missing fields will have those fields -filled in with default values where appropriate. -New entries are created with passwords which expire in 10000 days, -with a last changed date of today, -unless password aging information was already present. -Entries with blank passwords are not copied to the shadow file at all. -.SH FILES -/etc/passwd \- old encrypted passwords and password aging +.TH GROUPDEL 8 +.SH NAZWA +groupdel - usuñ grupê +.SH SK£ADNIA +.B groupdel +.I grupa +.SH OPIS +Polecenie \fBgroupdel\fR zmienia systemowe pliki kont, usuwaj±c +wszystkie zapisy odnosz±ce siê do \fIgrupy\fR. +Wymieniona grupa musi istnieæ. +.PP +Musisz rêcznie sprawdziæ wszystkie systemy plików, by upewniæ siê, ¿e +nie pozosta³y ¿adne pliki, dla których wymieniona grupa jest grup± w³a¶cicieli. +.SH PRZESTROGI +Nie mo¿esz usun±æ podstawowej grupy ¿adnego z istniej±cych u¿ytkowników. +Musisz usun±æ u¿ytkownika przed usuniêciem takiej grupy. +.SH PLIKI +.IR /etc/group " - informacja o grupach" .br -/etc/shadow \- previously converted shadow password file -.br -./npasswd \- new password file -.br -./nshadow \- new shadow password file -.SH SEE ALSO +.IR /etc/gshadow " - bezpieczna informacja o grupach" +.\" secure group information +.SH ZOBACZ TAK¯E +.BR chfn (1), +.BR chsh (1), +.BR useradd (8), +.BR userdel (8), +.BR usermod (8), .BR passwd (1), -.BR passwd (5), -.BR shadow (5), -.BR pwunconv (8) -.SH AUTHOR -Julianne Frances Haugh (jfh@tab.com) +.BR groupadd (8), +.BR groupmod (8). +.SH AUTOR +Julianne Frances Haugh (jfh@austin.ibm.com) +.SH OD T£UMACZA +Niniejsza dokumentacja opisuje polecenie wchodz±ce w sk³ad pakietu +shadow-password. +Istnieje wiele programów i skryptów do zarz±dzania kontami +u¿ytkowników czy grup. Z uwagi na powtarzaj±ce siê nazwy poleceñ, upewnij +siê, ¿e korzystasz z w³a¶ciwej dokumentacji. diff --git a/man/pl/groupmod.8 b/man/pl/groupmod.8 new file mode 100644 index 00000000..bead76d1 --- /dev/null +++ b/man/pl/groupmod.8 @@ -0,0 +1,77 @@ +.\" {PTM/WK/0.1/VIII-1999} +.\" Copyright 1991, Julianne Frances Haugh +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $Id: groupmod.8,v 1.1 2000/08/26 18:27:17 marekm Exp $ +.\" +.TH GROUPMOD 8 +.SH NAZWA +groupmod - zmieñ dane grupy +.SH SK£ADNIA +.B groupmod +.RB [ -g +.I gid +.RB [ -o ]] +.RB [ -n +.IR nazwa_grupy ] +.I grupa +.SH OPIS +Polecenie \fBgroupmod\fR modyfikuje systemowe pliki kont tak, by +odzwierciedliæ w nich zmiany grup podane w wierszu poleceñ. Obs³uguje ono +nastêpuj±ce opcje: +.TP +.BI -g " gid" +Numeryczna warto¶æ identyfikatora grupy (group ID). +Warto¶æ ta musi byæ niepowtarzalna, chyba ¿e u¿yto opcji \fB-o\fR. +Nie mo¿e byæ ujemna. Warto¶ci pomiêdzy 0 a 99 s± zwykle zarezerwowane +dla grup systemowych. +Pliki, dla których stary identyfikator jest identyfikatorem +grupy pliku, wymagaj± rêcznej zmiany ID grupy. +.TP +.BI -n " nazwa_grupy" +Nazwa grupy zostanie zmieniona z \fIgrupa\fR na \fInazwa_grupy\fR. +.SH PLIKI +.IR /etc/group " - informacja o grupach" +.br +.IR /etc/gshadow " - bezpieczna informacja o grupach" +.SH ZOBACZ TAK¯E +.BR chfn (1), +.BR chsh (1), +.BR useradd (8), +.BR userdel (8), +.BR usermod (8), +.BR passwd (1), +.BR groupadd (8), +.BR groupdel (8). +.SH AUTOR +Julianne Frances Haugh (jfh@austin.ibm.com) +.SH OD T£UMACZA +Niniejsza dokumentacja opisuje polecenie wchodz±ce w sk³ad pakietu +shadow-password. +Istnieje wiele programów i skryptów do zarz±dzania kontami +u¿ytkowników czy grup. Z uwagi na powtarzaj±ce siê nazwy poleceñ, upewnij +siê, ¿e korzystasz z w³a¶ciwej dokumentacji. diff --git a/man/pl/groups.1 b/man/pl/groups.1 new file mode 100644 index 00000000..6903d6cd --- /dev/null +++ b/man/pl/groups.1 @@ -0,0 +1,61 @@ +.\" {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. diff --git a/man/pl/grpck.8 b/man/pl/grpck.8 new file mode 100644 index 00000000..55234e49 --- /dev/null +++ b/man/pl/grpck.8 @@ -0,0 +1,103 @@ +.\" {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) diff --git a/man/pl/id.1 b/man/pl/id.1 new file mode 100644 index 00000000..71392b94 --- /dev/null +++ b/man/pl/id.1 @@ -0,0 +1,57 @@ +.\" {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. diff --git a/man/pl/lastlog.8 b/man/pl/lastlog.8 new file mode 100644 index 00000000..63d5e270 --- /dev/null +++ b/man/pl/lastlog.8 @@ -0,0 +1,64 @@ +.\" {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 diff --git a/man/pl/limits.5 b/man/pl/limits.5 new file mode 100644 index 00000000..9ffa0f59 --- /dev/null +++ b/man/pl/limits.5 @@ -0,0 +1,79 @@ +.\" {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) diff --git a/man/pl/login.1 b/man/pl/login.1 new file mode 100644 index 00000000..ecedc24c --- /dev/null +++ b/man/pl/login.1 @@ -0,0 +1,134 @@ +.\" {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. diff --git a/man/pl/login.access.5 b/man/pl/login.access.5 new file mode 100644 index 00000000..cfcad56c --- /dev/null +++ b/man/pl/login.access.5 @@ -0,0 +1,54 @@ +.\" {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 diff --git a/man/pl/login.defs.5 b/man/pl/login.defs.5 new file mode 100644 index 00000000..79c907de --- /dev/null +++ b/man/pl/login.defs.5 @@ -0,0 +1,557 @@ +.\" {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) diff --git a/old/pwunconv.8 b/man/pl/logoutd.8 similarity index 67% rename from old/pwunconv.8 rename to man/pl/logoutd.8 index 7f6520db..d9f8f28a 100644 --- a/old/pwunconv.8 +++ b/man/pl/logoutd.8 @@ -1,4 +1,5 @@ -.\" Copyright 1989 - 1993 Julianne Frances Haugh +.\" {PTM/WK/1999-09-17} +.\" Copyright 1991, Julianne Frances Haugh .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -25,27 +26,25 @@ .\" 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) diff --git a/man/pl/mkpasswd.8 b/man/pl/mkpasswd.8 new file mode 100644 index 00000000..815ea6ac --- /dev/null +++ b/man/pl/mkpasswd.8 @@ -0,0 +1,80 @@ +.\" {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) diff --git a/man/pl/newgrp.1 b/man/pl/newgrp.1 new file mode 100644 index 00000000..eaf3b18e --- /dev/null +++ b/man/pl/newgrp.1 @@ -0,0 +1,87 @@ +.\" {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. diff --git a/man/pl/newusers.8 b/man/pl/newusers.8 new file mode 100644 index 00000000..077da942 --- /dev/null +++ b/man/pl/newusers.8 @@ -0,0 +1,69 @@ +.\" {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) diff --git a/man/pl/passwd.1 b/man/pl/passwd.1 new file mode 100644 index 00000000..6e69c963 --- /dev/null +++ b/man/pl/passwd.1 @@ -0,0 +1,201 @@ +.\" {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. diff --git a/man/pl/passwd.5 b/man/pl/passwd.5 new file mode 100644 index 00000000..e4bcad8e --- /dev/null +++ b/man/pl/passwd.5 @@ -0,0 +1,88 @@ +.\" 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) diff --git a/man/pl/porttime.5 b/man/pl/porttime.5 new file mode 100644 index 00000000..83f0af6a --- /dev/null +++ b/man/pl/porttime.5 @@ -0,0 +1,81 @@ +.\" {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) diff --git a/man/pl/pw_auth.3 b/man/pl/pw_auth.3 new file mode 100644 index 00000000..ddebc0c1 --- /dev/null +++ b/man/pl/pw_auth.3 @@ -0,0 +1,152 @@ +.\" {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 +.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) diff --git a/man/pl/pwauth.8 b/man/pl/pwauth.8 new file mode 100644 index 00000000..e87926c5 --- /dev/null +++ b/man/pl/pwauth.8 @@ -0,0 +1,65 @@ +.\" {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) diff --git a/man/pl/pwck.8 b/man/pl/pwck.8 new file mode 100644 index 00000000..2b71c610 --- /dev/null +++ b/man/pl/pwck.8 @@ -0,0 +1,109 @@ +.\" {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) diff --git a/man/pl/pwconv.8 b/man/pl/pwconv.8 new file mode 100644 index 00000000..0916ca28 --- /dev/null +++ b/man/pl/pwconv.8 @@ -0,0 +1,66 @@ +.\" {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) diff --git a/man/pl/shadow.3 b/man/pl/shadow.3 new file mode 100644 index 00000000..5ad19a23 --- /dev/null +++ b/man/pl/shadow.3 @@ -0,0 +1,148 @@ +.\" {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 +.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) diff --git a/man/pl/shadow.5 b/man/pl/shadow.5 new file mode 100644 index 00000000..8997bead --- /dev/null +++ b/man/pl/shadow.5 @@ -0,0 +1,92 @@ +.\" 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) diff --git a/man/pl/shadowconfig.8 b/man/pl/shadowconfig.8 new file mode 100644 index 00000000..2d37c1f2 --- /dev/null +++ b/man/pl/shadowconfig.8 @@ -0,0 +1,27 @@ +.\" {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. diff --git a/man/pl/su.1 b/man/pl/su.1 new file mode 100644 index 00000000..d561e67c --- /dev/null +++ b/man/pl/su.1 @@ -0,0 +1,87 @@ +.\" {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. diff --git a/man/pl/suauth.5 b/man/pl/suauth.5 new file mode 100644 index 00000000..c3a54ac7 --- /dev/null +++ b/man/pl/suauth.5 @@ -0,0 +1,115 @@ +.\" {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 diff --git a/man/pl/sulogin.8 b/man/pl/sulogin.8 new file mode 100644 index 00000000..e8aca99d --- /dev/null +++ b/man/pl/sulogin.8 @@ -0,0 +1,94 @@ +.\" {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) diff --git a/man/porttime.5 b/man/porttime.5 index 04497e90..82f0ebfd 100644 --- a/man/porttime.5 +++ b/man/porttime.5 @@ -25,7 +25,7 @@ .\" 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 @@ -81,4 +81,4 @@ port during non-working hours. .SH SEE ALSO .BR login (1) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/pw_auth.3 b/man/pw_auth.3 index 830529c4..b3e6d1c0 100644 --- a/man/pw_auth.3 +++ b/man/pw_auth.3 @@ -25,7 +25,7 @@ .\" 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 @@ -156,4 +156,4 @@ with a 0 exit code, and a non-zero value otherwise. .BR userdel (8), usermod(8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/pwauth.8 b/man/pwauth.8 index 8f0da284..156ec533 100644 --- a/man/pwauth.8 +++ b/man/pwauth.8 @@ -25,7 +25,7 @@ .\" 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 @@ -64,4 +64,4 @@ the login or network session itself. .BR usermod (8), .BR pw_auth (3) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/pwck.8 b/man/pwck.8 index d0d38ea5..6e500fcb 100644 --- a/man/pwck.8 +++ b/man/pwck.8 @@ -25,7 +25,7 @@ .\" 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 @@ -104,4 +104,4 @@ Cannot lock password files .IP 5 5 Cannot update password files .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/shadow.3 b/man/shadow.3 index 74d2b2c2..0a3b74a9 100644 --- a/man/shadow.3 +++ b/man/shadow.3 @@ -25,7 +25,7 @@ .\" 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 @@ -145,4 +145,4 @@ the shadow password file is restricted. .BR getpwent (3), .BR shadow (5) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/shadow.5 b/man/shadow.5 index b39f2402..bd3b09a3 100644 --- a/man/shadow.5 +++ b/man/shadow.5 @@ -25,7 +25,7 @@ .\" 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 @@ -96,4 +96,4 @@ security is to be maintained. .BR pwconv (8), .BR pwunconv (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/su.1 b/man/su.1 index 15dc64a2..69fe12c4 100644 --- a/man/su.1 +++ b/man/su.1 @@ -25,7 +25,7 @@ .\" 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 @@ -64,6 +64,10 @@ The current environment is passed to the new shell. The value of \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 @@ -80,4 +84,4 @@ $HOME/.profile \- initialization script for default shell .BR suauth (5), .BR login.defs (5) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/sulogin.8 b/man/sulogin.8 index 2de82795..61d61cdb 100644 --- a/man/sulogin.8 +++ b/man/sulogin.8 @@ -25,7 +25,7 @@ .\" 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 @@ -85,4 +85,4 @@ of the user commands may be unavailable or nonfunctional as a result. .BR init (8), .BR sh (1) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/useradd.8 b/man/useradd.8 index 68f7a5bf..aa84b755 100644 --- a/man/useradd.8 +++ b/man/useradd.8 @@ -25,7 +25,7 @@ .\" 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 @@ -194,4 +194,4 @@ This must be performed on the NIS server. .BR userdel (8), .BR usermod (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/userdel.8 b/man/userdel.8 index eb9e5b89..9a26713f 100644 --- a/man/userdel.8 +++ b/man/userdel.8 @@ -25,7 +25,7 @@ .\" 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 @@ -40,8 +40,8 @@ all entries that refer to \fIlogin\fR. 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 @@ -66,4 +66,4 @@ This must be performed on the NIS server. .BR useradd (8), .BR usermod (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/man/usermod.8 b/man/usermod.8 index 8aecfd36..8e6bc0c1 100644 --- a/man/usermod.8 +++ b/man/usermod.8 @@ -25,7 +25,7 @@ .\" 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 @@ -150,4 +150,4 @@ You must make any changes involving NIS on the NIS server. .BR useradd (8), .BR userdel (8) .SH AUTHOR -Julianne Frances Haugh (jfh@bga.com) +Julianne Frances Haugh (jfh@austin.ibm.com) diff --git a/mkinstalldirs b/mkinstalldirs index 61cd1d95..4f58503e 100755 --- a/mkinstalldirs +++ b/mkinstalldirs @@ -4,7 +4,7 @@ # 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 @@ -22,7 +22,7 @@ do esac if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" 1>&2 + echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? diff --git a/old/Makefile.am b/old/Makefile.am deleted file mode 100644 index 7c0fe142..00000000 --- a/old/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -# 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 diff --git a/old/Makefile.linux b/old/Makefile.linux deleted file mode 100644 index a2bbaf8d..00000000 --- a/old/Makefile.linux +++ /dev/null @@ -1,751 +0,0 @@ -# -# 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 diff --git a/old/Makefile.sun4 b/old/Makefile.sun4 deleted file mode 100644 index 0b9e94a6..00000000 --- a/old/Makefile.sun4 +++ /dev/null @@ -1,685 +0,0 @@ -# -# 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 diff --git a/old/Makefile.svr4 b/old/Makefile.svr4 deleted file mode 100644 index 846e46c9..00000000 --- a/old/Makefile.svr4 +++ /dev/null @@ -1,681 +0,0 @@ -# -# 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 diff --git a/old/Makefile.xenix b/old/Makefile.xenix deleted file mode 100644 index 43689199..00000000 --- a/old/Makefile.xenix +++ /dev/null @@ -1,723 +0,0 @@ -# -# 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 diff --git a/old/config.h.linux b/old/config.h.linux deleted file mode 100644 index cdab702d..00000000 --- a/old/config.h.linux +++ /dev/null @@ -1,454 +0,0 @@ -/* - * 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 -#include -#include -#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 , use (struct direct) */ -#undef DIR_BSD /* include , use (struct direct) */ -#define DIR_SYSV /* include , 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 . - */ - -#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 */ diff --git a/old/config.h.sun4 b/old/config.h.sun4 deleted file mode 100644 index 95527c05..00000000 --- a/old/config.h.sun4 +++ /dev/null @@ -1,189 +0,0 @@ -/* - * 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 , use (struct direct) */ -/* #define DIR_BSD /* include , use (struct direct) */ -#define DIR_SYSV /* include , 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 . - */ - -#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" diff --git a/old/config.h.svr4 b/old/config.h.svr4 deleted file mode 100644 index 40c3d1ca..00000000 --- a/old/config.h.svr4 +++ /dev/null @@ -1,217 +0,0 @@ -/* - * 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 , 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 . - */ - -#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 ", define - * HAS_CRONTAB. If your system can "atrm ", define HAS_ATRM. - * - * SVR4 has both of these. - */ - -#define HAS_CRONTAB -#define HAS_ATRM - -/* - * Login times log file. - */ - -#define LASTFILE "/var/adm/lastlog" diff --git a/old/config.h.xenix b/old/config.h.xenix deleted file mode 100644 index 4ee3d5bf..00000000 --- a/old/config.h.xenix +++ /dev/null @@ -1,224 +0,0 @@ -/* - * 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 , use (struct direct) */ -/* #define DIR_BSD /* include , use (struct direct) */ -/* #define DIR_SYSV /* include , 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 . - */ - -#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 ", define - * HAS_CRONTAB. If your system can "atrm ", define HAS_ATRM. - */ - -#undef HAS_CRONTAB -#undef HAS_ATRM - -/* - * Login times log file. - */ - -#define LASTFILE "/var/adm/lastlog" diff --git a/old/orig-config.h b/old/orig-config.h deleted file mode 100644 index 790db8eb..00000000 --- a/old/orig-config.h +++ /dev/null @@ -1,454 +0,0 @@ -/* - * 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 -#include -#include -#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 , use (struct direct) */ -#undef DIR_BSD /* include , use (struct direct) */ -#define DIR_SYSV /* include , 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 . - */ - -#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 */ diff --git a/old/pwconv-old.c b/old/pwconv-old.c deleted file mode 100644 index e8531fdb..00000000 --- a/old/pwconv-old.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - * 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 -#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 -#include -#include -#include -#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 /*}*/ diff --git a/old/pwd.h.m4 b/old/pwd.h.m4 deleted file mode 100644 index 313f4a59..00000000 --- a/old/pwd.h.m4 +++ /dev/null @@ -1,138 +0,0 @@ -/* - * 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 -#endif - -#ifdef SVR4 -#include -#ifndef _POSIX_SOURCE -#define _POSIX_SOURCE -#include -#undef _POSIX_SOURCE -#else /* _POSIX_SOURCE */ -#include -#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 */ diff --git a/old/pwunconv-old.c b/old/pwunconv-old.c deleted file mode 100644 index e54d83ef..00000000 --- a/old/pwunconv-old.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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 - -#include "rcsid.h" -RCSID("$Id: pwunconv-old.c,v 1.1 1997/05/01 23:11:59 marekm Exp $") - -#include "defines.h" -#include -#include -#include -#include - -#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 diff --git a/old/scologin.c b/old/scologin.c deleted file mode 100644 index 0efe5a33..00000000 --- a/old/scologin.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * 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 -#include - -#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*/ -} diff --git a/old/vipw.8 b/old/vipw.8 deleted file mode 100644 index b8503c9c..00000000 --- a/old/vipw.8 +++ /dev/null @@ -1,69 +0,0 @@ -.\" 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 . diff --git a/po/cat-id-tbl.c b/po/cat-id-tbl.c index 40455d75..67e5badf 100644 --- a/po/cat-id-tbl.c +++ b/po/cat-id-tbl.c @@ -446,57 +446,58 @@ Type control-d to proceed with normal startup,\n\ {"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; diff --git a/po/el.po b/po/el.po index 106451f6..e319dabd 100644 --- a/po/el.po +++ b/po/el.po @@ -6,7 +6,7 @@ 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 \n" "Language-Team: Hellenic \n" @@ -111,7 +111,7 @@ msgstr " 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. " @@ -181,26 +181,26 @@ msgstr " 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" @@ -209,7 +209,7 @@ msgstr "%s #. * 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 "Óõíèçìáôéêü: " @@ -345,83 +345,83 @@ 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" @@ -430,7 +430,7 @@ msgstr "" "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" @@ -438,364 +438,364 @@ msgstr "" "×ñÞóç: %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" @@ -807,106 +807,106 @@ msgstr "%s: #. * 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" @@ -914,80 +914,80 @@ msgstr "%s: #. #. * 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 "" @@ -996,78 +996,78 @@ 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" @@ -1076,13 +1076,13 @@ msgstr "%s: #. * 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'; " @@ -1091,26 +1091,26 @@ 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 "áíôéãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï ïìÜäùí\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'; " @@ -1119,7 +1119,7 @@ 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 "Ìç Ýãêõñç êáôá÷þñçóç óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí ïìÜäùí\n" @@ -1127,65 +1127,65 @@ 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 "áíôéãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí ïìÜäùí\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" @@ -1193,90 +1193,90 @@ msgstr "%s: #. #. * 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 "" @@ -1289,42 +1289,42 @@ 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" @@ -1332,7 +1332,7 @@ msgstr "" "\n" "Ôï óýóôçìá Ýêëåéóå ãéá óõíôÞñçóç ñïõôßíáò\n" -#: src/login.c:352 +#: src/login.c:351 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" @@ -1340,7 +1340,7 @@ msgstr "" "\n" "[ÐáñÜêáìøç áðïóýíäåóçò -- Ç åßóïäïò ôïõ root åðåôñÜðç.]\n" -#: src/login.c:391 +#: src/login.c:390 #, c-format msgid "" "\n" @@ -1359,7 +1359,7 @@ msgstr " msgid " on `%.100s'" msgstr " óôï `%.100s'" -#: src/login.c:807 +#: src/login.c:834 #, c-format msgid "" "\n" @@ -1368,35 +1368,35 @@ msgstr "" "\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" @@ -1407,194 +1407,194 @@ msgstr "" "%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" @@ -1604,15 +1604,15 @@ msgstr "" "Ðáñáêáëþ ÷ñçóéìïðïéÞóôå Ýíá óõíäõáóìü áðü êåöáëáßá êáé ìéêñÜ ãñÜììáôá\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" @@ -1620,81 +1620,81 @@ msgstr "" "\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" @@ -1703,7 +1703,7 @@ 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 "Ìç Ýãêõñç êáôá÷þñçóç óôï áñ÷åßï óõíèçìáôéêþí\n" @@ -1711,16 +1711,16 @@ 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 "áíôéãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï óõíèçìáôéêþí\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" @@ -1728,7 +1728,7 @@ 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 "÷ñÞóôçò %s: êáìéÜ ïìÜäá %d\n" @@ -1736,7 +1736,7 @@ 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 "÷ñÞóôçò %s: ï êáôÜëïãïò %s äåí õðÜñ÷åé\n" @@ -1744,7 +1744,7 @@ 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 "÷ñÞóôçò %s: ôï ðñüãñáììá %s äåí õðÜñ÷åé\n" @@ -1753,7 +1753,7 @@ 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 "Ìç Ýãêõñç êáôá÷þñçóç óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n" @@ -1761,7 +1761,7 @@ 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 "áíôéãñáöÞ êáôá÷þñçóçò óôï áñ÷åßï óêéùäþí óõíèçìáôéêþí\n" @@ -1769,43 +1769,43 @@ 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 "Äåí âñÝèçêå êáôá÷þñçóç óôï áñ÷åßï óõíèçìáôéêþí ðïõ íá ôáéñßáæåé\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" @@ -1815,52 +1815,52 @@ msgstr "%s: 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" @@ -1869,19 +1869,19 @@ msgstr "" "%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" @@ -1890,7 +1890,7 @@ 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" @@ -1901,515 +1901,520 @@ msgstr "" "(Þ äþóôå ôï óõíèçìáôéêü ôïõ 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" @@ -2418,21 +2423,21 @@ msgstr "" "\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" diff --git a/po/fr.gmo b/po/fr.gmo index 77ad53b8aa7659440cc44340966f256d90dda1b0..bb3ab8e0f7a3bbc6d2d7e1a105e0cf82a7f5fe57 100644 GIT binary patch delta 31 mcmZqP$<(})X~Vy80V4wg16>0PT_ZCEBLgcVi_Lryr7i%eCJA-` delta 31 mcmZqP$<(})X~Vy80YghmOI-sCT_bY^BSR|#\n" "Language-Team: Vincent Renardias \n" @@ -111,7 +111,7 @@ msgstr "Pas de courier." 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. " @@ -181,26 +181,26 @@ msgstr " 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" @@ -209,7 +209,7 @@ msgstr "%s non trouv #. * 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: " @@ -346,82 +346,82 @@ msgstr "Mot de passe d 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" @@ -430,368 +430,368 @@ msgstr "" "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" @@ -803,105 +803,105 @@ 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" @@ -909,78 +909,78 @@ 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" @@ -988,76 +988,76 @@ msgstr "%s : erreur lors du retrait de l'entr #. #. * 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" @@ -1066,13 +1066,13 @@ 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'? " @@ -1081,26 +1081,26 @@ 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'? " @@ -1109,7 +1109,7 @@ 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" @@ -1117,65 +1117,65 @@ msgstr "entr #. * 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 "" @@ -1183,85 +1183,85 @@ 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" @@ -1274,42 +1274,42 @@ 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" @@ -1317,7 +1317,7 @@ msgstr "" "\n" "Système fermé pour maintenance\n" -#: src/login.c:352 +#: src/login.c:351 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" @@ -1325,7 +1325,7 @@ msgstr "" "\n" "[Disconnexion court-circuitée -- login root authorisé.]\n" -#: src/login.c:391 +#: src/login.c:390 #, c-format msgid "" "\n" @@ -1344,7 +1344,7 @@ msgstr " sur `%.100s' msgid " on `%.100s'" msgstr " sur `%.100s'" -#: src/login.c:807 +#: src/login.c:834 #, c-format msgid "" "\n" @@ -1353,34 +1353,34 @@ msgstr "" "\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" @@ -1389,192 +1389,192 @@ msgstr "D 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" @@ -1584,15 +1584,15 @@ msgstr "" "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" @@ -1601,83 +1601,83 @@ msgstr "" "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" @@ -1686,7 +1686,7 @@ 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" @@ -1694,16 +1694,16 @@ msgstr "entr #. * 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" @@ -1711,7 +1711,7 @@ 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" @@ -1719,7 +1719,7 @@ 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" @@ -1727,7 +1727,7 @@ msgstr "utilisateur %s : le r #. #. * 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" @@ -1736,7 +1736,7 @@ 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" @@ -1744,7 +1744,7 @@ msgstr "entr #. * 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" @@ -1752,42 +1752,42 @@ msgstr "entr #. * 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" @@ -1797,52 +1797,52 @@ msgstr "%s : impossible de mettre 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" @@ -1851,19 +1851,19 @@ msgstr "" "%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" @@ -1872,7 +1872,7 @@ msgstr "Pas d'entr #. * 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" @@ -1883,498 +1883,503 @@ msgstr "" "(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" @@ -2383,20 +2388,20 @@ msgstr "" "\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" diff --git a/po/pl.gmo b/po/pl.gmo index 98b3c7f4a8d92a1ecf05b92c501cf67d21d517f5..5e395ff789746f854f95757ec511b538e084fe39 100644 GIT binary patch delta 31 ncmX@Ohw0!RrVaa|1&j;~40H`FbdAguj0~)dEH}MEp-hnbdAgvj0~*|j5nW)E_MO{w@(U? diff --git a/po/pl.po b/po/pl.po index 3719a5de..f0f89c04 100644 --- a/po/pl.po +++ b/po/pl.po @@ -5,7 +5,7 @@ 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 \n" "Language-Team: PL \n" @@ -110,7 +110,7 @@ msgstr "Nie masz poczty." 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. " @@ -180,25 +180,25 @@ msgstr "malloc(%d) nie powiod 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" @@ -207,7 +207,7 @@ 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: " @@ -343,82 +343,82 @@ msgstr "Has 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" @@ -427,7 +427,7 @@ msgstr "" "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" @@ -435,361 +435,361 @@ msgstr "" "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" @@ -801,105 +801,105 @@ 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" @@ -907,78 +907,78 @@ msgstr "%s: nie mog #. #. * 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" @@ -986,76 +986,76 @@ msgstr "%s: b #. #. * 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" @@ -1064,13 +1064,13 @@ msgstr "%s: nie mog #. * 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'? " @@ -1079,26 +1079,26 @@ msgstr "usun #. * 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'? " @@ -1107,7 +1107,7 @@ msgstr "skasowa #. * 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" @@ -1115,65 +1115,65 @@ msgstr "nieprawid #. * 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" @@ -1181,85 +1181,85 @@ msgstr "%s: nie mog #. #. * 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" @@ -1272,42 +1272,42 @@ 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" @@ -1315,7 +1315,7 @@ msgstr "" "\n" "System zamkniêty do rutynowej konserwacji.\n" -#: src/login.c:352 +#: src/login.c:351 msgid "" "\n" "[Disconnect bypassed -- root login allowed.]\n" @@ -1323,7 +1323,7 @@ msgstr "" "\n" "[Roz³±czenie pominiête -- zezwolenie na logowanie siê root-a.]\n" -#: src/login.c:391 +#: src/login.c:390 #, c-format msgid "" "\n" @@ -1342,7 +1342,7 @@ msgstr " na `%s.100s' z `%.200s'" msgid " on `%.100s'" msgstr " na `%.100s'" -#: src/login.c:807 +#: src/login.c:834 #, c-format msgid "" "\n" @@ -1351,34 +1351,34 @@ msgstr "" "\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" @@ -1388,191 +1388,191 @@ msgid "%s: no DBM database on system - no action performed\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" @@ -1581,15 +1581,15 @@ msgstr "" "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" @@ -1597,81 +1597,81 @@ msgstr "" "\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" @@ -1680,7 +1680,7 @@ msgstr "U #. * 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" @@ -1688,16 +1688,16 @@ msgstr "nieprawid #. * 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" @@ -1705,7 +1705,7 @@ msgstr "u #. #. * 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" @@ -1713,7 +1713,7 @@ msgstr "u #. #. * 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" @@ -1721,7 +1721,7 @@ msgstr "u #. #. * 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" @@ -1730,7 +1730,7 @@ msgstr "u #. * 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" @@ -1738,7 +1738,7 @@ msgstr "nieprawid #. * 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" @@ -1746,41 +1746,41 @@ msgstr "duplikuj #. * 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" @@ -1790,52 +1790,52 @@ msgstr "%s: nie mog 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" @@ -1844,19 +1844,19 @@ msgstr "" "%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" @@ -1865,7 +1865,7 @@ msgstr "Brak wpisu do bazy hase #. * 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" @@ -1876,495 +1876,500 @@ msgstr "" "(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" @@ -2373,21 +2378,21 @@ msgstr "" "\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" diff --git a/po/shadow.pot b/po/shadow.pot index d525967a..8756bdba 100644 --- a/po/shadow.pot +++ b/po/shadow.pot @@ -6,7 +6,7 @@ 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 \n" "Language-Team: LANGUAGE \n" @@ -109,7 +109,7 @@ msgstr "" 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 "" @@ -179,24 +179,24 @@ 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 "" @@ -205,7 +205,7 @@ 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 "" @@ -333,449 +333,449 @@ 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 "" @@ -787,105 +787,105 @@ 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 "" @@ -893,78 +893,78 @@ 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 "" @@ -972,76 +972,76 @@ 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 "" @@ -1050,13 +1050,13 @@ 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 "" @@ -1065,26 +1065,26 @@ 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 "" @@ -1093,7 +1093,7 @@ 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 "" @@ -1101,65 +1101,65 @@ 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 "" @@ -1167,85 +1167,85 @@ 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 "" @@ -1258,54 +1258,54 @@ 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" @@ -1322,41 +1322,41 @@ msgstr "" 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 "" @@ -1365,285 +1365,285 @@ 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 "" @@ -1652,7 +1652,7 @@ 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 "" @@ -1660,16 +1660,16 @@ 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 "" @@ -1677,7 +1677,7 @@ 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 "" @@ -1685,7 +1685,7 @@ 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 "" @@ -1693,7 +1693,7 @@ 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 "" @@ -1702,7 +1702,7 @@ 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 "" @@ -1710,7 +1710,7 @@ 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 "" @@ -1718,41 +1718,41 @@ 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 "" @@ -1762,71 +1762,71 @@ 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 "" @@ -1835,7 +1835,7 @@ 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" @@ -1843,515 +1843,520 @@ msgid "" 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" diff --git a/po/sv.po b/po/sv.po index 3017b518..64e0eb49 100644 --- a/po/sv.po +++ b/po/sv.po @@ -6,7 +6,7 @@ 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 \n" "Language-Team: sv \n" @@ -110,7 +110,7 @@ msgstr "Ingen post." 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. " @@ -180,24 +180,24 @@ msgstr "malloc(%d) misslyckades\n" 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" @@ -206,7 +206,7 @@ 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: " @@ -342,82 +342,82 @@ msgstr "L 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" @@ -426,7 +426,7 @@ msgstr "" "%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" @@ -434,362 +434,362 @@ msgstr "" "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" @@ -801,105 +801,105 @@ 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" @@ -907,78 +907,78 @@ 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" @@ -986,76 +986,76 @@ 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" @@ -1064,13 +1064,13 @@ msgstr "%s: kan inte #. * 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\"? " @@ -1079,26 +1079,26 @@ 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\"? " @@ -1107,7 +1107,7 @@ 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" @@ -1115,65 +1115,65 @@ 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" @@ -1181,85 +1181,85 @@ msgstr "%s: kan inte #. #. * 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" @@ -1272,42 +1272,42 @@ 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" @@ -1315,7 +1315,7 @@ msgstr "" "\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" @@ -1323,7 +1323,7 @@ msgstr "" "\n" "[Nerkoppling kringgicks -- root inloggning tillåten.]\n" -#: src/login.c:391 +#: src/login.c:390 #, c-format msgid "" "\n" @@ -1342,7 +1342,7 @@ msgstr " p msgid " on `%.100s'" msgstr " på \"%.100s\"" -#: src/login.c:807 +#: src/login.c:834 #, c-format msgid "" "\n" @@ -1351,34 +1351,34 @@ msgstr "" "\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" @@ -1387,191 +1387,191 @@ 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" @@ -1580,15 +1580,15 @@ msgstr "" "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" @@ -1596,81 +1596,81 @@ msgstr "" "\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" @@ -1679,7 +1679,7 @@ msgstr "Anv #. * 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" @@ -1687,16 +1687,16 @@ msgstr "felaktig notering i l #. * 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" @@ -1704,7 +1704,7 @@ msgstr "anv #. #. * 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" @@ -1712,7 +1712,7 @@ msgstr "anv #. #. * 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" @@ -1720,7 +1720,7 @@ msgstr "anv #. #. * 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" @@ -1729,7 +1729,7 @@ msgstr "anv #. * 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" @@ -1737,7 +1737,7 @@ msgstr "felaktig notering i skuggl #. * 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" @@ -1745,41 +1745,41 @@ msgstr "dubblett av notering i skuggl #. * 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" @@ -1789,52 +1789,52 @@ msgstr "%s: kan inte uppdatera l 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" @@ -1843,19 +1843,19 @@ msgstr "" "%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" @@ -1864,7 +1864,7 @@ msgstr "Ingen l #. * 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" @@ -1875,495 +1875,500 @@ msgstr "" "(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" @@ -2372,20 +2377,20 @@ msgstr "" "\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" diff --git a/redhat/Makefile.in b/redhat/Makefile.in index d3e8c8d5..7aa97334 100644 --- a/redhat/Makefile.in +++ b/redhat/Makefile.in @@ -82,6 +82,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ diff --git a/redhat/shadow-utils.spec b/redhat/shadow-utils.spec deleted file mode 100644 index 10ce8971..00000000 --- a/redhat/shadow-utils.spec +++ /dev/null @@ -1,151 +0,0 @@ -# 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 -# 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 - -- Lots of changes, see doc/CHANGES for more details - -* Sun Jun 08 1997 Timo Karjalainen - -- 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 diff --git a/src/Makefile.am b/src/Makefile.am index be5206bb..db8203fd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -47,15 +47,15 @@ suidubins = chage chfn chsh expiry gpasswd newgrp passwd 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 @@ -79,7 +79,7 @@ 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@ diff --git a/src/Makefile.in b/src/Makefile.in index fb3fdb00..773a3b3c 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -76,6 +76,7 @@ INTLOBJS = @INTLOBJS@ LD = @LD@ LIBCRACK = @LIBCRACK@ LIBCRYPT = @LIBCRYPT@ +LIBMD = @LIBMD@ LIBPAM = @LIBPAM@ LIBSKEY = @LIBSKEY@ LIBTCFS = @LIBTCFS@ @@ -164,7 +165,7 @@ 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@ @@ -879,15 +880,15 @@ mostlyclean distclean maintainer-clean 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. diff --git a/src/chage.c b/src/chage.c index ebc204f6..9eed0da8 100644 --- a/src/chage.c +++ b/src/chage.c @@ -30,7 +30,7 @@ #include #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 #include @@ -59,6 +59,7 @@ RCSID(PKG_VER "$Id: chage.c,v 1.16 1999/08/27 19:02:51 marekm Exp $") #endif /* SHADOWPWD */ static char *Prog; +static int amroot; #ifdef AGING /*{*/ @@ -122,13 +123,12 @@ extern int sp_dbm_mode; #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 @@ -371,7 +371,7 @@ main(int argc, char **argv) #else char new_age[5]; #endif - uid_t ruid = getuid (); + uid_t ruid; const struct passwd *pw; struct passwd pwent; char name[BUFSIZ]; @@ -381,6 +381,9 @@ main(int argc, char **argv) bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); + ruid = getuid(); + amroot = (ruid == 0); + /* * Get the program name so that error messages can use it. */ @@ -476,7 +479,7 @@ main(int argc, char **argv) * information. */ - if (ruid != 0 && ! lflg) { + if (!amroot && !lflg) { fprintf (stderr, _("%s: permission denied\n"), Prog); closelog(); exit (1); @@ -487,14 +490,14 @@ main(int argc, char **argv) * 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)); @@ -519,15 +522,15 @@ main(int argc, char **argv) * 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)); @@ -588,7 +591,7 @@ main(int argc, char **argv) */ 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); @@ -785,14 +788,16 @@ static void 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; } } diff --git a/src/chfn.c b/src/chfn.c index c9b2b0ed..9bf74b66 100644 --- a/src/chfn.c +++ b/src/chfn.c @@ -30,7 +30,7 @@ #include #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 #include @@ -90,11 +90,10 @@ extern int pw_dbm_mode; #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 diff --git a/src/chpasswd.c b/src/chpasswd.c index 09ba0061..dc46498f 100644 --- a/src/chpasswd.c +++ b/src/chpasswd.c @@ -43,7 +43,7 @@ #include #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 #include "prototypes.h" @@ -61,12 +61,10 @@ static int eflg = 0; 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 diff --git a/src/chsh.c b/src/chsh.c index 9737ff20..6f518753 100644 --- a/src/chsh.c +++ b/src/chsh.c @@ -30,7 +30,7 @@ #include #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 #include @@ -91,10 +91,9 @@ extern int pw_dbm_mode; #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 diff --git a/src/dpasswd.c b/src/dpasswd.c index 92eb0dc4..b6baa7df 100644 --- a/src/dpasswd.c +++ b/src/dpasswd.c @@ -30,7 +30,7 @@ #include #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 #include @@ -58,12 +58,10 @@ static char *Prog; 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) diff --git a/src/expiry.c b/src/expiry.c index d0a913b9..b8d09b50 100644 --- a/src/expiry.c +++ b/src/expiry.c @@ -30,7 +30,7 @@ #include #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 #include @@ -45,7 +45,6 @@ RCSID(PKG_VER "$Id: expiry.c,v 1.8 1999/06/07 16:40:45 marekm Exp $") #endif #endif -int main P_((int, char **)); #if !defined(SHADOWPWD) && !defined(AGING) /*{*/ @@ -62,8 +61,8 @@ main(int argc, char **argv) #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 diff --git a/src/faillog.c b/src/faillog.c index 492a9978..beb418ba 100644 --- a/src/faillog.c +++ b/src/faillog.c @@ -30,7 +30,7 @@ #include #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 #include @@ -61,16 +61,15 @@ extern char *optarg; #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 diff --git a/src/gpasswd.c b/src/gpasswd.c index 43bd9e9e..1221918d 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -30,7 +30,7 @@ #include #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 #include @@ -65,7 +65,6 @@ static int #define RETRIES 3 #endif -extern char *crypt_make_salt P_((void)); extern int optind; extern char *optarg; #ifdef NDBM @@ -76,10 +75,9 @@ extern int gr_dbm_mode; #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 @@ -564,11 +562,12 @@ main(int argc, char **argv) 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)); /* diff --git a/src/groupadd.c b/src/groupadd.c index 6af3861c..24200e56 100644 --- a/src/groupadd.c +++ b/src/groupadd.c @@ -30,7 +30,7 @@ #include #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 #include @@ -82,19 +82,18 @@ extern int optind; 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 diff --git a/src/groupdel.c b/src/groupdel.c index 82e9b311..38efa9a6 100644 --- a/src/groupdel.c +++ b/src/groupdel.c @@ -30,7 +30,7 @@ #include #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 #include @@ -70,12 +70,11 @@ static int is_shadow_grp; #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 diff --git a/src/groupmod.c b/src/groupmod.c index a12e78e8..9ed679cf 100644 --- a/src/groupmod.c +++ b/src/groupmod.c @@ -30,7 +30,7 @@ #include #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 #include @@ -83,18 +83,17 @@ extern int optind; 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 diff --git a/src/groups.c b/src/groups.c index b3d4d23f..875272c8 100644 --- a/src/groups.c +++ b/src/groups.c @@ -30,7 +30,7 @@ #include #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 #include @@ -39,8 +39,7 @@ RCSID(PKG_VER "$Id: groups.c,v 1.5 1999/06/07 16:40:45 marekm Exp $") #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 diff --git a/src/grpck.c b/src/grpck.c index 47cd91d9..dec6782b 100644 --- a/src/grpck.c +++ b/src/grpck.c @@ -30,7 +30,7 @@ #include #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 #include @@ -44,13 +44,13 @@ RCSID(PKG_VER "$Id: grpck.c,v 1.12 1999/06/07 16:40:45 marekm Exp $") #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 /* @@ -83,10 +83,9 @@ static const char *sgr_file = SGROUP_FILE; 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 @@ -289,7 +288,7 @@ main(int argc, char **argv) * be parsed properly. */ - if (!gre->entry) { + if (!gre->eptr) { /* * Tell the user this entire line is bogus and @@ -327,7 +326,7 @@ delete_gr: * Group structure is good, start using it. */ - grp = gre->entry; + grp = gre->eptr; /* * Make sure this entry has a unique name. @@ -335,7 +334,7 @@ delete_gr: 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 @@ -444,7 +443,7 @@ delete_gr: * be parsed properly. */ - if (!sge->entry) { + if (!sge->eptr) { /* * Tell the user this entire line is bogus and @@ -482,7 +481,7 @@ delete_sg: * Shadow group structure is good, start using it. */ - sgr = sge->entry; + sgr = sge->eptr; /* * Make sure this entry has a unique name. @@ -490,7 +489,7 @@ delete_sg: 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 diff --git a/src/grpconv.c b/src/grpconv.c index 3a62d123..8e641fd3 100644 --- a/src/grpconv.c +++ b/src/grpconv.c @@ -27,14 +27,13 @@ #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) diff --git a/src/grpunconv.c b/src/grpunconv.c index 3f836ed6..59cb4994 100644 --- a/src/grpunconv.c +++ b/src/grpunconv.c @@ -11,7 +11,7 @@ #include #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 #include @@ -32,8 +32,7 @@ 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) diff --git a/src/id.c b/src/id.c index fa452f89..28839a02 100644 --- a/src/id.c +++ b/src/id.c @@ -38,7 +38,7 @@ #include #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 #include @@ -47,8 +47,7 @@ RCSID(PKG_VER "$Id: id.c,v 1.5 1999/06/07 16:40:45 marekm Exp $") #include "defines.h" /* local function prototypes */ -static void usage P_((void)); -int main P_((int, char **)); +static void usage(void); static void usage(void) diff --git a/src/lastlog.c b/src/lastlog.c index fc7eb143..a7957ac7 100644 --- a/src/lastlog.c +++ b/src/lastlog.c @@ -30,7 +30,7 @@ #include #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 #include @@ -69,9 +69,8 @@ extern char *optarg; #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) diff --git a/src/login.c b/src/login.c index 224dd5e8..719005c0 100644 --- a/src/login.c +++ b/src/login.c @@ -30,7 +30,7 @@ #include #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" @@ -78,7 +78,7 @@ RCSID(PKG_VER "$Id: login.c,v 1.16 1999/08/27 19:02:51 marekm Exp $") #include #endif -#ifdef USE_PAM_not_yet +#ifdef USE_PAM #include "pam_defs.h" static const struct pam_conv conv = { @@ -96,7 +96,7 @@ static pam_handle_t *pamh = NULL; #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. @@ -140,16 +140,14 @@ static int timeout; 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 @@ -175,14 +173,15 @@ static struct faillog faillog; #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 @@ -305,7 +304,7 @@ check_flags(int argc, char * const *argv) } } - +#ifndef USE_PAM static void check_nologin(void) { @@ -352,7 +351,7 @@ check_nologin(void) printf(_("\n[Disconnect bypassed -- root login allowed.]\n")); } } - +#endif /* !USE_PAM */ static void init_env(void) @@ -436,10 +435,11 @@ main(int argc, char **argv) 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 @@ -704,7 +704,7 @@ top: 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", @@ -714,15 +714,38 @@ top: 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 @@ -737,30 +760,33 @@ top: (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); } @@ -777,11 +803,12 @@ top: /* 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; @@ -790,7 +817,7 @@ top: 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 @@ -813,8 +840,15 @@ top: #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; @@ -824,7 +858,8 @@ top: } 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); @@ -833,7 +868,7 @@ top: else SYSLOG((LOG_WARN, NO_SHADOW, username, fromhost)); } -#endif /* SHADOWPWD */ +#endif /* SHADOWPWD */ /* * If the encrypted password begins with a "!", the account @@ -996,9 +1031,9 @@ auth_ok: 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 @@ -1011,14 +1046,18 @@ auth_ok: 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 */ @@ -1032,14 +1071,17 @@ auth_ok: #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 @@ -1066,7 +1108,7 @@ auth_ok: } #endif /* ATT_AGE */ #endif /* SHADOWPWD */ -#endif /* AGING */ +#endif /* AGING */ #ifdef RADIUS if (is_rad_login) { @@ -1082,6 +1124,7 @@ auth_ok: } #endif setup_limits(&pwent); /* nice, ulimit etc. */ +#endif /* ! USE_PAM */ chown_tty(tty, &pwent); #ifdef LOGIN_FBTAB @@ -1117,7 +1160,12 @@ auth_ok: 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 @@ -1135,7 +1183,7 @@ auth_ok: 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; @@ -1154,6 +1202,8 @@ auth_ok: 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); @@ -1192,6 +1242,7 @@ auth_ok: #endif #endif /* AGING */ mailcheck(); /* report on the status of mail */ +#endif /* !USE_PAM */ } else addenv("HUSHLOGIN=TRUE", NULL); @@ -1203,7 +1254,7 @@ auth_ok: 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. */ @@ -1211,20 +1262,26 @@ auth_ok: 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 */ diff --git a/src/logoutd.c b/src/logoutd.c index 44c6b2c9..fa285f06 100644 --- a/src/logoutd.c +++ b/src/logoutd.c @@ -30,7 +30,7 @@ #include #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 #include @@ -60,8 +60,7 @@ static char *Prog; #endif /* local function prototypes */ -static int check_login P_((const struct utmp *)); -int main P_((int, char **)); +static int check_login(const struct utmp *); /* diff --git a/src/mkpasswd.c b/src/mkpasswd.c index 8f7c2834..e35da31f 100644 --- a/src/mkpasswd.c +++ b/src/mkpasswd.c @@ -30,7 +30,7 @@ #include #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 #include "prototypes.h" @@ -103,8 +103,7 @@ extern int sg_dbm_update(); #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 diff --git a/src/newgrp.c b/src/newgrp.c index cf22f499..0b461eba 100644 --- a/src/newgrp.c +++ b/src/newgrp.c @@ -30,7 +30,7 @@ #include #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 #include @@ -53,8 +53,7 @@ static char *Prog; 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 @@ -79,6 +78,7 @@ main(int argc, char **argv) int initflag = 0; int needspasswd = 0; int i; + int their_grp = 0; int cflag = 0; gid_t gid; char *cp; @@ -95,7 +95,10 @@ main(int argc, char **argv) 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); @@ -243,6 +246,7 @@ main(int argc, char **argv) goto failure; } group = grp->gr_name; + their_grp = 1; } else if (! (grp = getgrnam (group))) { fprintf (stderr, _("unknown group: %s\n"), group); goto failure; @@ -259,9 +263,13 @@ main(int argc, char **argv) * 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; /* diff --git a/src/newusers.c b/src/newusers.c index a9141330..fd313c4b 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -36,7 +36,7 @@ #include #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 #include @@ -49,8 +49,6 @@ RCSID(PKG_VER "$Id: newusers.c,v 1.10 1999/06/07 16:40:45 marekm Exp $") static char *Prog; -extern char *crypt_make_salt P_((void)); - #include "getdef.h" #include "pwio.h" #include "groupio.h" @@ -62,12 +60,11 @@ static int is_shadow; #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 diff --git a/src/passwd.c b/src/passwd.c index 2ab85437..535af0c8 100644 --- a/src/passwd.c +++ b/src/passwd.c @@ -30,7 +30,7 @@ #include #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" @@ -155,7 +155,6 @@ static int tcfs_force = 0; * External identifiers */ -extern char *crypt_make_salt P_((void)); #ifdef ATT_AGE extern char *l64a(); #endif @@ -197,39 +196,38 @@ extern int pw_dbm_mode; #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 @@ -301,10 +299,10 @@ reuse(const char *pass, const struct passwd *pw) #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) { @@ -333,7 +331,7 @@ new_password(const struct passwd *pw) int warned; int pass_max_len; #ifdef HAVE_LIBCRACK_HIST - int HistUpdate P_((const char *, const char *)); + int HistUpdate(const char *, const char *); #endif /* diff --git a/src/pwck.c b/src/pwck.c index f30241b0..13aec57b 100644 --- a/src/pwck.c +++ b/src/pwck.c @@ -30,7 +30,7 @@ #include #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 #include @@ -44,13 +44,13 @@ RCSID(PKG_VER "$Id: pwck.c,v 1.13 1999/06/07 16:40:45 marekm Exp $") #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 /* @@ -84,9 +84,8 @@ static int read_only = 0; 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 @@ -276,7 +275,7 @@ main(int argc, char **argv) * be parsed properly. */ - if (!pfe->entry) { + if (!pfe->eptr) { /* * Tell the user this entire line is bogus and @@ -314,14 +313,14 @@ delete_pw: * 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 @@ -445,7 +444,7 @@ delete_pw: * be parsed properly. */ - if (!spe->entry) { + if (!spe->eptr) { /* * Tell the user this entire line is bogus and @@ -483,14 +482,14 @@ delete_spw: * 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 diff --git a/src/pwconv.c b/src/pwconv.c index fcaad97d..3a32370b 100644 --- a/src/pwconv.c +++ b/src/pwconv.c @@ -31,7 +31,7 @@ #include #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 #include @@ -65,8 +65,7 @@ static int 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) diff --git a/src/pwunconv.c b/src/pwunconv.c index 6e6a172b..9335a489 100644 --- a/src/pwunconv.c +++ b/src/pwunconv.c @@ -39,7 +39,7 @@ #include #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 @@ -72,8 +72,7 @@ static int shadow_locked = 0, 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) diff --git a/src/su.c b/src/su.c index 3f4f4309..5fc6278d 100644 --- a/src/su.c +++ b/src/su.c @@ -30,7 +30,7 @@ #include #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 #include @@ -63,9 +63,9 @@ static pam_handle_t *pamh = NULL; * 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; @@ -78,19 +78,14 @@ struct passwd pwent; 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. @@ -133,7 +128,7 @@ iswheel(const char *username) 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, @@ -247,27 +242,24 @@ main(int argc, char **argv) * 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 @@ -508,8 +500,19 @@ top: } #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 */ @@ -525,7 +528,7 @@ top: goto top; } - sulog (tty, 1); /* save SU information */ + sulog(tty, 1, oldname, name); /* save SU information */ endpwent (); #ifdef SHADOWPWD endspent (); @@ -593,20 +596,6 @@ top: * 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; @@ -627,6 +616,21 @@ top: } 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); diff --git a/src/sulogin.c b/src/sulogin.c index b987b286..baef1cce 100644 --- a/src/sulogin.c +++ b/src/sulogin.c @@ -30,7 +30,7 @@ #include #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" @@ -65,15 +65,13 @@ extern char **newenvp; 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) @@ -170,7 +168,7 @@ main(int argc, char **argv) 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) { /* diff --git a/src/useradd.c b/src/useradd.c index dc233949..a2492e07 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -30,7 +30,7 @@ #include #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" @@ -197,33 +197,32 @@ static int sg_dbm_added; #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 diff --git a/src/userdel.c b/src/userdel.c index 6acc5b5f..135bede0 100644 --- a/src/userdel.c +++ b/src/userdel.c @@ -30,7 +30,7 @@ #include #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 #include @@ -101,22 +101,21 @@ static int is_shadow_grp; 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 @@ -134,6 +133,10 @@ usage(void) * * 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 @@ -188,9 +191,36 @@ update_groups(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; diff --git a/src/usermod.c b/src/usermod.c index 915cb3a7..09d1172d 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -30,7 +30,7 @@ #include #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 #include @@ -151,38 +151,37 @@ extern char *optarg; 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. diff --git a/src/vipw.c b/src/vipw.c index d799796f..ed450d47 100644 --- a/src/vipw.c +++ b/src/vipw.c @@ -23,7 +23,7 @@ #include #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" @@ -44,13 +44,12 @@ RCSID(PKG_VER "$Id: vipw.c,v 1.1 1999/07/09 18:02:43 marekm Exp $") 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) @@ -109,7 +108,7 @@ vipwexit(const char *msg, int syserr, int ret) #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; @@ -143,9 +142,23 @@ vipwedit(const char *file, int (*file_lock) P_((void)), int (*file_unlock) P_((v 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 (;;) { -- 2.40.0