diff --git a/Makefile.am b/Makefile.am index 4c9c655f..00e1fcbc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,4 +1,5 @@ ## Process this file with automake to produce Makefile.in +ACLOCAL_AMFLAGS = -I m4 SUBDIRS = lib diff --git a/Makefile.in b/Makefile.in index f7ddaefe..62fe01b6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -165,9 +165,17 @@ am__define_uniq_tagged_files = \ done | $(am__uniquify_input)` DIST_SUBDIRS = lib libsubid src po doc etc tests/unit man am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/build-aux/compile \ + $(top_srcdir)/build-aux/config.guess \ + $(top_srcdir)/build-aux/config.rpath \ + $(top_srcdir)/build-aux/config.sub \ + $(top_srcdir)/build-aux/install-sh \ + $(top_srcdir)/build-aux/ltmain.sh \ + $(top_srcdir)/build-aux/missing \ $(top_srcdir)/man/po/Makefile.in ABOUT-NLS AUTHORS.md COPYING \ - ChangeLog NEWS README compile config.guess config.rpath \ - config.sub install-sh ltmain.sh missing + ChangeLog NEWS README build-aux/compile build-aux/config.guess \ + build-aux/config.rpath build-aux/config.sub \ + build-aux/install-sh build-aux/ltmain.sh build-aux/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) @@ -215,6 +223,7 @@ distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -243,7 +252,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -287,7 +295,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -388,6 +395,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 SUBDIRS = lib $(am__append_1) src po doc etc tests/unit \ $(am__append_2) CLEANFILES = man/8.out man/po/remove-potcdate.* man/*/login.defs.d man/*/*.mo diff --git a/aclocal.m4 b/aclocal.m4 index 3aa89a36..da88563d 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -22,15 +22,14 @@ To do so, use the procedure documented by the package, typically 'autoreconf'.]) # ltdl.m4 - Configure ltdl for the target system. -*-Autoconf-*- # -# Copyright (C) 1999-2008, 2011-2019, 2021-2022 Free Software -# Foundation, Inc. +# Copyright (C) 1999-2008, 2011-2015 Free Software Foundation, Inc. # Written by Thomas Tanner, 1999 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. -# serial 21 LTDL_INIT +# serial 20 LTDL_INIT # LT_CONFIG_LTDL_DIR(DIRECTORY, [LTDL-MODE]) # ------------------------------------------ @@ -358,7 +357,7 @@ AC_CONFIG_COMMANDS_PRE([ if test -n "$_LT_LIBOBJS"; then # Remove the extension. _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' - for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | $SED "$_lt_sed_drop_objext" | sort -u`; do + for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" done @@ -496,7 +495,7 @@ AC_CACHE_CHECK([whether deplibs are loaded by dlopen], # If you are looking for one http://www.opendarwin.org/projects/dlcompat lt_cv_sys_dlopen_deplibs=yes ;; - freebsd* | dragonfly* | midnightbsd*) + freebsd* | dragonfly*) lt_cv_sys_dlopen_deplibs=yes ;; gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) @@ -931,8 +930,8 @@ AU_ALIAS([AC_LTDL_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LTDL_DLSYM_USCORE], []) -# pkg.m4 - Macros to locate and use pkg-config. -*- Autoconf -*- -# serial 12 (pkg-config-0.29.2) +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 11 (pkg-config-0.29.1) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson @@ -974,7 +973,7 @@ dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], -[m4_define([PKG_MACROS_VERSION], [0.29.2]) +[m4_define([PKG_MACROS_VERSION], [0.29.1]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ @@ -1019,7 +1018,7 @@ dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) -dnl only at the first occurrence in configure.ac, so if the first place +dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], @@ -1075,7 +1074,7 @@ AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no -AC_MSG_CHECKING([for $2]) +AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) @@ -1085,17 +1084,17 @@ and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then - AC_MSG_RESULT([no]) + AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` - else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi - # Put the nasty error message in config.log where it belongs - echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - m4_default([$4], [AC_MSG_ERROR( + m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS @@ -1106,8 +1105,8 @@ installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then - AC_MSG_RESULT([no]) - m4_default([$4], [AC_MSG_FAILURE( + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. @@ -1117,10 +1116,10 @@ _PKG_TEXT To get pkg-config, see .])[]dnl ]) else - $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS - $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) - $3 + $3 fi[]dnl ])dnl PKG_CHECK_MODULES diff --git a/compile b/build-aux/compile similarity index 100% rename from compile rename to build-aux/compile diff --git a/config.guess b/build-aux/config.guess similarity index 100% rename from config.guess rename to build-aux/config.guess diff --git a/config.rpath b/build-aux/config.rpath similarity index 100% rename from config.rpath rename to build-aux/config.rpath diff --git a/config.sub b/build-aux/config.sub similarity index 100% rename from config.sub rename to build-aux/config.sub diff --git a/depcomp b/build-aux/depcomp similarity index 100% rename from depcomp rename to build-aux/depcomp diff --git a/install-sh b/build-aux/install-sh similarity index 100% rename from install-sh rename to build-aux/install-sh diff --git a/ltmain.sh b/build-aux/ltmain.sh similarity index 94% rename from ltmain.sh rename to build-aux/ltmain.sh index 977e5237..540a92ab 100755 --- a/ltmain.sh +++ b/build-aux/ltmain.sh @@ -1,12 +1,12 @@ -#! /usr/bin/env sh +#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in -## by inline-source v2019-02-19.15 +## by inline-source v2014-01-03.01 -# libtool (GNU libtool) 2.4.7 +# libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 -# Copyright (C) 1996-2019, 2021-2022 Free Software Foundation, Inc. +# Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. @@ -31,8 +31,8 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.7 Debian-2.4.7-7build1" -package_revision=2.4.7 +VERSION="2.4.6 Debian-2.4.6-15build2" +package_revision=2.4.6 ## ------ ## @@ -64,25 +64,34 @@ package_revision=2.4.7 # libraries, which are installed to $pkgauxdir. # Set a version string for this script. -scriptversion=2019-02-19.15; # UTC +scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 -# This is free software. There is NO warranty; not even for -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Copyright (C) 2004-2019, 2021 Bootstrap Authors -# -# This file is dual licensed under the terms of the MIT license -# , and GPL version 2 or later -# . You must apply one of -# these licenses when using or redistributing this software or any of -# the files within it. See the URLs above, or the file `LICENSE` -# included in the Bootstrap distribution for the full license texts. +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# Please report bugs or propose patches to: -# +# This program is free software; 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 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES 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 program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. ## ------ ## @@ -130,12 +139,9 @@ do _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done -# These NLS vars are set unconditionally (bootstrap issue #24). Unset those -# in case the environment reset is needed later and the $save_* variant is not -# defined (see the code above). -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' @@ -153,26 +159,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# func_unset VAR -# -------------- -# Portably unset VAR. -# In some shells, an 'unset VAR' statement leaves a non-zero return -# status if VAR is already unset, which might be problematic if the -# statement is used at the end of a function (thus poisoning its return -# value) or when 'set -e' is active (causing even a spurious abort of -# the script in this case). -func_unset () -{ - { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } -} - - -# Make sure CDPATH doesn't cause `cd` commands to output the target dir. -func_unset CDPATH - -# Make sure ${,E,F}GREP behave sanely. -func_unset GREP_OPTIONS - ## ------------------------- ## ## Locate command utilities. ## @@ -273,7 +259,7 @@ test -z "$SED" && { rm -f conftest.in conftest.tmp conftest.nl conftest.out } - func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } @@ -309,7 +295,7 @@ test -z "$GREP" && { rm -f conftest.in conftest.tmp conftest.nl conftest.out } - func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } @@ -374,35 +360,6 @@ sed_double_backslash="\ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" -# require_check_ifs_backslash -# --------------------------- -# Check if we can use backslash as IFS='\' separator, and set -# $check_ifs_backshlash_broken to ':' or 'false'. -require_check_ifs_backslash=func_require_check_ifs_backslash -func_require_check_ifs_backslash () -{ - _G_save_IFS=$IFS - IFS='\' - _G_check_ifs_backshlash='a\\b' - for _G_i in $_G_check_ifs_backshlash - do - case $_G_i in - a) - check_ifs_backshlash_broken=false - ;; - '') - break - ;; - *) - check_ifs_backshlash_broken=: - break - ;; - esac - done - IFS=$_G_save_IFS - require_check_ifs_backslash=: -} - ## ----------------- ## ## Global variables. ## @@ -572,15 +529,27 @@ func_require_term_colors () # --------------------- # Append VALUE onto the existing contents of VAR. + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. - if test -z "$_G_HAVE_PLUSEQ_OP" && \ - __PLUSEQ_TEST="a" && \ - __PLUSEQ_TEST+=" b" 2>/dev/null && \ - test "a b" = "$__PLUSEQ_TEST"; then - _G_HAVE_PLUSEQ_OP=yes - fi + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then @@ -611,16 +580,16 @@ if test yes = "$_G_HAVE_PLUSEQ_OP"; then { $debug_cmd - func_quote_arg pretty "$2" - eval "$1+=\\ \$func_quote_arg_result" + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd - func_quote_arg pretty "$2" - eval "$1=\$$1\\ \$func_quote_arg_result" + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi @@ -1122,206 +1091,88 @@ func_relative_path () } -# func_quote_portable EVAL ARG -# ---------------------------- -# Internal function to portably implement func_quote_arg. Note that we still -# keep attention to performance here so we as much as possible try to avoid -# calling sed binary (so far O(N) complexity as long as func_append is O(1)). -func_quote_portable () +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () { $debug_cmd - $require_check_ifs_backslash - - func_quote_portable_result=$2 - - # one-time-loop (easy break) - while true - do - if $1; then - func_quote_portable_result=`$ECHO "$2" | $SED \ - -e "$sed_double_quote_subst" -e "$sed_double_backslash"` - break + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi - # Quote for eval. - case $func_quote_portable_result in - *[\\\`\"\$]*) - # Fallback to sed for $func_check_bs_ifs_broken=:, or when the string - # contains the shell wildcard characters. - case $check_ifs_backshlash_broken$func_quote_portable_result in - :*|*[\[\*\?]*) - func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ - | $SED "$sed_quote_subst"` - break - ;; - esac - - func_quote_portable_old_IFS=$IFS - for _G_char in '\' '`' '"' '$' - do - # STATE($1) PREV($2) SEPARATOR($3) - set start "" "" - func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy - IFS=$_G_char - for _G_part in $func_quote_portable_result - do - case $1 in - quote) - func_append func_quote_portable_result "$3$2" - set quote "$_G_part" "\\$_G_char" - ;; - start) - set first "" "" - func_quote_portable_result= - ;; - first) - set quote "$_G_part" "" - ;; - esac - done - done - IFS=$func_quote_portable_old_IFS - ;; - *) ;; - esac - break - done - - func_quote_portable_unquoted_result=$func_quote_portable_result - case $func_quote_portable_result in - # double-quote args containing shell metacharacters to delay - # word splitting, command substitution and variable expansion - # for a subsequent eval. - # many bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_portable_result=\"$func_quote_portable_result\" - ;; - esac -} - - -# func_quotefast_eval ARG -# ----------------------- -# Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', -# but optimized for speed. Result is stored in $func_quotefast_eval. -if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then - printf -v _GL_test_printf_tilde %q '~' - if test '\~' = "$_GL_test_printf_tilde"; then - func_quotefast_eval () - { - printf -v func_quotefast_eval_result %q "$1" - } - else - # Broken older Bash implementations. Make those faster too if possible. - func_quotefast_eval () - { - case $1 in - '~'*) - func_quote_portable false "$1" - func_quotefast_eval_result=$func_quote_portable_result + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) - printf -v func_quotefast_eval_result %q "$1" - ;; + _G_quoted_arg=$_G_unquoted_arg + ;; esac - } - fi -else - func_quotefast_eval () - { - func_quote_portable false "$1" - func_quotefast_eval_result=$func_quote_portable_result - } -fi - -# func_quote_arg MODEs ARG -# ------------------------ -# Quote one ARG to be evaled later. MODEs argument may contain zero or more -# specifiers listed below separated by ',' character. This function returns two -# values: -# i) func_quote_arg_result -# double-quoted (when needed), suitable for a subsequent eval -# ii) func_quote_arg_unquoted_result -# has all characters that are still active within double -# quotes backslashified. Available only if 'unquoted' is specified. -# -# Available modes: -# ---------------- -# 'eval' (default) -# - escape shell special characters -# 'expand' -# - the same as 'eval'; but do not quote variable references -# 'pretty' -# - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might -# be used later in func_quote to get output like: 'echo "a b"' instead -# of 'echo a\ b'. This is slower than default on some shells. -# 'unquoted' -# - produce also $func_quote_arg_unquoted_result which does not contain -# wrapping double-quotes. -# -# Examples for 'func_quote_arg pretty,unquoted string': -# -# string | *_result | *_unquoted_result -# ------------+-----------------------+------------------- -# " | \" | \" -# a b | "a b" | a b -# "a b" | "\"a b\"" | \"a b\" -# * | "*" | * -# z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" -# -# Examples for 'func_quote_arg pretty,unquoted,expand string': -# -# string | *_result | *_unquoted_result -# --------------+---------------------+-------------------- -# z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" -func_quote_arg () -{ - _G_quote_expand=false - case ,$1, in - *,expand,*) - _G_quote_expand=: - ;; - esac - - case ,$1, in - *,pretty,*|*,expand,*|*,unquoted,*) - func_quote_portable $_G_quote_expand "$2" - func_quote_arg_result=$func_quote_portable_result - func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result - ;; - *) - # Faster quote-for-eval for some shells. - func_quotefast_eval "$2" - func_quote_arg_result=$func_quotefast_eval_result - ;; - esac -} - - -# func_quote MODEs ARGs... -# ------------------------ -# Quote all ARGs to be evaled later and join them into single command. See -# func_quote_arg's description for more info. -func_quote () -{ - $debug_cmd - _G_func_quote_mode=$1 ; shift - func_quote_result= - while test 0 -lt $#; do - func_quote_arg "$_G_func_quote_mode" "$1" - if test -n "$func_quote_result"; then - func_append func_quote_result " $func_quote_arg_result" + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" else - func_append func_quote_result "$func_quote_arg_result" + func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. @@ -1364,8 +1215,8 @@ func_show_eval () _G_cmd=$1 _G_fail_exp=${2-':'} - func_quote_arg pretty,expand "$_G_cmd" - eval "func_notquiet $func_quote_arg_result" + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" @@ -1390,8 +1241,8 @@ func_show_eval_locale () _G_fail_exp=${2-':'} $opt_quiet || { - func_quote_arg expand,pretty "$_G_cmd" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { @@ -1518,26 +1369,30 @@ func_lt_ver () # End: #! /bin/sh +# Set a version string for this script. +scriptversion=2015-10-07.11; # UTC + # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 -# This is free software. There is NO warranty; not even for -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Copyright (C) 2010-2019, 2021 Bootstrap Authors -# -# This file is dual licensed under the terms of the MIT license -# , and GPL version 2 or later -# . You must apply one of -# these licenses when using or redistributing this software or any of -# the files within it. See the URLs above, or the file `LICENSE` -# included in the Bootstrap distribution for the full license texts. +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# Please report bugs or propose patches to: -# +# This program is free software: 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 3 of the License, or +# (at your option) any later version. -# Set a version string for this script. -scriptversion=2019-02-19.15; # UTC +# This program 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 program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. ## ------ ## @@ -1560,7 +1415,7 @@ scriptversion=2019-02-19.15; # UTC # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file -# starting with '# Written by ' and ending with '# Copyright'. +# starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the @@ -1572,7 +1427,7 @@ scriptversion=2019-02-19.15; # UTC # to display verbose messages only when your user has specified # '--verbose'. # -# After sourcing this file, you can plug in processing for additional +# After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. @@ -1621,8 +1476,8 @@ fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## # This section contains functions for adding, removing, and running hooks -# in the main code. A hook is just a list of function names that can be -# run in order later on. +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. # func_hookable FUNC_NAME # ----------------------- @@ -1655,8 +1510,7 @@ func_add_hook () # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ -# Remove HOOK_FUNC from the list of hook functions to be called by -# FUNC_NAME. +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd @@ -1665,28 +1519,10 @@ func_remove_hook () } -# func_propagate_result FUNC_NAME_A FUNC_NAME_B -# --------------------------------------------- -# If the *_result variable of FUNC_NAME_A _is set_, assign its value to -# *_result variable of FUNC_NAME_B. -func_propagate_result () -{ - $debug_cmd - - func_propagate_result_result=: - if eval "test \"\${${1}_result+set}\" = set" - then - eval "${2}_result=\$${1}_result" - else - func_propagate_result_result=false - fi -} - - # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. -# It's assumed that the list of hook functions contains nothing more +# It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. @@ -1698,19 +1534,22 @@ func_run_hooks () case " $hookable_fns " in *" $1 "*) ;; - *) func_fatal_error "'$1' does not support hook functions." ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do - func_unset "${_G_hook}_result" - eval $_G_hook '${1+"$@"}' - func_propagate_result $_G_hook func_run_hooks - if $func_propagate_result_result; then - eval set dummy "$func_run_hooks_result"; shift + if eval $_G_hook '"$@"'; then + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + _G_rc_run_hooks=: fi done + + $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result } @@ -1720,16 +1559,14 @@ func_run_hooks () ## --------------- ## # In order to add your own option parsing hooks, you must accept the -# full positional parameter list from your hook function. You may remove -# or edit any options that you action, and then pass back the remaining -# unprocessed options in '_result', escaped -# suitably for 'eval'. -# -# The '_result' variable is automatically unset -# before your hook gets called; for best performance, only set the -# *_result variable when necessary (i.e. don't call the 'func_quote' -# function unnecessarily because it can be an expensive operation on some -# machines). +# full positional parameter list in your hook function, you may remove/edit +# any options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. In this case you also must return $EXIT_SUCCESS to let the +# hook's caller know that it should pay attention to +# '_result'. Returning $EXIT_FAILURE signalizes that +# arguments are left untouched by the hook and therefore caller will ignore the +# result variable. # # Like this: # @@ -1741,8 +1578,11 @@ func_run_hooks () # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' -# # No change in '$@' (ignored completely by this hook). Leave -# # my_options_prep_result variable intact. +# # No change in '$@' (ignored completely by this hook). There is +# # no need to do the equivalent (but slower) action: +# # func_quote_for_eval ${1+"$@"} +# # my_options_prep_result=$func_quote_for_eval_result +# false # } # func_add_hook func_options_prep my_options_prep # @@ -1753,7 +1593,7 @@ func_run_hooks () # # args_changed=false # -# # Note that, for efficiency, we parse as many options as we can +# # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do @@ -1770,17 +1610,18 @@ func_run_hooks () # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" -# # is added back to "$@" in case we need it later, -# # if $args_changed was set to 'true'. +# # is added back to "$@", we could need that later +# # if $args_changed is true. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # -# # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then -# func_quote eval ${1+"$@"} -# my_silent_option_result=$func_quote_result +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result # fi +# +# $args_changed # } # func_add_hook func_parse_options my_silent_option # @@ -1791,6 +1632,8 @@ func_run_hooks () # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." +# +# false # } # func_add_hook func_validate_options my_option_validation # @@ -1806,8 +1649,13 @@ func_options_finish () { $debug_cmd - func_run_hooks func_options ${1+"$@"} - func_propagate_result func_run_hooks func_options_finish + _G_func_options_finish_exit=false + if func_run_hooks func_options ${1+"$@"}; then + func_options_finish_result=$func_run_hooks_result + _G_func_options_finish_exit=: + fi + + $_G_func_options_finish_exit } @@ -1820,27 +1668,28 @@ func_options () { $debug_cmd - _G_options_quoted=false + _G_rc_options=false for my_func in options_prep parse_options validate_options options_finish do - func_unset func_${my_func}_result - func_unset func_run_hooks_result - eval func_$my_func '${1+"$@"}' - func_propagate_result func_$my_func func_options - if $func_propagate_result_result; then - eval set dummy "$func_options_result"; shift - _G_options_quoted=: + if eval func_$my_func '${1+"$@"}'; then + eval _G_res_var='$'"func_${my_func}_result" + eval set dummy "$_G_res_var" ; shift + _G_rc_options=: fi done - $_G_options_quoted || { - # As we (func_options) are top-level options-parser function and - # nobody quoted "$@" for us yet, we need to do it explicitly for - # caller. - func_quote eval ${1+"$@"} - func_options_result=$func_quote_result - } + # Save modified positional parameters for caller. As a top-level + # options-parser function we always need to set the 'func_options_result' + # variable (regardless the $_G_rc_options value). + if $_G_rc_options; then + func_options_result=$_G_res_var + else + func_quote_for_eval ${1+"$@"} + func_options_result=$func_quote_for_eval_result + fi + + $_G_rc_options } @@ -1850,7 +1699,8 @@ func_options () # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete -# modified list must be put in 'func_run_hooks_result' before returning. +# modified list must be put in 'func_run_hooks_result' before +# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). func_hookable func_options_prep func_options_prep () { @@ -1860,8 +1710,14 @@ func_options_prep () opt_verbose=false opt_warning_types= - func_run_hooks func_options_prep ${1+"$@"} - func_propagate_result func_run_hooks func_options_prep + _G_rc_options_prep=false + if func_run_hooks func_options_prep ${1+"$@"}; then + _G_rc_options_prep=: + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result + fi + + $_G_rc_options_prep } @@ -1873,32 +1729,27 @@ func_parse_options () { $debug_cmd - _G_parse_options_requote=false + func_parse_options_result= + + _G_rc_parse_options=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. - func_run_hooks func_parse_options ${1+"$@"} - func_propagate_result func_run_hooks func_parse_options - if $func_propagate_result_result; then - eval set dummy "$func_parse_options_result"; shift - # Even though we may have changed "$@", we passed the "$@" array - # down into the hook and it quoted it for us (because we are in - # this if-branch). No need to quote it again. - _G_parse_options_requote=false + if func_run_hooks func_parse_options ${1+"$@"}; then + eval set dummy "$func_run_hooks_result"; shift + _G_rc_parse_options=: fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break - # We expect that one of the options parsed in this function matches - # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' - func_echo "enabling shell trace mode" >&2 + func_echo "enabling shell trace mode" $debug_cmd ;; @@ -1909,7 +1760,7 @@ func_parse_options () --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then - _G_parse_options_requote=: + _G_rc_parse_options=: break fi case " $warning_categories $1" in @@ -1964,7 +1815,7 @@ func_parse_options () shift ;; - --) _G_parse_options_requote=: ; break ;; + --) _G_rc_parse_options=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false @@ -1972,16 +1823,17 @@ func_parse_options () ;; esac - if $_G_match_parse_options; then - _G_parse_options_requote=: - fi + $_G_match_parse_options && _G_rc_parse_options=: done - if $_G_parse_options_requote; then + + if $_G_rc_parse_options; then # save modified positional parameters for caller - func_quote eval ${1+"$@"} - func_parse_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result fi + + $_G_rc_parse_options } @@ -1994,14 +1846,21 @@ func_validate_options () { $debug_cmd + _G_rc_validate_options=false + # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" - func_run_hooks func_validate_options ${1+"$@"} - func_propagate_result func_run_hooks func_validate_options + if func_run_hooks func_validate_options ${1+"$@"}; then + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result + _G_rc_validate_options=: + fi # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE + + $_G_rc_validate_options } @@ -2057,8 +1916,8 @@ func_missing_arg () # func_split_equals STRING # ------------------------ -# Set func_split_equals_lhs and func_split_equals_rhs shell variables -# after splitting STRING at the '=' sign. +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ @@ -2073,9 +1932,8 @@ then func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} - if test "x$func_split_equals_lhs" = "x$1"; then - func_split_equals_rhs= - fi + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. @@ -2085,7 +1943,7 @@ else func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= - test "x$func_split_equals_lhs=" = "x$1" \ + test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals @@ -2111,7 +1969,7 @@ else { $debug_cmd - func_split_short_opt_name=`expr "x$1" : 'x\(-.\)'` + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt @@ -2153,44 +2011,31 @@ func_usage_message () # func_version # ------------ # Echo version message to standard output and exit. -# The version message is extracted from the calling file's header -# comments, with leading '# ' stripped: -# 1. First display the progname and version -# 2. Followed by the header comment line matching /^# Written by / -# 3. Then a blank line followed by the first following line matching -# /^# Copyright / -# 4. Immediately followed by any lines between the previous matches, -# except lines preceding the intervening completely blank line. -# For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' - /^# Written by /!b - s|^# ||; p; n - - :fwd2blnk - /./ { - n - b fwd2blnk + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more } - p; n - - :holdwrnt - s|^# || - s|^# *$|| - /^Copyright /!{ - /./H - n - b holdwrnt + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p } - - s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| - G - s|\(\n\)\n*|\1|g - p; q' < "$progpath" + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" exit $? } @@ -2200,12 +2045,12 @@ func_version () # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-pattern: "30/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. -scriptversion='(GNU libtool) 2.4.7' +scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... @@ -2296,7 +2141,7 @@ include the following information: compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname $scriptversion Debian-2.4.7-7build1 + version: $progname $scriptversion Debian-2.4.6-15build2 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` @@ -2352,7 +2197,7 @@ fi # a configuration failure hint, and exit. func_fatal_configuration () { - func_fatal_error ${1+"$@"} \ + func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } @@ -2500,8 +2345,6 @@ libtool_options_prep () _G_rc_lt_options_prep=: - _G_rc_lt_options_prep=: - # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) @@ -2532,9 +2375,11 @@ libtool_options_prep () if $_G_rc_lt_options_prep; then # Pass back the list of options. - func_quote eval ${1+"$@"} - libtool_options_prep_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result fi + + $_G_rc_lt_options_prep } func_add_hook func_options_prep libtool_options_prep @@ -2637,9 +2482,11 @@ libtool_parse_options () if $_G_rc_lt_parse_options; then # save modified positional parameters for caller - func_quote eval ${1+"$@"} - libtool_parse_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result fi + + $_G_rc_lt_parse_options } func_add_hook func_parse_options libtool_parse_options @@ -2696,8 +2543,8 @@ libtool_validate_options () } # Pass back the unparsed argument list - func_quote eval ${1+"$@"} - libtool_validate_options_result=$func_quote_result + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options @@ -3663,8 +3510,8 @@ func_mode_compile () esac done - func_quote_arg pretty "$libobj" - test "X$libobj" != "X$func_quote_arg_result" \ + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" @@ -3737,8 +3584,8 @@ compiler." func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result - func_quote_arg pretty "$srcfile" - qsrcfile=$func_quote_arg_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then @@ -3893,8 +3740,7 @@ This mode accepts the following additional options: -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking - -Wc,FLAG - -Xcompiler FLAG pass FLAG directly to the compiler + -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. @@ -4000,8 +3846,6 @@ The following components of LINK-COMMAND are treated specially: -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wa,FLAG - -Xassembler FLAG pass linker-specific FLAG directly to the assembler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) @@ -4344,8 +4188,8 @@ func_mode_install () case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. - func_quote_arg pretty "$nonopt" - install_prog="$func_quote_arg_result " + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " arg=$1 shift else @@ -4355,8 +4199,8 @@ func_mode_install () # The real first argument should be the name of the installation program. # Aesthetically quote it. - func_quote_arg pretty "$arg" - func_append install_prog "$func_quote_arg_result" + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; @@ -4413,12 +4257,12 @@ func_mode_install () esac # Aesthetically quote the argument. - func_quote_arg pretty "$arg" - func_append install_prog " $func_quote_arg_result" + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then - func_quote_arg pretty "$arg2" + func_quote_for_eval "$arg2" fi - func_append install_shared_prog " $func_quote_arg_result" + func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ @@ -4429,8 +4273,8 @@ func_mode_install () if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else - func_quote_arg pretty "$install_override_mode" - func_append install_shared_prog " -m $func_quote_arg_result" + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi @@ -4726,8 +4570,8 @@ func_mode_install () relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { - func_quote_arg expand,pretty "$relink_command" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else @@ -5506,8 +5350,7 @@ else if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" - func_quote_arg pretty "$ECHO" - qECHO=$func_quote_arg_result + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. @@ -5517,7 +5360,7 @@ func_fallback_echo () \$1 _LTECHO_EOF' } - ECHO=$qECHO + ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to @@ -6860,9 +6703,9 @@ func_mode_link () while test "$#" -gt 0; do arg=$1 shift - func_quote_arg pretty,unquoted "$arg" - qarg=$func_quote_arg_unquoted_result - func_append libtool_args " $func_quote_arg_result" + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then @@ -7098,13 +6941,6 @@ func_mode_link () prev= continue ;; - xassembler) - func_append compiler_flags " -Xassembler $qarg" - prev= - func_append compile_command " -Xassembler $qarg" - func_append finalize_command " -Xassembler $qarg" - continue - ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" @@ -7275,7 +7111,7 @@ func_mode_link () # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; @@ -7295,7 +7131,7 @@ func_mode_link () esac elif test X-lc_r = "X$arg"; then case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig* | *-*-midnightbsd*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; @@ -7325,20 +7161,8 @@ func_mode_link () prev=xcompiler continue ;; - # Solaris ld rejects as of 11.4. Refer to Oracle bug 22985199. - -pthread) - case $host in - *solaris2*) ;; - *) - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - ;; - esac - continue - ;; - -mt|-mthreads|-kthread|-Kthread|-pthreads|--thread-safe \ + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" @@ -7479,9 +7303,9 @@ func_mode_link () save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs - func_quote_arg pretty "$flag" - func_append arg " $func_quote_arg_result" - func_append compiler_flags " $func_quote_arg_result" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" @@ -7495,21 +7319,16 @@ func_mode_link () save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs - func_quote_arg pretty "$flag" - func_append arg " $wl$func_quote_arg_result" - func_append compiler_flags " $wl$func_quote_arg_result" - func_append linker_flags " $func_quote_arg_result" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; - -Xassembler) - prev=xassembler - continue - ;; - -Xcompiler) prev=xcompiler continue @@ -7527,8 +7346,8 @@ func_mode_link () # -msg_* for osf cc -msg_*) - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: @@ -7551,13 +7370,12 @@ func_mode_link () # -fuse-ld=* Linker select flags for GCC # -static-* direct GCC to link specific libraries statically # -fcilkplus Cilk Plus language extension features for C/C++ - # -Wa,* Pass flags directly to the assembler -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus|-Wa,*) - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" @@ -7578,15 +7396,15 @@ func_mode_link () continue else # Otherwise treat like 'Some other compiler flag' below - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result ;; *.$objext) @@ -7706,8 +7524,8 @@ func_mode_link () *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. - func_quote_arg pretty "$arg" - arg=$func_quote_arg_result + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result ;; esac # arg @@ -8915,7 +8733,7 @@ func_mode_link () test CXX = "$tagname" && { case $host_os in linux*) - case `$CC -V 2>&1 | $SED 5q` in + case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi @@ -9088,7 +8906,7 @@ func_mode_link () # case $version_type in # correct linux to gnu/linux during the next big refactor - darwin|freebsd-elf|linux|midnightbsd-elf|osf|windows|none) + darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor @@ -9182,7 +9000,7 @@ func_mode_link () versuffix=.$current.$revision ;; - freebsd-elf | midnightbsd-elf) + freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision @@ -9408,7 +9226,7 @@ func_mode_link () *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-midnightbsd*) + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) @@ -10219,8 +10037,8 @@ EOF for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { - func_quote_arg expand,pretty "$cmd" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? @@ -10313,8 +10131,8 @@ EOF eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { - func_quote_arg expand,pretty "$cmd" - eval "func_echo $func_quote_arg_result" + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? @@ -10788,13 +10606,12 @@ EOF elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - func_quote_arg pretty "$var_value" - relink_command="$var=$func_quote_arg_result; export $var; $relink_command" + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done - func_quote eval cd "`pwd`" - func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)" - relink_command=$func_quote_arg_unquoted_result + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. @@ -11034,15 +10851,13 @@ EOF elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else - func_quote_arg pretty,unquoted "$var_value" - relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command" + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. - func_quote eval cd "`pwd`" - relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - func_quote_arg pretty,unquoted "$relink_command" - relink_command=$func_quote_arg_unquoted_result + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi diff --git a/missing b/build-aux/missing similarity index 100% rename from missing rename to build-aux/missing diff --git a/test-driver b/build-aux/test-driver similarity index 100% rename from test-driver rename to build-aux/test-driver diff --git a/config.h.in b/config.h.in index e19deca6..ff029455 100644 --- a/config.h.in +++ b/config.h.in @@ -250,9 +250,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H -/* Path for lastlog file. */ -#undef LASTLOG_FILE - /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR @@ -456,6 +453,3 @@ /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES - -/* Path for wtmp file. */ -#undef _WTMP_FILE diff --git a/configure b/configure index ba36ad9b..399ece49 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for shadow 4.18.0. +# Generated by GNU Autoconf 2.71 for shadow 4.19.0. # # Report bugs to . # @@ -621,8 +621,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='shadow' PACKAGE_TARNAME='shadow' -PACKAGE_VERSION='4.18.0' -PACKAGE_STRING='shadow 4.18.0' +PACKAGE_VERSION='4.19.0' +PACKAGE_STRING='shadow 4.19.0' PACKAGE_BUGREPORT='pkg-shadow-devel@lists.alioth.debian.org' PACKAGE_URL='https://github.com/shadow-maint/shadow' @@ -707,7 +707,6 @@ WITH_LIBBSD_TRUE LIBBSD_LIBS LIBBSD_CFLAGS LIBBSD -LIYESCRYPT LIBCRYPT ENABLE_LOGIND_FALSE ENABLE_LOGIND_TRUE @@ -763,7 +762,6 @@ ac_ct_AR AR DLLTOOL OBJDUMP -FILECMD NM ac_ct_DUMPBIN DUMPBIN @@ -805,6 +803,7 @@ LIBSUBID_ABI LIBSUBID_ABI_MICRO LIBSUBID_ABI_MINOR LIBSUBID_ABI_MAJOR +AM_DISTCHECK_CONFIGURE_FLAGS AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V @@ -1485,7 +1484,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures shadow 4.18.0 to adapt to many kinds of systems. +\`configure' configures shadow 4.19.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1556,7 +1555,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of shadow 4.18.0:";; + short | recursive ) echo "Configuration of shadow 4.19.0:";; esac cat <<\_ACEOF @@ -1588,7 +1587,7 @@ Optional Features: --enable-subordinate-ids support subordinate ids [default=yes] --enable-lastlog enable lastlog [default=no] - --enable-logind enable logind [default=yes] + --disable-logind disable logind integration --enable-vendordir=DIR Directory for distribution provided configuration files --disable-nls do not use Native Language Support @@ -1729,7 +1728,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -shadow configure 4.18.0 +shadow configure 4.19.0 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -2329,7 +2328,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by shadow $as_me 4.18.0, which was +It was created by shadow $as_me 4.19.0, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -2926,7 +2925,7 @@ gt_needs="$gt_needs need-ngettext" ac_aux_files="config.rpath config.guess config.sub ltmain.sh compile missing install-sh" # Locations in which to look for auxiliary files. -ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." +ac_aux_dir_candidates="${srcdir}/build-aux" # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. @@ -3088,6 +3087,11 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_config_headers="$ac_config_headers config.h" + + am__api_version='1.16' @@ -3602,7 +3606,7 @@ fi # Define the identity of the package. PACKAGE='shadow' - VERSION='4.18.0' + VERSION='4.19.0' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -3791,7 +3795,6 @@ END fi fi - # Check whether --enable-silent-rules was given. if test ${enable_silent_rules+y} then : @@ -3833,7 +3836,8 @@ else fi AM_BACKSLASH='\' -ac_config_headers="$ac_config_headers config.h" + +AM_DISTCHECK_CONFIGURE_FLAGS="$ac_configure_args" LIBSUBID_ABI_MAJOR=5 @@ -3845,8 +3849,8 @@ LIBSUBID_ABI_MICRO=0 LIBSUBID_ABI=5.0.0 -test "$prefix" = "NONE" && prefix="/usr" -test "$prefix" = "/usr" && exec_prefix="" +test "x$prefix" = "xNONE" && prefix="/usr" +test "X$prefix" = "X/usr" && exec_prefix="" @@ -6299,8 +6303,8 @@ esac -macro_version='2.4.7' -macro_revision='2.4.7' +macro_version='2.4.6' +macro_revision='2.4.6' @@ -6928,13 +6932,13 @@ else mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) - case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 @@ -7072,7 +7076,7 @@ esac fi fi - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; @@ -7165,7 +7169,7 @@ else $as_nop lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -7208,7 +7212,7 @@ else $as_nop sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi @@ -7413,114 +7417,6 @@ esac -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. -set dummy ${ac_tool_prefix}file; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_FILECMD+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$FILECMD"; then - ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_FILECMD="${ac_tool_prefix}file" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -FILECMD=$ac_cv_prog_FILECMD -if test -n "$FILECMD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 -printf "%s\n" "$FILECMD" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_FILECMD"; then - ac_ct_FILECMD=$FILECMD - # Extract the first word of "file", so it can be a program name with args. -set dummy file; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_FILECMD+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_FILECMD"; then - ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_FILECMD="file" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD -if test -n "$ac_ct_FILECMD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 -printf "%s\n" "$ac_ct_FILECMD" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_FILECMD" = x; then - FILECMD=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - FILECMD=$ac_ct_FILECMD - fi -else - FILECMD="$ac_cv_prog_FILECMD" -fi - - - - - - - if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 @@ -7664,7 +7560,7 @@ beos*) bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; @@ -7698,14 +7594,14 @@ darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; -freebsd* | dragonfly* | midnightbsd*) +freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac @@ -7719,7 +7615,7 @@ haiku*) ;; hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' @@ -7766,7 +7662,7 @@ netbsd* | netbsdelf*-gnu) newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; @@ -8139,29 +8035,13 @@ esac fi : ${AR=ar} +: ${AR_FLAGS=cr} -# Use ARFLAGS variable as AR's operation code to sync the variable naming with -# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have -# higher priority because thats what people were doing historically (setting -# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS -# variable obsoleted/removed. - -test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} -lt_ar_flags=$AR_FLAGS - - - - - - -# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override -# by AR_FLAGS because that was never working and AR_FLAGS is about to die. - @@ -8578,7 +8458,7 @@ esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" @@ -8596,20 +8476,20 @@ fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ @@ -8633,7 +8513,7 @@ for ac_symprfx in "" "_"; do if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ @@ -8651,9 +8531,9 @@ for ac_symprfx in "" "_"; do " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else - lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -8853,7 +8733,7 @@ case $with_sysroot in #( fi ;; #( /*) - lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( @@ -8978,7 +8858,7 @@ ia64-*-hpux*) ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; @@ -8999,7 +8879,7 @@ ia64-*-hpux*) printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; @@ -9011,7 +8891,7 @@ ia64-*-hpux*) ;; esac else - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; @@ -9037,7 +8917,7 @@ mips64*-*linux*) printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; @@ -9045,7 +8925,7 @@ mips64*-*linux*) emul="${emul}64" ;; esac - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; @@ -9053,7 +8933,7 @@ mips64*-*linux*) emul="${emul}ltsmip" ;; esac - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; @@ -9077,14 +8957,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - case `$FILECMD conftest.o` in + case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - case `$FILECMD conftest.o` in + case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; @@ -9192,7 +9072,7 @@ printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - case `$FILECMD conftest.o` in + case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) @@ -9975,8 +9855,8 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 - $AR $AR_FLAGS libconftest.a conftest.o 2>&5 + echo "$AR cr libconftest.a conftest.o" >&5 + $AR cr libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF @@ -10003,12 +9883,17 @@ printf "%s\n" "$lt_cv_ld_force_load" >&6; } _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) - case $MACOSX_DEPLOYMENT_TARGET,$host in - 10.[012],*|,*powerpc*-darwin[5-8]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - *) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[912]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*|11.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac @@ -10305,8 +10190,8 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC and -# ICC, which need '.lib'). +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld @@ -10824,7 +10709,7 @@ lt_prog_compiler_static= lt_prog_compiler_static='-qstaticlink' ;; *) - case `$CC -V 2>&1 | $SED 5q` in + case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' @@ -11247,15 +11132,15 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using - # Microsoft Visual C++ or Intel C++ Compiler. + # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) @@ -11310,7 +11195,7 @@ printf %s "checking whether the $compiler linker ($LD) supports shared libraries whole_archive_flag_spec= fi supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -11422,7 +11307,6 @@ _LT_EOF emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes - file_list_spec='@' ;; interix[3-9]*) @@ -11437,7 +11321,7 @@ _LT_EOF # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) @@ -11480,7 +11364,7 @@ _LT_EOF compiler_needs_object=yes ;; esac - case `$CC -V 2>&1 | $SED 5q` in + case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes @@ -11492,14 +11376,13 @@ _LT_EOF if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) @@ -11509,7 +11392,7 @@ _LT_EOF archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi @@ -11641,7 +11524,7 @@ _LT_EOF if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no @@ -11912,12 +11795,12 @@ fi cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using - # Microsoft Visual C++ or Intel C++ Compiler. + # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in - cl* | icl*) - # Native MSVC or ICC + cl*) + # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes @@ -11958,7 +11841,7 @@ fi fi' ;; *) - # Assume MSVC and ICC wrapper + # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. @@ -11999,8 +11882,8 @@ fi output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no @@ -12034,7 +11917,7 @@ fi ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly* | midnightbsd*) + freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes @@ -12215,7 +12098,6 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' ;; esac ;; @@ -12287,7 +12169,6 @@ printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes - file_list_spec='@' ;; osf3*) @@ -12980,7 +12861,7 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; @@ -12990,14 +12871,14 @@ cygwin* | mingw* | pw32* | cegcc*) ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; - *,cl* | *,icl*) - # Native MSVC or ICC + *,cl*) + # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' @@ -13016,7 +12897,7 @@ cygwin* | mingw* | pw32* | cegcc*) done IFS=$lt_save_ifs # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form @@ -13053,7 +12934,7 @@ cygwin* | mingw* | pw32* | cegcc*) ;; *) - # Assume MSVC and ICC wrapper + # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; @@ -13086,7 +12967,7 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd* | dragonfly* | midnightbsd*) +freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then @@ -14251,41 +14132,30 @@ striplib= old_striplib= { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 printf %s "checking whether stripping libraries is possible... " >&6; } -if test -z "$STRIP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -else - if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - old_striplib="$STRIP --strip-debug" - striplib="$STRIP --strip-unneeded" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - else - case $host_os in - darwin*) - # FIXME - insert some real tests, host_os isn't really good enough +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - ;; - freebsd*) - if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then - old_striplib="$STRIP --strip-debug" - striplib="$STRIP --strip-unneeded" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - ;; - *) + else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - ;; - esac - fi + fi + ;; + *) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + ;; + esac fi @@ -15283,6 +15153,7 @@ then : printf "%s\n" "#define HAS_SECURE_GETENV 1" >>confdefs.h + fi @@ -15341,12 +15212,6 @@ fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $shadow_cv_logdir" >&5 printf "%s\n" "$shadow_cv_logdir" >&6; } -printf "%s\n" "#define _WTMP_FILE \"$shadow_cv_logdir/wtmp\"" >>confdefs.h - - -printf "%s\n" "#define LASTLOG_FILE \"$shadow_cv_logdir/lastlog\"" >>confdefs.h - - printf "%s\n" "#define FAILLOG_FILE \"$shadow_cv_logdir/faillog\"" >>confdefs.h @@ -15416,7 +15281,17 @@ fi # Check whether --enable-logind was given. if test ${enable_logind+y} then : - enableval=$enable_logind; enable_logind="${enableval}" + enableval=$enable_logind; + case ${enableval} in #( + yes) : + ;; #( + no) : + ;; #( + *) : + as_fn_error $? "bad parameter value for --enable-logind=${enableval}. Supported values are: --enable-logind (or --enable-logind=yes) and --disable-logind (or --enable-logind=no)." "$LINENO" 5 + ;; +esac + else $as_nop enable_logind="yes" @@ -15568,9 +15443,9 @@ else $as_nop fi -if test "$with_group_name_max_length" = "no" ; then +if test "X$with_group_name_max_length" = "Xno" ; then with_group_name_max_length=0 -elif test "$with_group_name_max_length" = "yes" ; then +elif test "X$with_group_name_max_length" = "Xyes" ; then with_group_name_max_length=32 fi @@ -15588,7 +15463,7 @@ else USE_SHA_CRYPT_FALSE= fi -if test "$with_sha_crypt" = "yes"; then +if test "X$with_sha_crypt" = "Xyes"; then printf "%s\n" "#define USE_SHA_CRYPT 1" >>confdefs.h @@ -15602,7 +15477,7 @@ else USE_BCRYPT_FALSE= fi -if test "$with_bcrypt" = "yes"; then +if test "X$with_bcrypt" = "Xyes"; then printf "%s\n" "#define USE_BCRYPT 1" >>confdefs.h @@ -15616,13 +15491,13 @@ else USE_YESCRYPT_FALSE= fi -if test "$with_yescrypt" = "yes"; then +if test "X$with_yescrypt" = "Xyes"; then printf "%s\n" "#define USE_YESCRYPT 1" >>confdefs.h fi -if test "$with_nscd" = "yes"; then +if test "X$with_nscd" = "Xyes"; then ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" if test "x$ac_cv_func_posix_spawn" = xyes then : @@ -15635,7 +15510,7 @@ fi fi -if test "$with_sssd" = "yes"; then +if test "X$with_sssd" = "Xyes"; then ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn" if test "x$ac_cv_func_posix_spawn" = xyes then : @@ -15856,8 +15731,8 @@ printf "%s\n" "no" >&6; } fi pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for cmocka" >&5 -printf %s "checking for cmocka... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CMOCKA" >&5 +printf %s "checking for CMOCKA... " >&6; } if test -n "$CMOCKA_CFLAGS"; then pkg_cv_CMOCKA_CFLAGS="$CMOCKA_CFLAGS" @@ -15897,7 +15772,7 @@ fi if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -15906,26 +15781,26 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - CMOCKA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cmocka" 2>&1` + CMOCKA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cmocka" 2>&1` else - CMOCKA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cmocka" 2>&1` + CMOCKA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cmocka" 2>&1` fi - # Put the nasty error message in config.log where it belongs - echo "$CMOCKA_PKG_ERRORS" >&5 + # Put the nasty error message in config.log where it belongs + echo "$CMOCKA_PKG_ERRORS" >&5 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5 printf "%s\n" "$as_me: WARNING: libcmocka not found, cmocka tests will not be built" >&2;} elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libcmocka not found, cmocka tests will not be built" >&5 printf "%s\n" "$as_me: WARNING: libcmocka not found, cmocka tests will not be built" >&2;} else - CMOCKA_CFLAGS=$pkg_cv_CMOCKA_CFLAGS - CMOCKA_LIBS=$pkg_cv_CMOCKA_LIBS + CMOCKA_CFLAGS=$pkg_cv_CMOCKA_CFLAGS + CMOCKA_LIBS=$pkg_cv_CMOCKA_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } - have_cmocka="yes" + have_cmocka="yes" fi if test x$have_cmocka = xyes; then HAVE_CMOCKA_TRUE= @@ -15936,6 +15811,12 @@ else fi +# Check whether --enable-vendordir was given. +if test ${enable_vendordir+y} +then : + enableval=$enable_vendordir; +fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for econf_readDirs in -leconf" >&5 printf %s "checking for econf_readDirs in -leconf... " >&6; } if test ${ac_cv_lib_econf_econf_readDirs+y} @@ -15983,12 +15864,6 @@ if test -n "$LIBECONF"; then printf "%s\n" "#define VENDORDIR \"$enable_vendordir\"" >>confdefs.h ECONF_CPPFLAGS="-DUSE_ECONF=1" - # Check whether --enable-vendordir was given. -if test ${enable_vendordir+y} -then : - enableval=$enable_vendordir; -fi - fi @@ -16008,7 +15883,7 @@ else fi -if test "$enable_shadowgrp" = "yes"; then +if test "X$enable_shadowgrp" = "Xyes"; then printf "%s\n" "#define SHADOWGRP 1" >>confdefs.h @@ -16022,7 +15897,7 @@ else fi -if test "$enable_man" = "yes"; then +if test "X$enable_man" = "Xyes"; then # Extract the first word of "xsltproc", so it can be a program name with args. set dummy xsltproc; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -16290,7 +16165,7 @@ else fi -if test "$enable_lastlog" = "yes" && test "$ac_cv_header_lastlog_h" = "yes"; then +if test "X$enable_lastlog" = "Xyes" && test "X$ac_cv_header_lastlog_h" = "Xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ll_host in struct lastlog" >&5 printf %s "checking for ll_host in struct lastlog... " >&6; } if test ${ac_cv_struct_lastlog_ll_host+y} @@ -16304,7 +16179,6 @@ int main (void) { struct lastlog ll; char *cp = ll.ll_host; - ; return 0; } @@ -16314,15 +16188,15 @@ then : ac_cv_struct_lastlog_ll_host=yes else $as_nop ac_cv_struct_lastlog_ll_host=no - fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_lastlog_ll_host" >&5 printf "%s\n" "$ac_cv_struct_lastlog_ll_host" >&6; } - if test "$ac_cv_struct_lastlog_ll_host" = "yes"; then + if test "X$ac_cv_struct_lastlog_ll_host" = "Xyes"; then printf "%s\n" "#define HAVE_LL_HOST 1" >>confdefs.h @@ -16345,7 +16219,7 @@ fi -if test "$enable_logind" = "yes"; then +if test "X$enable_logind" = "Xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sd_session_get_remote_host in -lsystemd" >&5 printf %s "checking for sd_session_get_remote_host in -lsystemd... " >&6; } if test ${ac_cv_lib_systemd_sd_session_get_remote_host+y} @@ -16383,16 +16257,21 @@ fi printf "%s\n" "$ac_cv_lib_systemd_sd_session_get_remote_host" >&6; } if test "x$ac_cv_lib_systemd_sd_session_get_remote_host" = xyes then : - enable_logind="yes"; LIBSYSTEMD=-lsystemd; + + LIBSYSTEMD=-lsystemd printf "%s\n" "#define ENABLE_LOGIND 1" >>confdefs.h + else $as_nop - enable_logind="no" + + as_fn_error $? "libsystemd not found. If logind integration is not required, disable it using the --disable-logind option. If logind integration is required, consider installing systemd or another package that provides libsystemd." "$LINENO" 5 + + fi fi - if test "x$enable_logind" != "xno"; then + if test "X$enable_logind" = "Xyes"; then ENABLE_LOGIND_TRUE= ENABLE_LOGIND_FALSE='#' else @@ -16401,7 +16280,6 @@ else fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5 printf %s "checking for crypt in -lcrypt... " >&6; } if test ${ac_cv_lib_crypt_crypt+y} @@ -16446,49 +16324,6 @@ fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5 -printf %s "checking for crypt in -lcrypt... " >&6; } -if test ${ac_cv_lib_crypt_crypt+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -char crypt (); -int -main (void) -{ -return crypt (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_crypt_crypt=yes -else $as_nop - ac_cv_lib_crypt_crypt=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5 -printf "%s\n" "$ac_cv_lib_crypt_crypt" >&6; } -if test "x$ac_cv_lib_crypt_crypt" = xyes -then : - LIYESCRYPT=-lcrypt -else $as_nop - as_fn_error $? "crypt() not found" "$LINENO" 5 -fi - - if test "$with_libbsd" != "no"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing readpassphrase" >&5 @@ -16554,13 +16389,13 @@ else $as_nop fi - if test "$ac_cv_search_readpassphrase" = "-lbsd" + if test "X$ac_cv_search_readpassphrase" = "X-lbsd" then : pkg_failed=no -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libbsd-overlay" >&5 -printf %s "checking for libbsd-overlay... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LIBBSD" >&5 +printf %s "checking for LIBBSD... " >&6; } if test -n "$LIBBSD_CFLAGS"; then pkg_cv_LIBBSD_CFLAGS="$LIBBSD_CFLAGS" @@ -16600,7 +16435,7 @@ fi if test $pkg_failed = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then @@ -16609,14 +16444,14 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LIBBSD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libbsd-overlay" 2>&1` + LIBBSD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libbsd-overlay" 2>&1` else - LIBBSD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libbsd-overlay" 2>&1` + LIBBSD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libbsd-overlay" 2>&1` fi - # Put the nasty error message in config.log where it belongs - echo "$LIBBSD_PKG_ERRORS" >&5 + # Put the nasty error message in config.log where it belongs + echo "$LIBBSD_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (libbsd-overlay) were not met: + as_fn_error $? "Package requirements (libbsd-overlay) were not met: $LIBBSD_PKG_ERRORS @@ -16627,9 +16462,9 @@ Alternatively, you may set the environment variables LIBBSD_CFLAGS and LIBBSD_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full @@ -16642,8 +16477,8 @@ See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else - LIBBSD_CFLAGS=$pkg_cv_LIBBSD_CFLAGS - LIBBSD_LIBS=$pkg_cv_LIBBSD_LIBS + LIBBSD_CFLAGS=$pkg_cv_LIBBSD_CFLAGS + LIBBSD_LIBS=$pkg_cv_LIBBSD_LIBS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } @@ -16700,9 +16535,9 @@ else $as_nop fi done - if test "$acl_header$with_acl" = "noyes" ; then + if test "X$acl_header$with_acl" = "Xnoyes" ; then as_fn_error $? "acl/libacl.h or attr/error_context.h is missing" "$LINENO" 5 - elif test "$acl_header" = "yes" ; then + elif test "X$acl_header" = "Xyes" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perm_copy_file in -lacl" >&5 printf %s "checking for perm_copy_file in -lacl... " >&6; } if test ${ac_cv_lib_acl_perm_copy_file+y} @@ -16786,9 +16621,9 @@ else $as_nop acl_lib="no" fi - if test "$acl_lib$with_acl" = "noyes" ; then + if test "X$acl_lib$with_acl" = "Xnoyes" ; then as_fn_error $? "libacl not found" "$LINENO" 5 - elif test "$acl_lib" = "no" ; then + elif test "X$acl_lib" = "Xno" ; then with_acl="no" else @@ -16819,9 +16654,9 @@ else $as_nop fi done - if test "$attr_header$with_attr" = "noyes" ; then + if test "X$attr_header$with_attr" = "noyes" ; then as_fn_error $? "attr/libattr.h or attr/error_context.h is missing" "$LINENO" 5 - elif test "$attr_header" = "yes" ; then + elif test "X$attr_header" = "Xyes" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for attr_copy_file in -lattr" >&5 printf %s "checking for attr_copy_file in -lattr... " >&6; } if test ${ac_cv_lib_attr_attr_copy_file+y} @@ -16905,9 +16740,9 @@ else $as_nop attr_lib="no" fi - if test "$attr_lib$with_attr" = "noyes" ; then + if test "X$attr_lib$with_attr" = "Xnoyes" ; then as_fn_error $? "libattr not found" "$LINENO" 5 - elif test "$attr_lib" = "no" ; then + elif test "X$attr_lib" = "Xno" ; then with_attr="no" else @@ -16931,9 +16766,9 @@ else $as_nop audit_header="no" fi - if test "$audit_header$with_audit" = "noyes" ; then + if test "X$audit_header$with_audit" = "Xnoyes" ; then as_fn_error $? "libaudit.h is missing" "$LINENO" 5 - elif test "$audit_header" = "yes"; then + elif test "X$audit_header" = "Xyes"; then ac_fn_check_decl "$LINENO" "AUDIT_ADD_USER" "ac_cv_have_decl_AUDIT_ADD_USER" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_AUDIT_ADD_USER" = xyes @@ -16966,11 +16801,11 @@ then : else $as_nop audit_header="no" fi - if test "$audit_header$with_audit" = "noyes" ; then + if test "X$audit_header$with_audit" = "Xnoyes" ; then as_fn_error $? "AUDIT_ADD_USER AUDIT_DEL_USER AUDIT_ADD_GROUP or AUDIT_DEL_GROUP missing from libaudit.h" "$LINENO" 5 fi fi - if test "$audit_header" = "yes"; then + if test "X$audit_header" = "Xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for audit_log_acct_message in -laudit" >&5 printf %s "checking for audit_log_acct_message in -laudit... " >&6; } if test ${ac_cv_lib_audit_audit_log_acct_message+y} @@ -17013,9 +16848,9 @@ else $as_nop audit_lib="no" fi - if test "$audit_lib$with_audit" = "noyes" ; then + if test "X$audit_lib$with_audit" = "Xnoyes" ; then as_fn_error $? "libaudit not found" "$LINENO" 5 - elif test "$audit_lib" = "no" ; then + elif test "X$audit_lib" = "Xno" ; then with_audit="no" else @@ -17046,11 +16881,11 @@ else $as_nop fi done - if test "$btrfs_headers$with_btrfs" = "noyes" ; then + if test "X$btrfs_headers$with_btrfs" = "Xnoyes" ; then as_fn_error $? "One of sys/statfs.h linux/magic.h linux/btrfs_tree.h is missing" "$LINENO" 5 fi - if test "$btrfs_headers" = "yes" ; then + if test "X$btrfs_headers" = "Xyes" ; then printf "%s\n" "#define WITH_BTRFS 1" >>confdefs.h @@ -17081,7 +16916,7 @@ else $as_nop fi done - if test "$selinux_header$with_selinux" = "noyes" ; then + if test "X$selinux_header$with_selinux" = "Xnoyes" ; then as_fn_error $? "selinux/selinux.h is missing" "$LINENO" 5 fi @@ -17097,11 +16932,11 @@ else $as_nop fi done - if test "$semanage_header$with_selinux" = "noyes" ; then + if test "X$semanage_header$with_selinux" = "Xnoyes" ; then as_fn_error $? "semanage/semanage.h is missing" "$LINENO" 5 fi - if test "$selinux_header$semanage_header" = "yesyes" ; then + if test "X$selinux_header$semanage_header" = "Xyesyes" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5 printf %s "checking for is_selinux_enabled in -lselinux... " >&6; } if test ${ac_cv_lib_selinux_is_selinux_enabled+y} @@ -17144,7 +16979,7 @@ else $as_nop selinux_lib="no" fi - if test "$selinux_lib$with_selinux" = "noyes" ; then + if test "X$selinux_lib$with_selinux" = "Xnoyes" ; then as_fn_error $? "libselinux not found" "$LINENO" 5 fi @@ -17190,11 +17025,11 @@ else $as_nop semanage_lib="no" fi - if test "$semanage_lib$with_selinux" = "noyes" ; then + if test "X$semanage_lib$with_selinux" = "Xnoyes" ; then as_fn_error $? "libsemanage not found" "$LINENO" 5 fi - if test "$selinux_lib$semanage_lib" = "yesyes" ; then + if test "X$selinux_lib$semanage_lib" = "Xyesyes" ; then printf "%s\n" "#define WITH_SELINUX 1" >>confdefs.h @@ -17223,9 +17058,9 @@ else $as_nop fi done - if test "$tcb_header$with_tcb" = "noyes" ; then + if test "X$tcb_header$with_tcb" = "Xnoyes" ; then as_fn_error $? "tcb.h is missing" "$LINENO" 5 - elif test "$tcb_header" = "yes" ; then + elif test "X$tcb_header" = "Xyes" ; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tcb_is_suspect in -ltcb" >&5 printf %s "checking for tcb_is_suspect in -ltcb... " >&6; } if test ${ac_cv_lib_tcb_tcb_is_suspect+y} @@ -17268,9 +17103,9 @@ else $as_nop tcb_lib="no" fi - if test "$tcb_lib$with_tcb" = "noyes" ; then + if test "X$tcb_lib$with_tcb" = "Xnoyes" ; then as_fn_error $? "libtcb not found" "$LINENO" 5 - elif test "$tcb_lib" = "no" ; then + elif test "X$tcb_lib" = "Xno" ; then with_tcb="no" else @@ -17336,7 +17171,7 @@ else $as_nop pam_lib="no" fi - if test "$pam_lib$with_libpam" = "noyes" ; then + if test "X$pam_lib$with_libpam" = "Xnoyes" ; then as_fn_error $? "libpam not found" "$LINENO" 5 fi @@ -17426,7 +17261,7 @@ fi fi - if test "$pam_conv_function$with_libpam" = "noyes" ; then + if test "X$pam_conv_function$with_libpam" = "Xnoyes" ; then as_fn_error $? "PAM conversation function not found" "$LINENO" 5 fi @@ -17434,7 +17269,7 @@ fi for ac_header in security/openpam.h security/pam_misc.h do : as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #include +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : @@ -17445,19 +17280,19 @@ _ACEOF fi done - if test "$pam_headers_found$with_libpam" = "noyes" ; then + if test "X$pam_headers_found$with_libpam" = "Xnoyes" ; then as_fn_error $? "PAM headers not found" "$LINENO" 5 fi - if test "$pam_lib$pam_headers_found" = "yesyes" -a "$pam_conv_function" != "no" ; then + if test "X$pam_lib$pam_headers_found" = "Xyesyes" && test "$pam_conv_function" != "no" ; then with_libpam="yes" else with_libpam="no" unset LIBPAM fi fi -if test "$with_libpam" = "yes"; then +if test "X$with_libpam" = "Xyes"; then ac_fn_check_decl "$LINENO" "PAM_ESTABLISH_CRED" "ac_cv_have_decl_PAM_ESTABLISH_CRED" "#include " "$ac_c_undeclared_builtin_options" "CFLAGS" if test "x$ac_cv_have_decl_PAM_ESTABLISH_CRED" = xyes @@ -17517,14 +17352,6 @@ printf "%s\n" "#define USE_PAM 1" >>confdefs.h printf "%s\n" "#define SHADOW_PAM_CONVERSATION $pam_conv_function" >>confdefs.h - if true; then - USE_PAM_TRUE= - USE_PAM_FALSE='#' -else - USE_PAM_TRUE='#' - USE_PAM_FALSE= -fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking use login and su access checking if PAM not used" >&5 printf %s "checking use login and su access checking if PAM not used... " >&6; } @@ -17534,7 +17361,12 @@ else printf "%s\n" "#define SU_ACCESS 1" >>confdefs.h - if false; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking use login and su access checking if PAM not used" >&5 +printf %s "checking use login and su access checking if PAM not used... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi + if test "X$with_libpam" = "Xyes"; then USE_PAM_TRUE= USE_PAM_FALSE='#' else @@ -17542,15 +17374,10 @@ else USE_PAM_FALSE= fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking use login and su access checking if PAM not used" >&5 -printf %s "checking use login and su access checking if PAM not used... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -fi if test "$enable_acct_tools_setuid" != "no"; then if test "$with_libpam" != "yes"; then - if test "$enable_acct_tools_setuid" = "yes"; then + if test "X$enable_acct_tools_setuid" = "Xyes"; then as_fn_error $? "PAM support is required for --enable-account-tools-setuid" "$LINENO" 5 else enable_acct_tools_setuid="no" @@ -17558,7 +17385,7 @@ if test "$enable_acct_tools_setuid" != "no"; then else enable_acct_tools_setuid="yes" fi - if test "$enable_acct_tools_setuid" = "yes"; then + if test "X$enable_acct_tools_setuid" = "Xyes"; then printf "%s\n" "#define ACCT_TOOLS_SETUID 1" >>confdefs.h @@ -17647,7 +17474,7 @@ fi -if test "$with_skey" = "yes"; then +if test "X$with_skey" = "Xyes"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MD5Init in -lmd" >&5 printf %s "checking for MD5Init in -lmd... " >&6; } if test ${ac_cv_lib_md_MD5Init+y} @@ -20214,10 +20041,6 @@ if test -z "${USE_PAM_TRUE}" && test -z "${USE_PAM_FALSE}"; then as_fn_error $? "conditional \"USE_PAM\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${USE_PAM_TRUE}" && test -z "${USE_PAM_FALSE}"; then - as_fn_error $? "conditional \"USE_PAM\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${ACCT_TOOLS_SETUID_TRUE}" && test -z "${ACCT_TOOLS_SETUID_FALSE}"; then as_fn_error $? "conditional \"ACCT_TOOLS_SETUID\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -20620,7 +20443,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by shadow $as_me 4.18.0, which was +This file was extended by shadow $as_me 4.19.0, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20689,7 +20512,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -shadow config.status 4.18.0 +shadow config.status 4.19.0 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" @@ -20852,7 +20675,6 @@ lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_q lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' @@ -20861,7 +20683,6 @@ want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' @@ -20982,7 +20803,6 @@ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ -FILECMD \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ @@ -20991,6 +20811,7 @@ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ +AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ @@ -21972,9 +21793,6 @@ to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd -# A file(cmd) program that detects file types. -FILECMD=$lt_FILECMD - # An object symbol dumper. OBJDUMP=$lt_OBJDUMP @@ -21999,11 +21817,8 @@ sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR -# Flags to create an archive (by configure). -lt_ar_flags=$lt_ar_flags - # Flags to create an archive. -AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} +AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec @@ -22379,7 +22194,7 @@ ltmain=$ac_aux_dir/ltmain.sh # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - $SED '$q' "$ltmain" >> "$cfgfile" \ + sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || @@ -22540,31 +22355,54 @@ printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 fi -echo -echo "shadow will be compiled with the following features:" -echo -echo " auditing support: $with_audit" -echo " PAM support: $with_libpam" -if test "$with_libpam" = "yes"; then -echo " suid account management tools: $enable_acct_tools_setuid" -fi -echo " SELinux support: $with_selinux" -echo " BtrFS support: $with_btrfs" -echo " ACL support: $with_acl" -echo " Extended Attributes support: $with_attr" -echo " tcb support (incomplete): $with_tcb" -echo " shadow group support: $enable_shadowgrp" -echo " S/Key support: $with_skey" -echo " SHA passwords encryption: $with_sha_crypt" -echo " bcrypt passwords encryption: $with_bcrypt" -echo " yescrypt passwords encryption: $with_yescrypt" -echo " nscd support: $with_nscd" -echo " sssd support: $with_sssd" -echo " subordinate IDs support: $enable_subids" -echo " enable lastlog: $enable_lastlog" -echo " enable logind: $enable_logind" -echo " use file caps: $with_fcaps" -echo " install su: $with_su" -echo " enabled vendor dir: $enable_vendordir" -echo +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: shadow ${PACKAGE_VERSION} has been configured with the following features: + + auditing support: $with_audit + PAM support: $with_libpam + suid account management tools: $enable_acct_tools_setuid + SELinux support: $with_selinux + BtrFS support: $with_btrfs + ACL support: $with_acl + Extended Attributes support: $with_attr + tcb support (incomplete): $with_tcb + shadow group support: $enable_shadowgrp + S/Key support: $with_skey + SHA passwords encryption: $with_sha_crypt + bcrypt passwords encryption: $with_bcrypt + yescrypt passwords encryption: $with_yescrypt + nscd support: $with_nscd + sssd support: $with_sssd + subordinate IDs support: $enable_subids + enable lastlog: $enable_lastlog + enable logind: $enable_logind + use file caps: $with_fcaps + install su: $with_su + enabled vendor dir: $enable_vendordir + +" >&5 +printf "%s\n" "$as_me: shadow ${PACKAGE_VERSION} has been configured with the following features: + + auditing support: $with_audit + PAM support: $with_libpam + suid account management tools: $enable_acct_tools_setuid + SELinux support: $with_selinux + BtrFS support: $with_btrfs + ACL support: $with_acl + Extended Attributes support: $with_attr + tcb support (incomplete): $with_tcb + shadow group support: $enable_shadowgrp + S/Key support: $with_skey + SHA passwords encryption: $with_sha_crypt + bcrypt passwords encryption: $with_bcrypt + yescrypt passwords encryption: $with_yescrypt + nscd support: $with_nscd + sssd support: $with_sssd + subordinate IDs support: $enable_subids + enable lastlog: $enable_lastlog + enable logind: $enable_logind + use file caps: $with_fcaps + install su: $with_su + enabled vendor dir: $enable_vendordir + +" >&6;} diff --git a/configure.ac b/configure.ac index bacce98a..b3dd34d9 100644 --- a/configure.ac +++ b/configure.ac @@ -1,24 +1,29 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -m4_define([libsubid_abi_major], 5) -m4_define([libsubid_abi_minor], 0) -m4_define([libsubid_abi_micro], 0) +m4_define([libsubid_abi_major], [5]) +m4_define([libsubid_abi_minor], [0]) +m4_define([libsubid_abi_micro], [0]) m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro]) -AC_INIT([shadow], [4.18.0], [pkg-shadow-devel@lists.alioth.debian.org], [], + +AC_INIT([shadow], [4.19.0], [pkg-shadow-devel@lists.alioth.debian.org], [], [https://github.com/shadow-maint/shadow]) -AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax]) AC_CONFIG_MACRO_DIRS([m4]) -AM_SILENT_RULES([yes]) +AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h]) +AM_INIT_AUTOMAKE([1.11 foreign dist-xz subdir-objects tar-pax]) +AM_SILENT_RULES([yes]) + +AC_SUBST([AM_DISTCHECK_CONFIGURE_FLAGS], ["$ac_configure_args"]) + AC_SUBST([LIBSUBID_ABI_MAJOR], [libsubid_abi_major]) AC_SUBST([LIBSUBID_ABI_MINOR], [libsubid_abi_minor]) AC_SUBST([LIBSUBID_ABI_MICRO], [libsubid_abi_micro]) AC_SUBST([LIBSUBID_ABI], [libsubid_abi]) dnl Some hacks... -test "$prefix" = "NONE" && prefix="/usr" -test "$prefix" = "/usr" && exec_prefix="" +test "x$prefix" = "xNONE" && prefix="/usr" +test "X$prefix" = "X/usr" && exec_prefix="" AC_USE_SYSTEM_EXTENSIONS @@ -36,15 +41,15 @@ LT_LIB_DLLOAD dnl Checks for libraries. dnl shadow now uses the libc's shadow implementation -AC_CHECK_HEADER([shadow.h],,[AC_MSG_ERROR([You need a libc with shadow.h])]) +AC_CHECK_HEADER([shadow.h],[],[AC_MSG_ERROR([You need a libc with shadow.h])]) -AC_CHECK_FUNCS(arc4random_buf \ +AC_CHECK_FUNCS([arc4random_buf \ getentropy getrandom \ lckpwdf lutimes \ updwtmpx innetgr \ getspnam_r \ rpmatch \ - memset_explicit explicit_bzero stpecpy stpeprintf) + memset_explicit explicit_bzero stpecpy stpeprintf]) AC_SYS_LARGEFILE dnl Checks for typedefs, structures, and compiler characteristics. @@ -55,227 +60,230 @@ AC_CHECK_MEMBERS([struct utmpx.ut_name, struct utmpx.ut_addr, struct utmpx.ut_addr_v6, struct utmpx.ut_time, - struct utmpx.ut_xtime],,,[[#include ]]) + struct utmpx.ut_xtime],[],[],[[#include ]]) dnl Checks for library functions. AC_FUNC_UTIME_NULL -AC_REPLACE_FUNCS(putgrent putpwent putspent) -AC_REPLACE_FUNCS(sgetgrent sgetpwent sgetspent) +AC_REPLACE_FUNCS([putgrent putpwent putspent]) +AC_REPLACE_FUNCS([sgetgrent sgetpwent sgetspent]) -AC_CHECK_FUNC(setpgrp) -AC_CHECK_FUNC(secure_getenv, [AC_DEFINE(HAS_SECURE_GETENV, - 1, - [Defined to 1 if you have the declaration of 'secure_getenv'])]) +AC_CHECK_FUNC([setpgrp]) +AC_CHECK_FUNC([secure_getenv], + [AC_DEFINE([HAS_SECURE_GETENV],[1],[Defined to 1 if you have the declaration of 'secure_getenv'])] +) -AC_CACHE_CHECK([location of shared mail directory], shadow_cv_maildir, +AC_CACHE_CHECK([location of shared mail directory], [shadow_cv_maildir], [for shadow_cv_maildir in /var/mail /var/spool/mail /usr/spool/mail /usr/mail none; do if test -d $shadow_cv_maildir; then break fi done]) if test $shadow_cv_maildir != none; then - AC_DEFINE_UNQUOTED(MAIL_SPOOL_DIR, "$shadow_cv_maildir", + AC_DEFINE_UNQUOTED([MAIL_SPOOL_DIR], ["$shadow_cv_maildir"], [Location of system mail spool directory.]) fi -AC_CACHE_CHECK([location of user mail file], shadow_cv_mailfile, +AC_CACHE_CHECK([location of user mail file], [shadow_cv_mailfile], [for shadow_cv_mailfile in Mailbox mailbox Mail mail .mail none; do if test -f $HOME/$shadow_cv_mailfile; then break fi done]) if test $shadow_cv_mailfile != none; then - AC_DEFINE_UNQUOTED(MAIL_SPOOL_FILE, "$shadow_cv_mailfile", + AC_DEFINE_UNQUOTED([MAIL_SPOOL_FILE], ["$shadow_cv_mailfile"], [Name of user's mail spool file if stored in user's home directory.]) fi -AC_CACHE_CHECK([location of faillog/lastlog/wtmp], shadow_cv_logdir, +AC_CACHE_CHECK([location of faillog/lastlog/wtmp], [shadow_cv_logdir], [for shadow_cv_logdir in /var/log /var/adm /usr/adm /etc; do if test -d $shadow_cv_logdir; then break fi done]) -AC_DEFINE_UNQUOTED(_WTMP_FILE, "$shadow_cv_logdir/wtmp", - [Path for wtmp file.]) -AC_DEFINE_UNQUOTED(LASTLOG_FILE, "$shadow_cv_logdir/lastlog", - [Path for lastlog file.]) -AC_DEFINE_UNQUOTED(FAILLOG_FILE, "$shadow_cv_logdir/faillog", +AC_DEFINE_UNQUOTED([FAILLOG_FILE], ["$shadow_cv_logdir/faillog"], [Path for faillog file.]) -AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$exec_prefix/bin/passwd", +AC_DEFINE_UNQUOTED([PASSWD_PROGRAM], ["$exec_prefix/bin/passwd"], [Path to passwd program.]) -AC_ARG_ENABLE(shadowgrp, +AC_ARG_ENABLE([shadowgrp], [AS_HELP_STRING([--enable-shadowgrp], [enable shadow group support @<:@default=yes@:>@])], [case "${enableval}" in yes) enable_shadowgrp="yes" ;; no) enable_shadowgrp="no" ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-shadowgrp) ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-shadowgrp]) ;; esac], [enable_shadowgrp="yes"] ) -AC_ARG_ENABLE(man, +AC_ARG_ENABLE([man], [AS_HELP_STRING([--enable-man], [regenerate roff man pages from Docbook @<:@default=no@:>@])], [enable_man="${enableval}"], [enable_man="no"] ) -AC_ARG_ENABLE(account-tools-setuid, +AC_ARG_ENABLE([account-tools-setuid], [AS_HELP_STRING([--enable-account-tools-setuid], [Install the user and group management tools setuid and authenticate the callers. This requires --with-libpam.])], [case "${enableval}" in yes) enable_acct_tools_setuid="yes" ;; no) enable_acct_tools_setuid="no" ;; - *) AC_MSG_ERROR(bad value ${enableval} for --enable-account-tools-setuid) + *) AC_MSG_ERROR([bad value ${enableval} for --enable-account-tools-setuid]) ;; esac], [enable_acct_tools_setuid="no"] ) -AC_ARG_ENABLE(subordinate-ids, +AC_ARG_ENABLE([subordinate-ids], [AS_HELP_STRING([--enable-subordinate-ids], [support subordinate ids @<:@default=yes@:>@])], [enable_subids="${enableval}"], [enable_subids="maybe"] ) -AC_ARG_ENABLE(lastlog, +AC_ARG_ENABLE([lastlog], [AS_HELP_STRING([--enable-lastlog], [enable lastlog @<:@default=no@:>@])], [enable_lastlog="${enableval}"], [enable_lastlog="no"] ) -AC_ARG_ENABLE(logind, - [AS_HELP_STRING([--enable-logind], - [enable logind @<:@default=yes@:>@])], - [enable_logind="${enableval}"], +AC_ARG_ENABLE([logind], + [AS_HELP_STRING([--disable-logind], + [disable logind integration])], + [ + AS_CASE([${enableval}], + [yes],[], + [no],[], + [AC_MSG_ERROR([bad parameter value for --enable-logind=${enableval}. ]dnl +[Supported values are: --enable-logind (or --enable-logind=yes) and --disable-logind (or --enable-logind=no).])] + ) + ], [enable_logind="yes"] ) -AC_ARG_WITH(audit, +AC_ARG_WITH([audit], [AS_HELP_STRING([--with-audit], [use auditing support @<:@default=yes if found@:>@])], [with_audit=$withval], [with_audit=maybe]) -AC_ARG_WITH(libpam, +AC_ARG_WITH([libpam], [AS_HELP_STRING([--with-libpam], [use libpam for PAM support @<:@default=yes if found@:>@])], [with_libpam=$withval], [with_libpam=maybe]) -AC_ARG_WITH(btrfs, +AC_ARG_WITH([btrfs], [AS_HELP_STRING([--with-btrfs], [add BtrFS support @<:@default=yes if found@:>@])], [with_btrfs=$withval], [with_btrfs=maybe]) -AC_ARG_WITH(selinux, +AC_ARG_WITH([selinux], [AS_HELP_STRING([--with-selinux], [use SELinux support @<:@default=yes if found@:>@])], [with_selinux=$withval], [with_selinux=maybe]) -AC_ARG_WITH(acl, +AC_ARG_WITH([acl], [AS_HELP_STRING([--with-acl], [use ACL support @<:@default=yes if found@:>@])], [with_acl=$withval], [with_acl=maybe]) -AC_ARG_WITH(attr, +AC_ARG_WITH([attr], [AS_HELP_STRING([--with-attr], [use Extended Attribute support @<:@default=yes if found@:>@])], [with_attr=$withval], [with_attr=maybe]) -AC_ARG_WITH(skey, +AC_ARG_WITH([skey], [AS_HELP_STRING([--with-skey], [use S/Key support @<:@default=no@:>@])], [with_skey=$withval], [with_skey=no]) -AC_ARG_WITH(tcb, +AC_ARG_WITH([tcb], [AS_HELP_STRING([--with-tcb], [use tcb support (incomplete) @<:@default=yes if found@:>@])], [with_tcb=$withval], [with_tcb=maybe]) -AC_ARG_WITH(sha-crypt, +AC_ARG_WITH([sha-crypt], [AS_HELP_STRING([--with-sha-crypt], [allow the SHA256 and SHA512 password encryption algorithms @<:@default=yes@:>@])], [with_sha_crypt=$withval], [with_sha_crypt=yes]) -AC_ARG_WITH(bcrypt, +AC_ARG_WITH([bcrypt], [AS_HELP_STRING([--with-bcrypt], [allow the bcrypt password encryption algorithm @<:@default=no@:>@])], [with_bcrypt=$withval], [with_bcrypt=no]) -AC_ARG_WITH(yescrypt, +AC_ARG_WITH([yescrypt], [AS_HELP_STRING([--with-yescrypt], [allow the yescrypt password encryption algorithm @<:@default=no@:>@])], [with_yescrypt=$withval], [with_yescrypt=no]) -AC_ARG_WITH(nscd, +AC_ARG_WITH([nscd], [AS_HELP_STRING([--with-nscd], [enable support for nscd @<:@default=yes@:>@])], [with_nscd=$withval], [with_nscd=yes]) -AC_ARG_WITH(sssd, +AC_ARG_WITH([sssd], [AS_HELP_STRING([--with-sssd], [enable support for flushing sssd caches @<:@default=yes@:>@])], [with_sssd=$withval], [with_sssd=yes]) -AC_ARG_WITH(group-name-max-length, +AC_ARG_WITH([group-name-max-length], [AS_HELP_STRING([--with-group-name-max-length], [set max group name length @<:@default=32@:>@])], [with_group_name_max_length=$withval], [with_group_name_max_length=yes]) -AC_ARG_WITH(su, +AC_ARG_WITH([su], [AS_HELP_STRING([--with-su], [build and install su program and man page @<:@default=yes@:>@])], [with_su=$withval], [with_su=yes]) -AC_ARG_WITH(libbsd, +AC_ARG_WITH([libbsd], [AS_HELP_STRING([--with-libbsd], [use libbsd support @<:@default=yes if found@:>@])], [with_libbsd=$withval], [with_libbsd=yes]) -if test "$with_group_name_max_length" = "no" ; then +if test "X$with_group_name_max_length" = "Xno" ; then with_group_name_max_length=0 -elif test "$with_group_name_max_length" = "yes" ; then +elif test "X$with_group_name_max_length" = "Xyes" ; then with_group_name_max_length=32 fi -AC_DEFINE_UNQUOTED(GROUP_NAME_MAX_LENGTH, $with_group_name_max_length, [max group name length]) -AC_SUBST(GROUP_NAME_MAX_LENGTH) +AC_DEFINE_UNQUOTED([GROUP_NAME_MAX_LENGTH], [$with_group_name_max_length], [max group name length]) +AC_SUBST([GROUP_NAME_MAX_LENGTH]) GROUP_NAME_MAX_LENGTH="$with_group_name_max_length" -AM_CONDITIONAL(USE_SHA_CRYPT, test "x$with_sha_crypt" = "xyes") -if test "$with_sha_crypt" = "yes"; then - AC_DEFINE(USE_SHA_CRYPT, 1, [Define to allow the SHA256 and SHA512 password encryption algorithms]) +AM_CONDITIONAL([USE_SHA_CRYPT], [test "x$with_sha_crypt" = "xyes"]) +if test "X$with_sha_crypt" = "Xyes"; then + AC_DEFINE([USE_SHA_CRYPT], [1], [Define to allow the SHA256 and SHA512 password encryption algorithms]) fi -AM_CONDITIONAL(USE_BCRYPT, test "x$with_bcrypt" = "xyes") -if test "$with_bcrypt" = "yes"; then - AC_DEFINE(USE_BCRYPT, 1, [Define to allow the bcrypt password encryption algorithm]) +AM_CONDITIONAL([USE_BCRYPT], [test "x$with_bcrypt" = "xyes"]) +if test "X$with_bcrypt" = "Xyes"; then + AC_DEFINE([USE_BCRYPT], [1], [Define to allow the bcrypt password encryption algorithm]) fi -AM_CONDITIONAL(USE_YESCRYPT, test "x$with_yescrypt" = "xyes") -if test "$with_yescrypt" = "yes"; then - AC_DEFINE(USE_YESCRYPT, 1, [Define to allow the yescrypt password encryption algorithm]) +AM_CONDITIONAL([USE_YESCRYPT], [test "x$with_yescrypt" = "xyes"]) +if test "X$with_yescrypt" = "Xyes"; then + AC_DEFINE([USE_YESCRYPT], [1], [Define to allow the yescrypt password encryption algorithm]) fi -if test "$with_nscd" = "yes"; then - AC_CHECK_FUNC(posix_spawn, - [AC_DEFINE(USE_NSCD, 1, [Define to support flushing of nscd caches])], +if test "X$with_nscd" = "Xyes"; then + AC_CHECK_FUNC([posix_spawn], + [AC_DEFINE([USE_NSCD], [1], [Define to support flushing of nscd caches])], [AC_MSG_ERROR([posix_spawn is needed for nscd support])]) fi -if test "$with_sssd" = "yes"; then - AC_CHECK_FUNC(posix_spawn, - [AC_DEFINE(USE_SSSD, 1, [Define to support flushing of sssd caches])], +if test "X$with_sssd" = "Xyes"; then + AC_CHECK_FUNC([posix_spawn], + [AC_DEFINE([USE_SSSD], [1], [Define to support flushing of sssd caches])], [AC_MSG_ERROR([posix_spawn is needed for sssd support])]) fi -AS_IF([test "$with_su" != "no"], AC_DEFINE(WITH_SU, 1, [Build with su])) +AS_IF([test "$with_su" != "no"], [AC_DEFINE([WITH_SU], [1], [Build with su])]) AM_CONDITIONAL([WITH_SU], [test "x$with_su" != "xno"]) dnl Check for some functions in libc first, only if not found check for dnl other libraries. This should prevent linking libnsl if not really dnl needed (Linux glibc, Irix), but still link it if needed (Solaris). -AC_SEARCH_LIBS(gethostbyname, nsl) +AC_SEARCH_LIBS([gethostbyname], [nsl]) PKG_CHECK_MODULES([CMOCKA], [cmocka], [have_cmocka="yes"], [AC_MSG_WARN([libcmocka not found, cmocka tests will not be built])]) AM_CONDITIONAL([HAVE_CMOCKA], [test x$have_cmocka = xyes]) +AC_ARG_ENABLE([vendordir], + [AS_HELP_STRING([--enable-vendordir=DIR], [Directory for distribution provided configuration files])],[],[]) AC_CHECK_LIB([econf],[econf_readDirs],[LIBECONF="-leconf"],[LIBECONF=""]) if test -n "$LIBECONF"; then AC_DEFINE_UNQUOTED([VENDORDIR], ["$enable_vendordir"], [Directory for distribution provided configuration files]) ECONF_CPPFLAGS="-DUSE_ECONF=1" - AC_ARG_ENABLE([vendordir], - AS_HELP_STRING([--enable-vendordir=DIR], [Directory for distribution provided configuration files]),,[]) fi -AC_SUBST(ECONF_CPPFLAGS) -AC_SUBST(LIBECONF) +AC_SUBST([ECONF_CPPFLAGS]) +AC_SUBST([LIBECONF]) AC_SUBST([VENDORDIR], [$enable_vendordir]) if test "x$enable_vendordir" != x; then - AC_DEFINE(HAVE_VENDORDIR, 1, [Define to support vendor settings.]) + AC_DEFINE([HAVE_VENDORDIR], [1], [Define to support vendor settings.]) fi AM_CONDITIONAL([HAVE_VENDORDIR], [test "x$enable_vendordir" != x]) -if test "$enable_shadowgrp" = "yes"; then - AC_DEFINE(SHADOWGRP, 1, [Define to support the shadow group file.]) +if test "X$enable_shadowgrp" = "Xyes"; then + AC_DEFINE([SHADOWGRP], [1], [Define to support the shadow group file.]) fi -AM_CONDITIONAL(SHADOWGRP, test "x$enable_shadowgrp" = "xyes") +AM_CONDITIONAL([SHADOWGRP], [test "x$enable_shadowgrp" = "xyes"]) -if test "$enable_man" = "yes"; then +if test "X$enable_man" = "Xyes"; then dnl dnl Check for xsltproc dnl @@ -287,21 +295,21 @@ if test "$enable_man" = "yes"; then dnl check for DocBook DTD and stylesheets in the local catalog. JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.5//EN], - [DocBook XML DTD V4.5], [], enable_man=no) + [DocBook XML DTD V4.5], [], [enable_man=no]) JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl], - [DocBook XSL Stylesheets >= 1.70.1], [], enable_man=no) + [DocBook XSL Stylesheets >= 1.70.1], [], [enable_man=no]) fi -AM_CONDITIONAL(ENABLE_REGENERATE_MAN, test "x$enable_man" != "xno") +AM_CONDITIONAL([ENABLE_REGENERATE_MAN], [test "x$enable_man" != "xno"]) if test "$enable_subids" != "no"; then dnl dnl FIXME: check if 32 bit UIDs/GIDs are supported by libc dnl - AC_CHECK_SIZEOF([uid_t],, [#include "sys/types.h"]) - AC_CHECK_SIZEOF([gid_t],, [#include "sys/types.h"]) + AC_CHECK_SIZEOF([uid_t],[], [[#include "sys/types.h"]]) + AC_CHECK_SIZEOF([gid_t],[], [[#include "sys/types.h"]]) if test "$ac_cv_sizeof_uid_t" -ge 4 && test "$ac_cv_sizeof_gid_t" -ge 4; then - AC_DEFINE(ENABLE_SUBIDS, 1, [Define to support the subordinate IDs.]) + AC_DEFINE([ENABLE_SUBIDS], [1], [Define to support the subordinate IDs.]) enable_subids="yes" else if test "x$enable_subids" = "xyes"; then @@ -310,55 +318,54 @@ if test "$enable_subids" != "no"; then enable_subids="no" fi fi -AM_CONDITIONAL(ENABLE_SUBIDS, test "x$enable_subids" != "xno") +AM_CONDITIONAL([ENABLE_SUBIDS], [test "x$enable_subids" != "xno"]) -if test "$enable_lastlog" = "yes" && test "$ac_cv_header_lastlog_h" = "yes"; then - AC_CACHE_CHECK(for ll_host in struct lastlog, - ac_cv_struct_lastlog_ll_host, - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include ], - [struct lastlog ll; char *cp = ll.ll_host;] - )], +if test "X$enable_lastlog" = "Xyes" && test "X$ac_cv_header_lastlog_h" = "Xyes"; then + AC_CACHE_CHECK([for ll_host in struct lastlog], + [ac_cv_struct_lastlog_ll_host], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [struct lastlog ll; char *cp = ll.ll_host;])], [ac_cv_struct_lastlog_ll_host=yes], - [ac_cv_struct_lastlog_ll_host=no] - ) + [ac_cv_struct_lastlog_ll_host=no]) + ] ) - if test "$ac_cv_struct_lastlog_ll_host" = "yes"; then - AC_DEFINE(HAVE_LL_HOST, 1, + if test "X$ac_cv_struct_lastlog_ll_host" = "Xyes"; then + AC_DEFINE([HAVE_LL_HOST], [1], [Define if struct lastlog has ll_host]) - AC_DEFINE(ENABLE_LASTLOG, 1, [Define to support lastlog.]) + AC_DEFINE([ENABLE_LASTLOG], [1], [Define to support lastlog.]) enable_lastlog="yes" else AC_MSG_ERROR([Cannot enable support for lastlog on systems where the data structures aren't available]) enable_lastlog="no" fi fi -AM_CONDITIONAL(ENABLE_LASTLOG, test "x$enable_lastlog" != "xno") +AM_CONDITIONAL([ENABLE_LASTLOG], [test "x$enable_lastlog" != "xno"]) -AC_SUBST(LIBSYSTEMD) -if test "$enable_logind" = "yes"; then - AC_CHECK_LIB(systemd, sd_session_get_remote_host, - [enable_logind="yes"; [LIBSYSTEMD=-lsystemd]; - AC_DEFINE(ENABLE_LOGIND, 1, - [Define to manage session support with logind.])], - [enable_logind="no"]) +AC_SUBST([LIBSYSTEMD]) +if test "X$enable_logind" = "Xyes"; then + AC_CHECK_LIB([systemd], [sd_session_get_remote_host], + [ + LIBSYSTEMD=-lsystemd + AC_DEFINE([ENABLE_LOGIND], [1], [Define to manage session support with logind.]) + ],[ + AC_MSG_ERROR([libsystemd not found. If logind integration is not required, disable it using the --disable-logind option. ]dnl +[ If logind integration is required, consider installing systemd or another package that provides libsystemd.]) + ] + ) fi -AM_CONDITIONAL(ENABLE_LOGIND, test "x$enable_logind" != "xno") +AM_CONDITIONAL([ENABLE_LOGIND], [test "X$enable_logind" = "Xyes"]) -AC_SUBST(LIBCRYPT) -AC_CHECK_LIB(crypt, crypt, [LIBCRYPT=-lcrypt], +AC_CHECK_LIB([crypt], [crypt], [LIBCRYPT=-lcrypt], [AC_MSG_ERROR([crypt() not found])]) +AC_SUBST([LIBCRYPT]) -AC_SUBST(LIYESCRYPT) -AC_CHECK_LIB(crypt, crypt, [LIYESCRYPT=-lcrypt], - [AC_MSG_ERROR([crypt() not found])]) - -AC_SUBST(LIBBSD) +AC_SUBST([LIBBSD]) if test "$with_libbsd" != "no"; then AC_SEARCH_LIBS([readpassphrase], [bsd], [], [ AC_MSG_ERROR([readpassphrase() is missing, either from libc or libbsd]) ]) - AS_IF([test "$ac_cv_search_readpassphrase" = "-lbsd"], [ + AS_IF([test "X$ac_cv_search_readpassphrase" = "X-lbsd"], [ PKG_CHECK_MODULES([LIBBSD], [libbsd-overlay]) ]) dnl Make sure either the libc or libbsd provide the header. @@ -369,29 +376,29 @@ if test "$with_libbsd" != "no"; then AC_MSG_ERROR([readpassphrase.h is missing]) ]) CFLAGS="$save_CFLAGS" - AC_DEFINE(WITH_LIBBSD, 1, [Build shadow with libbsd support]) + AC_DEFINE([WITH_LIBBSD], [1], [Build shadow with libbsd support]) else - AC_DEFINE(WITH_LIBBSD, 0, [Build shadow without libbsd support]) + AC_DEFINE([WITH_LIBBSD], [0], [Build shadow without libbsd support]) fi -AM_CONDITIONAL(WITH_LIBBSD, test x$with_libbsd = xyes) +AM_CONDITIONAL([WITH_LIBBSD], [test x$with_libbsd = xyes]) -AC_SUBST(LIBACL) +AC_SUBST([LIBACL]) if test "$with_acl" != "no"; then - AC_CHECK_HEADERS(acl/libacl.h attr/error_context.h, [acl_header="yes"], [acl_header="no"]) - if test "$acl_header$with_acl" = "noyes" ; then + AC_CHECK_HEADERS([acl/libacl.h attr/error_context.h], [acl_header="yes"], [acl_header="no"]) + if test "X$acl_header$with_acl" = "Xnoyes" ; then AC_MSG_ERROR([acl/libacl.h or attr/error_context.h is missing]) - elif test "$acl_header" = "yes" ; then - AC_CHECK_LIB(acl, perm_copy_file, - [AC_CHECK_LIB(acl, perm_copy_fd, + elif test "X$acl_header" = "Xyes" ; then + AC_CHECK_LIB([acl], [perm_copy_file], + [AC_CHECK_LIB([acl], [perm_copy_fd], [acl_lib="yes"], [acl_lib="no"])], [acl_lib="no"]) - if test "$acl_lib$with_acl" = "noyes" ; then + if test "X$acl_lib$with_acl" = "Xnoyes" ; then AC_MSG_ERROR([libacl not found]) - elif test "$acl_lib" = "no" ; then + elif test "X$acl_lib" = "Xno" ; then with_acl="no" else - AC_DEFINE(WITH_ACL, 1, + AC_DEFINE([WITH_ACL], [1], [Build shadow with ACL support]) LIBACL="-lacl" with_acl="yes" @@ -401,23 +408,23 @@ if test "$with_acl" != "no"; then fi fi -AC_SUBST(LIBATTR) +AC_SUBST([LIBATTR]) if test "$with_attr" != "no"; then - AC_CHECK_HEADERS(attr/libattr.h attr/error_context.h, [attr_header="yes"], [attr_header="no"]) - if test "$attr_header$with_attr" = "noyes" ; then + AC_CHECK_HEADERS([attr/libattr.h attr/error_context.h], [attr_header="yes"], [attr_header="no"]) + if test "X$attr_header$with_attr" = "noyes" ; then AC_MSG_ERROR([attr/libattr.h or attr/error_context.h is missing]) - elif test "$attr_header" = "yes" ; then - AC_CHECK_LIB(attr, attr_copy_file, - [AC_CHECK_LIB(attr, attr_copy_fd, + elif test "X$attr_header" = "Xyes" ; then + AC_CHECK_LIB([attr], [attr_copy_file], + [AC_CHECK_LIB([attr], [attr_copy_fd], [attr_lib="yes"], [attr_lib="no"])], [attr_lib="no"]) - if test "$attr_lib$with_attr" = "noyes" ; then + if test "X$attr_lib$with_attr" = "Xnoyes" ; then AC_MSG_ERROR([libattr not found]) - elif test "$attr_lib" = "no" ; then + elif test "X$attr_lib" = "Xno" ; then with_attr="no" else - AC_DEFINE(WITH_ATTR, 1, + AC_DEFINE([WITH_ATTR], [1], [Build shadow with Extended Attributes support]) LIBATTR="-lattr" with_attr="yes" @@ -427,29 +434,29 @@ if test "$with_attr" != "no"; then fi fi -AC_SUBST(LIBAUDIT) +AC_SUBST([LIBAUDIT]) if test "$with_audit" != "no"; then - AC_CHECK_HEADER(libaudit.h, [audit_header="yes"], [audit_header="no"]) - if test "$audit_header$with_audit" = "noyes" ; then + AC_CHECK_HEADER([libaudit.h], [audit_header="yes"], [audit_header="no"]) + if test "X$audit_header$with_audit" = "Xnoyes" ; then AC_MSG_ERROR([libaudit.h is missing]) - elif test "$audit_header" = "yes"; then - AC_CHECK_DECL(AUDIT_ADD_USER,,[audit_header="no"],[#include ]) - AC_CHECK_DECL(AUDIT_DEL_USER,,[audit_header="no"],[#include ]) - AC_CHECK_DECL(AUDIT_ADD_GROUP,,[audit_header="no"],[#include ]) - AC_CHECK_DECL(AUDIT_DEL_GROUP,,[audit_header="no"],[#include ]) - if test "$audit_header$with_audit" = "noyes" ; then + elif test "X$audit_header" = "Xyes"; then + AC_CHECK_DECL([AUDIT_ADD_USER],[],[audit_header="no"],[[#include ]]) + AC_CHECK_DECL([AUDIT_DEL_USER],[],[audit_header="no"],[[#include ]]) + AC_CHECK_DECL([AUDIT_ADD_GROUP],[],[audit_header="no"],[[#include ]]) + AC_CHECK_DECL([AUDIT_DEL_GROUP],[],[audit_header="no"],[[#include ]]) + if test "X$audit_header$with_audit" = "Xnoyes" ; then AC_MSG_ERROR([AUDIT_ADD_USER AUDIT_DEL_USER AUDIT_ADD_GROUP or AUDIT_DEL_GROUP missing from libaudit.h]) fi fi - if test "$audit_header" = "yes"; then - AC_CHECK_LIB(audit, audit_log_acct_message, + if test "X$audit_header" = "Xyes"; then + AC_CHECK_LIB([audit], [audit_log_acct_message], [audit_lib="yes"], [audit_lib="no"]) - if test "$audit_lib$with_audit" = "noyes" ; then + if test "X$audit_lib$with_audit" = "Xnoyes" ; then AC_MSG_ERROR([libaudit not found]) - elif test "$audit_lib" = "no" ; then + elif test "X$audit_lib" = "Xno" ; then with_audit="no" else - AC_DEFINE(WITH_AUDIT, 1, + AC_DEFINE([WITH_AUDIT], [1], [Define if you want to enable Audit messages]) LIBAUDIT="-laudit" with_audit="yes" @@ -462,43 +469,43 @@ fi if test "$with_btrfs" != "no"; then AC_CHECK_HEADERS([sys/statfs.h linux/magic.h linux/btrfs_tree.h], \ [btrfs_headers="yes"], [btrfs_headers="no"]) - if test "$btrfs_headers$with_btrfs" = "noyes" ; then + if test "X$btrfs_headers$with_btrfs" = "Xnoyes" ; then AC_MSG_ERROR([One of sys/statfs.h linux/magic.h linux/btrfs_tree.h is missing]) fi - if test "$btrfs_headers" = "yes" ; then - AC_DEFINE(WITH_BTRFS, 1, [Build shadow with BtrFS support]) + if test "X$btrfs_headers" = "Xyes" ; then + AC_DEFINE([WITH_BTRFS], [1], [Build shadow with BtrFS support]) with_btrfs="yes" fi fi -AM_CONDITIONAL(WITH_BTRFS, test x$with_btrfs = xyes) +AM_CONDITIONAL([WITH_BTRFS], [test x$with_btrfs = xyes]) -AC_SUBST(LIBSELINUX) -AC_SUBST(LIBSEMANAGE) +AC_SUBST([LIBSELINUX]) +AC_SUBST([LIBSEMANAGE]) if test "$with_selinux" != "no"; then - AC_CHECK_HEADERS(selinux/selinux.h, [selinux_header="yes"], [selinux_header="no"]) - if test "$selinux_header$with_selinux" = "noyes" ; then + AC_CHECK_HEADERS([selinux/selinux.h], [selinux_header="yes"], [selinux_header="no"]) + if test "X$selinux_header$with_selinux" = "Xnoyes" ; then AC_MSG_ERROR([selinux/selinux.h is missing]) fi - AC_CHECK_HEADERS(semanage/semanage.h, [semanage_header="yes"], [semanage_header="no"]) - if test "$semanage_header$with_selinux" = "noyes" ; then + AC_CHECK_HEADERS([semanage/semanage.h], [semanage_header="yes"], [semanage_header="no"]) + if test "X$semanage_header$with_selinux" = "Xnoyes" ; then AC_MSG_ERROR([semanage/semanage.h is missing]) fi - if test "$selinux_header$semanage_header" = "yesyes" ; then - AC_CHECK_LIB(selinux, is_selinux_enabled, [selinux_lib="yes"], [selinux_lib="no"]) - if test "$selinux_lib$with_selinux" = "noyes" ; then + if test "X$selinux_header$semanage_header" = "Xyesyes" ; then + AC_CHECK_LIB([selinux], [is_selinux_enabled], [selinux_lib="yes"], [selinux_lib="no"]) + if test "X$selinux_lib$with_selinux" = "Xnoyes" ; then AC_MSG_ERROR([libselinux not found]) fi - AC_CHECK_LIB(semanage, semanage_connect, [semanage_lib="yes"], [semanage_lib="no"]) - if test "$semanage_lib$with_selinux" = "noyes" ; then + AC_CHECK_LIB([semanage], [semanage_connect], [semanage_lib="yes"], [semanage_lib="no"]) + if test "X$semanage_lib$with_selinux" = "Xnoyes" ; then AC_MSG_ERROR([libsemanage not found]) fi - if test "$selinux_lib$semanage_lib" = "yesyes" ; then - AC_DEFINE(WITH_SELINUX, 1, + if test "X$selinux_lib$semanage_lib" = "Xyesyes" ; then + AC_DEFINE([WITH_SELINUX], [1], [Build shadow with SELinux support]) LIBSELINUX="-lselinux" LIBSEMANAGE="-lsemanage" @@ -511,19 +518,19 @@ if test "$with_selinux" != "no"; then fi fi -AC_SUBST(LIBTCB) +AC_SUBST([LIBTCB]) if test "$with_tcb" != "no"; then - AC_CHECK_HEADERS(tcb.h, [tcb_header="yes"], [tcb_header="no"]) - if test "$tcb_header$with_tcb" = "noyes" ; then + AC_CHECK_HEADERS([tcb.h], [tcb_header="yes"], [tcb_header="no"]) + if test "X$tcb_header$with_tcb" = "Xnoyes" ; then AC_MSG_ERROR([tcb.h is missing]) - elif test "$tcb_header" = "yes" ; then - AC_CHECK_LIB(tcb, tcb_is_suspect, [tcb_lib="yes"], [tcb_lib="no"]) - if test "$tcb_lib$with_tcb" = "noyes" ; then + elif test "X$tcb_header" = "Xyes" ; then + AC_CHECK_LIB([tcb], [tcb_is_suspect], [tcb_lib="yes"], [tcb_lib="no"]) + if test "X$tcb_lib$with_tcb" = "Xnoyes" ; then AC_MSG_ERROR([libtcb not found]) - elif test "$tcb_lib" = "no" ; then + elif test "X$tcb_lib" = "Xno" ; then with_tcb="no" else - AC_DEFINE(WITH_TCB, 1, [Build shadow with tcb support (incomplete)]) + AC_DEFINE([WITH_TCB], [1], [Build shadow with tcb support (incomplete)]) LIBTCB="-ltcb" with_tcb="yes" fi @@ -531,39 +538,39 @@ if test "$with_tcb" != "no"; then with_tcb="no" fi fi -AM_CONDITIONAL(WITH_TCB, test x$with_tcb = xyes) +AM_CONDITIONAL([WITH_TCB], [test x$with_tcb = xyes]) -AC_SUBST(LIBPAM) +AC_SUBST([LIBPAM]) if test "$with_libpam" != "no"; then - AC_CHECK_LIB(pam, pam_start, + AC_CHECK_LIB([pam], [pam_start], [pam_lib="yes"], [pam_lib="no"]) - if test "$pam_lib$with_libpam" = "noyes" ; then - AC_MSG_ERROR(libpam not found) + if test "X$pam_lib$with_libpam" = "Xnoyes" ; then + AC_MSG_ERROR([libpam not found]) fi LIBPAM="-lpam" pam_conv_function="no" - AC_CHECK_LIB(pam, openpam_ttyconv, + AC_CHECK_LIB([pam], [openpam_ttyconv], [pam_conv_function="openpam_ttyconv"], - AC_CHECK_LIB(pam_misc, misc_conv, - [pam_conv_function="misc_conv"; LIBPAM="$LIBPAM -lpam_misc"]) + [AC_CHECK_LIB([pam_misc], [misc_conv], + [pam_conv_function="misc_conv"; LIBPAM="$LIBPAM -lpam_misc"])] ) - if test "$pam_conv_function$with_libpam" = "noyes" ; then - AC_MSG_ERROR(PAM conversation function not found) + if test "X$pam_conv_function$with_libpam" = "Xnoyes" ; then + AC_MSG_ERROR([PAM conversation function not found]) fi pam_headers_found=no AC_CHECK_HEADERS( [security/openpam.h security/pam_misc.h], [ pam_headers_found=yes ; break ], [], - [ #include ] ) - if test "$pam_headers_found$with_libpam" = "noyes" ; then - AC_MSG_ERROR(PAM headers not found) + [[#include ]] ) + if test "X$pam_headers_found$with_libpam" = "Xnoyes" ; then + AC_MSG_ERROR([PAM headers not found]) fi - if test "$pam_lib$pam_headers_found" = "yesyes" -a "$pam_conv_function" != "no" ; then + if test "X$pam_lib$pam_headers_found" = "Xyesyes" && test "$pam_conv_function" != "no" ; then with_libpam="yes" else with_libpam="no" @@ -571,87 +578,86 @@ if test "$with_libpam" != "no"; then fi fi dnl Now with_libpam is either yes or no -if test "$with_libpam" = "yes"; then +if test "X$with_libpam" = "Xyes"; then AC_CHECK_DECLS([PAM_ESTABLISH_CRED, PAM_DELETE_CRED, PAM_NEW_AUTHTOK_REQD, PAM_DATA_SILENT], - [], [], [#include ]) + [], [], [[#include ]]) save_libs=$LIBS LIBS="$LIBS $LIBPAM" # We do not use AC_CHECK_FUNCS to avoid duplicated definition with # Linux PAM. - AC_CHECK_FUNC(pam_fail_delay, [AC_DEFINE(HAS_PAM_FAIL_DELAY, 1, [Define to 1 if you have the declaration of 'pam_fail_delay'])]) + AC_CHECK_FUNC([pam_fail_delay], [AC_DEFINE([HAS_PAM_FAIL_DELAY], [1], [Define to 1 if you have the declaration of 'pam_fail_delay'])]) LIBS=$save_libs - AC_DEFINE(USE_PAM, 1, [Define to support Pluggable Authentication Modules]) - AC_DEFINE_UNQUOTED(SHADOW_PAM_CONVERSATION, [$pam_conv_function],[PAM conversation to use]) - AM_CONDITIONAL(USE_PAM, [true]) + AC_DEFINE([USE_PAM], [1], [Define to support Pluggable Authentication Modules]) + AC_DEFINE_UNQUOTED([SHADOW_PAM_CONVERSATION], [$pam_conv_function],[PAM conversation to use]) - AC_MSG_CHECKING(use login and su access checking if PAM not used) - AC_MSG_RESULT(no) + AC_MSG_CHECKING([use login and su access checking if PAM not used]) + AC_MSG_RESULT([no]) else - AC_DEFINE(SU_ACCESS, 1, [Define to support /etc/suauth su access control.]) - AM_CONDITIONAL(USE_PAM, [false]) - AC_MSG_CHECKING(use login and su access checking if PAM not used) - AC_MSG_RESULT(yes) + AC_DEFINE([SU_ACCESS], [1], [Define to support /etc/suauth su access control.]) + AC_MSG_CHECKING([use login and su access checking if PAM not used]) + AC_MSG_RESULT([yes]) fi +AM_CONDITIONAL([USE_PAM], [test "X$with_libpam" = "Xyes"]) if test "$enable_acct_tools_setuid" != "no"; then if test "$with_libpam" != "yes"; then - if test "$enable_acct_tools_setuid" = "yes"; then - AC_MSG_ERROR(PAM support is required for --enable-account-tools-setuid) + if test "X$enable_acct_tools_setuid" = "Xyes"; then + AC_MSG_ERROR([PAM support is required for --enable-account-tools-setuid]) else enable_acct_tools_setuid="no" fi else enable_acct_tools_setuid="yes" fi - if test "$enable_acct_tools_setuid" = "yes"; then - AC_DEFINE(ACCT_TOOLS_SETUID, - 1, + if test "X$enable_acct_tools_setuid" = "Xyes"; then + AC_DEFINE([ACCT_TOOLS_SETUID], + [1], [Define if account management tools should be installed setuid and authenticate the callers]) fi fi -AM_CONDITIONAL(ACCT_TOOLS_SETUID, test "x$enable_acct_tools_setuid" = "xyes") +AM_CONDITIONAL([ACCT_TOOLS_SETUID], [test "x$enable_acct_tools_setuid" = "xyes"]) -AC_ARG_WITH(fcaps, +AC_ARG_WITH([fcaps], [AS_HELP_STRING([--with-fcaps], [use file capabilities instead of suid binaries for newuidmap/newgidmap @<:@default=no@:>@])], [with_fcaps=$withval], [with_fcaps=no]) -AM_CONDITIONAL(FCAPS, test "x$with_fcaps" = "xyes") +AM_CONDITIONAL([FCAPS], [test "x$with_fcaps" = "xyes"]) if test "x$with_fcaps" = "xyes"; then - AC_CHECK_PROGS(capcmd, "setcap") + AC_CHECK_PROGS([capcmd], ["setcap"]) if test "x$capcmd" = "x" ; then AC_MSG_ERROR([setcap command not available]) fi fi -AC_SUBST(LIBSKEY) -AC_SUBST(LIBMD) -if test "$with_skey" = "yes"; then - AC_CHECK_LIB(md, MD5Init, [LIBMD=-lmd]) - AC_CHECK_LIB(skey, skeychallenge, [LIBSKEY=-lskey], +AC_SUBST([LIBSKEY]) +AC_SUBST([LIBMD]) +if test "X$with_skey" = "Xyes"; then + AC_CHECK_LIB([md], [MD5Init], [LIBMD=-lmd]) + AC_CHECK_LIB([skey], [skeychallenge], [LIBSKEY=-lskey], [AC_MSG_ERROR([libskey missing. You can download S/Key source code from http://rsync1.it.gentoo.org/gentoo/distfiles/skey-1.1.5.tar.bz2])]) - AC_DEFINE(SKEY, 1, [Define to support S/Key logins.]) + AC_DEFINE([SKEY], [1], [Define to support S/Key logins.]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include ]], [[ skeychallenge((void*)0, (void*)0, (void*)0, 0); - ]])],[AC_DEFINE(SKEY_BSD_STYLE, 1, [Define to support newer BSD S/Key API])],[]) + ]])],[AC_DEFINE([SKEY_BSD_STYLE], [1], [Define to support newer BSD S/Key API])],[]) fi -AC_CHECK_FUNC(fgetpwent_r, [AC_DEFINE(HAVE_FGETPWENT_R, 1, [Defined to 1 if you have the declaration of 'fgetpwent_r'])]) +AC_CHECK_FUNC([fgetpwent_r], [AC_DEFINE([HAVE_FGETPWENT_R], [1], [Defined to 1 if you have the declaration of 'fgetpwent_r'])]) -AC_DEFINE_UNQUOTED(SHELL, ["$SHELL"], [The default shell.]) +AC_DEFINE_UNQUOTED([SHELL], ["$SHELL"], [The default shell.]) AM_GNU_GETTEXT_VERSION([0.19]) AM_GNU_GETTEXT([external], [need-ngettext]) -AM_CONDITIONAL(USE_NLS, test "x$USE_NLS" = "xyes") +AM_CONDITIONAL([USE_NLS], [test "x$USE_NLS" = "xyes"]) AC_CONFIG_FILES([ Makefile @@ -690,30 +696,28 @@ AC_CONFIG_FILES([ ]) AC_OUTPUT -echo -echo "shadow will be compiled with the following features:" -echo -echo " auditing support: $with_audit" -echo " PAM support: $with_libpam" -if test "$with_libpam" = "yes"; then -echo " suid account management tools: $enable_acct_tools_setuid" -fi -echo " SELinux support: $with_selinux" -echo " BtrFS support: $with_btrfs" -echo " ACL support: $with_acl" -echo " Extended Attributes support: $with_attr" -echo " tcb support (incomplete): $with_tcb" -echo " shadow group support: $enable_shadowgrp" -echo " S/Key support: $with_skey" -echo " SHA passwords encryption: $with_sha_crypt" -echo " bcrypt passwords encryption: $with_bcrypt" -echo " yescrypt passwords encryption: $with_yescrypt" -echo " nscd support: $with_nscd" -echo " sssd support: $with_sssd" -echo " subordinate IDs support: $enable_subids" -echo " enable lastlog: $enable_lastlog" -echo " enable logind: $enable_logind" -echo " use file caps: $with_fcaps" -echo " install su: $with_su" -echo " enabled vendor dir: $enable_vendordir" -echo +AC_MSG_NOTICE([shadow ${PACKAGE_VERSION} has been configured with the following features: + + auditing support: $with_audit + PAM support: $with_libpam + suid account management tools: $enable_acct_tools_setuid + SELinux support: $with_selinux + BtrFS support: $with_btrfs + ACL support: $with_acl + Extended Attributes support: $with_attr + tcb support (incomplete): $with_tcb + shadow group support: $enable_shadowgrp + S/Key support: $with_skey + SHA passwords encryption: $with_sha_crypt + bcrypt passwords encryption: $with_bcrypt + yescrypt passwords encryption: $with_yescrypt + nscd support: $with_nscd + sssd support: $with_sssd + subordinate IDs support: $enable_subids + enable lastlog: $enable_lastlog + enable logind: $enable_logind + use file caps: $with_fcaps + install su: $with_su + enabled vendor dir: $enable_vendordir + +]) diff --git a/doc/HOWTO b/doc/HOWTO index 62b8d85d..084b7c5a 100644 --- a/doc/HOWTO +++ b/doc/HOWTO @@ -346,7 +346,7 @@ return value points to static data whose content is overwritten by each call. - Warning: The key space consists of 2**56 equal 7.2e16 possible values. + Warning: the key space consists of 2**56 equal 7.2e16 possible values. Exhaustive searches of this key space are possible using massively parallel computers. Software, such as crack(1), is available which will search the portion of this key space that is generally used by @@ -996,7 +996,7 @@ sudo for the shadow suite, is available as at: - Warning: When you install sudo your /etc/sudoers file will be replaced + Warning: when you install sudo your /etc/sudoers file will be replaced with a default one, so you need to make a backup of it if you have added anything to the default one. (you could also edit the Makefile and remove the line that copies the default file to /etc). diff --git a/doc/Makefile.in b/doc/Makefile.in index c714c2c3..c4e752f5 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -133,6 +133,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -161,7 +162,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -205,7 +205,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/etc/Makefile.in b/etc/Makefile.in index fc1877c7..7973d496 100644 --- a/etc/Makefile.in +++ b/etc/Makefile.in @@ -222,6 +222,7 @@ am__relativize = \ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -250,7 +251,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -294,7 +294,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/etc/login.defs b/etc/login.defs index 33622c29..966724c7 100644 --- a/etc/login.defs +++ b/etc/login.defs @@ -6,7 +6,7 @@ # # Delay in seconds before being allowed another attempt after a login failure -# Note: When PAM is used, some modules may enforce a minimum delay (e.g. +# Note: when PAM is used, some modules may enforce a minimum delay (e.g. # pam_unix(8) enforces a 2s delay) # FAIL_DELAY 3 @@ -276,7 +276,7 @@ PASS_ALWAYS_WARN yes # # Number of significant characters in the password for crypt(). # Default is 8, don't change unless your crypt() is better. -# Ignored if MD5_CRYPT_ENAB set to "yes". +# Only used for DES encryption algorithm. # #PASS_MAX_LEN 8 @@ -308,7 +308,7 @@ CHFN_RESTRICT rwh # Set to "no" if you need to copy encrypted passwords to other systems # which don't understand the new algorithm. Default is "no". # -# Note: If you use PAM, it is recommended to use a value consistent with +# Note: if you use PAM, it is recommended to use a value consistent with # the PAM modules configuration. # # This variable is deprecated. You should use ENCRYPT_METHOD instead. @@ -326,7 +326,7 @@ CHFN_RESTRICT rwh # MD5 and DES should not be used for new hashes, see crypt(5) for recommendations. # Overrides the MD5_CRYPT_ENAB option # -# Note: If you use PAM, it is recommended to use a value consistent with +# Note: if you use PAM, it is recommended to use a value consistent with # the PAM modules configuration. # #ENCRYPT_METHOD DES @@ -467,7 +467,7 @@ PREVENT_NO_AUTH superuser # Used in pam_timestamp module to calculate the keyed-hash message # authentication code. # -# Note: It is recommended to check hmac(3) to see the possible algorithms +# Note: it is recommended to check hmac(3) to see the possible algorithms # that are available in your system. # #HMAC_CRYPTO_ALGO SHA512 diff --git a/etc/pam.d/Makefile.in b/etc/pam.d/Makefile.in index 8a836d3c..c6d52369 100644 --- a/etc/pam.d/Makefile.in +++ b/etc/pam.d/Makefile.in @@ -165,6 +165,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -193,7 +194,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -237,7 +237,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/etc/shadow-maint/Makefile.in b/etc/shadow-maint/Makefile.in index b6a258dc..debd17a9 100644 --- a/etc/shadow-maint/Makefile.in +++ b/etc/shadow-maint/Makefile.in @@ -130,6 +130,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -158,7 +159,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -202,7 +202,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/lib/Makefile.am b/lib/Makefile.am index 21653c5b..c402ff02 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -37,30 +37,10 @@ libshadow_la_SOURCES = \ alloc/realloc.h \ alloc/reallocf.c \ alloc/reallocf.h \ - alloc/x/xcalloc.c \ - alloc/x/xcalloc.h \ - alloc/x/xmalloc.c \ - alloc/x/xmalloc.h \ - alloc/x/xrealloc.c \ - alloc/x/xrealloc.h \ - atoi/a2i/a2i.c \ - atoi/a2i/a2i.h \ - atoi/a2i/a2s.c \ - atoi/a2i/a2s.h \ - atoi/a2i/a2s_c.c \ - atoi/a2i/a2s_c.h \ - atoi/a2i/a2s_nc.c \ - atoi/a2i/a2s_nc.h \ - atoi/a2i/a2u.c \ - atoi/a2i/a2u.h \ - atoi/a2i/a2u_c.c \ - atoi/a2i/a2u_c.h \ - atoi/a2i/a2u_nc.c \ - atoi/a2i/a2u_nc.h \ + atoi/a2i.c \ + atoi/a2i.h \ atoi/getnum.c \ atoi/getnum.h \ - atoi/str2i.c \ - atoi/str2i.h \ atoi/strtoi/strtoi.c \ atoi/strtoi/strtoi.h \ atoi/strtoi/strtou.c \ @@ -75,6 +55,8 @@ libshadow_la_SOURCES = \ cast.h \ chkname.c \ chkname.h \ + chkhash.c \ + chkhash.h \ chowndir.c \ chowntty.c \ cleanup.c \ @@ -88,6 +70,8 @@ libshadow_la_SOURCES = \ defines.h \ encrypt.c \ env.c \ + exit_if_null.c \ + exit_if_null.h \ exitcodes.h \ faillog.h \ failure.c \ @@ -99,7 +83,6 @@ libshadow_la_SOURCES = \ find_new_uid.c \ find_new_sub_gids.c \ find_new_sub_uids.c \ - fputsx.c \ fs/mkstemp/fmkomstemp.c \ fs/mkstemp/fmkomstemp.h \ fs/mkstemp/mkomstemp.c \ @@ -117,7 +100,6 @@ libshadow_la_SOURCES = \ groupio.c \ groupmem.c \ groupio.h \ - gshadow.c \ hushed.c \ idmapping.h \ idmapping.c \ @@ -165,13 +147,34 @@ libshadow_la_SOURCES = \ semanage.c \ setugid.c \ setupenv.c \ - sgetgrent.c \ - sgetpwent.c \ - sgetspent.c \ sgroupio.c \ - sgroupio.h\ + sgroupio.h \ + shadow/group/sgetgrent.c \ + shadow/group/sgetgrent.h \ shadow/grp/agetgroups.c \ shadow/grp/agetgroups.h \ + shadow/gshadow/endsgent.c \ + shadow/gshadow/endsgent.h \ + shadow/gshadow/fgetsgent.c \ + shadow/gshadow/fgetsgent.h \ + shadow/gshadow/getsgent.c \ + shadow/gshadow/getsgent.h \ + shadow/gshadow/getsgnam.c \ + shadow/gshadow/getsgnam.h \ + shadow/gshadow/gshadow.c \ + shadow/gshadow/gshadow.h \ + shadow/gshadow/putsgent.c \ + shadow/gshadow/putsgent.h \ + shadow/gshadow/setsgent.c \ + shadow/gshadow/setsgent.h \ + shadow/gshadow/sgetsgent.c \ + shadow/gshadow/sgetsgent.h \ + shadow/gshadow/sgrp.c \ + shadow/gshadow/sgrp.h \ + shadow/passwd/sgetpwent.c \ + shadow/passwd/sgetpwent.h \ + shadow/shadow/sgetspent.c \ + shadow/shadow/sgetspent.h \ shadowio.c \ shadowio.h \ shadowlog.c \ @@ -199,8 +202,6 @@ libshadow_la_SOURCES = \ string/sprintf/snprintf.h \ string/sprintf/stpeprintf.c \ string/sprintf/stpeprintf.h \ - string/sprintf/xaprintf.c \ - string/sprintf/xaprintf.h \ string/strchr/strchrcnt.c \ string/strchr/strchrcnt.h \ string/strchr/strchrscnt.c \ @@ -213,6 +214,8 @@ libshadow_la_SOURCES = \ string/strcmp/strcaseprefix.h \ string/strcmp/streq.c \ string/strcmp/streq.h \ + string/strcmp/strneq.c \ + string/strcmp/strneq.h \ string/strcmp/strprefix.c \ string/strcmp/strprefix.h \ string/strcpy/stpecpy.c \ @@ -223,12 +226,14 @@ libshadow_la_SOURCES = \ string/strcpy/strncpy.h \ string/strcpy/strtcpy.c \ string/strcpy/strtcpy.h \ + string/strdup/strdup.c \ + string/strdup/strdup.h \ string/strdup/strndupa.c \ string/strdup/strndupa.h \ - string/strdup/xstrdup.c \ - string/strdup/xstrdup.h \ - string/strdup/xstrndup.c \ - string/strdup/xstrndup.h \ + string/strdup/strndup.c \ + string/strdup/strndup.h \ + string/strerrno.c \ + string/strerrno.h \ string/strftime.c \ string/strftime.h \ string/strspn/stpspn.c \ @@ -249,8 +254,6 @@ libshadow_la_SOURCES = \ string/strtok/strsep2arr.h \ string/strtok/strsep2ls.c \ string/strtok/strsep2ls.h \ - string/strtok/xastrsep2ls.c \ - string/strtok/xastrsep2ls.h \ strtoday.c \ sub.c \ subordinateio.h \ @@ -306,5 +309,4 @@ endif EXTRA_DIST = \ .indent.pro \ - gshadow_.h \ xgetXXbyYY.c diff --git a/lib/Makefile.in b/lib/Makefile.in index 076eee6d..4f7bdf8e 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -124,42 +124,48 @@ libshadow_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am__libshadow_la_SOURCES_DIST = addgrps.c adds.c adds.h age.c \ agetpass.c agetpass.h alloc/calloc.c alloc/calloc.h \ alloc/malloc.c alloc/malloc.h alloc/realloc.c alloc/realloc.h \ - alloc/reallocf.c alloc/reallocf.h alloc/x/xcalloc.c \ - alloc/x/xcalloc.h alloc/x/xmalloc.c alloc/x/xmalloc.h \ - alloc/x/xrealloc.c alloc/x/xrealloc.h atoi/a2i/a2i.c \ - atoi/a2i/a2i.h atoi/a2i/a2s.c atoi/a2i/a2s.h atoi/a2i/a2s_c.c \ - atoi/a2i/a2s_c.h atoi/a2i/a2s_nc.c atoi/a2i/a2s_nc.h \ - atoi/a2i/a2u.c atoi/a2i/a2u.h atoi/a2i/a2u_c.c \ - atoi/a2i/a2u_c.h atoi/a2i/a2u_nc.c atoi/a2i/a2u_nc.h \ - atoi/getnum.c atoi/getnum.h atoi/str2i.c atoi/str2i.h \ - atoi/strtoi/strtoi.c atoi/strtoi/strtoi.h atoi/strtoi/strtou.c \ - atoi/strtoi/strtou.h atoi/strtoi/strtou_noneg.c \ - atoi/strtoi/strtou_noneg.h attr.h audit_help.c basename.c \ - bit.c bit.h cast.h chkname.c chkname.h chowndir.c chowntty.c \ - cleanup.c cleanup_group.c cleanup_user.c commonio.c commonio.h \ - console.c copydir.c csrand.c defines.h encrypt.c env.c \ - exitcodes.h faillog.h failure.c failure.h fd.c fields.c \ - fields.h find_new_gid.c find_new_uid.c find_new_sub_gids.c \ - find_new_sub_uids.c fputsx.c fs/mkstemp/fmkomstemp.c \ - fs/mkstemp/fmkomstemp.h fs/mkstemp/mkomstemp.c \ - fs/mkstemp/mkomstemp.h fs/readlink/areadlink.c \ - fs/readlink/areadlink.h fs/readlink/readlinknul.c \ - fs/readlink/readlinknul.h get_pid.c getdef.c getdef.h \ - getgr_nam_gid.c getrange.c gettime.c groupio.c groupmem.c \ - groupio.h gshadow.c hushed.c idmapping.h idmapping.c \ - isexpired.c limits.c list.c lockpw.c loginprompt.c mail.c \ - motd.c myname.c nss.c nscd.c nscd.h obscure.c pam_defs.h \ - pam_pass.c pam_pass_non_interactive.c port.c port.h \ + alloc/reallocf.c alloc/reallocf.h atoi/a2i.c atoi/a2i.h \ + atoi/getnum.c atoi/getnum.h atoi/strtoi/strtoi.c \ + atoi/strtoi/strtoi.h atoi/strtoi/strtou.c atoi/strtoi/strtou.h \ + atoi/strtoi/strtou_noneg.c atoi/strtoi/strtou_noneg.h attr.h \ + audit_help.c basename.c bit.c bit.h cast.h chkname.c chkname.h \ + chkhash.c chkhash.h chowndir.c chowntty.c cleanup.c \ + cleanup_group.c cleanup_user.c commonio.c commonio.h console.c \ + copydir.c csrand.c defines.h encrypt.c env.c exit_if_null.c \ + exit_if_null.h exitcodes.h faillog.h failure.c failure.h fd.c \ + fields.c fields.h find_new_gid.c find_new_uid.c \ + find_new_sub_gids.c find_new_sub_uids.c \ + fs/mkstemp/fmkomstemp.c fs/mkstemp/fmkomstemp.h \ + fs/mkstemp/mkomstemp.c fs/mkstemp/mkomstemp.h \ + fs/readlink/areadlink.c fs/readlink/areadlink.h \ + fs/readlink/readlinknul.c fs/readlink/readlinknul.h get_pid.c \ + getdef.c getdef.h getgr_nam_gid.c getrange.c gettime.c \ + groupio.c groupmem.c groupio.h hushed.c idmapping.h \ + idmapping.c isexpired.c limits.c list.c lockpw.c loginprompt.c \ + mail.c motd.c myname.c nss.c nscd.c nscd.h obscure.c \ + pam_defs.h pam_pass.c pam_pass_non_interactive.c port.c port.h \ prefix_flag.c prototypes.h pwauth.c pwauth.h pwio.c pwio.h \ pwd_init.c pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c \ root_flag.c run_part.h run_part.c salt.c search/cmp/cmp.c \ search/cmp/cmp.h search/l/lfind.c search/l/lfind.h \ search/l/lsearch.c search/l/lsearch.h search/sort/qsort.c \ search/sort/qsort.h selinux.c semanage.c setugid.c setupenv.c \ - sgetgrent.c sgetpwent.c sgetspent.c sgroupio.c sgroupio.h \ - shadow/grp/agetgroups.c shadow/grp/agetgroups.h shadowio.c \ - shadowio.h shadowlog.c shadowlog.h shadowlog_internal.h \ - shadowmem.c shell.c sizeof.h spawn.c sssd.c sssd.h \ + sgroupio.c sgroupio.h shadow/group/sgetgrent.c \ + shadow/group/sgetgrent.h shadow/grp/agetgroups.c \ + shadow/grp/agetgroups.h shadow/gshadow/endsgent.c \ + shadow/gshadow/endsgent.h shadow/gshadow/fgetsgent.c \ + shadow/gshadow/fgetsgent.h shadow/gshadow/getsgent.c \ + shadow/gshadow/getsgent.h shadow/gshadow/getsgnam.c \ + shadow/gshadow/getsgnam.h shadow/gshadow/gshadow.c \ + shadow/gshadow/gshadow.h shadow/gshadow/putsgent.c \ + shadow/gshadow/putsgent.h shadow/gshadow/setsgent.c \ + shadow/gshadow/setsgent.h shadow/gshadow/sgetsgent.c \ + shadow/gshadow/sgetsgent.h shadow/gshadow/sgrp.c \ + shadow/gshadow/sgrp.h shadow/passwd/sgetpwent.c \ + shadow/passwd/sgetpwent.h shadow/shadow/sgetspent.c \ + shadow/shadow/sgetspent.h shadowio.c shadowio.h shadowlog.c \ + shadowlog.h shadowlog_internal.h shadowmem.c shell.c sizeof.h \ + spawn.c sssd.c sssd.h \ string/ctype/strchrisascii/strchriscntrl.c \ string/ctype/strchrisascii/strchriscntrl.h \ string/ctype/strisascii/strisdigit.c \ @@ -171,39 +177,38 @@ am__libshadow_la_SOURCES_DIST = addgrps.c adds.c adds.h age.c \ string/memset/memzero.h string/sprintf/aprintf.c \ string/sprintf/aprintf.h string/sprintf/snprintf.c \ string/sprintf/snprintf.h string/sprintf/stpeprintf.c \ - string/sprintf/stpeprintf.h string/sprintf/xaprintf.c \ - string/sprintf/xaprintf.h string/strchr/strchrcnt.c \ + string/sprintf/stpeprintf.h string/strchr/strchrcnt.c \ string/strchr/strchrcnt.h string/strchr/strchrscnt.c \ string/strchr/strchrscnt.h string/strchr/strnul.c \ string/strchr/strnul.h string/strcmp/strcaseeq.c \ string/strcmp/strcaseeq.h string/strcmp/strcaseprefix.c \ string/strcmp/strcaseprefix.h string/strcmp/streq.c \ - string/strcmp/streq.h string/strcmp/strprefix.c \ + string/strcmp/streq.h string/strcmp/strneq.c \ + string/strcmp/strneq.h string/strcmp/strprefix.c \ string/strcmp/strprefix.h string/strcpy/stpecpy.c \ string/strcpy/stpecpy.h string/strcpy/strncat.c \ string/strcpy/strncat.h string/strcpy/strncpy.c \ string/strcpy/strncpy.h string/strcpy/strtcpy.c \ - string/strcpy/strtcpy.h string/strdup/strndupa.c \ - string/strdup/strndupa.h string/strdup/xstrdup.c \ - string/strdup/xstrdup.h string/strdup/xstrndup.c \ - string/strdup/xstrndup.h string/strftime.c string/strftime.h \ - string/strspn/stpspn.c string/strspn/stpspn.h \ - string/strspn/stprcspn.c string/strspn/stprcspn.h \ - string/strspn/stprspn.c string/strspn/stprspn.h \ - string/strspn/strrcspn.c string/strspn/strrcspn.h \ - string/strspn/strrspn.c string/strspn/strrspn.h \ - string/strtok/stpsep.c string/strtok/stpsep.h \ - string/strtok/astrsep2ls.c string/strtok/astrsep2ls.h \ - string/strtok/strsep2arr.c string/strtok/strsep2arr.h \ - string/strtok/strsep2ls.c string/strtok/strsep2ls.h \ - string/strtok/xastrsep2ls.c string/strtok/xastrsep2ls.h \ - strtoday.c sub.c subordinateio.h subordinateio.c sulog.c \ - time/day_to_str.c time/day_to_str.h ttytype.c typetraits.h \ - tz.c ulimit.c user_busy.c valid.c write_full.c xgetpwnam.c \ - xprefix_getpwnam.c xgetpwuid.c xgetgrnam.c xgetgrgid.c \ - xgetspnam.c yesno.c tcbfuncs.c tcbfuncs.h btrfs.c log.c \ - logind.c utmp.c freezero.h freezero.c readpassphrase.h \ - readpassphrase.c + string/strcpy/strtcpy.h string/strdup/strdup.c \ + string/strdup/strdup.h string/strdup/strndupa.c \ + string/strdup/strndupa.h string/strdup/strndup.c \ + string/strdup/strndup.h string/strerrno.c string/strerrno.h \ + string/strftime.c string/strftime.h string/strspn/stpspn.c \ + string/strspn/stpspn.h string/strspn/stprcspn.c \ + string/strspn/stprcspn.h string/strspn/stprspn.c \ + string/strspn/stprspn.h string/strspn/strrcspn.c \ + string/strspn/strrcspn.h string/strspn/strrspn.c \ + string/strspn/strrspn.h string/strtok/stpsep.c \ + string/strtok/stpsep.h string/strtok/astrsep2ls.c \ + string/strtok/astrsep2ls.h string/strtok/strsep2arr.c \ + string/strtok/strsep2arr.h string/strtok/strsep2ls.c \ + string/strtok/strsep2ls.h strtoday.c sub.c subordinateio.h \ + subordinateio.c sulog.c time/day_to_str.c time/day_to_str.h \ + ttytype.c typetraits.h tz.c ulimit.c user_busy.c valid.c \ + write_full.c xgetpwnam.c xprefix_getpwnam.c xgetpwuid.c \ + xgetgrnam.c xgetgrgid.c xgetspnam.c yesno.c tcbfuncs.c \ + tcbfuncs.h btrfs.c log.c logind.c utmp.c freezero.h freezero.c \ + readpassphrase.h readpassphrase.c am__dirstamp = $(am__leading_dot)dirstamp @WITH_TCB_TRUE@am__objects_1 = libshadow_la-tcbfuncs.lo @WITH_BTRFS_TRUE@am__objects_2 = libshadow_la-btrfs.lo @@ -216,27 +221,23 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \ libshadow_la-age.lo libshadow_la-agetpass.lo \ alloc/libshadow_la-calloc.lo alloc/libshadow_la-malloc.lo \ alloc/libshadow_la-realloc.lo alloc/libshadow_la-reallocf.lo \ - alloc/x/libshadow_la-xcalloc.lo \ - alloc/x/libshadow_la-xmalloc.lo \ - alloc/x/libshadow_la-xrealloc.lo atoi/a2i/libshadow_la-a2i.lo \ - atoi/a2i/libshadow_la-a2s.lo atoi/a2i/libshadow_la-a2s_c.lo \ - atoi/a2i/libshadow_la-a2s_nc.lo atoi/a2i/libshadow_la-a2u.lo \ - atoi/a2i/libshadow_la-a2u_c.lo atoi/a2i/libshadow_la-a2u_nc.lo \ - atoi/libshadow_la-getnum.lo atoi/libshadow_la-str2i.lo \ + atoi/libshadow_la-a2i.lo atoi/libshadow_la-getnum.lo \ atoi/strtoi/libshadow_la-strtoi.lo \ atoi/strtoi/libshadow_la-strtou.lo \ atoi/strtoi/libshadow_la-strtou_noneg.lo \ libshadow_la-audit_help.lo libshadow_la-basename.lo \ libshadow_la-bit.lo libshadow_la-chkname.lo \ - libshadow_la-chowndir.lo libshadow_la-chowntty.lo \ - libshadow_la-cleanup.lo libshadow_la-cleanup_group.lo \ - libshadow_la-cleanup_user.lo libshadow_la-commonio.lo \ - libshadow_la-console.lo libshadow_la-copydir.lo \ - libshadow_la-csrand.lo libshadow_la-encrypt.lo \ - libshadow_la-env.lo libshadow_la-failure.lo libshadow_la-fd.lo \ - libshadow_la-fields.lo libshadow_la-find_new_gid.lo \ - libshadow_la-find_new_uid.lo libshadow_la-find_new_sub_gids.lo \ - libshadow_la-find_new_sub_uids.lo libshadow_la-fputsx.lo \ + libshadow_la-chkhash.lo libshadow_la-chowndir.lo \ + libshadow_la-chowntty.lo libshadow_la-cleanup.lo \ + libshadow_la-cleanup_group.lo libshadow_la-cleanup_user.lo \ + libshadow_la-commonio.lo libshadow_la-console.lo \ + libshadow_la-copydir.lo libshadow_la-csrand.lo \ + libshadow_la-encrypt.lo libshadow_la-env.lo \ + libshadow_la-exit_if_null.lo libshadow_la-failure.lo \ + libshadow_la-fd.lo libshadow_la-fields.lo \ + libshadow_la-find_new_gid.lo libshadow_la-find_new_uid.lo \ + libshadow_la-find_new_sub_gids.lo \ + libshadow_la-find_new_sub_uids.lo \ fs/mkstemp/libshadow_la-fmkomstemp.lo \ fs/mkstemp/libshadow_la-mkomstemp.lo \ fs/readlink/libshadow_la-areadlink.lo \ @@ -244,14 +245,14 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \ libshadow_la-get_pid.lo libshadow_la-getdef.lo \ libshadow_la-getgr_nam_gid.lo libshadow_la-getrange.lo \ libshadow_la-gettime.lo libshadow_la-groupio.lo \ - libshadow_la-groupmem.lo libshadow_la-gshadow.lo \ - libshadow_la-hushed.lo libshadow_la-idmapping.lo \ - libshadow_la-isexpired.lo libshadow_la-limits.lo \ - libshadow_la-list.lo libshadow_la-lockpw.lo \ - libshadow_la-loginprompt.lo libshadow_la-mail.lo \ - libshadow_la-motd.lo libshadow_la-myname.lo \ - libshadow_la-nss.lo libshadow_la-nscd.lo \ - libshadow_la-obscure.lo libshadow_la-pam_pass.lo \ + libshadow_la-groupmem.lo libshadow_la-hushed.lo \ + libshadow_la-idmapping.lo libshadow_la-isexpired.lo \ + libshadow_la-limits.lo libshadow_la-list.lo \ + libshadow_la-lockpw.lo libshadow_la-loginprompt.lo \ + libshadow_la-mail.lo libshadow_la-motd.lo \ + libshadow_la-myname.lo libshadow_la-nss.lo \ + libshadow_la-nscd.lo libshadow_la-obscure.lo \ + libshadow_la-pam_pass.lo \ libshadow_la-pam_pass_non_interactive.lo libshadow_la-port.lo \ libshadow_la-prefix_flag.lo libshadow_la-pwauth.lo \ libshadow_la-pwio.lo libshadow_la-pwd_init.lo \ @@ -263,9 +264,20 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \ search/l/libshadow_la-lsearch.lo \ search/sort/libshadow_la-qsort.lo libshadow_la-selinux.lo \ libshadow_la-semanage.lo libshadow_la-setugid.lo \ - libshadow_la-setupenv.lo libshadow_la-sgetgrent.lo \ - libshadow_la-sgetpwent.lo libshadow_la-sgetspent.lo \ - libshadow_la-sgroupio.lo shadow/grp/libshadow_la-agetgroups.lo \ + libshadow_la-setupenv.lo libshadow_la-sgroupio.lo \ + shadow/group/libshadow_la-sgetgrent.lo \ + shadow/grp/libshadow_la-agetgroups.lo \ + shadow/gshadow/libshadow_la-endsgent.lo \ + shadow/gshadow/libshadow_la-fgetsgent.lo \ + shadow/gshadow/libshadow_la-getsgent.lo \ + shadow/gshadow/libshadow_la-getsgnam.lo \ + shadow/gshadow/libshadow_la-gshadow.lo \ + shadow/gshadow/libshadow_la-putsgent.lo \ + shadow/gshadow/libshadow_la-setsgent.lo \ + shadow/gshadow/libshadow_la-sgetsgent.lo \ + shadow/gshadow/libshadow_la-sgrp.lo \ + shadow/passwd/libshadow_la-sgetpwent.lo \ + shadow/shadow/libshadow_la-sgetspent.lo \ libshadow_la-shadowio.lo libshadow_la-shadowlog.lo \ libshadow_la-shadowmem.lo libshadow_la-shell.lo \ libshadow_la-spawn.lo libshadow_la-sssd.lo \ @@ -277,21 +289,22 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \ string/sprintf/libshadow_la-aprintf.lo \ string/sprintf/libshadow_la-snprintf.lo \ string/sprintf/libshadow_la-stpeprintf.lo \ - string/sprintf/libshadow_la-xaprintf.lo \ string/strchr/libshadow_la-strchrcnt.lo \ string/strchr/libshadow_la-strchrscnt.lo \ string/strchr/libshadow_la-strnul.lo \ string/strcmp/libshadow_la-strcaseeq.lo \ string/strcmp/libshadow_la-strcaseprefix.lo \ string/strcmp/libshadow_la-streq.lo \ + string/strcmp/libshadow_la-strneq.lo \ string/strcmp/libshadow_la-strprefix.lo \ string/strcpy/libshadow_la-stpecpy.lo \ string/strcpy/libshadow_la-strncat.lo \ string/strcpy/libshadow_la-strncpy.lo \ string/strcpy/libshadow_la-strtcpy.lo \ + string/strdup/libshadow_la-strdup.lo \ string/strdup/libshadow_la-strndupa.lo \ - string/strdup/libshadow_la-xstrdup.lo \ - string/strdup/libshadow_la-xstrndup.lo \ + string/strdup/libshadow_la-strndup.lo \ + string/libshadow_la-strerrno.lo \ string/libshadow_la-strftime.lo \ string/strspn/libshadow_la-stpspn.lo \ string/strspn/libshadow_la-stprcspn.lo \ @@ -302,7 +315,6 @@ am_libshadow_la_OBJECTS = libshadow_la-addgrps.lo libshadow_la-adds.lo \ string/strtok/libshadow_la-astrsep2ls.lo \ string/strtok/libshadow_la-strsep2arr.lo \ string/strtok/libshadow_la-strsep2ls.lo \ - string/strtok/libshadow_la-xastrsep2ls.lo \ libshadow_la-strtoday.lo libshadow_la-sub.lo \ libshadow_la-subordinateio.lo libshadow_la-sulog.lo \ time/libshadow_la-day_to_str.lo libshadow_la-ttytype.lo \ @@ -335,7 +347,7 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ ./$(DEPDIR)/libshadow_la-adds.Plo \ @@ -345,6 +357,7 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ ./$(DEPDIR)/libshadow_la-basename.Plo \ ./$(DEPDIR)/libshadow_la-bit.Plo \ ./$(DEPDIR)/libshadow_la-btrfs.Plo \ + ./$(DEPDIR)/libshadow_la-chkhash.Plo \ ./$(DEPDIR)/libshadow_la-chkname.Plo \ ./$(DEPDIR)/libshadow_la-chowndir.Plo \ ./$(DEPDIR)/libshadow_la-chowntty.Plo \ @@ -357,6 +370,7 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ ./$(DEPDIR)/libshadow_la-csrand.Plo \ ./$(DEPDIR)/libshadow_la-encrypt.Plo \ ./$(DEPDIR)/libshadow_la-env.Plo \ + ./$(DEPDIR)/libshadow_la-exit_if_null.Plo \ ./$(DEPDIR)/libshadow_la-failure.Plo \ ./$(DEPDIR)/libshadow_la-fd.Plo \ ./$(DEPDIR)/libshadow_la-fields.Plo \ @@ -364,7 +378,6 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ ./$(DEPDIR)/libshadow_la-find_new_sub_gids.Plo \ ./$(DEPDIR)/libshadow_la-find_new_sub_uids.Plo \ ./$(DEPDIR)/libshadow_la-find_new_uid.Plo \ - ./$(DEPDIR)/libshadow_la-fputsx.Plo \ ./$(DEPDIR)/libshadow_la-freezero.Plo \ ./$(DEPDIR)/libshadow_la-get_pid.Plo \ ./$(DEPDIR)/libshadow_la-getdef.Plo \ @@ -373,7 +386,6 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ ./$(DEPDIR)/libshadow_la-gettime.Plo \ ./$(DEPDIR)/libshadow_la-groupio.Plo \ ./$(DEPDIR)/libshadow_la-groupmem.Plo \ - ./$(DEPDIR)/libshadow_la-gshadow.Plo \ ./$(DEPDIR)/libshadow_la-hushed.Plo \ ./$(DEPDIR)/libshadow_la-idmapping.Plo \ ./$(DEPDIR)/libshadow_la-isexpired.Plo \ @@ -408,9 +420,6 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ ./$(DEPDIR)/libshadow_la-semanage.Plo \ ./$(DEPDIR)/libshadow_la-setugid.Plo \ ./$(DEPDIR)/libshadow_la-setupenv.Plo \ - ./$(DEPDIR)/libshadow_la-sgetgrent.Plo \ - ./$(DEPDIR)/libshadow_la-sgetpwent.Plo \ - ./$(DEPDIR)/libshadow_la-sgetspent.Plo \ ./$(DEPDIR)/libshadow_la-sgroupio.Plo \ ./$(DEPDIR)/libshadow_la-shadowio.Plo \ ./$(DEPDIR)/libshadow_la-shadowlog.Plo \ @@ -441,18 +450,8 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ alloc/$(DEPDIR)/libshadow_la-malloc.Plo \ alloc/$(DEPDIR)/libshadow_la-realloc.Plo \ alloc/$(DEPDIR)/libshadow_la-reallocf.Plo \ - alloc/x/$(DEPDIR)/libshadow_la-xcalloc.Plo \ - alloc/x/$(DEPDIR)/libshadow_la-xmalloc.Plo \ - alloc/x/$(DEPDIR)/libshadow_la-xrealloc.Plo \ + atoi/$(DEPDIR)/libshadow_la-a2i.Plo \ atoi/$(DEPDIR)/libshadow_la-getnum.Plo \ - atoi/$(DEPDIR)/libshadow_la-str2i.Plo \ - atoi/a2i/$(DEPDIR)/libshadow_la-a2i.Plo \ - atoi/a2i/$(DEPDIR)/libshadow_la-a2s.Plo \ - atoi/a2i/$(DEPDIR)/libshadow_la-a2s_c.Plo \ - atoi/a2i/$(DEPDIR)/libshadow_la-a2s_nc.Plo \ - atoi/a2i/$(DEPDIR)/libshadow_la-a2u.Plo \ - atoi/a2i/$(DEPDIR)/libshadow_la-a2u_c.Plo \ - atoi/a2i/$(DEPDIR)/libshadow_la-a2u_nc.Plo \ atoi/strtoi/$(DEPDIR)/libshadow_la-strtoi.Plo \ atoi/strtoi/$(DEPDIR)/libshadow_la-strtou.Plo \ atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo \ @@ -464,7 +463,20 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ search/l/$(DEPDIR)/libshadow_la-lfind.Plo \ search/l/$(DEPDIR)/libshadow_la-lsearch.Plo \ search/sort/$(DEPDIR)/libshadow_la-qsort.Plo \ + shadow/group/$(DEPDIR)/libshadow_la-sgetgrent.Plo \ shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo \ + shadow/gshadow/$(DEPDIR)/libshadow_la-endsgent.Plo \ + shadow/gshadow/$(DEPDIR)/libshadow_la-fgetsgent.Plo \ + shadow/gshadow/$(DEPDIR)/libshadow_la-getsgent.Plo \ + shadow/gshadow/$(DEPDIR)/libshadow_la-getsgnam.Plo \ + shadow/gshadow/$(DEPDIR)/libshadow_la-gshadow.Plo \ + shadow/gshadow/$(DEPDIR)/libshadow_la-putsgent.Plo \ + shadow/gshadow/$(DEPDIR)/libshadow_la-setsgent.Plo \ + shadow/gshadow/$(DEPDIR)/libshadow_la-sgetsgent.Plo \ + shadow/gshadow/$(DEPDIR)/libshadow_la-sgrp.Plo \ + shadow/passwd/$(DEPDIR)/libshadow_la-sgetpwent.Plo \ + shadow/shadow/$(DEPDIR)/libshadow_la-sgetspent.Plo \ + string/$(DEPDIR)/libshadow_la-strerrno.Plo \ string/$(DEPDIR)/libshadow_la-strftime.Plo \ string/ctype/strchrisascii/$(DEPDIR)/libshadow_la-strchriscntrl.Plo \ string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo \ @@ -474,21 +486,21 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ string/sprintf/$(DEPDIR)/libshadow_la-aprintf.Plo \ string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo \ string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo \ - string/sprintf/$(DEPDIR)/libshadow_la-xaprintf.Plo \ string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo \ string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo \ string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo \ string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo \ string/strcmp/$(DEPDIR)/libshadow_la-strcaseprefix.Plo \ string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo \ + string/strcmp/$(DEPDIR)/libshadow_la-strneq.Plo \ string/strcmp/$(DEPDIR)/libshadow_la-strprefix.Plo \ string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo \ string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo \ string/strcpy/$(DEPDIR)/libshadow_la-strncpy.Plo \ string/strcpy/$(DEPDIR)/libshadow_la-strtcpy.Plo \ + string/strdup/$(DEPDIR)/libshadow_la-strdup.Plo \ + string/strdup/$(DEPDIR)/libshadow_la-strndup.Plo \ string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo \ - string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo \ - string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo \ string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo \ string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo \ string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo \ @@ -498,7 +510,6 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-addgrps.Plo \ string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo \ string/strtok/$(DEPDIR)/libshadow_la-strsep2arr.Plo \ string/strtok/$(DEPDIR)/libshadow_la-strsep2ls.Plo \ - string/strtok/$(DEPDIR)/libshadow_la-xastrsep2ls.Plo \ time/$(DEPDIR)/libshadow_la-day_to_str.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ @@ -543,11 +554,13 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -576,7 +589,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -620,7 +632,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -733,42 +744,48 @@ libshadow_la_LIBADD = $(LIBADD_DLOPEN) libshadow_la_SOURCES = addgrps.c adds.c adds.h age.c agetpass.c \ agetpass.h alloc/calloc.c alloc/calloc.h alloc/malloc.c \ alloc/malloc.h alloc/realloc.c alloc/realloc.h \ - alloc/reallocf.c alloc/reallocf.h alloc/x/xcalloc.c \ - alloc/x/xcalloc.h alloc/x/xmalloc.c alloc/x/xmalloc.h \ - alloc/x/xrealloc.c alloc/x/xrealloc.h atoi/a2i/a2i.c \ - atoi/a2i/a2i.h atoi/a2i/a2s.c atoi/a2i/a2s.h atoi/a2i/a2s_c.c \ - atoi/a2i/a2s_c.h atoi/a2i/a2s_nc.c atoi/a2i/a2s_nc.h \ - atoi/a2i/a2u.c atoi/a2i/a2u.h atoi/a2i/a2u_c.c \ - atoi/a2i/a2u_c.h atoi/a2i/a2u_nc.c atoi/a2i/a2u_nc.h \ - atoi/getnum.c atoi/getnum.h atoi/str2i.c atoi/str2i.h \ - atoi/strtoi/strtoi.c atoi/strtoi/strtoi.h atoi/strtoi/strtou.c \ - atoi/strtoi/strtou.h atoi/strtoi/strtou_noneg.c \ - atoi/strtoi/strtou_noneg.h attr.h audit_help.c basename.c \ - bit.c bit.h cast.h chkname.c chkname.h chowndir.c chowntty.c \ - cleanup.c cleanup_group.c cleanup_user.c commonio.c commonio.h \ - console.c copydir.c csrand.c defines.h encrypt.c env.c \ - exitcodes.h faillog.h failure.c failure.h fd.c fields.c \ - fields.h find_new_gid.c find_new_uid.c find_new_sub_gids.c \ - find_new_sub_uids.c fputsx.c fs/mkstemp/fmkomstemp.c \ - fs/mkstemp/fmkomstemp.h fs/mkstemp/mkomstemp.c \ - fs/mkstemp/mkomstemp.h fs/readlink/areadlink.c \ - fs/readlink/areadlink.h fs/readlink/readlinknul.c \ - fs/readlink/readlinknul.h get_pid.c getdef.c getdef.h \ - getgr_nam_gid.c getrange.c gettime.c groupio.c groupmem.c \ - groupio.h gshadow.c hushed.c idmapping.h idmapping.c \ - isexpired.c limits.c list.c lockpw.c loginprompt.c mail.c \ - motd.c myname.c nss.c nscd.c nscd.h obscure.c pam_defs.h \ - pam_pass.c pam_pass_non_interactive.c port.c port.h \ + alloc/reallocf.c alloc/reallocf.h atoi/a2i.c atoi/a2i.h \ + atoi/getnum.c atoi/getnum.h atoi/strtoi/strtoi.c \ + atoi/strtoi/strtoi.h atoi/strtoi/strtou.c atoi/strtoi/strtou.h \ + atoi/strtoi/strtou_noneg.c atoi/strtoi/strtou_noneg.h attr.h \ + audit_help.c basename.c bit.c bit.h cast.h chkname.c chkname.h \ + chkhash.c chkhash.h chowndir.c chowntty.c cleanup.c \ + cleanup_group.c cleanup_user.c commonio.c commonio.h console.c \ + copydir.c csrand.c defines.h encrypt.c env.c exit_if_null.c \ + exit_if_null.h exitcodes.h faillog.h failure.c failure.h fd.c \ + fields.c fields.h find_new_gid.c find_new_uid.c \ + find_new_sub_gids.c find_new_sub_uids.c \ + fs/mkstemp/fmkomstemp.c fs/mkstemp/fmkomstemp.h \ + fs/mkstemp/mkomstemp.c fs/mkstemp/mkomstemp.h \ + fs/readlink/areadlink.c fs/readlink/areadlink.h \ + fs/readlink/readlinknul.c fs/readlink/readlinknul.h get_pid.c \ + getdef.c getdef.h getgr_nam_gid.c getrange.c gettime.c \ + groupio.c groupmem.c groupio.h hushed.c idmapping.h \ + idmapping.c isexpired.c limits.c list.c lockpw.c loginprompt.c \ + mail.c motd.c myname.c nss.c nscd.c nscd.h obscure.c \ + pam_defs.h pam_pass.c pam_pass_non_interactive.c port.c port.h \ prefix_flag.c prototypes.h pwauth.c pwauth.h pwio.c pwio.h \ pwd_init.c pwd2spwd.c pwdcheck.c pwmem.c remove_tree.c \ root_flag.c run_part.h run_part.c salt.c search/cmp/cmp.c \ search/cmp/cmp.h search/l/lfind.c search/l/lfind.h \ search/l/lsearch.c search/l/lsearch.h search/sort/qsort.c \ search/sort/qsort.h selinux.c semanage.c setugid.c setupenv.c \ - sgetgrent.c sgetpwent.c sgetspent.c sgroupio.c sgroupio.h \ - shadow/grp/agetgroups.c shadow/grp/agetgroups.h shadowio.c \ - shadowio.h shadowlog.c shadowlog.h shadowlog_internal.h \ - shadowmem.c shell.c sizeof.h spawn.c sssd.c sssd.h \ + sgroupio.c sgroupio.h shadow/group/sgetgrent.c \ + shadow/group/sgetgrent.h shadow/grp/agetgroups.c \ + shadow/grp/agetgroups.h shadow/gshadow/endsgent.c \ + shadow/gshadow/endsgent.h shadow/gshadow/fgetsgent.c \ + shadow/gshadow/fgetsgent.h shadow/gshadow/getsgent.c \ + shadow/gshadow/getsgent.h shadow/gshadow/getsgnam.c \ + shadow/gshadow/getsgnam.h shadow/gshadow/gshadow.c \ + shadow/gshadow/gshadow.h shadow/gshadow/putsgent.c \ + shadow/gshadow/putsgent.h shadow/gshadow/setsgent.c \ + shadow/gshadow/setsgent.h shadow/gshadow/sgetsgent.c \ + shadow/gshadow/sgetsgent.h shadow/gshadow/sgrp.c \ + shadow/gshadow/sgrp.h shadow/passwd/sgetpwent.c \ + shadow/passwd/sgetpwent.h shadow/shadow/sgetspent.c \ + shadow/shadow/sgetspent.h shadowio.c shadowio.h shadowlog.c \ + shadowlog.h shadowlog_internal.h shadowmem.c shell.c sizeof.h \ + spawn.c sssd.c sssd.h \ string/ctype/strchrisascii/strchriscntrl.c \ string/ctype/strchrisascii/strchriscntrl.h \ string/ctype/strisascii/strisdigit.c \ @@ -780,39 +797,38 @@ libshadow_la_SOURCES = addgrps.c adds.c adds.h age.c agetpass.c \ string/memset/memzero.h string/sprintf/aprintf.c \ string/sprintf/aprintf.h string/sprintf/snprintf.c \ string/sprintf/snprintf.h string/sprintf/stpeprintf.c \ - string/sprintf/stpeprintf.h string/sprintf/xaprintf.c \ - string/sprintf/xaprintf.h string/strchr/strchrcnt.c \ + string/sprintf/stpeprintf.h string/strchr/strchrcnt.c \ string/strchr/strchrcnt.h string/strchr/strchrscnt.c \ string/strchr/strchrscnt.h string/strchr/strnul.c \ string/strchr/strnul.h string/strcmp/strcaseeq.c \ string/strcmp/strcaseeq.h string/strcmp/strcaseprefix.c \ string/strcmp/strcaseprefix.h string/strcmp/streq.c \ - string/strcmp/streq.h string/strcmp/strprefix.c \ + string/strcmp/streq.h string/strcmp/strneq.c \ + string/strcmp/strneq.h string/strcmp/strprefix.c \ string/strcmp/strprefix.h string/strcpy/stpecpy.c \ string/strcpy/stpecpy.h string/strcpy/strncat.c \ string/strcpy/strncat.h string/strcpy/strncpy.c \ string/strcpy/strncpy.h string/strcpy/strtcpy.c \ - string/strcpy/strtcpy.h string/strdup/strndupa.c \ - string/strdup/strndupa.h string/strdup/xstrdup.c \ - string/strdup/xstrdup.h string/strdup/xstrndup.c \ - string/strdup/xstrndup.h string/strftime.c string/strftime.h \ - string/strspn/stpspn.c string/strspn/stpspn.h \ - string/strspn/stprcspn.c string/strspn/stprcspn.h \ - string/strspn/stprspn.c string/strspn/stprspn.h \ - string/strspn/strrcspn.c string/strspn/strrcspn.h \ - string/strspn/strrspn.c string/strspn/strrspn.h \ - string/strtok/stpsep.c string/strtok/stpsep.h \ - string/strtok/astrsep2ls.c string/strtok/astrsep2ls.h \ - string/strtok/strsep2arr.c string/strtok/strsep2arr.h \ - string/strtok/strsep2ls.c string/strtok/strsep2ls.h \ - string/strtok/xastrsep2ls.c string/strtok/xastrsep2ls.h \ - strtoday.c sub.c subordinateio.h subordinateio.c sulog.c \ - time/day_to_str.c time/day_to_str.h ttytype.c typetraits.h \ - tz.c ulimit.c user_busy.c valid.c write_full.c xgetpwnam.c \ - xprefix_getpwnam.c xgetpwuid.c xgetgrnam.c xgetgrgid.c \ - xgetspnam.c yesno.c $(am__append_2) $(am__append_3) \ - $(am__append_4) $(am__append_5) $(am__append_6) \ - $(am__append_7) + string/strcpy/strtcpy.h string/strdup/strdup.c \ + string/strdup/strdup.h string/strdup/strndupa.c \ + string/strdup/strndupa.h string/strdup/strndup.c \ + string/strdup/strndup.h string/strerrno.c string/strerrno.h \ + string/strftime.c string/strftime.h string/strspn/stpspn.c \ + string/strspn/stpspn.h string/strspn/stprcspn.c \ + string/strspn/stprcspn.h string/strspn/stprspn.c \ + string/strspn/stprspn.h string/strspn/strrcspn.c \ + string/strspn/strrcspn.h string/strspn/strrspn.c \ + string/strspn/strrspn.h string/strtok/stpsep.c \ + string/strtok/stpsep.h string/strtok/astrsep2ls.c \ + string/strtok/astrsep2ls.h string/strtok/strsep2arr.c \ + string/strtok/strsep2arr.h string/strtok/strsep2ls.c \ + string/strtok/strsep2ls.h strtoday.c sub.c subordinateio.h \ + subordinateio.c sulog.c time/day_to_str.c time/day_to_str.h \ + ttytype.c typetraits.h tz.c ulimit.c user_busy.c valid.c \ + write_full.c xgetpwnam.c xprefix_getpwnam.c xgetpwuid.c \ + xgetgrnam.c xgetgrgid.c xgetspnam.c yesno.c $(am__append_2) \ + $(am__append_3) $(am__append_4) $(am__append_5) \ + $(am__append_6) $(am__append_7) # These files are unneeded for some reason, listed in # order of appearance: @@ -820,7 +836,6 @@ libshadow_la_SOURCES = addgrps.c adds.c adds.h age.c agetpass.c \ # sources for dbm support (not yet used) EXTRA_DIST = \ .indent.pro \ - gshadow_.h \ xgetXXbyYY.c all: all-am @@ -881,47 +896,15 @@ alloc/libshadow_la-realloc.lo: alloc/$(am__dirstamp) \ alloc/$(DEPDIR)/$(am__dirstamp) alloc/libshadow_la-reallocf.lo: alloc/$(am__dirstamp) \ alloc/$(DEPDIR)/$(am__dirstamp) -alloc/x/$(am__dirstamp): - @$(MKDIR_P) alloc/x - @: > alloc/x/$(am__dirstamp) -alloc/x/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) alloc/x/$(DEPDIR) - @: > alloc/x/$(DEPDIR)/$(am__dirstamp) -alloc/x/libshadow_la-xcalloc.lo: alloc/x/$(am__dirstamp) \ - alloc/x/$(DEPDIR)/$(am__dirstamp) -alloc/x/libshadow_la-xmalloc.lo: alloc/x/$(am__dirstamp) \ - alloc/x/$(DEPDIR)/$(am__dirstamp) -alloc/x/libshadow_la-xrealloc.lo: alloc/x/$(am__dirstamp) \ - alloc/x/$(DEPDIR)/$(am__dirstamp) -atoi/a2i/$(am__dirstamp): - @$(MKDIR_P) atoi/a2i - @: > atoi/a2i/$(am__dirstamp) -atoi/a2i/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) atoi/a2i/$(DEPDIR) - @: > atoi/a2i/$(DEPDIR)/$(am__dirstamp) -atoi/a2i/libshadow_la-a2i.lo: atoi/a2i/$(am__dirstamp) \ - atoi/a2i/$(DEPDIR)/$(am__dirstamp) -atoi/a2i/libshadow_la-a2s.lo: atoi/a2i/$(am__dirstamp) \ - atoi/a2i/$(DEPDIR)/$(am__dirstamp) -atoi/a2i/libshadow_la-a2s_c.lo: atoi/a2i/$(am__dirstamp) \ - atoi/a2i/$(DEPDIR)/$(am__dirstamp) -atoi/a2i/libshadow_la-a2s_nc.lo: atoi/a2i/$(am__dirstamp) \ - atoi/a2i/$(DEPDIR)/$(am__dirstamp) -atoi/a2i/libshadow_la-a2u.lo: atoi/a2i/$(am__dirstamp) \ - atoi/a2i/$(DEPDIR)/$(am__dirstamp) -atoi/a2i/libshadow_la-a2u_c.lo: atoi/a2i/$(am__dirstamp) \ - atoi/a2i/$(DEPDIR)/$(am__dirstamp) -atoi/a2i/libshadow_la-a2u_nc.lo: atoi/a2i/$(am__dirstamp) \ - atoi/a2i/$(DEPDIR)/$(am__dirstamp) atoi/$(am__dirstamp): @$(MKDIR_P) atoi @: > atoi/$(am__dirstamp) atoi/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) atoi/$(DEPDIR) @: > atoi/$(DEPDIR)/$(am__dirstamp) -atoi/libshadow_la-getnum.lo: atoi/$(am__dirstamp) \ +atoi/libshadow_la-a2i.lo: atoi/$(am__dirstamp) \ atoi/$(DEPDIR)/$(am__dirstamp) -atoi/libshadow_la-str2i.lo: atoi/$(am__dirstamp) \ +atoi/libshadow_la-getnum.lo: atoi/$(am__dirstamp) \ atoi/$(DEPDIR)/$(am__dirstamp) atoi/strtoi/$(am__dirstamp): @$(MKDIR_P) atoi/strtoi @@ -981,6 +964,14 @@ search/sort/$(DEPDIR)/$(am__dirstamp): @: > search/sort/$(DEPDIR)/$(am__dirstamp) search/sort/libshadow_la-qsort.lo: search/sort/$(am__dirstamp) \ search/sort/$(DEPDIR)/$(am__dirstamp) +shadow/group/$(am__dirstamp): + @$(MKDIR_P) shadow/group + @: > shadow/group/$(am__dirstamp) +shadow/group/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) shadow/group/$(DEPDIR) + @: > shadow/group/$(DEPDIR)/$(am__dirstamp) +shadow/group/libshadow_la-sgetgrent.lo: shadow/group/$(am__dirstamp) \ + shadow/group/$(DEPDIR)/$(am__dirstamp) shadow/grp/$(am__dirstamp): @$(MKDIR_P) shadow/grp @: > shadow/grp/$(am__dirstamp) @@ -989,6 +980,56 @@ shadow/grp/$(DEPDIR)/$(am__dirstamp): @: > shadow/grp/$(DEPDIR)/$(am__dirstamp) shadow/grp/libshadow_la-agetgroups.lo: shadow/grp/$(am__dirstamp) \ shadow/grp/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/$(am__dirstamp): + @$(MKDIR_P) shadow/gshadow + @: > shadow/gshadow/$(am__dirstamp) +shadow/gshadow/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) shadow/gshadow/$(DEPDIR) + @: > shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/libshadow_la-endsgent.lo: \ + shadow/gshadow/$(am__dirstamp) \ + shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/libshadow_la-fgetsgent.lo: \ + shadow/gshadow/$(am__dirstamp) \ + shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/libshadow_la-getsgent.lo: \ + shadow/gshadow/$(am__dirstamp) \ + shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/libshadow_la-getsgnam.lo: \ + shadow/gshadow/$(am__dirstamp) \ + shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/libshadow_la-gshadow.lo: \ + shadow/gshadow/$(am__dirstamp) \ + shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/libshadow_la-putsgent.lo: \ + shadow/gshadow/$(am__dirstamp) \ + shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/libshadow_la-setsgent.lo: \ + shadow/gshadow/$(am__dirstamp) \ + shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/libshadow_la-sgetsgent.lo: \ + shadow/gshadow/$(am__dirstamp) \ + shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/gshadow/libshadow_la-sgrp.lo: shadow/gshadow/$(am__dirstamp) \ + shadow/gshadow/$(DEPDIR)/$(am__dirstamp) +shadow/passwd/$(am__dirstamp): + @$(MKDIR_P) shadow/passwd + @: > shadow/passwd/$(am__dirstamp) +shadow/passwd/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) shadow/passwd/$(DEPDIR) + @: > shadow/passwd/$(DEPDIR)/$(am__dirstamp) +shadow/passwd/libshadow_la-sgetpwent.lo: \ + shadow/passwd/$(am__dirstamp) \ + shadow/passwd/$(DEPDIR)/$(am__dirstamp) +shadow/shadow/$(am__dirstamp): + @$(MKDIR_P) shadow/shadow + @: > shadow/shadow/$(am__dirstamp) +shadow/shadow/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) shadow/shadow/$(DEPDIR) + @: > shadow/shadow/$(DEPDIR)/$(am__dirstamp) +shadow/shadow/libshadow_la-sgetspent.lo: \ + shadow/shadow/$(am__dirstamp) \ + shadow/shadow/$(DEPDIR)/$(am__dirstamp) string/ctype/strchrisascii/$(am__dirstamp): @$(MKDIR_P) string/ctype/strchrisascii @: > string/ctype/strchrisascii/$(am__dirstamp) @@ -1042,9 +1083,6 @@ string/sprintf/libshadow_la-snprintf.lo: \ string/sprintf/libshadow_la-stpeprintf.lo: \ string/sprintf/$(am__dirstamp) \ string/sprintf/$(DEPDIR)/$(am__dirstamp) -string/sprintf/libshadow_la-xaprintf.lo: \ - string/sprintf/$(am__dirstamp) \ - string/sprintf/$(DEPDIR)/$(am__dirstamp) string/strchr/$(am__dirstamp): @$(MKDIR_P) string/strchr @: > string/strchr/$(am__dirstamp) @@ -1073,6 +1111,8 @@ string/strcmp/libshadow_la-strcaseprefix.lo: \ string/strcmp/$(DEPDIR)/$(am__dirstamp) string/strcmp/libshadow_la-streq.lo: string/strcmp/$(am__dirstamp) \ string/strcmp/$(DEPDIR)/$(am__dirstamp) +string/strcmp/libshadow_la-strneq.lo: string/strcmp/$(am__dirstamp) \ + string/strcmp/$(DEPDIR)/$(am__dirstamp) string/strcmp/libshadow_la-strprefix.lo: \ string/strcmp/$(am__dirstamp) \ string/strcmp/$(DEPDIR)/$(am__dirstamp) @@ -1096,11 +1136,11 @@ string/strdup/$(am__dirstamp): string/strdup/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) string/strdup/$(DEPDIR) @: > string/strdup/$(DEPDIR)/$(am__dirstamp) +string/strdup/libshadow_la-strdup.lo: string/strdup/$(am__dirstamp) \ + string/strdup/$(DEPDIR)/$(am__dirstamp) string/strdup/libshadow_la-strndupa.lo: string/strdup/$(am__dirstamp) \ string/strdup/$(DEPDIR)/$(am__dirstamp) -string/strdup/libshadow_la-xstrdup.lo: string/strdup/$(am__dirstamp) \ - string/strdup/$(DEPDIR)/$(am__dirstamp) -string/strdup/libshadow_la-xstrndup.lo: string/strdup/$(am__dirstamp) \ +string/strdup/libshadow_la-strndup.lo: string/strdup/$(am__dirstamp) \ string/strdup/$(DEPDIR)/$(am__dirstamp) string/$(am__dirstamp): @$(MKDIR_P) string @@ -1108,6 +1148,8 @@ string/$(am__dirstamp): string/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) string/$(DEPDIR) @: > string/$(DEPDIR)/$(am__dirstamp) +string/libshadow_la-strerrno.lo: string/$(am__dirstamp) \ + string/$(DEPDIR)/$(am__dirstamp) string/libshadow_la-strftime.lo: string/$(am__dirstamp) \ string/$(DEPDIR)/$(am__dirstamp) string/strspn/$(am__dirstamp): @@ -1143,9 +1185,6 @@ string/strtok/libshadow_la-strsep2arr.lo: \ string/strtok/libshadow_la-strsep2ls.lo: \ string/strtok/$(am__dirstamp) \ string/strtok/$(DEPDIR)/$(am__dirstamp) -string/strtok/libshadow_la-xastrsep2ls.lo: \ - string/strtok/$(am__dirstamp) \ - string/strtok/$(DEPDIR)/$(am__dirstamp) time/$(am__dirstamp): @$(MKDIR_P) time @: > time/$(am__dirstamp) @@ -1162,12 +1201,8 @@ mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f alloc/*.$(OBJEXT) -rm -f alloc/*.lo - -rm -f alloc/x/*.$(OBJEXT) - -rm -f alloc/x/*.lo -rm -f atoi/*.$(OBJEXT) -rm -f atoi/*.lo - -rm -f atoi/a2i/*.$(OBJEXT) - -rm -f atoi/a2i/*.lo -rm -f atoi/strtoi/*.$(OBJEXT) -rm -f atoi/strtoi/*.lo -rm -f fs/mkstemp/*.$(OBJEXT) @@ -1180,8 +1215,16 @@ mostlyclean-compile: -rm -f search/l/*.lo -rm -f search/sort/*.$(OBJEXT) -rm -f search/sort/*.lo + -rm -f shadow/group/*.$(OBJEXT) + -rm -f shadow/group/*.lo -rm -f shadow/grp/*.$(OBJEXT) -rm -f shadow/grp/*.lo + -rm -f shadow/gshadow/*.$(OBJEXT) + -rm -f shadow/gshadow/*.lo + -rm -f shadow/passwd/*.$(OBJEXT) + -rm -f shadow/passwd/*.lo + -rm -f shadow/shadow/*.$(OBJEXT) + -rm -f shadow/shadow/*.lo -rm -f string/*.$(OBJEXT) -rm -f string/*.lo -rm -f string/ctype/strchrisascii/*.$(OBJEXT) @@ -1220,6 +1263,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-basename.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-bit.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-btrfs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-chkhash.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-chkname.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-chowndir.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-chowntty.Plo@am__quote@ # am--include-marker @@ -1232,6 +1276,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-csrand.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-encrypt.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-env.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-exit_if_null.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-failure.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-fd.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-fields.Plo@am__quote@ # am--include-marker @@ -1239,7 +1284,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-find_new_sub_gids.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-find_new_sub_uids.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-find_new_uid.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-fputsx.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-freezero.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-get_pid.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-getdef.Plo@am__quote@ # am--include-marker @@ -1248,7 +1292,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-gettime.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-groupio.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-groupmem.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-gshadow.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-hushed.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-idmapping.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-isexpired.Plo@am__quote@ # am--include-marker @@ -1283,9 +1326,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-semanage.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-setugid.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-setupenv.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sgetgrent.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sgetpwent.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sgetspent.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sgroupio.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shadowio.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shadowlog.Plo@am__quote@ # am--include-marker @@ -1316,18 +1356,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@alloc/$(DEPDIR)/libshadow_la-malloc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@alloc/$(DEPDIR)/libshadow_la-realloc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@alloc/$(DEPDIR)/libshadow_la-reallocf.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@alloc/x/$(DEPDIR)/libshadow_la-xcalloc.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@alloc/x/$(DEPDIR)/libshadow_la-xmalloc.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@alloc/x/$(DEPDIR)/libshadow_la-xrealloc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-a2i.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-getnum.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@atoi/$(DEPDIR)/libshadow_la-str2i.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@atoi/a2i/$(DEPDIR)/libshadow_la-a2i.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@atoi/a2i/$(DEPDIR)/libshadow_la-a2s.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@atoi/a2i/$(DEPDIR)/libshadow_la-a2s_c.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@atoi/a2i/$(DEPDIR)/libshadow_la-a2s_nc.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@atoi/a2i/$(DEPDIR)/libshadow_la-a2u.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@atoi/a2i/$(DEPDIR)/libshadow_la-a2u_c.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@atoi/a2i/$(DEPDIR)/libshadow_la-a2u_nc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@atoi/strtoi/$(DEPDIR)/libshadow_la-strtoi.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@atoi/strtoi/$(DEPDIR)/libshadow_la-strtou.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo@am__quote@ # am--include-marker @@ -1339,7 +1369,20 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@search/l/$(DEPDIR)/libshadow_la-lfind.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@search/l/$(DEPDIR)/libshadow_la-lsearch.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@search/sort/$(DEPDIR)/libshadow_la-qsort.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/group/$(DEPDIR)/libshadow_la-sgetgrent.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/gshadow/$(DEPDIR)/libshadow_la-endsgent.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/gshadow/$(DEPDIR)/libshadow_la-fgetsgent.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/gshadow/$(DEPDIR)/libshadow_la-getsgent.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/gshadow/$(DEPDIR)/libshadow_la-getsgnam.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/gshadow/$(DEPDIR)/libshadow_la-gshadow.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/gshadow/$(DEPDIR)/libshadow_la-putsgent.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/gshadow/$(DEPDIR)/libshadow_la-setsgent.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/gshadow/$(DEPDIR)/libshadow_la-sgetsgent.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/gshadow/$(DEPDIR)/libshadow_la-sgrp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/passwd/$(DEPDIR)/libshadow_la-sgetpwent.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@shadow/shadow/$(DEPDIR)/libshadow_la-sgetspent.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-strerrno.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/$(DEPDIR)/libshadow_la-strftime.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/ctype/strchrisascii/$(DEPDIR)/libshadow_la-strchriscntrl.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo@am__quote@ # am--include-marker @@ -1349,21 +1392,21 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-aprintf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@string/sprintf/$(DEPDIR)/libshadow_la-xaprintf.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strcmp/$(DEPDIR)/libshadow_la-strcaseprefix.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@string/strcmp/$(DEPDIR)/libshadow_la-strneq.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strcmp/$(DEPDIR)/libshadow_la-strprefix.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strcpy/$(DEPDIR)/libshadow_la-strncpy.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strcpy/$(DEPDIR)/libshadow_la-strtcpy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-strdup.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-strndup.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo@am__quote@ # am--include-marker @@ -1373,7 +1416,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strtok/$(DEPDIR)/libshadow_la-strsep2arr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@string/strtok/$(DEPDIR)/libshadow_la-strsep2ls.Plo@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@string/strtok/$(DEPDIR)/libshadow_la-xastrsep2ls.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@time/$(DEPDIR)/libshadow_la-day_to_str.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @@ -1462,75 +1504,12 @@ alloc/libshadow_la-reallocf.lo: alloc/reallocf.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o alloc/libshadow_la-reallocf.lo `test -f 'alloc/reallocf.c' || echo '$(srcdir)/'`alloc/reallocf.c -alloc/x/libshadow_la-xcalloc.lo: alloc/x/xcalloc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT alloc/x/libshadow_la-xcalloc.lo -MD -MP -MF alloc/x/$(DEPDIR)/libshadow_la-xcalloc.Tpo -c -o alloc/x/libshadow_la-xcalloc.lo `test -f 'alloc/x/xcalloc.c' || echo '$(srcdir)/'`alloc/x/xcalloc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) alloc/x/$(DEPDIR)/libshadow_la-xcalloc.Tpo alloc/x/$(DEPDIR)/libshadow_la-xcalloc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alloc/x/xcalloc.c' object='alloc/x/libshadow_la-xcalloc.lo' libtool=yes @AMDEPBACKSLASH@ +atoi/libshadow_la-a2i.lo: atoi/a2i.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-a2i.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-a2i.Tpo -c -o atoi/libshadow_la-a2i.lo `test -f 'atoi/a2i.c' || echo '$(srcdir)/'`atoi/a2i.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/$(DEPDIR)/libshadow_la-a2i.Tpo atoi/$(DEPDIR)/libshadow_la-a2i.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i.c' object='atoi/libshadow_la-a2i.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o alloc/x/libshadow_la-xcalloc.lo `test -f 'alloc/x/xcalloc.c' || echo '$(srcdir)/'`alloc/x/xcalloc.c - -alloc/x/libshadow_la-xmalloc.lo: alloc/x/xmalloc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT alloc/x/libshadow_la-xmalloc.lo -MD -MP -MF alloc/x/$(DEPDIR)/libshadow_la-xmalloc.Tpo -c -o alloc/x/libshadow_la-xmalloc.lo `test -f 'alloc/x/xmalloc.c' || echo '$(srcdir)/'`alloc/x/xmalloc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) alloc/x/$(DEPDIR)/libshadow_la-xmalloc.Tpo alloc/x/$(DEPDIR)/libshadow_la-xmalloc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alloc/x/xmalloc.c' object='alloc/x/libshadow_la-xmalloc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o alloc/x/libshadow_la-xmalloc.lo `test -f 'alloc/x/xmalloc.c' || echo '$(srcdir)/'`alloc/x/xmalloc.c - -alloc/x/libshadow_la-xrealloc.lo: alloc/x/xrealloc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT alloc/x/libshadow_la-xrealloc.lo -MD -MP -MF alloc/x/$(DEPDIR)/libshadow_la-xrealloc.Tpo -c -o alloc/x/libshadow_la-xrealloc.lo `test -f 'alloc/x/xrealloc.c' || echo '$(srcdir)/'`alloc/x/xrealloc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) alloc/x/$(DEPDIR)/libshadow_la-xrealloc.Tpo alloc/x/$(DEPDIR)/libshadow_la-xrealloc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alloc/x/xrealloc.c' object='alloc/x/libshadow_la-xrealloc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o alloc/x/libshadow_la-xrealloc.lo `test -f 'alloc/x/xrealloc.c' || echo '$(srcdir)/'`alloc/x/xrealloc.c - -atoi/a2i/libshadow_la-a2i.lo: atoi/a2i/a2i.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/a2i/libshadow_la-a2i.lo -MD -MP -MF atoi/a2i/$(DEPDIR)/libshadow_la-a2i.Tpo -c -o atoi/a2i/libshadow_la-a2i.lo `test -f 'atoi/a2i/a2i.c' || echo '$(srcdir)/'`atoi/a2i/a2i.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/a2i/$(DEPDIR)/libshadow_la-a2i.Tpo atoi/a2i/$(DEPDIR)/libshadow_la-a2i.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i/a2i.c' object='atoi/a2i/libshadow_la-a2i.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/a2i/libshadow_la-a2i.lo `test -f 'atoi/a2i/a2i.c' || echo '$(srcdir)/'`atoi/a2i/a2i.c - -atoi/a2i/libshadow_la-a2s.lo: atoi/a2i/a2s.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/a2i/libshadow_la-a2s.lo -MD -MP -MF atoi/a2i/$(DEPDIR)/libshadow_la-a2s.Tpo -c -o atoi/a2i/libshadow_la-a2s.lo `test -f 'atoi/a2i/a2s.c' || echo '$(srcdir)/'`atoi/a2i/a2s.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/a2i/$(DEPDIR)/libshadow_la-a2s.Tpo atoi/a2i/$(DEPDIR)/libshadow_la-a2s.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i/a2s.c' object='atoi/a2i/libshadow_la-a2s.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/a2i/libshadow_la-a2s.lo `test -f 'atoi/a2i/a2s.c' || echo '$(srcdir)/'`atoi/a2i/a2s.c - -atoi/a2i/libshadow_la-a2s_c.lo: atoi/a2i/a2s_c.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/a2i/libshadow_la-a2s_c.lo -MD -MP -MF atoi/a2i/$(DEPDIR)/libshadow_la-a2s_c.Tpo -c -o atoi/a2i/libshadow_la-a2s_c.lo `test -f 'atoi/a2i/a2s_c.c' || echo '$(srcdir)/'`atoi/a2i/a2s_c.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/a2i/$(DEPDIR)/libshadow_la-a2s_c.Tpo atoi/a2i/$(DEPDIR)/libshadow_la-a2s_c.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i/a2s_c.c' object='atoi/a2i/libshadow_la-a2s_c.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/a2i/libshadow_la-a2s_c.lo `test -f 'atoi/a2i/a2s_c.c' || echo '$(srcdir)/'`atoi/a2i/a2s_c.c - -atoi/a2i/libshadow_la-a2s_nc.lo: atoi/a2i/a2s_nc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/a2i/libshadow_la-a2s_nc.lo -MD -MP -MF atoi/a2i/$(DEPDIR)/libshadow_la-a2s_nc.Tpo -c -o atoi/a2i/libshadow_la-a2s_nc.lo `test -f 'atoi/a2i/a2s_nc.c' || echo '$(srcdir)/'`atoi/a2i/a2s_nc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/a2i/$(DEPDIR)/libshadow_la-a2s_nc.Tpo atoi/a2i/$(DEPDIR)/libshadow_la-a2s_nc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i/a2s_nc.c' object='atoi/a2i/libshadow_la-a2s_nc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/a2i/libshadow_la-a2s_nc.lo `test -f 'atoi/a2i/a2s_nc.c' || echo '$(srcdir)/'`atoi/a2i/a2s_nc.c - -atoi/a2i/libshadow_la-a2u.lo: atoi/a2i/a2u.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/a2i/libshadow_la-a2u.lo -MD -MP -MF atoi/a2i/$(DEPDIR)/libshadow_la-a2u.Tpo -c -o atoi/a2i/libshadow_la-a2u.lo `test -f 'atoi/a2i/a2u.c' || echo '$(srcdir)/'`atoi/a2i/a2u.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/a2i/$(DEPDIR)/libshadow_la-a2u.Tpo atoi/a2i/$(DEPDIR)/libshadow_la-a2u.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i/a2u.c' object='atoi/a2i/libshadow_la-a2u.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/a2i/libshadow_la-a2u.lo `test -f 'atoi/a2i/a2u.c' || echo '$(srcdir)/'`atoi/a2i/a2u.c - -atoi/a2i/libshadow_la-a2u_c.lo: atoi/a2i/a2u_c.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/a2i/libshadow_la-a2u_c.lo -MD -MP -MF atoi/a2i/$(DEPDIR)/libshadow_la-a2u_c.Tpo -c -o atoi/a2i/libshadow_la-a2u_c.lo `test -f 'atoi/a2i/a2u_c.c' || echo '$(srcdir)/'`atoi/a2i/a2u_c.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/a2i/$(DEPDIR)/libshadow_la-a2u_c.Tpo atoi/a2i/$(DEPDIR)/libshadow_la-a2u_c.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i/a2u_c.c' object='atoi/a2i/libshadow_la-a2u_c.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/a2i/libshadow_la-a2u_c.lo `test -f 'atoi/a2i/a2u_c.c' || echo '$(srcdir)/'`atoi/a2i/a2u_c.c - -atoi/a2i/libshadow_la-a2u_nc.lo: atoi/a2i/a2u_nc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/a2i/libshadow_la-a2u_nc.lo -MD -MP -MF atoi/a2i/$(DEPDIR)/libshadow_la-a2u_nc.Tpo -c -o atoi/a2i/libshadow_la-a2u_nc.lo `test -f 'atoi/a2i/a2u_nc.c' || echo '$(srcdir)/'`atoi/a2i/a2u_nc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/a2i/$(DEPDIR)/libshadow_la-a2u_nc.Tpo atoi/a2i/$(DEPDIR)/libshadow_la-a2u_nc.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/a2i/a2u_nc.c' object='atoi/a2i/libshadow_la-a2u_nc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/a2i/libshadow_la-a2u_nc.lo `test -f 'atoi/a2i/a2u_nc.c' || echo '$(srcdir)/'`atoi/a2i/a2u_nc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/libshadow_la-a2i.lo `test -f 'atoi/a2i.c' || echo '$(srcdir)/'`atoi/a2i.c atoi/libshadow_la-getnum.lo: atoi/getnum.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-getnum.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-getnum.Tpo -c -o atoi/libshadow_la-getnum.lo `test -f 'atoi/getnum.c' || echo '$(srcdir)/'`atoi/getnum.c @@ -1539,13 +1518,6 @@ atoi/libshadow_la-getnum.lo: atoi/getnum.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/libshadow_la-getnum.lo `test -f 'atoi/getnum.c' || echo '$(srcdir)/'`atoi/getnum.c -atoi/libshadow_la-str2i.lo: atoi/str2i.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/libshadow_la-str2i.lo -MD -MP -MF atoi/$(DEPDIR)/libshadow_la-str2i.Tpo -c -o atoi/libshadow_la-str2i.lo `test -f 'atoi/str2i.c' || echo '$(srcdir)/'`atoi/str2i.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/$(DEPDIR)/libshadow_la-str2i.Tpo atoi/$(DEPDIR)/libshadow_la-str2i.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atoi/str2i.c' object='atoi/libshadow_la-str2i.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o atoi/libshadow_la-str2i.lo `test -f 'atoi/str2i.c' || echo '$(srcdir)/'`atoi/str2i.c - atoi/strtoi/libshadow_la-strtoi.lo: atoi/strtoi/strtoi.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT atoi/strtoi/libshadow_la-strtoi.lo -MD -MP -MF atoi/strtoi/$(DEPDIR)/libshadow_la-strtoi.Tpo -c -o atoi/strtoi/libshadow_la-strtoi.lo `test -f 'atoi/strtoi/strtoi.c' || echo '$(srcdir)/'`atoi/strtoi/strtoi.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) atoi/strtoi/$(DEPDIR)/libshadow_la-strtoi.Tpo atoi/strtoi/$(DEPDIR)/libshadow_la-strtoi.Plo @@ -1595,6 +1567,13 @@ libshadow_la-chkname.lo: chkname.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-chkname.lo `test -f 'chkname.c' || echo '$(srcdir)/'`chkname.c +libshadow_la-chkhash.lo: chkhash.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-chkhash.lo -MD -MP -MF $(DEPDIR)/libshadow_la-chkhash.Tpo -c -o libshadow_la-chkhash.lo `test -f 'chkhash.c' || echo '$(srcdir)/'`chkhash.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-chkhash.Tpo $(DEPDIR)/libshadow_la-chkhash.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='chkhash.c' object='libshadow_la-chkhash.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-chkhash.lo `test -f 'chkhash.c' || echo '$(srcdir)/'`chkhash.c + libshadow_la-chowndir.lo: chowndir.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-chowndir.lo -MD -MP -MF $(DEPDIR)/libshadow_la-chowndir.Tpo -c -o libshadow_la-chowndir.lo `test -f 'chowndir.c' || echo '$(srcdir)/'`chowndir.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-chowndir.Tpo $(DEPDIR)/libshadow_la-chowndir.Plo @@ -1672,6 +1651,13 @@ libshadow_la-env.lo: env.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-env.lo `test -f 'env.c' || echo '$(srcdir)/'`env.c +libshadow_la-exit_if_null.lo: exit_if_null.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-exit_if_null.lo -MD -MP -MF $(DEPDIR)/libshadow_la-exit_if_null.Tpo -c -o libshadow_la-exit_if_null.lo `test -f 'exit_if_null.c' || echo '$(srcdir)/'`exit_if_null.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-exit_if_null.Tpo $(DEPDIR)/libshadow_la-exit_if_null.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='exit_if_null.c' object='libshadow_la-exit_if_null.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-exit_if_null.lo `test -f 'exit_if_null.c' || echo '$(srcdir)/'`exit_if_null.c + libshadow_la-failure.lo: failure.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-failure.lo -MD -MP -MF $(DEPDIR)/libshadow_la-failure.Tpo -c -o libshadow_la-failure.lo `test -f 'failure.c' || echo '$(srcdir)/'`failure.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-failure.Tpo $(DEPDIR)/libshadow_la-failure.Plo @@ -1721,13 +1707,6 @@ libshadow_la-find_new_sub_uids.lo: find_new_sub_uids.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-find_new_sub_uids.lo `test -f 'find_new_sub_uids.c' || echo '$(srcdir)/'`find_new_sub_uids.c -libshadow_la-fputsx.lo: fputsx.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-fputsx.lo -MD -MP -MF $(DEPDIR)/libshadow_la-fputsx.Tpo -c -o libshadow_la-fputsx.lo `test -f 'fputsx.c' || echo '$(srcdir)/'`fputsx.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-fputsx.Tpo $(DEPDIR)/libshadow_la-fputsx.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fputsx.c' object='libshadow_la-fputsx.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-fputsx.lo `test -f 'fputsx.c' || echo '$(srcdir)/'`fputsx.c - fs/mkstemp/libshadow_la-fmkomstemp.lo: fs/mkstemp/fmkomstemp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT fs/mkstemp/libshadow_la-fmkomstemp.lo -MD -MP -MF fs/mkstemp/$(DEPDIR)/libshadow_la-fmkomstemp.Tpo -c -o fs/mkstemp/libshadow_la-fmkomstemp.lo `test -f 'fs/mkstemp/fmkomstemp.c' || echo '$(srcdir)/'`fs/mkstemp/fmkomstemp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) fs/mkstemp/$(DEPDIR)/libshadow_la-fmkomstemp.Tpo fs/mkstemp/$(DEPDIR)/libshadow_la-fmkomstemp.Plo @@ -1805,13 +1784,6 @@ libshadow_la-groupmem.lo: groupmem.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-groupmem.lo `test -f 'groupmem.c' || echo '$(srcdir)/'`groupmem.c -libshadow_la-gshadow.lo: gshadow.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-gshadow.lo -MD -MP -MF $(DEPDIR)/libshadow_la-gshadow.Tpo -c -o libshadow_la-gshadow.lo `test -f 'gshadow.c' || echo '$(srcdir)/'`gshadow.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-gshadow.Tpo $(DEPDIR)/libshadow_la-gshadow.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gshadow.c' object='libshadow_la-gshadow.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-gshadow.lo `test -f 'gshadow.c' || echo '$(srcdir)/'`gshadow.c - libshadow_la-hushed.lo: hushed.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-hushed.lo -MD -MP -MF $(DEPDIR)/libshadow_la-hushed.Tpo -c -o libshadow_la-hushed.lo `test -f 'hushed.c' || echo '$(srcdir)/'`hushed.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-hushed.Tpo $(DEPDIR)/libshadow_la-hushed.Plo @@ -2057,27 +2029,6 @@ libshadow_la-setupenv.lo: setupenv.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-setupenv.lo `test -f 'setupenv.c' || echo '$(srcdir)/'`setupenv.c -libshadow_la-sgetgrent.lo: sgetgrent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sgetgrent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgetgrent.Tpo -c -o libshadow_la-sgetgrent.lo `test -f 'sgetgrent.c' || echo '$(srcdir)/'`sgetgrent.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sgetgrent.Tpo $(DEPDIR)/libshadow_la-sgetgrent.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sgetgrent.c' object='libshadow_la-sgetgrent.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgetgrent.lo `test -f 'sgetgrent.c' || echo '$(srcdir)/'`sgetgrent.c - -libshadow_la-sgetpwent.lo: sgetpwent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sgetpwent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgetpwent.Tpo -c -o libshadow_la-sgetpwent.lo `test -f 'sgetpwent.c' || echo '$(srcdir)/'`sgetpwent.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sgetpwent.Tpo $(DEPDIR)/libshadow_la-sgetpwent.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sgetpwent.c' object='libshadow_la-sgetpwent.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgetpwent.lo `test -f 'sgetpwent.c' || echo '$(srcdir)/'`sgetpwent.c - -libshadow_la-sgetspent.lo: sgetspent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sgetspent.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgetspent.Tpo -c -o libshadow_la-sgetspent.lo `test -f 'sgetspent.c' || echo '$(srcdir)/'`sgetspent.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sgetspent.Tpo $(DEPDIR)/libshadow_la-sgetspent.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='sgetspent.c' object='libshadow_la-sgetspent.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgetspent.lo `test -f 'sgetspent.c' || echo '$(srcdir)/'`sgetspent.c - libshadow_la-sgroupio.lo: sgroupio.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-sgroupio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sgroupio.Tpo -c -o libshadow_la-sgroupio.lo `test -f 'sgroupio.c' || echo '$(srcdir)/'`sgroupio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sgroupio.Tpo $(DEPDIR)/libshadow_la-sgroupio.Plo @@ -2085,6 +2036,13 @@ libshadow_la-sgroupio.lo: sgroupio.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o libshadow_la-sgroupio.lo `test -f 'sgroupio.c' || echo '$(srcdir)/'`sgroupio.c +shadow/group/libshadow_la-sgetgrent.lo: shadow/group/sgetgrent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/group/libshadow_la-sgetgrent.lo -MD -MP -MF shadow/group/$(DEPDIR)/libshadow_la-sgetgrent.Tpo -c -o shadow/group/libshadow_la-sgetgrent.lo `test -f 'shadow/group/sgetgrent.c' || echo '$(srcdir)/'`shadow/group/sgetgrent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/group/$(DEPDIR)/libshadow_la-sgetgrent.Tpo shadow/group/$(DEPDIR)/libshadow_la-sgetgrent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/group/sgetgrent.c' object='shadow/group/libshadow_la-sgetgrent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/group/libshadow_la-sgetgrent.lo `test -f 'shadow/group/sgetgrent.c' || echo '$(srcdir)/'`shadow/group/sgetgrent.c + shadow/grp/libshadow_la-agetgroups.lo: shadow/grp/agetgroups.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/grp/libshadow_la-agetgroups.lo -MD -MP -MF shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Tpo -c -o shadow/grp/libshadow_la-agetgroups.lo `test -f 'shadow/grp/agetgroups.c' || echo '$(srcdir)/'`shadow/grp/agetgroups.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Tpo shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo @@ -2092,6 +2050,83 @@ shadow/grp/libshadow_la-agetgroups.lo: shadow/grp/agetgroups.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/grp/libshadow_la-agetgroups.lo `test -f 'shadow/grp/agetgroups.c' || echo '$(srcdir)/'`shadow/grp/agetgroups.c +shadow/gshadow/libshadow_la-endsgent.lo: shadow/gshadow/endsgent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/gshadow/libshadow_la-endsgent.lo -MD -MP -MF shadow/gshadow/$(DEPDIR)/libshadow_la-endsgent.Tpo -c -o shadow/gshadow/libshadow_la-endsgent.lo `test -f 'shadow/gshadow/endsgent.c' || echo '$(srcdir)/'`shadow/gshadow/endsgent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/gshadow/$(DEPDIR)/libshadow_la-endsgent.Tpo shadow/gshadow/$(DEPDIR)/libshadow_la-endsgent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/gshadow/endsgent.c' object='shadow/gshadow/libshadow_la-endsgent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/gshadow/libshadow_la-endsgent.lo `test -f 'shadow/gshadow/endsgent.c' || echo '$(srcdir)/'`shadow/gshadow/endsgent.c + +shadow/gshadow/libshadow_la-fgetsgent.lo: shadow/gshadow/fgetsgent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/gshadow/libshadow_la-fgetsgent.lo -MD -MP -MF shadow/gshadow/$(DEPDIR)/libshadow_la-fgetsgent.Tpo -c -o shadow/gshadow/libshadow_la-fgetsgent.lo `test -f 'shadow/gshadow/fgetsgent.c' || echo '$(srcdir)/'`shadow/gshadow/fgetsgent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/gshadow/$(DEPDIR)/libshadow_la-fgetsgent.Tpo shadow/gshadow/$(DEPDIR)/libshadow_la-fgetsgent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/gshadow/fgetsgent.c' object='shadow/gshadow/libshadow_la-fgetsgent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/gshadow/libshadow_la-fgetsgent.lo `test -f 'shadow/gshadow/fgetsgent.c' || echo '$(srcdir)/'`shadow/gshadow/fgetsgent.c + +shadow/gshadow/libshadow_la-getsgent.lo: shadow/gshadow/getsgent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/gshadow/libshadow_la-getsgent.lo -MD -MP -MF shadow/gshadow/$(DEPDIR)/libshadow_la-getsgent.Tpo -c -o shadow/gshadow/libshadow_la-getsgent.lo `test -f 'shadow/gshadow/getsgent.c' || echo '$(srcdir)/'`shadow/gshadow/getsgent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/gshadow/$(DEPDIR)/libshadow_la-getsgent.Tpo shadow/gshadow/$(DEPDIR)/libshadow_la-getsgent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/gshadow/getsgent.c' object='shadow/gshadow/libshadow_la-getsgent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/gshadow/libshadow_la-getsgent.lo `test -f 'shadow/gshadow/getsgent.c' || echo '$(srcdir)/'`shadow/gshadow/getsgent.c + +shadow/gshadow/libshadow_la-getsgnam.lo: shadow/gshadow/getsgnam.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/gshadow/libshadow_la-getsgnam.lo -MD -MP -MF shadow/gshadow/$(DEPDIR)/libshadow_la-getsgnam.Tpo -c -o shadow/gshadow/libshadow_la-getsgnam.lo `test -f 'shadow/gshadow/getsgnam.c' || echo '$(srcdir)/'`shadow/gshadow/getsgnam.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/gshadow/$(DEPDIR)/libshadow_la-getsgnam.Tpo shadow/gshadow/$(DEPDIR)/libshadow_la-getsgnam.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/gshadow/getsgnam.c' object='shadow/gshadow/libshadow_la-getsgnam.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/gshadow/libshadow_la-getsgnam.lo `test -f 'shadow/gshadow/getsgnam.c' || echo '$(srcdir)/'`shadow/gshadow/getsgnam.c + +shadow/gshadow/libshadow_la-gshadow.lo: shadow/gshadow/gshadow.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/gshadow/libshadow_la-gshadow.lo -MD -MP -MF shadow/gshadow/$(DEPDIR)/libshadow_la-gshadow.Tpo -c -o shadow/gshadow/libshadow_la-gshadow.lo `test -f 'shadow/gshadow/gshadow.c' || echo '$(srcdir)/'`shadow/gshadow/gshadow.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/gshadow/$(DEPDIR)/libshadow_la-gshadow.Tpo shadow/gshadow/$(DEPDIR)/libshadow_la-gshadow.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/gshadow/gshadow.c' object='shadow/gshadow/libshadow_la-gshadow.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/gshadow/libshadow_la-gshadow.lo `test -f 'shadow/gshadow/gshadow.c' || echo '$(srcdir)/'`shadow/gshadow/gshadow.c + +shadow/gshadow/libshadow_la-putsgent.lo: shadow/gshadow/putsgent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/gshadow/libshadow_la-putsgent.lo -MD -MP -MF shadow/gshadow/$(DEPDIR)/libshadow_la-putsgent.Tpo -c -o shadow/gshadow/libshadow_la-putsgent.lo `test -f 'shadow/gshadow/putsgent.c' || echo '$(srcdir)/'`shadow/gshadow/putsgent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/gshadow/$(DEPDIR)/libshadow_la-putsgent.Tpo shadow/gshadow/$(DEPDIR)/libshadow_la-putsgent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/gshadow/putsgent.c' object='shadow/gshadow/libshadow_la-putsgent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/gshadow/libshadow_la-putsgent.lo `test -f 'shadow/gshadow/putsgent.c' || echo '$(srcdir)/'`shadow/gshadow/putsgent.c + +shadow/gshadow/libshadow_la-setsgent.lo: shadow/gshadow/setsgent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/gshadow/libshadow_la-setsgent.lo -MD -MP -MF shadow/gshadow/$(DEPDIR)/libshadow_la-setsgent.Tpo -c -o shadow/gshadow/libshadow_la-setsgent.lo `test -f 'shadow/gshadow/setsgent.c' || echo '$(srcdir)/'`shadow/gshadow/setsgent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/gshadow/$(DEPDIR)/libshadow_la-setsgent.Tpo shadow/gshadow/$(DEPDIR)/libshadow_la-setsgent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/gshadow/setsgent.c' object='shadow/gshadow/libshadow_la-setsgent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/gshadow/libshadow_la-setsgent.lo `test -f 'shadow/gshadow/setsgent.c' || echo '$(srcdir)/'`shadow/gshadow/setsgent.c + +shadow/gshadow/libshadow_la-sgetsgent.lo: shadow/gshadow/sgetsgent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/gshadow/libshadow_la-sgetsgent.lo -MD -MP -MF shadow/gshadow/$(DEPDIR)/libshadow_la-sgetsgent.Tpo -c -o shadow/gshadow/libshadow_la-sgetsgent.lo `test -f 'shadow/gshadow/sgetsgent.c' || echo '$(srcdir)/'`shadow/gshadow/sgetsgent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/gshadow/$(DEPDIR)/libshadow_la-sgetsgent.Tpo shadow/gshadow/$(DEPDIR)/libshadow_la-sgetsgent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/gshadow/sgetsgent.c' object='shadow/gshadow/libshadow_la-sgetsgent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/gshadow/libshadow_la-sgetsgent.lo `test -f 'shadow/gshadow/sgetsgent.c' || echo '$(srcdir)/'`shadow/gshadow/sgetsgent.c + +shadow/gshadow/libshadow_la-sgrp.lo: shadow/gshadow/sgrp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/gshadow/libshadow_la-sgrp.lo -MD -MP -MF shadow/gshadow/$(DEPDIR)/libshadow_la-sgrp.Tpo -c -o shadow/gshadow/libshadow_la-sgrp.lo `test -f 'shadow/gshadow/sgrp.c' || echo '$(srcdir)/'`shadow/gshadow/sgrp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/gshadow/$(DEPDIR)/libshadow_la-sgrp.Tpo shadow/gshadow/$(DEPDIR)/libshadow_la-sgrp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/gshadow/sgrp.c' object='shadow/gshadow/libshadow_la-sgrp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/gshadow/libshadow_la-sgrp.lo `test -f 'shadow/gshadow/sgrp.c' || echo '$(srcdir)/'`shadow/gshadow/sgrp.c + +shadow/passwd/libshadow_la-sgetpwent.lo: shadow/passwd/sgetpwent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/passwd/libshadow_la-sgetpwent.lo -MD -MP -MF shadow/passwd/$(DEPDIR)/libshadow_la-sgetpwent.Tpo -c -o shadow/passwd/libshadow_la-sgetpwent.lo `test -f 'shadow/passwd/sgetpwent.c' || echo '$(srcdir)/'`shadow/passwd/sgetpwent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/passwd/$(DEPDIR)/libshadow_la-sgetpwent.Tpo shadow/passwd/$(DEPDIR)/libshadow_la-sgetpwent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/passwd/sgetpwent.c' object='shadow/passwd/libshadow_la-sgetpwent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/passwd/libshadow_la-sgetpwent.lo `test -f 'shadow/passwd/sgetpwent.c' || echo '$(srcdir)/'`shadow/passwd/sgetpwent.c + +shadow/shadow/libshadow_la-sgetspent.lo: shadow/shadow/sgetspent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT shadow/shadow/libshadow_la-sgetspent.lo -MD -MP -MF shadow/shadow/$(DEPDIR)/libshadow_la-sgetspent.Tpo -c -o shadow/shadow/libshadow_la-sgetspent.lo `test -f 'shadow/shadow/sgetspent.c' || echo '$(srcdir)/'`shadow/shadow/sgetspent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) shadow/shadow/$(DEPDIR)/libshadow_la-sgetspent.Tpo shadow/shadow/$(DEPDIR)/libshadow_la-sgetspent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadow/shadow/sgetspent.c' object='shadow/shadow/libshadow_la-sgetspent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o shadow/shadow/libshadow_la-sgetspent.lo `test -f 'shadow/shadow/sgetspent.c' || echo '$(srcdir)/'`shadow/shadow/sgetspent.c + libshadow_la-shadowio.lo: shadowio.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowio.Tpo -c -o libshadow_la-shadowio.lo `test -f 'shadowio.c' || echo '$(srcdir)/'`shadowio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shadowio.Tpo $(DEPDIR)/libshadow_la-shadowio.Plo @@ -2190,13 +2225,6 @@ string/sprintf/libshadow_la-stpeprintf.lo: string/sprintf/stpeprintf.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/sprintf/libshadow_la-stpeprintf.lo `test -f 'string/sprintf/stpeprintf.c' || echo '$(srcdir)/'`string/sprintf/stpeprintf.c -string/sprintf/libshadow_la-xaprintf.lo: string/sprintf/xaprintf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/sprintf/libshadow_la-xaprintf.lo -MD -MP -MF string/sprintf/$(DEPDIR)/libshadow_la-xaprintf.Tpo -c -o string/sprintf/libshadow_la-xaprintf.lo `test -f 'string/sprintf/xaprintf.c' || echo '$(srcdir)/'`string/sprintf/xaprintf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/sprintf/$(DEPDIR)/libshadow_la-xaprintf.Tpo string/sprintf/$(DEPDIR)/libshadow_la-xaprintf.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/sprintf/xaprintf.c' object='string/sprintf/libshadow_la-xaprintf.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/sprintf/libshadow_la-xaprintf.lo `test -f 'string/sprintf/xaprintf.c' || echo '$(srcdir)/'`string/sprintf/xaprintf.c - string/strchr/libshadow_la-strchrcnt.lo: string/strchr/strchrcnt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strchr/libshadow_la-strchrcnt.lo -MD -MP -MF string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Tpo -c -o string/strchr/libshadow_la-strchrcnt.lo `test -f 'string/strchr/strchrcnt.c' || echo '$(srcdir)/'`string/strchr/strchrcnt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Tpo string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo @@ -2239,6 +2267,13 @@ string/strcmp/libshadow_la-streq.lo: string/strcmp/streq.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strcmp/libshadow_la-streq.lo `test -f 'string/strcmp/streq.c' || echo '$(srcdir)/'`string/strcmp/streq.c +string/strcmp/libshadow_la-strneq.lo: string/strcmp/strneq.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strcmp/libshadow_la-strneq.lo -MD -MP -MF string/strcmp/$(DEPDIR)/libshadow_la-strneq.Tpo -c -o string/strcmp/libshadow_la-strneq.lo `test -f 'string/strcmp/strneq.c' || echo '$(srcdir)/'`string/strcmp/strneq.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strcmp/$(DEPDIR)/libshadow_la-strneq.Tpo string/strcmp/$(DEPDIR)/libshadow_la-strneq.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strcmp/strneq.c' object='string/strcmp/libshadow_la-strneq.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strcmp/libshadow_la-strneq.lo `test -f 'string/strcmp/strneq.c' || echo '$(srcdir)/'`string/strcmp/strneq.c + string/strcmp/libshadow_la-strprefix.lo: string/strcmp/strprefix.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strcmp/libshadow_la-strprefix.lo -MD -MP -MF string/strcmp/$(DEPDIR)/libshadow_la-strprefix.Tpo -c -o string/strcmp/libshadow_la-strprefix.lo `test -f 'string/strcmp/strprefix.c' || echo '$(srcdir)/'`string/strcmp/strprefix.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strcmp/$(DEPDIR)/libshadow_la-strprefix.Tpo string/strcmp/$(DEPDIR)/libshadow_la-strprefix.Plo @@ -2274,6 +2309,13 @@ string/strcpy/libshadow_la-strtcpy.lo: string/strcpy/strtcpy.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strcpy/libshadow_la-strtcpy.lo `test -f 'string/strcpy/strtcpy.c' || echo '$(srcdir)/'`string/strcpy/strtcpy.c +string/strdup/libshadow_la-strdup.lo: string/strdup/strdup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strdup/libshadow_la-strdup.lo -MD -MP -MF string/strdup/$(DEPDIR)/libshadow_la-strdup.Tpo -c -o string/strdup/libshadow_la-strdup.lo `test -f 'string/strdup/strdup.c' || echo '$(srcdir)/'`string/strdup/strdup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strdup/$(DEPDIR)/libshadow_la-strdup.Tpo string/strdup/$(DEPDIR)/libshadow_la-strdup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strdup/strdup.c' object='string/strdup/libshadow_la-strdup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strdup/libshadow_la-strdup.lo `test -f 'string/strdup/strdup.c' || echo '$(srcdir)/'`string/strdup/strdup.c + string/strdup/libshadow_la-strndupa.lo: string/strdup/strndupa.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strdup/libshadow_la-strndupa.lo -MD -MP -MF string/strdup/$(DEPDIR)/libshadow_la-strndupa.Tpo -c -o string/strdup/libshadow_la-strndupa.lo `test -f 'string/strdup/strndupa.c' || echo '$(srcdir)/'`string/strdup/strndupa.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strdup/$(DEPDIR)/libshadow_la-strndupa.Tpo string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo @@ -2281,19 +2323,19 @@ string/strdup/libshadow_la-strndupa.lo: string/strdup/strndupa.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strdup/libshadow_la-strndupa.lo `test -f 'string/strdup/strndupa.c' || echo '$(srcdir)/'`string/strdup/strndupa.c -string/strdup/libshadow_la-xstrdup.lo: string/strdup/xstrdup.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strdup/libshadow_la-xstrdup.lo -MD -MP -MF string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Tpo -c -o string/strdup/libshadow_la-xstrdup.lo `test -f 'string/strdup/xstrdup.c' || echo '$(srcdir)/'`string/strdup/xstrdup.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Tpo string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strdup/xstrdup.c' object='string/strdup/libshadow_la-xstrdup.lo' libtool=yes @AMDEPBACKSLASH@ +string/strdup/libshadow_la-strndup.lo: string/strdup/strndup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strdup/libshadow_la-strndup.lo -MD -MP -MF string/strdup/$(DEPDIR)/libshadow_la-strndup.Tpo -c -o string/strdup/libshadow_la-strndup.lo `test -f 'string/strdup/strndup.c' || echo '$(srcdir)/'`string/strdup/strndup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strdup/$(DEPDIR)/libshadow_la-strndup.Tpo string/strdup/$(DEPDIR)/libshadow_la-strndup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strdup/strndup.c' object='string/strdup/libshadow_la-strndup.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strdup/libshadow_la-xstrdup.lo `test -f 'string/strdup/xstrdup.c' || echo '$(srcdir)/'`string/strdup/xstrdup.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strdup/libshadow_la-strndup.lo `test -f 'string/strdup/strndup.c' || echo '$(srcdir)/'`string/strdup/strndup.c -string/strdup/libshadow_la-xstrndup.lo: string/strdup/xstrndup.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strdup/libshadow_la-xstrndup.lo -MD -MP -MF string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Tpo -c -o string/strdup/libshadow_la-xstrndup.lo `test -f 'string/strdup/xstrndup.c' || echo '$(srcdir)/'`string/strdup/xstrndup.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Tpo string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strdup/xstrndup.c' object='string/strdup/libshadow_la-xstrndup.lo' libtool=yes @AMDEPBACKSLASH@ +string/libshadow_la-strerrno.lo: string/strerrno.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/libshadow_la-strerrno.lo -MD -MP -MF string/$(DEPDIR)/libshadow_la-strerrno.Tpo -c -o string/libshadow_la-strerrno.lo `test -f 'string/strerrno.c' || echo '$(srcdir)/'`string/strerrno.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/$(DEPDIR)/libshadow_la-strerrno.Tpo string/$(DEPDIR)/libshadow_la-strerrno.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strerrno.c' object='string/libshadow_la-strerrno.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strdup/libshadow_la-xstrndup.lo `test -f 'string/strdup/xstrndup.c' || echo '$(srcdir)/'`string/strdup/xstrndup.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/libshadow_la-strerrno.lo `test -f 'string/strerrno.c' || echo '$(srcdir)/'`string/strerrno.c string/libshadow_la-strftime.lo: string/strftime.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/libshadow_la-strftime.lo -MD -MP -MF string/$(DEPDIR)/libshadow_la-strftime.Tpo -c -o string/libshadow_la-strftime.lo `test -f 'string/strftime.c' || echo '$(srcdir)/'`string/strftime.c @@ -2365,13 +2407,6 @@ string/strtok/libshadow_la-strsep2ls.lo: string/strtok/strsep2ls.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strtok/libshadow_la-strsep2ls.lo `test -f 'string/strtok/strsep2ls.c' || echo '$(srcdir)/'`string/strtok/strsep2ls.c -string/strtok/libshadow_la-xastrsep2ls.lo: string/strtok/xastrsep2ls.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT string/strtok/libshadow_la-xastrsep2ls.lo -MD -MP -MF string/strtok/$(DEPDIR)/libshadow_la-xastrsep2ls.Tpo -c -o string/strtok/libshadow_la-xastrsep2ls.lo `test -f 'string/strtok/xastrsep2ls.c' || echo '$(srcdir)/'`string/strtok/xastrsep2ls.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) string/strtok/$(DEPDIR)/libshadow_la-xastrsep2ls.Tpo string/strtok/$(DEPDIR)/libshadow_la-xastrsep2ls.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='string/strtok/xastrsep2ls.c' object='string/strtok/libshadow_la-xastrsep2ls.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -c -o string/strtok/libshadow_la-xastrsep2ls.lo `test -f 'string/strtok/xastrsep2ls.c' || echo '$(srcdir)/'`string/strtok/xastrsep2ls.c - libshadow_la-strtoday.lo: strtoday.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(libshadow_la_CFLAGS) $(CFLAGS) -MT libshadow_la-strtoday.lo -MD -MP -MF $(DEPDIR)/libshadow_la-strtoday.Tpo -c -o libshadow_la-strtoday.lo `test -f 'strtoday.c' || echo '$(srcdir)/'`strtoday.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-strtoday.Tpo $(DEPDIR)/libshadow_la-strtoday.Plo @@ -2553,16 +2588,18 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs -rm -rf alloc/.libs alloc/_libs - -rm -rf alloc/x/.libs alloc/x/_libs -rm -rf atoi/.libs atoi/_libs - -rm -rf atoi/a2i/.libs atoi/a2i/_libs -rm -rf atoi/strtoi/.libs atoi/strtoi/_libs -rm -rf fs/mkstemp/.libs fs/mkstemp/_libs -rm -rf fs/readlink/.libs fs/readlink/_libs -rm -rf search/cmp/.libs search/cmp/_libs -rm -rf search/l/.libs search/l/_libs -rm -rf search/sort/.libs search/sort/_libs + -rm -rf shadow/group/.libs shadow/group/_libs -rm -rf shadow/grp/.libs shadow/grp/_libs + -rm -rf shadow/gshadow/.libs shadow/gshadow/_libs + -rm -rf shadow/passwd/.libs shadow/passwd/_libs + -rm -rf shadow/shadow/.libs shadow/shadow/_libs -rm -rf string/.libs string/_libs -rm -rf string/ctype/strchrisascii/.libs string/ctype/strchrisascii/_libs -rm -rf string/ctype/strisascii/.libs string/ctype/strisascii/_libs @@ -2693,12 +2730,8 @@ distclean-generic: -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f alloc/$(DEPDIR)/$(am__dirstamp) -rm -f alloc/$(am__dirstamp) - -rm -f alloc/x/$(DEPDIR)/$(am__dirstamp) - -rm -f alloc/x/$(am__dirstamp) -rm -f atoi/$(DEPDIR)/$(am__dirstamp) -rm -f atoi/$(am__dirstamp) - -rm -f atoi/a2i/$(DEPDIR)/$(am__dirstamp) - -rm -f atoi/a2i/$(am__dirstamp) -rm -f atoi/strtoi/$(DEPDIR)/$(am__dirstamp) -rm -f atoi/strtoi/$(am__dirstamp) -rm -f fs/mkstemp/$(DEPDIR)/$(am__dirstamp) @@ -2711,8 +2744,16 @@ distclean-generic: -rm -f search/l/$(am__dirstamp) -rm -f search/sort/$(DEPDIR)/$(am__dirstamp) -rm -f search/sort/$(am__dirstamp) + -rm -f shadow/group/$(DEPDIR)/$(am__dirstamp) + -rm -f shadow/group/$(am__dirstamp) -rm -f shadow/grp/$(DEPDIR)/$(am__dirstamp) -rm -f shadow/grp/$(am__dirstamp) + -rm -f shadow/gshadow/$(DEPDIR)/$(am__dirstamp) + -rm -f shadow/gshadow/$(am__dirstamp) + -rm -f shadow/passwd/$(DEPDIR)/$(am__dirstamp) + -rm -f shadow/passwd/$(am__dirstamp) + -rm -f shadow/shadow/$(DEPDIR)/$(am__dirstamp) + -rm -f shadow/shadow/$(am__dirstamp) -rm -f string/$(DEPDIR)/$(am__dirstamp) -rm -f string/$(am__dirstamp) -rm -f string/ctype/strchrisascii/$(DEPDIR)/$(am__dirstamp) @@ -2757,6 +2798,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libshadow_la-basename.Plo -rm -f ./$(DEPDIR)/libshadow_la-bit.Plo -rm -f ./$(DEPDIR)/libshadow_la-btrfs.Plo + -rm -f ./$(DEPDIR)/libshadow_la-chkhash.Plo -rm -f ./$(DEPDIR)/libshadow_la-chkname.Plo -rm -f ./$(DEPDIR)/libshadow_la-chowndir.Plo -rm -f ./$(DEPDIR)/libshadow_la-chowntty.Plo @@ -2769,6 +2811,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libshadow_la-csrand.Plo -rm -f ./$(DEPDIR)/libshadow_la-encrypt.Plo -rm -f ./$(DEPDIR)/libshadow_la-env.Plo + -rm -f ./$(DEPDIR)/libshadow_la-exit_if_null.Plo -rm -f ./$(DEPDIR)/libshadow_la-failure.Plo -rm -f ./$(DEPDIR)/libshadow_la-fd.Plo -rm -f ./$(DEPDIR)/libshadow_la-fields.Plo @@ -2776,7 +2819,6 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libshadow_la-find_new_sub_gids.Plo -rm -f ./$(DEPDIR)/libshadow_la-find_new_sub_uids.Plo -rm -f ./$(DEPDIR)/libshadow_la-find_new_uid.Plo - -rm -f ./$(DEPDIR)/libshadow_la-fputsx.Plo -rm -f ./$(DEPDIR)/libshadow_la-freezero.Plo -rm -f ./$(DEPDIR)/libshadow_la-get_pid.Plo -rm -f ./$(DEPDIR)/libshadow_la-getdef.Plo @@ -2785,7 +2827,6 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libshadow_la-gettime.Plo -rm -f ./$(DEPDIR)/libshadow_la-groupio.Plo -rm -f ./$(DEPDIR)/libshadow_la-groupmem.Plo - -rm -f ./$(DEPDIR)/libshadow_la-gshadow.Plo -rm -f ./$(DEPDIR)/libshadow_la-hushed.Plo -rm -f ./$(DEPDIR)/libshadow_la-idmapping.Plo -rm -f ./$(DEPDIR)/libshadow_la-isexpired.Plo @@ -2820,9 +2861,6 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libshadow_la-semanage.Plo -rm -f ./$(DEPDIR)/libshadow_la-setugid.Plo -rm -f ./$(DEPDIR)/libshadow_la-setupenv.Plo - -rm -f ./$(DEPDIR)/libshadow_la-sgetgrent.Plo - -rm -f ./$(DEPDIR)/libshadow_la-sgetpwent.Plo - -rm -f ./$(DEPDIR)/libshadow_la-sgetspent.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgroupio.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowio.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowlog.Plo @@ -2853,18 +2891,8 @@ distclean: distclean-am -rm -f alloc/$(DEPDIR)/libshadow_la-malloc.Plo -rm -f alloc/$(DEPDIR)/libshadow_la-realloc.Plo -rm -f alloc/$(DEPDIR)/libshadow_la-reallocf.Plo - -rm -f alloc/x/$(DEPDIR)/libshadow_la-xcalloc.Plo - -rm -f alloc/x/$(DEPDIR)/libshadow_la-xmalloc.Plo - -rm -f alloc/x/$(DEPDIR)/libshadow_la-xrealloc.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-a2i.Plo -rm -f atoi/$(DEPDIR)/libshadow_la-getnum.Plo - -rm -f atoi/$(DEPDIR)/libshadow_la-str2i.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2i.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2s.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2s_c.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2s_nc.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2u.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2u_c.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2u_nc.Plo -rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtoi.Plo -rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtou.Plo -rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo @@ -2876,7 +2904,20 @@ distclean: distclean-am -rm -f search/l/$(DEPDIR)/libshadow_la-lfind.Plo -rm -f search/l/$(DEPDIR)/libshadow_la-lsearch.Plo -rm -f search/sort/$(DEPDIR)/libshadow_la-qsort.Plo + -rm -f shadow/group/$(DEPDIR)/libshadow_la-sgetgrent.Plo -rm -f shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-endsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-fgetsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-getsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-getsgnam.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-gshadow.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-putsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-setsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-sgetsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-sgrp.Plo + -rm -f shadow/passwd/$(DEPDIR)/libshadow_la-sgetpwent.Plo + -rm -f shadow/shadow/$(DEPDIR)/libshadow_la-sgetspent.Plo + -rm -f string/$(DEPDIR)/libshadow_la-strerrno.Plo -rm -f string/$(DEPDIR)/libshadow_la-strftime.Plo -rm -f string/ctype/strchrisascii/$(DEPDIR)/libshadow_la-strchriscntrl.Plo -rm -f string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo @@ -2886,21 +2927,21 @@ distclean: distclean-am -rm -f string/sprintf/$(DEPDIR)/libshadow_la-aprintf.Plo -rm -f string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo -rm -f string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo - -rm -f string/sprintf/$(DEPDIR)/libshadow_la-xaprintf.Plo -rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo -rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo -rm -f string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo -rm -f string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo -rm -f string/strcmp/$(DEPDIR)/libshadow_la-strcaseprefix.Plo -rm -f string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo + -rm -f string/strcmp/$(DEPDIR)/libshadow_la-strneq.Plo -rm -f string/strcmp/$(DEPDIR)/libshadow_la-strprefix.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncpy.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-strtcpy.Plo + -rm -f string/strdup/$(DEPDIR)/libshadow_la-strdup.Plo + -rm -f string/strdup/$(DEPDIR)/libshadow_la-strndup.Plo -rm -f string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo - -rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo - -rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo -rm -f string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo -rm -f string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo -rm -f string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo @@ -2910,7 +2951,6 @@ distclean: distclean-am -rm -f string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo -rm -f string/strtok/$(DEPDIR)/libshadow_la-strsep2arr.Plo -rm -f string/strtok/$(DEPDIR)/libshadow_la-strsep2ls.Plo - -rm -f string/strtok/$(DEPDIR)/libshadow_la-xastrsep2ls.Plo -rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ @@ -2965,6 +3005,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libshadow_la-basename.Plo -rm -f ./$(DEPDIR)/libshadow_la-bit.Plo -rm -f ./$(DEPDIR)/libshadow_la-btrfs.Plo + -rm -f ./$(DEPDIR)/libshadow_la-chkhash.Plo -rm -f ./$(DEPDIR)/libshadow_la-chkname.Plo -rm -f ./$(DEPDIR)/libshadow_la-chowndir.Plo -rm -f ./$(DEPDIR)/libshadow_la-chowntty.Plo @@ -2977,6 +3018,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libshadow_la-csrand.Plo -rm -f ./$(DEPDIR)/libshadow_la-encrypt.Plo -rm -f ./$(DEPDIR)/libshadow_la-env.Plo + -rm -f ./$(DEPDIR)/libshadow_la-exit_if_null.Plo -rm -f ./$(DEPDIR)/libshadow_la-failure.Plo -rm -f ./$(DEPDIR)/libshadow_la-fd.Plo -rm -f ./$(DEPDIR)/libshadow_la-fields.Plo @@ -2984,7 +3026,6 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libshadow_la-find_new_sub_gids.Plo -rm -f ./$(DEPDIR)/libshadow_la-find_new_sub_uids.Plo -rm -f ./$(DEPDIR)/libshadow_la-find_new_uid.Plo - -rm -f ./$(DEPDIR)/libshadow_la-fputsx.Plo -rm -f ./$(DEPDIR)/libshadow_la-freezero.Plo -rm -f ./$(DEPDIR)/libshadow_la-get_pid.Plo -rm -f ./$(DEPDIR)/libshadow_la-getdef.Plo @@ -2993,7 +3034,6 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libshadow_la-gettime.Plo -rm -f ./$(DEPDIR)/libshadow_la-groupio.Plo -rm -f ./$(DEPDIR)/libshadow_la-groupmem.Plo - -rm -f ./$(DEPDIR)/libshadow_la-gshadow.Plo -rm -f ./$(DEPDIR)/libshadow_la-hushed.Plo -rm -f ./$(DEPDIR)/libshadow_la-idmapping.Plo -rm -f ./$(DEPDIR)/libshadow_la-isexpired.Plo @@ -3028,9 +3068,6 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libshadow_la-semanage.Plo -rm -f ./$(DEPDIR)/libshadow_la-setugid.Plo -rm -f ./$(DEPDIR)/libshadow_la-setupenv.Plo - -rm -f ./$(DEPDIR)/libshadow_la-sgetgrent.Plo - -rm -f ./$(DEPDIR)/libshadow_la-sgetpwent.Plo - -rm -f ./$(DEPDIR)/libshadow_la-sgetspent.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgroupio.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowio.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowlog.Plo @@ -3061,18 +3098,8 @@ maintainer-clean: maintainer-clean-am -rm -f alloc/$(DEPDIR)/libshadow_la-malloc.Plo -rm -f alloc/$(DEPDIR)/libshadow_la-realloc.Plo -rm -f alloc/$(DEPDIR)/libshadow_la-reallocf.Plo - -rm -f alloc/x/$(DEPDIR)/libshadow_la-xcalloc.Plo - -rm -f alloc/x/$(DEPDIR)/libshadow_la-xmalloc.Plo - -rm -f alloc/x/$(DEPDIR)/libshadow_la-xrealloc.Plo + -rm -f atoi/$(DEPDIR)/libshadow_la-a2i.Plo -rm -f atoi/$(DEPDIR)/libshadow_la-getnum.Plo - -rm -f atoi/$(DEPDIR)/libshadow_la-str2i.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2i.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2s.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2s_c.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2s_nc.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2u.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2u_c.Plo - -rm -f atoi/a2i/$(DEPDIR)/libshadow_la-a2u_nc.Plo -rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtoi.Plo -rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtou.Plo -rm -f atoi/strtoi/$(DEPDIR)/libshadow_la-strtou_noneg.Plo @@ -3084,7 +3111,20 @@ maintainer-clean: maintainer-clean-am -rm -f search/l/$(DEPDIR)/libshadow_la-lfind.Plo -rm -f search/l/$(DEPDIR)/libshadow_la-lsearch.Plo -rm -f search/sort/$(DEPDIR)/libshadow_la-qsort.Plo + -rm -f shadow/group/$(DEPDIR)/libshadow_la-sgetgrent.Plo -rm -f shadow/grp/$(DEPDIR)/libshadow_la-agetgroups.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-endsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-fgetsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-getsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-getsgnam.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-gshadow.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-putsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-setsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-sgetsgent.Plo + -rm -f shadow/gshadow/$(DEPDIR)/libshadow_la-sgrp.Plo + -rm -f shadow/passwd/$(DEPDIR)/libshadow_la-sgetpwent.Plo + -rm -f shadow/shadow/$(DEPDIR)/libshadow_la-sgetspent.Plo + -rm -f string/$(DEPDIR)/libshadow_la-strerrno.Plo -rm -f string/$(DEPDIR)/libshadow_la-strftime.Plo -rm -f string/ctype/strchrisascii/$(DEPDIR)/libshadow_la-strchriscntrl.Plo -rm -f string/ctype/strisascii/$(DEPDIR)/libshadow_la-strisdigit.Plo @@ -3094,21 +3134,21 @@ maintainer-clean: maintainer-clean-am -rm -f string/sprintf/$(DEPDIR)/libshadow_la-aprintf.Plo -rm -f string/sprintf/$(DEPDIR)/libshadow_la-snprintf.Plo -rm -f string/sprintf/$(DEPDIR)/libshadow_la-stpeprintf.Plo - -rm -f string/sprintf/$(DEPDIR)/libshadow_la-xaprintf.Plo -rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrcnt.Plo -rm -f string/strchr/$(DEPDIR)/libshadow_la-strchrscnt.Plo -rm -f string/strchr/$(DEPDIR)/libshadow_la-strnul.Plo -rm -f string/strcmp/$(DEPDIR)/libshadow_la-strcaseeq.Plo -rm -f string/strcmp/$(DEPDIR)/libshadow_la-strcaseprefix.Plo -rm -f string/strcmp/$(DEPDIR)/libshadow_la-streq.Plo + -rm -f string/strcmp/$(DEPDIR)/libshadow_la-strneq.Plo -rm -f string/strcmp/$(DEPDIR)/libshadow_la-strprefix.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-stpecpy.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncat.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-strncpy.Plo -rm -f string/strcpy/$(DEPDIR)/libshadow_la-strtcpy.Plo + -rm -f string/strdup/$(DEPDIR)/libshadow_la-strdup.Plo + -rm -f string/strdup/$(DEPDIR)/libshadow_la-strndup.Plo -rm -f string/strdup/$(DEPDIR)/libshadow_la-strndupa.Plo - -rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrdup.Plo - -rm -f string/strdup/$(DEPDIR)/libshadow_la-xstrndup.Plo -rm -f string/strspn/$(DEPDIR)/libshadow_la-stprcspn.Plo -rm -f string/strspn/$(DEPDIR)/libshadow_la-stprspn.Plo -rm -f string/strspn/$(DEPDIR)/libshadow_la-stpspn.Plo @@ -3118,7 +3158,6 @@ maintainer-clean: maintainer-clean-am -rm -f string/strtok/$(DEPDIR)/libshadow_la-stpsep.Plo -rm -f string/strtok/$(DEPDIR)/libshadow_la-strsep2arr.Plo -rm -f string/strtok/$(DEPDIR)/libshadow_la-strsep2ls.Plo - -rm -f string/strtok/$(DEPDIR)/libshadow_la-xastrsep2ls.Plo -rm -f time/$(DEPDIR)/libshadow_la-day_to_str.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic diff --git a/lib/addgrps.c b/lib/addgrps.c index 83a5b20a..b90828e1 100644 --- a/lib/addgrps.c +++ b/lib/addgrps.c @@ -6,7 +6,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #if !defined(USE_PAM) @@ -24,6 +24,8 @@ #include "shadow/grp/agetgroups.h" #include "shadowlog.h" #include "string/strchr/strchrscnt.h" +#include "string/strcmp/streq.h" +#include "string/strerrno.h" /* @@ -34,7 +36,7 @@ int add_groups(const char *list) { - char *g, *p, *dup; + char *dup; FILE *shadow_logfd = log_get_logfd(); gid_t *gids; size_t n; @@ -43,29 +45,34 @@ add_groups(const char *list) if (gids == NULL) return -1; - gids = REALLOCF(gids, n + strchrscnt(list, ",:") + 1, gid_t); + gids = reallocf_T(gids, n + strchrscnt(list, ",:") + 1, gid_t); if (gids == NULL) return -1; - p = dup = strdup(list); + dup = strdup(list); if (dup == NULL) goto free_gids; - while (NULL != (g = strsep(&p, ",:"))) { - struct group *grp; + if (!streq(dup, "")) { + char *g, *p; - grp = getgrnam(g); /* local, no need for xgetgrnam */ - if (NULL == grp) { - fprintf(shadow_logfd, _("Warning: unknown group %s\n"), g); - continue; + p = dup; + while (NULL != (g = strsep(&p, ",:"))) { + struct group *grp; + + grp = getgrnam(g); /* local, no need for xgetgrnam */ + if (NULL == grp) { + fprintf(shadow_logfd, _("Warning: unknown group %s\n"), g); + continue; + } + + LSEARCH(gid_t, &grp->gr_gid, gids, &n); } - - LSEARCH(&grp->gr_gid, gids, &n); } free(dup); if (setgroups(n, gids) == -1) { - fprintf(shadow_logfd, "setgroups: %s\n", strerror(errno)); + fprintf(shadow_logfd, "setgroups: %s\n", strerrno()); goto free_gids; } diff --git a/lib/adds.c b/lib/adds.c index 693d0ee8..76c2287d 100644 --- a/lib/adds.c +++ b/lib/adds.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "adds.h" diff --git a/lib/adds.h b/lib/adds.h index b4cd8c25..a79a6f8f 100644 --- a/lib/adds.h +++ b/lib/adds.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_ADDS_H_ -#include +#include "config.h" #include #include @@ -55,7 +55,7 @@ addslN(size_t n, long addend[n]) e = errno; while (n > 1) { - QSORT(addend, n); + QSORT(long, addend, n); errno = 0; addend[0] = addsl2(addend[0], addend[--n]); diff --git a/lib/age.c b/lib/age.c index ff2aebe2..bdb789e3 100644 --- a/lib/age.c +++ b/lib/age.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include @@ -20,6 +20,7 @@ #include "defines.h" #include "exitcodes.h" #include "prototypes.h" +#include "shadow/gshadow/endsgent.h" #ident "$Id$" diff --git a/lib/agetpass.c b/lib/agetpass.c index ecf40da9..a0d57149 100644 --- a/lib/agetpass.c +++ b/lib/agetpass.c @@ -5,7 +5,7 @@ */ -#include +#include "config.h" #include "agetpass.h" @@ -106,7 +106,7 @@ agetpass_internal(const char *prompt, int flags) * Let's add one more byte, and if the password uses it, it * means the introduced password was longer than PASS_MAX. */ - pass = MALLOC(PASS_MAX + 2, char); + pass = malloc_T(PASS_MAX + 2, char); if (pass == NULL) return NULL; @@ -135,7 +135,7 @@ agetpass(const char *prompt) char * agetpass_stdin() { - return agetpass_internal(NULL, RPP_STDIN); + return agetpass_internal("", RPP_STDIN); } void diff --git a/lib/agetpass.h b/lib/agetpass.h index 4a4444e1..10aef8a3 100644 --- a/lib/agetpass.h +++ b/lib/agetpass.h @@ -8,7 +8,7 @@ #define SHADOW_INCLUDE_LIB_AGETPASS_H_ -#include +#include "config.h" #include "attr.h" #include "defines.h" diff --git a/lib/alloc/calloc.c b/lib/alloc/calloc.c index 55baafdc..55807f94 100644 --- a/lib/alloc/calloc.c +++ b/lib/alloc/calloc.c @@ -6,6 +6,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "alloc/calloc.h" diff --git a/lib/alloc/calloc.h b/lib/alloc/calloc.h index fb170e6f..db10a685 100644 --- a/lib/alloc/calloc.h +++ b/lib/alloc/calloc.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause @@ -6,15 +6,24 @@ #define SHADOW_INCLUDE_LIB_ALLOC_CALLOC_H_ -#include +#include "config.h" #include +#include "exit_if_null.h" +#include "sizeof.h" -#define CALLOC(n, type) \ -( \ - (type *) calloc(n, sizeof(type)) \ -) + +// calloc_T - calloc type-safe +#define calloc_T(n, T) calloc_T_(n, typeas(T)) +#define calloc_T_(n, T) \ +({ \ + (T *){calloc(n, sizeof(T))}; \ +}) + + +// xcalloc_T - exit-on-error calloc type-safe +#define xcalloc_T(n, T) exit_if_null(calloc_T(n, T)) #endif // include guard diff --git a/lib/alloc/malloc.c b/lib/alloc/malloc.c index 453f32de..97557a7f 100644 --- a/lib/alloc/malloc.c +++ b/lib/alloc/malloc.c @@ -6,7 +6,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "alloc/malloc.h" diff --git a/lib/alloc/malloc.h b/lib/alloc/malloc.h index 338d4c09..1e3a6929 100644 --- a/lib/alloc/malloc.h +++ b/lib/alloc/malloc.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause @@ -6,19 +6,28 @@ #define SHADOW_INCLUDE_LIB_ALLOC_MALLOC_H_ -#include +#include "config.h" #include #include "attr.h" +#include "exit_if_null.h" +#include "sizeof.h" -#define MALLOC(n, type) \ -( \ - (type *) mallocarray(n, sizeof(type)) \ -) +// malloc_T - malloc type-safe +#define malloc_T(n, T) malloc_T_(n, typeas(T)) +#define malloc_T_(n, T) \ +({ \ + (T *){mallocarray(n, sizeof(T))}; \ +}) +// xmalloc_T - exit-on-error malloc type-safe +#define xmalloc_T(n, T) exit_if_null(malloc_T(n, T)) + + +// mallocarray - malloc array ATTR_ALLOC_SIZE(1, 2) ATTR_MALLOC(free) inline void *mallocarray(size_t nmemb, size_t size); diff --git a/lib/alloc/realloc.c b/lib/alloc/realloc.c index ecdc3980..ad390e70 100644 --- a/lib/alloc/realloc.c +++ b/lib/alloc/realloc.c @@ -6,6 +6,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "alloc/realloc.h" diff --git a/lib/alloc/realloc.h b/lib/alloc/realloc.h index 63f14dc2..ac9f046e 100644 --- a/lib/alloc/realloc.h +++ b/lib/alloc/realloc.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause @@ -6,15 +6,27 @@ #define SHADOW_INCLUDE_LIB_ALLOC_REALLOC_H_ -#include +#include "config.h" #include +#include "exit_if_null.h" +#include "sizeof.h" -#define REALLOC(p, n, type) \ -( \ - _Generic(p, type *: (type *) reallocarray(p, (n) ?: 1, sizeof(type))) \ -) + +// realloc_T - realloc type-safe +#define realloc_T(p, n, T) realloc_T_(p, n, typeas(T)) +#define realloc_T_(p, n, T) \ +({ \ + _Generic(p, T *: (void)0); \ + (T *){reallocarray_(p, n, sizeof(T))}; \ +}) + +#define reallocarray_(p, n, size) reallocarray(p, (n) ?: 1, (size) ?: 1) + + +// xrealloc_T - exit-on-error realloc type-safe +#define xrealloc_T(p, n, T) exit_if_null(realloc_T(p, n, T)) #endif // include guard diff --git a/lib/alloc/reallocf.c b/lib/alloc/reallocf.c index 953cf7e1..66ae68cd 100644 --- a/lib/alloc/reallocf.c +++ b/lib/alloc/reallocf.c @@ -6,7 +6,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "alloc/reallocf.h" diff --git a/lib/alloc/reallocf.h b/lib/alloc/reallocf.h index 2d328b6a..c3522829 100644 --- a/lib/alloc/reallocf.h +++ b/lib/alloc/reallocf.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause @@ -6,20 +6,27 @@ #define SHADOW_INCLUDE_LIB_ALLOC_REALLOCF_H_ -#include +#include "config.h" #include #include #include "attr.h" +#include "sizeof.h" -#define REALLOCF(p, n, type) \ -( \ - _Generic(p, type *: (type *) reallocarrayf(p, (n) ?: 1, sizeof(type)))\ -) +// reallocf_T - realloc free-on-error type-safe +#define reallocf_T(p, n, T) reallocf_T_(p, n, typeas(T)) +#define reallocf_T_(p, n, T) \ +({ \ + _Generic(p, T *: (void)0); \ + (T *){reallocarrayf_(p, n, sizeof(T))}; \ +}) + +#define reallocarrayf_(p, n, size) reallocarrayf(p, (n) ?: 1, (size) ?: 1) +// reallocarrayf - realloc array free-on-error ATTR_ALLOC_SIZE(2, 3) ATTR_MALLOC(free) inline void *reallocarrayf(void *p, size_t nmemb, size_t size); diff --git a/lib/alloc/x/xcalloc.c b/lib/alloc/x/xcalloc.c deleted file mode 100644 index 672d5ee7..00000000 --- a/lib/alloc/x/xcalloc.c +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh -// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz -// SPDX-FileCopyrightText: 2003-2006, Tomasz Kłoczko -// SPDX-FileCopyrightText: 2008 , Nicolas François -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "alloc/x/xcalloc.h" - -#include -#include -#include - -#include "defines.h" -#include "shadowlog.h" - - -void * -xcalloc(size_t nmemb, size_t size) -{ - void *p; - - p = calloc(nmemb, size); - if (p == NULL) - goto x; - - return p; - -x: - fprintf(log_get_logfd(), _("%s: %s\n"), - log_get_progname(), strerror(errno)); - exit(13); -} diff --git a/lib/alloc/x/xcalloc.h b/lib/alloc/x/xcalloc.h deleted file mode 100644 index b4785ec2..00000000 --- a/lib/alloc/x/xcalloc.h +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ALLOC_X_XCALLOC_H_ -#define SHADOW_INCLUDE_LIB_ALLOC_X_XCALLOC_H_ - - -#include - -#include -#include - -#include "attr.h" - - -#define XCALLOC(n, type) \ -( \ - (type *) xcalloc(n, sizeof(type)) \ -) - - -ATTR_ALLOC_SIZE(1, 2) -ATTR_MALLOC(free) -void *xcalloc(size_t nmemb, size_t size); - - -#endif // include guard diff --git a/lib/alloc/x/xmalloc.c b/lib/alloc/x/xmalloc.c deleted file mode 100644 index 223da9a3..00000000 --- a/lib/alloc/x/xmalloc.c +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh -// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz -// SPDX-FileCopyrightText: 2003-2006, Tomasz Kłoczko -// SPDX-FileCopyrightText: 2008 , Nicolas François -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "alloc/x/xmalloc.h" - -#include - - -extern inline void *xmallocarray(size_t nmemb, size_t size); diff --git a/lib/alloc/x/xmalloc.h b/lib/alloc/x/xmalloc.h deleted file mode 100644 index 1520b7fd..00000000 --- a/lib/alloc/x/xmalloc.h +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ALLOC_X_XMALLOC_H_ -#define SHADOW_INCLUDE_LIB_ALLOC_X_XMALLOC_H_ - - -#include - -#include - -#include "alloc/x/xrealloc.h" -#include "attr.h" - - -#define XMALLOC(n, type) \ -( \ - (type *) xmallocarray(n, sizeof(type)) \ -) - - -ATTR_ALLOC_SIZE(1, 2) -ATTR_MALLOC(free) -inline void *xmallocarray(size_t nmemb, size_t size); - - -inline void * -xmallocarray(size_t nmemb, size_t size) -{ - return xreallocarray(NULL, nmemb, size); -} - - -#endif // include guard diff --git a/lib/alloc/x/xrealloc.c b/lib/alloc/x/xrealloc.c deleted file mode 100644 index 76887f96..00000000 --- a/lib/alloc/x/xrealloc.c +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh -// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz -// SPDX-FileCopyrightText: 2003-2006, Tomasz Kłoczko -// SPDX-FileCopyrightText: 2008 , Nicolas François -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "alloc/x/xrealloc.h" - -#include -#include -#include - -#include "alloc/reallocf.h" -#include "defines.h" -#include "shadowlog.h" - - -void * -xreallocarray(void *p, size_t nmemb, size_t size) -{ - p = reallocarrayf(p, nmemb, size); - if (p == NULL) - goto x; - - return p; - -x: - fprintf(log_get_logfd(), _("%s: %s\n"), - log_get_progname(), strerror(errno)); - exit(13); -} diff --git a/lib/alloc/x/xrealloc.h b/lib/alloc/x/xrealloc.h deleted file mode 100644 index ef674967..00000000 --- a/lib/alloc/x/xrealloc.h +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_MALLOC_H_ -#define SHADOW_INCLUDE_LIB_MALLOC_H_ - - -#include - -#include -#include -#include -#include -#include - -#include "attr.h" - - -#define XREALLOC(ptr, n, type) \ -( \ - _Generic(ptr, type *: (type *) xreallocarray(ptr, n, sizeof(type))) \ -) - - -ATTR_ALLOC_SIZE(2, 3) -ATTR_MALLOC(free) -void *xreallocarray(void *p, size_t nmemb, size_t size); - - -#endif // include guard diff --git a/lib/atoi/str2i.c b/lib/atoi/a2i.c similarity index 53% rename from lib/atoi/str2i.c rename to lib/atoi/a2i.c index cb055723..6bbbf7bc 100644 --- a/lib/atoi/str2i.c +++ b/lib/atoi/a2i.c @@ -1,8 +1,7 @@ -// SPDX-FileCopyrightText: 2007-2009, Nicolas François // SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" -#include "atoi/str2i.h" +#include "atoi/a2i.h" diff --git a/lib/atoi/a2i.h b/lib/atoi/a2i.h new file mode 100644 index 00000000..e7ece423 --- /dev/null +++ b/lib/atoi/a2i.h @@ -0,0 +1,69 @@ +// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_H_ +#define SHADOW_INCLUDE_LIB_ATOI_A2I_H_ + + +#include "config.h" + +#include +#include + +#include "atoi/strtoi/strtoi.h" +#include "atoi/strtoi/strtou_noneg.h" +#include "typetraits.h" + + +// a2i - alpha to integer +#define a2i(T, n, s, endp, base, min, max) \ +({ \ + T *n_ = n; \ + QChar_of(s) **endp_ = endp; \ + T min_ = min; \ + T max_ = max; \ + \ + int status; \ + \ + *n_ = _Generic((T){0}, \ + short: strtoi_, \ + int: strtoi_, \ + long: strtoi_, \ + long long: strtoi_, \ + unsigned short: strtou_noneg, \ + unsigned int: strtou_noneg, \ + unsigned long: strtou_noneg, \ + unsigned long long: strtou_noneg \ + )(s, (char **) endp_, base, min_, max_, &status); \ + \ + if (status != 0) \ + errno = status; \ + -!!status; \ +}) + + +#define a2sh(...) a2i(short, __VA_ARGS__) +#define a2si(...) a2i(int, __VA_ARGS__) +#define a2sl(...) a2i(long, __VA_ARGS__) +#define a2sll(...) a2i(long long, __VA_ARGS__) + +#define a2uh(...) a2i(unsigned short, __VA_ARGS__) +#define a2ui(...) a2i(unsigned int, __VA_ARGS__) +#define a2ul(...) a2i(unsigned long, __VA_ARGS__) +#define a2ull(...) a2i(unsigned long long, __VA_ARGS__) + +#define str2i(T, ...) a2i(T, __VA_ARGS__, NULL, 0, type_min(T), type_max(T)) + +#define str2sh(...) str2i(short, __VA_ARGS__) +#define str2si(...) str2i(int, __VA_ARGS__) +#define str2sl(...) str2i(long, __VA_ARGS__) +#define str2sll(...) str2i(long long, __VA_ARGS__) + +#define str2uh(...) str2i(unsigned short, __VA_ARGS__) +#define str2ui(...) str2i(unsigned int, __VA_ARGS__) +#define str2ul(...) str2i(unsigned long, __VA_ARGS__) +#define str2ull(...) str2i(unsigned long long, __VA_ARGS__) + + +#endif // include guard diff --git a/lib/atoi/a2i/a2i.h b/lib/atoi/a2i/a2i.h deleted file mode 100644 index b1a47242..00000000 --- a/lib/atoi/a2i/a2i.h +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_A2I_H_ -#define SHADOW_INCLUDE_LIB_ATOI_A2I_A2I_H_ - - -#include - -#include "atoi/a2i/a2s_c.h" -#include "atoi/a2i/a2s_nc.h" -#include "atoi/a2i/a2u_c.h" -#include "atoi/a2i/a2u_nc.h" - - -/* - * See the manual of these macros in liba2i's documentation: - * - */ - - -#define a2i(TYPE, n, s, ...) \ -( \ - _Generic((void (*)(TYPE, typeof(s))) 0, \ - void (*)(short, const char *): a2sh_c, \ - void (*)(short, const void *): a2sh_c, \ - void (*)(short, char *): a2sh_nc, \ - void (*)(short, void *): a2sh_nc, \ - void (*)(int, const char *): a2si_c, \ - void (*)(int, const void *): a2si_c, \ - void (*)(int, char *): a2si_nc, \ - void (*)(int, void *): a2si_nc, \ - void (*)(long, const char *): a2sl_c, \ - void (*)(long, const void *): a2sl_c, \ - void (*)(long, char *): a2sl_nc, \ - void (*)(long, void *): a2sl_nc, \ - void (*)(long long, const char *): a2sll_c, \ - void (*)(long long, const void *): a2sll_c, \ - void (*)(long long, char *): a2sll_nc, \ - void (*)(long long, void *): a2sll_nc, \ - void (*)(unsigned short, const char *): a2uh_c, \ - void (*)(unsigned short, const void *): a2uh_c, \ - void (*)(unsigned short, char *): a2uh_nc, \ - void (*)(unsigned short, void *): a2uh_nc, \ - void (*)(unsigned int, const char *): a2ui_c, \ - void (*)(unsigned int, const void *): a2ui_c, \ - void (*)(unsigned int, char *): a2ui_nc, \ - void (*)(unsigned int, void *): a2ui_nc, \ - void (*)(unsigned long, const char *): a2ul_c, \ - void (*)(unsigned long, const void *): a2ul_c, \ - void (*)(unsigned long, char *): a2ul_nc, \ - void (*)(unsigned long, void *): a2ul_nc, \ - void (*)(unsigned long long, const char *): a2ull_c, \ - void (*)(unsigned long long, const void *): a2ull_c, \ - void (*)(unsigned long long, char *): a2ull_nc, \ - void (*)(unsigned long long, void *): a2ull_nc \ - )(n, s, __VA_ARGS__) \ -) - - -#endif // include guard diff --git a/lib/atoi/a2i/a2s.c b/lib/atoi/a2i/a2s.c deleted file mode 100644 index a60c97bc..00000000 --- a/lib/atoi/a2i/a2s.c +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "atoi/a2i/a2s.h" diff --git a/lib/atoi/a2i/a2s.h b/lib/atoi/a2i/a2s.h deleted file mode 100644 index f47e4d1f..00000000 --- a/lib/atoi/a2i/a2s.h +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_A2S_H_ -#define SHADOW_INCLUDE_LIB_ATOI_A2I_A2S_H_ - - -#include - -#include "atoi/a2i/a2i.h" - - -#define a2sh(...) a2i(short, __VA_ARGS__) -#define a2si(...) a2i(int, __VA_ARGS__) -#define a2sl(...) a2i(long, __VA_ARGS__) -#define a2sll(...) a2i(long long, __VA_ARGS__) - - -#endif // include guard diff --git a/lib/atoi/a2i/a2s_c.c b/lib/atoi/a2i/a2s_c.c deleted file mode 100644 index 257b8d4e..00000000 --- a/lib/atoi/a2i/a2s_c.c +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "atoi/a2i/a2s_c.h" - - -extern inline int a2sh_c(short *restrict n, const char *s, - const char **restrict endp, int base, short min, short max); -extern inline int a2si_c(int *restrict n, const char *s, - const char **restrict endp, int base, int min, int max); -extern inline int a2sl_c(long *restrict n, const char *s, - const char **restrict endp, int base, long min, long max); -extern inline int a2sll_c(long long *restrict n, const char *s, - const char **restrict endp, int base, long long min, long long max); diff --git a/lib/atoi/a2i/a2s_c.h b/lib/atoi/a2i/a2s_c.h deleted file mode 100644 index 5d0024d1..00000000 --- a/lib/atoi/a2i/a2s_c.h +++ /dev/null @@ -1,64 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_A2S_C_H_ -#define SHADOW_INCLUDE_LIB_ATOI_A2I_A2S_C_H_ - - -#include - -#include -#include - -#include "atoi/a2i/a2s_nc.h" -#include "attr.h" - - -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2sh_c(short *restrict n, const char *s, - const char **restrict endp, int base, short min, short max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2si_c(int *restrict n, const char *s, - const char **restrict endp, int base, int min, int max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2sl_c(long *restrict n, const char *s, - const char **restrict endp, int base, long min, long max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2sll_c(long long *restrict n, const char *s, - const char **restrict endp, int base, long long min, long long max); - - -inline int -a2sh_c(short *restrict n, const char *s, - const char **restrict endp, int base, short min, short max) -{ - return a2sh_nc(n, (char *) s, (char **) endp, base, min, max); -} - - -inline int -a2si_c(int *restrict n, const char *s, - const char **restrict endp, int base, int min, int max) -{ - return a2si_nc(n, (char *) s, (char **) endp, base, min, max); -} - - -inline int -a2sl_c(long *restrict n, const char *s, - const char **restrict endp, int base, long min, long max) -{ - return a2sl_nc(n, (char *) s, (char **) endp, base, min, max); -} - - -inline int -a2sll_c(long long *restrict n, const char *s, - const char **restrict endp, int base, long long min, long long max) -{ - return a2sll_nc(n, (char *) s, (char **) endp, base, min, max); -} - - -#endif // include guard diff --git a/lib/atoi/a2i/a2s_nc.c b/lib/atoi/a2i/a2s_nc.c deleted file mode 100644 index 7ef8be6c..00000000 --- a/lib/atoi/a2i/a2s_nc.c +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "atoi/a2i/a2s_nc.h" - - -extern inline int a2sh_nc(short *restrict n, char *s, - char **restrict endp, int base, short min, short max); -extern inline int a2si_nc(int *restrict n, char *s, - char **restrict endp, int base, int min, int max); -extern inline int a2sl_nc(long *restrict n, char *s, - char **restrict endp, int base, long min, long max); -extern inline int a2sll_nc(long long *restrict n, char *s, - char **restrict endp, int base, long long min, long long max); diff --git a/lib/atoi/a2i/a2s_nc.h b/lib/atoi/a2i/a2s_nc.h deleted file mode 100644 index 8ca16f27..00000000 --- a/lib/atoi/a2i/a2s_nc.h +++ /dev/null @@ -1,91 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_A2S_NC_H_ -#define SHADOW_INCLUDE_LIB_ATOI_A2I_A2S_NC_H_ - - -#include - -#include - -#include "atoi/strtoi/strtoi.h" -#include "attr.h" - - -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2sh_nc(short *restrict n, char *s, - char **restrict endp, int base, short min, short max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2si_nc(int *restrict n, char *s, - char **restrict endp, int base, int min, int max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2sl_nc(long *restrict n, char *s, - char **restrict endp, int base, long min, long max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2sll_nc(long long *restrict n, char *s, - char **restrict endp, int base, long long min, long long max); - - -inline int -a2sh_nc(short *restrict n, char *s, - char **restrict endp, int base, short min, short max) -{ - int status; - - *n = strtoi_(s, endp, base, min, max, &status); - if (status != 0) { - errno = status; - return -1; - } - return 0; -} - - -inline int -a2si_nc(int *restrict n, char *s, - char **restrict endp, int base, int min, int max) -{ - int status; - - *n = strtoi_(s, endp, base, min, max, &status); - if (status != 0) { - errno = status; - return -1; - } - return 0; -} - - -inline int -a2sl_nc(long *restrict n, char *s, - char **restrict endp, int base, long min, long max) -{ - int status; - - *n = strtoi_(s, endp, base, min, max, &status); - if (status != 0) { - errno = status; - return -1; - } - return 0; -} - - -inline int -a2sll_nc(long long *restrict n, char *s, - char **restrict endp, int base, long long min, long long max) -{ - int status; - - *n = strtoi_(s, endp, base, min, max, &status); - if (status != 0) { - errno = status; - return -1; - } - return 0; -} - - -#endif // include guard diff --git a/lib/atoi/a2i/a2u.c b/lib/atoi/a2i/a2u.c deleted file mode 100644 index 8523e8bf..00000000 --- a/lib/atoi/a2i/a2u.c +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "atoi/a2i/a2u.h" diff --git a/lib/atoi/a2i/a2u.h b/lib/atoi/a2i/a2u.h deleted file mode 100644 index e33129be..00000000 --- a/lib/atoi/a2i/a2u.h +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_A2U_H_ -#define SHADOW_INCLUDE_LIB_ATOI_A2I_A2U_H_ - - -#include - -#include "atoi/a2i/a2i.h" - - -#define a2uh(...) a2i(unsigned short, __VA_ARGS__) -#define a2ui(...) a2i(unsigned int, __VA_ARGS__) -#define a2ul(...) a2i(unsigned long, __VA_ARGS__) -#define a2ull(...) a2i(unsigned long long, __VA_ARGS__) - - -#endif // include guard diff --git a/lib/atoi/a2i/a2u_c.c b/lib/atoi/a2i/a2u_c.c deleted file mode 100644 index e1d04b85..00000000 --- a/lib/atoi/a2i/a2u_c.c +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "atoi/a2i/a2u_c.h" - - -extern inline int a2uh_c(unsigned short *restrict n, const char *s, - const char **restrict endp, int base, unsigned short min, - unsigned short max); -extern inline int a2ui_c(unsigned int *restrict n, const char *s, - const char **restrict endp, int base, unsigned int min, unsigned int max); -extern inline int a2ul_c(unsigned long *restrict n, const char *s, - const char **restrict endp, int base, unsigned long min, unsigned long max); -extern inline int a2ull_c(unsigned long long *restrict n, const char *s, - const char **restrict endp, int base, unsigned long long min, - unsigned long long max); diff --git a/lib/atoi/a2i/a2u_c.h b/lib/atoi/a2i/a2u_c.h deleted file mode 100644 index 420e7852..00000000 --- a/lib/atoi/a2i/a2u_c.h +++ /dev/null @@ -1,65 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_A2U_C_H_ -#define SHADOW_INCLUDE_LIB_ATOI_A2I_A2U_C_H_ - - -#include - -#include "atoi/a2i/a2u_nc.h" -#include "attr.h" - - -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2uh_c(unsigned short *restrict n, const char *s, - const char **restrict endp, int base, unsigned short min, - unsigned short max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2ui_c(unsigned int *restrict n, const char *s, - const char **restrict endp, int base, unsigned int min, unsigned int max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2ul_c(unsigned long *restrict n, const char *s, - const char **restrict endp, int base, unsigned long min, unsigned long max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2ull_c(unsigned long long *restrict n, const char *s, - const char **restrict endp, int base, unsigned long long min, - unsigned long long max); - - -inline int -a2uh_c(unsigned short *restrict n, const char *s, - const char **restrict endp, int base, unsigned short min, - unsigned short max) -{ - return a2uh_nc(n, (char *) s, (char **) endp, base, min, max); -} - - -inline int -a2ui_c(unsigned int *restrict n, const char *s, - const char **restrict endp, int base, unsigned int min, unsigned int max) -{ - return a2ui_nc(n, (char *) s, (char **) endp, base, min, max); -} - - -inline int -a2ul_c(unsigned long *restrict n, const char *s, - const char **restrict endp, int base, unsigned long min, unsigned long max) -{ - return a2ul_nc(n, (char *) s, (char **) endp, base, min, max); -} - - -inline int -a2ull_c(unsigned long long *restrict n, const char *s, - const char **restrict endp, int base, unsigned long long min, - unsigned long long max) -{ - return a2ull_nc(n, (char *) s, (char **) endp, base, min, max); -} - - -#endif // include guard diff --git a/lib/atoi/a2i/a2u_nc.c b/lib/atoi/a2i/a2u_nc.c deleted file mode 100644 index 4ca282bd..00000000 --- a/lib/atoi/a2i/a2u_nc.c +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "atoi/a2i/a2u_nc.h" - - -extern inline int a2uh_nc(unsigned short *restrict n, char *s, - char **restrict endp, int base, unsigned short min, unsigned short max); -extern inline int a2ui_nc(unsigned int *restrict n, char *s, - char **restrict endp, int base, unsigned int min, unsigned int max); -extern inline int a2ul_nc(unsigned long *restrict n, char *s, - char **restrict endp, int base, unsigned long min, unsigned long max); -extern inline int a2ull_nc(unsigned long long *restrict n, char *s, - char **restrict endp, int base, unsigned long long min, - unsigned long long max); diff --git a/lib/atoi/a2i/a2u_nc.h b/lib/atoi/a2i/a2u_nc.h deleted file mode 100644 index c8d993e7..00000000 --- a/lib/atoi/a2i/a2u_nc.h +++ /dev/null @@ -1,94 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ATOI_A2I_A2U_NC_H_ -#define SHADOW_INCLUDE_LIB_ATOI_A2I_A2U_NC_H_ - - -#include - -#include - -#include "atoi/strtoi/strtou_noneg.h" -#include "attr.h" - - -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2uh_nc(unsigned short *restrict n, char *s, - char **restrict endp, int base, unsigned short min, unsigned short max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2ui_nc(unsigned int *restrict n, char *s, - char **restrict endp, int base, unsigned int min, unsigned int max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2ul_nc(unsigned long *restrict n, char *s, - char **restrict endp, int base, unsigned long min, unsigned long max); -ATTR_STRING(2) ATTR_ACCESS(write_only, 1) ATTR_ACCESS(write_only, 3) -inline int a2ull_nc(unsigned long long *restrict n, char *s, - char **restrict endp, int base, unsigned long long min, - unsigned long long max); - - -inline int -a2uh_nc(unsigned short *restrict n, char *s, - char **restrict endp, int base, unsigned short min, - unsigned short max) -{ - int status; - - *n = strtou_noneg(s, endp, base, min, max, &status); - if (status != 0) { - errno = status; - return -1; - } - return 0; -} - - -inline int -a2ui_nc(unsigned int *restrict n, char *s, - char **restrict endp, int base, unsigned int min, unsigned int max) -{ - int status; - - *n = strtou_noneg(s, endp, base, min, max, &status); - if (status != 0) { - errno = status; - return -1; - } - return 0; -} - - -inline int -a2ul_nc(unsigned long *restrict n, char *s, - char **restrict endp, int base, unsigned long min, unsigned long max) -{ - int status; - - *n = strtou_noneg(s, endp, base, min, max, &status); - if (status != 0) { - errno = status; - return -1; - } - return 0; -} - - -inline int -a2ull_nc(unsigned long long *restrict n, char *s, - char **restrict endp, int base, unsigned long long min, - unsigned long long max) -{ - int status; - - *n = strtou_noneg(s, endp, base, min, max, &status); - if (status != 0) { - errno = status; - return -1; - } - return 0; -} - - -#endif // include guard diff --git a/lib/atoi/getnum.c b/lib/atoi/getnum.c index 3c67eb20..f1a4fb4c 100644 --- a/lib/atoi/getnum.c +++ b/lib/atoi/getnum.c @@ -3,7 +3,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include diff --git a/lib/atoi/getnum.h b/lib/atoi/getnum.h index 33d4876a..e5cb50f4 100644 --- a/lib/atoi/getnum.h +++ b/lib/atoi/getnum.h @@ -7,14 +7,13 @@ #define SHADOW_INCLUDE_LIB_ATOI_GETNUM_H_ -#include +#include "config.h" #include #include #include -#include "atoi/a2i/a2i.h" -#include "atoi/a2i/a2s.h" +#include "atoi/a2i.h" #include "attr.h" #include "typetraits.h" diff --git a/lib/atoi/str2i.h b/lib/atoi/str2i.h deleted file mode 100644 index ca15ac5e..00000000 --- a/lib/atoi/str2i.h +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-FileCopyrightText: 2007-2009, Nicolas François -// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_ATOI_STR2I_H_ -#define SHADOW_INCLUDE_LIB_ATOI_STR2I_H_ - - -#include - -#include - -#include "atoi/a2i/a2i.h" -#include "typetraits.h" - - -#define str2i(T, ...) a2i(T, __VA_ARGS__, NULL, 0, type_min(T), type_max(T)) - -#define str2sh(...) str2i(short, __VA_ARGS__) -#define str2si(...) str2i(int, __VA_ARGS__) -#define str2sl(...) str2i(long, __VA_ARGS__) -#define str2sll(...) str2i(long long, __VA_ARGS__) - -#define str2uh(...) str2i(unsigned short, __VA_ARGS__) -#define str2ui(...) str2i(unsigned int, __VA_ARGS__) -#define str2ul(...) str2i(unsigned long, __VA_ARGS__) -#define str2ull(...) str2i(unsigned long long, __VA_ARGS__) - - -#endif // include guard diff --git a/lib/atoi/strtoi/strtoi.c b/lib/atoi/strtoi/strtoi.c index c478c2a1..a922eb40 100644 --- a/lib/atoi/strtoi/strtoi.c +++ b/lib/atoi/strtoi/strtoi.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "atoi/strtoi/strtoi.h" diff --git a/lib/atoi/strtoi/strtoi.h b/lib/atoi/strtoi/strtoi.h index 8fa6b62f..5a2bc187 100644 --- a/lib/atoi/strtoi/strtoi.h +++ b/lib/atoi/strtoi/strtoi.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_ATOI_STRTOI_STRTOI_H_ -#include +#include "config.h" #include #include diff --git a/lib/atoi/strtoi/strtou.c b/lib/atoi/strtoi/strtou.c index c70ca4e8..c8ac7bc4 100644 --- a/lib/atoi/strtoi/strtou.c +++ b/lib/atoi/strtoi/strtou.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "atoi/strtoi/strtou.h" diff --git a/lib/atoi/strtoi/strtou.h b/lib/atoi/strtoi/strtou.h index 7ca6b346..00bcc7d3 100644 --- a/lib/atoi/strtoi/strtou.h +++ b/lib/atoi/strtoi/strtou.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_ATOI_STRTOI_STRTOU_H_ -#include +#include "config.h" #include #include diff --git a/lib/atoi/strtoi/strtou_noneg.c b/lib/atoi/strtoi/strtou_noneg.c index 51d60c93..923b8fcc 100644 --- a/lib/atoi/strtoi/strtou_noneg.c +++ b/lib/atoi/strtoi/strtou_noneg.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "atoi/strtoi/strtou_noneg.h" diff --git a/lib/atoi/strtoi/strtou_noneg.h b/lib/atoi/strtoi/strtou_noneg.h index 52fa9034..63e9e6d5 100644 --- a/lib/atoi/strtoi/strtou_noneg.h +++ b/lib/atoi/strtoi/strtou_noneg.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_ATOI_STRTOI_STRTOU_NONEG_H_ -#include +#include "config.h" #include #include diff --git a/lib/attr.h b/lib/attr.h index d7237722..dbb97082 100644 --- a/lib/attr.h +++ b/lib/attr.h @@ -5,17 +5,38 @@ #include "config.h" -#if (__GNUC__ >= 10) -# define MAYBE_UNUSED [[gnu::unused]] -# define NORETURN [[gnu::__noreturn__]] -# define format_attr(type, fmt, va) [[gnu::format(type, fmt, va)]] -# define ATTR_ACCESS(...) [[gnu::access(__VA_ARGS__)]] -# define ATTR_ALLOC_SIZE(...) [[gnu::alloc_size(__VA_ARGS__)]] +#if !defined(__has_c_attribute) +# define __has_c_attribute(x) 0 +#endif + + +#if __has_c_attribute(maybe_unused) +# define MAYBE_UNUSED [[maybe_unused]] #else # define MAYBE_UNUSED +#endif + +#if __has_c_attribute(noreturn) +# define NORETURN [[noreturn]] +#else # define NORETURN +#endif + +#if __has_c_attribute(gnu::format) +# define format_attr(type, fmt, va) [[gnu::format(type, fmt, va)]] +#else # define format_attr(type, fmt, va) +#endif + +#if __has_c_attribute(gnu::access) +# define ATTR_ACCESS(...) [[gnu::access(__VA_ARGS__)]] +#else # define ATTR_ACCESS(...) +#endif + +#if __has_c_attribute(gnu::alloc_size) +# define ATTR_ALLOC_SIZE(...) [[gnu::alloc_size(__VA_ARGS__)]] +#else # define ATTR_ALLOC_SIZE(...) #endif @@ -25,11 +46,17 @@ # define ATTR_MALLOC(deallocator) #endif -#if (__GNUC__ >= 14) +#if __has_c_attribute(gnu::null_terminated_string_arg) # define ATTR_STRING(i) [[gnu::null_terminated_string_arg(i)]] #else # define ATTR_STRING(i) #endif +#if __has_c_attribute(gnu::nonstring) +# define ATTR_NONSTRING [[gnu::nonstring]] +#else +# define ATTR_NONSTRING +#endif + #endif // include guard diff --git a/lib/audit_help.c b/lib/audit_help.c index 710069b8..b0ac5631 100644 --- a/lib/audit_help.c +++ b/lib/audit_help.c @@ -11,7 +11,7 @@ * */ -#include +#include "config.h" #ifdef WITH_AUDIT @@ -56,13 +56,12 @@ void audit_help_open (void) * * type - type of message. A list of possible values is available in * "audit-records.h" file. - * pgname - program's name * op - operation. "adding user", "changing finger info", "deleting group" * name - user's account or group name. If not available use NULL. * id - uid or gid that the operation is being performed on. This is used * only when user is NULL. */ -void audit_logger (int type, MAYBE_UNUSED const char *pgname, const char *op, +void audit_logger (int type, const char *op, const char *name, unsigned int id, shadow_audit_result result) { @@ -105,10 +104,10 @@ audit_logger_with_group(int type, const char *op, const char *name, len = strnlen(grp, sizeof(enc_group)/2); if (audit_value_needs_encoding(grp, len)) { - SNPRINTF(buf, "%s %s=%s", op, grp_type, + stprintf_a(buf, "%s %s=%s", op, grp_type, audit_encode_value(enc_group, grp, len)); } else { - SNPRINTF(buf, "%s %s=\"%s\"", op, grp_type, grp); + stprintf_a(buf, "%s %s=\"%s\"", op, grp_type, grp); } audit_log_acct_message(audit_fd, type, NULL, buf, name, id, diff --git a/lib/basename.c b/lib/basename.c index 7a0e4ad2..d38e1dbb 100644 --- a/lib/basename.c +++ b/lib/basename.c @@ -11,7 +11,7 @@ * --marekm */ -#include +#include "config.h" #include #include diff --git a/lib/bit.c b/lib/bit.c index 1ffc6dc9..a45de50c 100644 --- a/lib/bit.c +++ b/lib/bit.c @@ -5,7 +5,7 @@ */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/bit.h b/lib/bit.h index 7f09eb4d..66cb6c6e 100644 --- a/lib/bit.h +++ b/lib/bit.h @@ -9,7 +9,7 @@ #define SHADOW_INCLUDE_LIB_BIT_H_ -#include +#include "config.h" #include diff --git a/lib/cast.h b/lib/cast.h index 5cbbcf6d..e8e42e1a 100644 --- a/lib/cast.h +++ b/lib/cast.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_CAST_H_ -#include +#include "config.h" #define const_cast(T, p) _Generic(p, const T: (T) (p)) diff --git a/lib/chkhash.c b/lib/chkhash.c new file mode 100644 index 00000000..66870500 --- /dev/null +++ b/lib/chkhash.c @@ -0,0 +1,70 @@ +#include "config.h" + +#include "chkhash.h" + +#include +#include +#include +#include + + +/* + * match_regex - return true if match, false if not + */ +bool +match_regex(const char *pattern, const char *string) +{ + regex_t regex; + int result; + + if (regcomp(®ex, pattern, REG_EXTENDED) != 0) + return false; + + result = regexec(®ex, string, 0, NULL, 0); + regfree(®ex); + + return result == 0; +} + + +/* + * is_valid_hash - check if the given string is a valid password hash + * + * Returns true if the string appears to be a valid hash, false otherwise. + * + * regex from: https://man.archlinux.org/man/crypt.5.en + */ +bool +is_valid_hash(const char *hash) +{ + // Minimum hash length + if (strlen(hash) < 13) + return false; + + // Yescrypt: $y$ + algorithm parameters + $ + salt + $ + 43-char (minimum) hash + if (match_regex("^\\$y\\$[./A-Za-z0-9]+\\$[./A-Za-z0-9]{1,86}\\$[./A-Za-z0-9]{43}$", hash)) + return true; + + // Bcrypt: $2[abxy]$ + 2-digit cost + $ + 53-char hash + if (match_regex("^\\$2[abxy]\\$[0-9]{2}\\$[./A-Za-z0-9]{53}$", hash)) + return true; + + // SHA-512: $6$ + salt + $ + 86-char hash + if (match_regex("^\\$6\\$(rounds=[1-9][0-9]{3,8}\\$)?[^$:\\n]{1,16}\\$[./A-Za-z0-9]{86}$", hash)) + return true; + + // SHA-256: $5$ + salt + $ + 43-char hash + if (match_regex("^\\$5\\$(rounds=[1-9][0-9]{3,8}\\$)?[^$:\\n]{1,16}\\$[./A-Za-z0-9]{43}$", hash)) + return true; + + // MD5: $1$ + salt + $ + 22-char hash + if (match_regex("^\\$1\\$[^$:\\n]{1,8}\\$[./A-Za-z0-9]{22}$", hash)) + return true; + + // DES: exactly 13 characters from [A-Za-z0-9./] + if (match_regex("^[./A-Za-z0-9]{13}$", hash)) + return true; + + // Not a valid hash + return false; +} diff --git a/lib/chkhash.h b/lib/chkhash.h new file mode 100644 index 00000000..d986199a --- /dev/null +++ b/lib/chkhash.h @@ -0,0 +1,13 @@ +#ifndef SHADOW_INCLUDE_CHKHASH_H +#define SHADOW_INCLUDE_CHKHASH_H + + +#include "config.h" + +#include + + +bool is_valid_hash(const char *hash); + + +#endif diff --git a/lib/chkname.c b/lib/chkname.c index 57d6d96e..0abee4d2 100644 --- a/lib/chkname.c +++ b/lib/chkname.c @@ -13,12 +13,13 @@ * true - OK * false - bad name * errors: - * EINVAL Invalid name characters or sequences + * EINVAL Invalid name + * EILSEQ Invalid name character sequence (acceptable with --badname) * EOVERFLOW Name longer than maximum size */ -#include +#include "config.h" #ident "$Id$" @@ -27,12 +28,15 @@ #include #include #include +#include #include #include "defines.h" #include "chkname.h" +#include "string/ctype/strchrisascii/strchriscntrl.h" #include "string/ctype/strisascii/strisdigit.h" #include "string/strcmp/streq.h" +#include "string/strcmp/strcaseeq.h" #ifndef LOGIN_NAME_MAX @@ -59,35 +63,37 @@ login_name_max_size(void) static bool is_valid_name(const char *name) { + if (streq(name, "") + || streq(name, ".") + || streq(name, "..") + || strspn(name, "-") + || strpbrk(name, " \"#',/:;") + || strchriscntrl(name) + || strisdigit(name)) + { + errno = EINVAL; + return false; + } + if (allow_bad_names) { return true; } /* - * User/group names must match BRE regex: - * [a-zA-Z0-9_.][a-zA-Z0-9_.-]*$\? - * - * as a non-POSIX, extension, allow "$" as the last char for - * sake of Samba 3.x "add machine script" - * - * Also do not allow fully numeric names or just "." or "..". - */ + * User/group names must match BRE regex: + * [a-zA-Z0-9_.][a-zA-Z0-9_.-]*$\? + * + * as a non-POSIX, extension, allow "$" as the last char for + * sake of Samba 3.x "add machine script" + */ - if (strisdigit(name)) { - errno = EINVAL; - return false; - } - - if (streq(name, "") || - streq(name, ".") || - streq(name, "..") || - !((*name >= 'a' && *name <= 'z') || + if (!((*name >= 'a' && *name <= 'z') || (*name >= 'A' && *name <= 'Z') || (*name >= '0' && *name <= '9') || *name == '_' || *name == '.')) { - errno = EINVAL; + errno = EILSEQ; return false; } @@ -101,7 +107,7 @@ is_valid_name(const char *name) streq(name, "$") )) { - errno = EINVAL; + errno = EILSEQ; return false; } } diff --git a/lib/chkname.h b/lib/chkname.h index 4306a8a2..40d004cc 100644 --- a/lib/chkname.h +++ b/lib/chkname.h @@ -21,7 +21,7 @@ */ -#include +#include "config.h" #include #include diff --git a/lib/chowndir.c b/lib/chowndir.c index 91fc657e..f304e903 100644 --- a/lib/chowndir.c +++ b/lib/chowndir.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/chowntty.c b/lib/chowntty.c index 70127f31..1f99d2de 100644 --- a/lib/chowntty.c +++ b/lib/chowntty.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/cleanup.c b/lib/cleanup.c index 4a722212..0b332cdb 100644 --- a/lib/cleanup.c +++ b/lib/cleanup.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include diff --git a/lib/cleanup_group.c b/lib/cleanup_group.c index 54480092..248fe0c2 100644 --- a/lib/cleanup_group.c +++ b/lib/cleanup_group.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include @@ -27,7 +27,7 @@ void cleanup_report_add_group (void *group_name) SYSLOG ((LOG_ERR, "failed to add group %s", name)); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, log_get_progname(), + audit_logger (AUDIT_ADD_GROUP, "", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -45,7 +45,7 @@ void cleanup_report_del_group (void *group_name) SYSLOG ((LOG_ERR, "failed to remove group %s", name)); #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_GROUP, log_get_progname(), + audit_logger (AUDIT_DEL_GROUP, "", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -62,7 +62,7 @@ void cleanup_report_mod_group (void *cleanup_info) gr_dbname (), info->action)); #ifdef WITH_AUDIT - audit_logger (AUDIT_GRP_MGMT, log_get_progname(), + audit_logger (AUDIT_GRP_MGMT, info->audit_msg, info->name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -80,7 +80,7 @@ void cleanup_report_mod_gshadow (void *cleanup_info) sgr_dbname (), info->action)); #ifdef WITH_AUDIT - audit_logger (AUDIT_GRP_MGMT, log_get_progname(), + audit_logger (AUDIT_GRP_MGMT, info->audit_msg, info->name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -100,7 +100,7 @@ void cleanup_report_add_group_group (void *group_name) SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, gr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, log_get_progname(), + audit_logger (AUDIT_ADD_GROUP, "adding-group", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -120,7 +120,7 @@ void cleanup_report_add_group_gshadow (void *group_name) SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, sgr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_GRP_MGMT, log_get_progname(), + audit_logger (AUDIT_GRP_MGMT, "adding-shadow-group", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -143,7 +143,7 @@ void cleanup_report_del_group_group (void *group_name) "failed to remove group %s from %s", name, gr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_GROUP, log_get_progname(), + audit_logger (AUDIT_DEL_GROUP, "removing-group", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -166,7 +166,7 @@ void cleanup_report_del_group_gshadow (void *group_name) "failed to remove group %s from %s", name, sgr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_GRP_MGMT, log_get_progname(), + audit_logger (AUDIT_GRP_MGMT, "removing-shadow-group", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -179,9 +179,11 @@ void cleanup_report_del_group_gshadow (void *group_name) * * It should be registered after the group file is successfully locked. */ -void cleanup_unlock_group (MAYBE_UNUSED void *arg) +void cleanup_unlock_group (void *process_selinux) { - if (gr_unlock () == 0) { + bool process = *((bool *) process_selinux); + + if (gr_unlock (process) == 0) { fprintf (log_get_logfd(), _("%s: failed to unlock %s\n"), log_get_progname(), gr_dbname ()); @@ -199,9 +201,11 @@ void cleanup_unlock_group (MAYBE_UNUSED void *arg) * * It should be registered after the gshadow file is successfully locked. */ -void cleanup_unlock_gshadow (MAYBE_UNUSED void *arg) +void cleanup_unlock_gshadow (void *process_selinux) { - if (sgr_unlock () == 0) { + bool process = *((bool *) process_selinux); + + if (sgr_unlock (process) == 0) { fprintf (log_get_logfd(), _("%s: failed to unlock %s\n"), log_get_progname(), sgr_dbname ()); diff --git a/lib/cleanup_user.c b/lib/cleanup_user.c index 809caaf3..0af0c67f 100644 --- a/lib/cleanup_user.c +++ b/lib/cleanup_user.c @@ -4,12 +4,11 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include -#include "attr.h" #include "defines.h" #include "pwio.h" #include "shadowio.h" @@ -27,7 +26,7 @@ void cleanup_report_add_user (void *user_name) SYSLOG ((LOG_ERR, "failed to add user %s", name)); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, log_get_progname(), + audit_logger (AUDIT_ADD_USER, "", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -44,7 +43,7 @@ void cleanup_report_mod_passwd (void *cleanup_info) pw_dbname (), info->action)); #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, log_get_progname(), + audit_logger (AUDIT_USER_MGMT, info->audit_msg, info->name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -64,7 +63,7 @@ void cleanup_report_add_user_passwd (void *user_name) SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, pw_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, log_get_progname(), + audit_logger (AUDIT_ADD_USER, "adding-user", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -84,7 +83,7 @@ void cleanup_report_add_user_shadow (void *user_name) SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, spw_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, log_get_progname(), + audit_logger (AUDIT_USER_MGMT, "adding-shadow-user", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -96,9 +95,11 @@ void cleanup_report_add_user_shadow (void *user_name) * * It should be registered after the passwd database is successfully locked. */ -void cleanup_unlock_passwd (MAYBE_UNUSED void *arg) +void cleanup_unlock_passwd (void *process_selinux) { - if (pw_unlock () == 0) { + bool process = *((bool *) process_selinux); + + if (pw_unlock (process) == 0) { fprintf (log_get_logfd(), _("%s: failed to unlock %s\n"), log_get_progname(), pw_dbname ()); @@ -115,9 +116,11 @@ void cleanup_unlock_passwd (MAYBE_UNUSED void *arg) * * It should be registered after the shadow database is successfully locked. */ -void cleanup_unlock_shadow (MAYBE_UNUSED void *arg) +void cleanup_unlock_shadow (void *process_selinux) { - if (spw_unlock () == 0) { + bool process = *((bool *) process_selinux); + + if (spw_unlock (process) == 0) { fprintf (log_get_logfd(), _("%s: failed to unlock %s\n"), log_get_progname(), spw_dbname ()); diff --git a/lib/commonio.c b/lib/commonio.c index 7304ec00..2c6a1a20 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -23,7 +24,6 @@ #include #include "alloc/malloc.h" -#include "alloc/reallocf.h" #include "atoi/getnum.h" #include "commonio.h" #include "defines.h" @@ -39,6 +39,7 @@ #include "string/sprintf/snprintf.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" +#include "string/strerrno.h" #include "string/strtok/stpsep.h" @@ -102,7 +103,7 @@ static int check_link_count (const char *file, bool log) if (log) { (void) fprintf (shadow_logfd, "%s: %s file stat error: %s\n", - shadow_progname, file, strerror (errno)); + shadow_progname, file, strerrno()); } return 0; } @@ -133,19 +134,19 @@ static int do_lock_file (const char *file, const char *lock, bool log) if (log) { (void) fprintf (shadow_logfd, "%s: %s: %s\n", - shadow_progname, file, strerror (errno)); + shadow_progname, file, strerrno()); } return 0; } pid = getpid (); - SNPRINTF(buf, "%lu", (unsigned long) pid); + stprintf_a(buf, "%lu", (unsigned long) pid); len = (ssize_t) strlen (buf) + 1; if (write_full(fd, buf, len) == -1) { if (log) { (void) fprintf (shadow_logfd, "%s: %s file write error: %s\n", - shadow_progname, file, strerror (errno)); + shadow_progname, file, strerrno()); } (void) close (fd); unlink (file); @@ -155,7 +156,7 @@ static int do_lock_file (const char *file, const char *lock, bool log) if (log) { (void) fprintf (shadow_logfd, "%s: %s file sync error: %s\n", - shadow_progname, file, strerror (errno)); + shadow_progname, file, strerrno()); } (void) close (fd); unlink (file); @@ -174,13 +175,13 @@ static int do_lock_file (const char *file, const char *lock, bool log) if (log) { (void) fprintf (shadow_logfd, "%s: %s: %s\n", - shadow_progname, lock, strerror (errno)); + shadow_progname, lock, strerrno()); } unlink (file); errno = EINVAL; return 0; } - len = read (fd, buf, sizeof (buf) - 1); + len = read(fd, buf, sizeof(buf) - 1); close (fd); if (len <= 0) { if (log) { @@ -217,7 +218,7 @@ static int do_lock_file (const char *file, const char *lock, bool log) if (log) { (void) fprintf (shadow_logfd, "%s: cannot get lock %s: %s\n", - shadow_progname, lock, strerror (errno)); + shadow_progname, lock, strerrno()); } unlink (file); return 0; @@ -230,7 +231,7 @@ static int do_lock_file (const char *file, const char *lock, bool log) if (log) { (void) fprintf (shadow_logfd, "%s: cannot get lock %s: %s\n", - shadow_progname, lock, strerror (errno)); + shadow_progname, lock, strerrno()); } } @@ -328,9 +329,8 @@ static void free_linked_list (struct commonio_db *db) free (p->line); - if (NULL != p->eptr) { - db->ops->free (p->eptr); - } + if (NULL != p->eptr) + db->ops->cio_free(p->eptr); free (p); } @@ -340,7 +340,7 @@ static void free_linked_list (struct commonio_db *db) int commonio_setname (struct commonio_db *db, const char *name) { - SNPRINTF(db->filename, "%s", name); + stprintf_a(db->filename, "%s", name); db->setname = true; return 1; } @@ -467,13 +467,13 @@ static void dec_lock_count (void) } -int commonio_unlock (struct commonio_db *db) +int commonio_unlock (struct commonio_db *db, bool process_selinux) { char lock[1029]; if (db->isopen) { db->readonly = true; - if (commonio_close (db) == 0) { + if (commonio_close (db, process_selinux) == 0) { if (db->locked) { dec_lock_count (); } @@ -486,7 +486,7 @@ int commonio_unlock (struct commonio_db *db) * then call ulckpwdf() (if used) on last unlock. */ db->locked = false; - SNPRINTF(lock, "%s.lock", db->filename); + stprintf_a(lock, "%s.lock", db->filename); unlink (lock); dec_lock_count (); return 1; @@ -548,7 +548,7 @@ static void add_one_entry_nis (struct commonio_db *db, struct commonio_entry *p; for (p = db->head; NULL != p; p = p->next) { - if (name_is_nis (p->eptr ? db->ops->getname (p->eptr) + if (name_is_nis (p->eptr ? db->ops->cio_getname(p->eptr) : p->line)) { /*@-mustfreeonly@*/ newp->next = p; @@ -567,11 +567,9 @@ static void add_one_entry_nis (struct commonio_db *db, } #endif /* KEEP_NIS_AT_END */ -/* Initial buffer size, as well as increment if not sufficient - (for reading very long lines in group files). */ -#define BUFLEN 4096 -int commonio_open (struct commonio_db *db, int mode) +int +commonio_open(struct commonio_db *db, int mode) { char *buf; char *line; @@ -633,31 +631,12 @@ int commonio_open (struct commonio_db *db, int mode) return 0; } - buflen = BUFLEN; - buf = MALLOC(buflen, char); - if (NULL == buf) - goto cleanup_errno; - - while (db->ops->fgets (buf, buflen, db->fp) == buf) { + buf = NULL; + while (getline(&buf, &buflen, db->fp) != -1) { struct commonio_entry *p; - while ( (strrchr (buf, '\n') == NULL) - && (feof (db->fp) == 0)) { - size_t len; - - buflen += BUFLEN; - buf = REALLOCF(buf, buflen, char); - if (NULL == buf) - goto cleanup_errno; - - len = strlen (buf); - if (db->ops->fgets (buf + len, - (int) (buflen - len), - db->fp) == NULL) { - goto cleanup_buf; - } - } - stpsep(buf, "\n"); + if (stpsep(buf, "\n") == NULL) + goto cleanup_buf; line = strdup (buf); if (NULL == line) { @@ -667,16 +646,16 @@ int commonio_open (struct commonio_db *db, int mode) if (name_is_nis (line)) { eptr = NULL; } else { - eptr = db->ops->parse (line); + eptr = db->ops->cio_parse(line); if (NULL != eptr) { - eptr = db->ops->dup (eptr); + eptr = db->ops->cio_dup(eptr); if (NULL == eptr) { goto cleanup_line; } } } - p = MALLOC(1, struct commonio_entry); + p = malloc_T(1, struct commonio_entry); if (NULL == p) { goto cleanup_entry; } @@ -694,7 +673,7 @@ int commonio_open (struct commonio_db *db, int mode) goto cleanup_errno; } - if ((NULL != db->ops->open_hook) && (db->ops->open_hook () == 0)) { + if ((NULL != db->ops->cio_open_hook) && (db->ops->cio_open_hook() == 0)) { goto cleanup_errno; } @@ -702,9 +681,8 @@ int commonio_open (struct commonio_db *db, int mode) return 1; cleanup_entry: - if (NULL != eptr) { - db->ops->free (eptr); - } + if (NULL != eptr) + db->ops->cio_free(eptr); cleanup_line: free (line); cleanup_buf: @@ -719,6 +697,7 @@ int commonio_open (struct commonio_db *db, int mode) return 0; } + /* * Sort given db according to cmp function (usually compares uids) */ @@ -752,7 +731,7 @@ commonio_sort (struct commonio_db *db, int (*cmp) (const void *, const void *)) return 0; } - entries = MALLOC(n, struct commonio_entry *); + entries = malloc_T(n, struct commonio_entry *); if (entries == NULL) { return -1; } @@ -771,7 +750,7 @@ commonio_sort (struct commonio_db *db, int (*cmp) (const void *, const void *)) entries[n] = ptr; n++; } - qsort (entries, n, sizeof (struct commonio_entry *), cmp); + qsort(entries, n, sizeof(struct commonio_entry *), cmp); /* Take care of the head and tail separately */ db->head = entries[0]; @@ -820,14 +799,14 @@ int commonio_sort_wrt (struct commonio_db *shadow, if (NULL == pw_ptr->eptr) { continue; } - name = passwd->ops->getname (pw_ptr->eptr); + name = passwd->ops->cio_getname(pw_ptr->eptr); for (spw_ptr = shadow->head; NULL != spw_ptr; spw_ptr = spw_ptr->next) { if (NULL == spw_ptr->eptr) { continue; } - if (streq(name, shadow->ops->getname(spw_ptr->eptr))) + if (streq(name, shadow->ops->cio_getname(spw_ptr->eptr))) break; } if (NULL == spw_ptr) { @@ -869,13 +848,13 @@ static int write_all (const struct commonio_db *db) if (p->changed) { eptr = p->eptr; assert (NULL != eptr); - if (db->ops->put (eptr, db->fp) != 0) { + if (db->ops->cio_put(eptr, db->fp) != 0) { return -1; } } else if (NULL != p->line) { - if (db->ops->fputs (p->line, db->fp) == EOF) { + if (fputs(p->line, db->fp) == EOF) return -1; - } + if (putc ('\n', db->fp) == EOF) { return -1; } @@ -885,7 +864,8 @@ static int write_all (const struct commonio_db *db) } -int commonio_close (struct commonio_db *db) +int +commonio_close(struct commonio_db *db, MAYBE_UNUSED bool process_selinux) { bool errors = false; char buf[1024]; @@ -905,11 +885,11 @@ int commonio_close (struct commonio_db *db) goto success; } - if ((NULL != db->ops->close_hook) && (db->ops->close_hook () == 0)) { + if ((NULL != db->ops->cio_close_hook) && (db->ops->cio_close_hook() == 0)) { goto fail; } - memzero (&sb, sizeof sb); + memzero(&sb, sizeof(sb)); if (NULL != db->fp) { if (fstat (fileno (db->fp), &sb) != 0) { (void) fclose (db->fp); @@ -920,14 +900,15 @@ int commonio_close (struct commonio_db *db) /* * Create backup file. */ - if (SNPRINTF(buf, "%s-", db->filename) == -1) { + if (stprintf_a(buf, "%s-", db->filename) == -1) { (void) fclose (db->fp); db->fp = NULL; goto fail; } #ifdef WITH_SELINUX - if (set_selinux_file_context (db->filename, S_IFREG) != 0) { + if (process_selinux + && set_selinux_file_context (db->filename, S_IFREG) != 0) { errors = true; } #endif @@ -942,7 +923,8 @@ int commonio_close (struct commonio_db *db) db->fp = NULL; #ifdef WITH_SELINUX - if (reset_selinux_file_context () != 0) { + if (process_selinux + && reset_selinux_file_context () != 0) { errors = true; } #endif @@ -957,11 +939,12 @@ int commonio_close (struct commonio_db *db) sb.st_gid = db->st_gid; } - if (SNPRINTF(buf, "%s+", db->filename) == -1) + if (stprintf_a(buf, "%s+", db->filename) == -1) goto fail; #ifdef WITH_SELINUX - if (set_selinux_file_context (db->filename, S_IFREG) != 0) { + if (process_selinux + && set_selinux_file_context (db->filename, S_IFREG) != 0) { errors = true; } #endif @@ -999,7 +982,8 @@ int commonio_close (struct commonio_db *db) } #ifdef WITH_SELINUX - if (reset_selinux_file_context () != 0) { + if (process_selinux + && reset_selinux_file_context () != 0) { goto fail; } #endif @@ -1029,7 +1013,7 @@ static /*@dependent@*/ /*@null@*/struct commonio_entry *next_entry_by_name ( for (p = pos; NULL != p; p = p->next) { ep = p->eptr; if ( (NULL != ep) - && streq(db->ops->getname(ep), name)) { + && streq(db->ops->cio_getname(ep), name)) { break; } } @@ -1053,19 +1037,19 @@ int commonio_update (struct commonio_db *db, const void *eptr) errno = EINVAL; return 0; } - nentry = db->ops->dup (eptr); + nentry = db->ops->cio_dup(eptr); if (NULL == nentry) { errno = ENOMEM; return 0; } - p = find_entry_by_name (db, db->ops->getname (eptr)); + p = find_entry_by_name(db, db->ops->cio_getname(eptr)); if (NULL != p) { - if (next_entry_by_name (db, p->next, db->ops->getname (eptr)) != NULL) { - fprintf (shadow_logfd, _("Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n"), db->ops->getname (eptr), db->filename); - db->ops->free (nentry); + if (next_entry_by_name(db, p->next, db->ops->cio_getname(eptr)) != NULL) { + fprintf(shadow_logfd, _("Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n"), db->ops->cio_getname(eptr), db->filename); + db->ops->cio_free(nentry); return 0; } - db->ops->free (p->eptr); + db->ops->cio_free(p->eptr); p->eptr = nentry; p->changed = true; db->cursor = p; @@ -1074,9 +1058,9 @@ int commonio_update (struct commonio_db *db, const void *eptr) return 1; } /* not found, new entry */ - p = MALLOC(1, struct commonio_entry); + p = malloc_T(1, struct commonio_entry); if (NULL == p) { - db->ops->free (nentry); + db->ops->cio_free(nentry); errno = ENOMEM; return 0; } @@ -1105,15 +1089,15 @@ int commonio_append (struct commonio_db *db, const void *eptr) errno = EINVAL; return 0; } - nentry = db->ops->dup (eptr); + nentry = db->ops->cio_dup(eptr); if (NULL == nentry) { errno = ENOMEM; return 0; } /* new entry */ - p = MALLOC(1, struct commonio_entry); + p = malloc_T(1, struct commonio_entry); if (NULL == p) { - db->ops->free (nentry); + db->ops->cio_free(nentry); errno = ENOMEM; return 0; } @@ -1174,9 +1158,8 @@ int commonio_remove (struct commonio_db *db, const char *name) free (p->line); - if (NULL != p->eptr) { - db->ops->free (p->eptr); - } + if (NULL != p->eptr) + db->ops->cio_free(p->eptr); free(p); diff --git a/lib/commonio.h b/lib/commonio.h index fedbefa3..8507e0e4 100644 --- a/lib/commonio.h +++ b/lib/commonio.h @@ -35,39 +35,30 @@ struct commonio_ops { * Make a copy of the object (for example, struct passwd) * and all strings pointed by it, in malloced memory. */ - /*@null@*/ /*@only@*/void *(*dup) (const void *); + /*@null@*/ /*@only@*/void *(*cio_dup)(const void *); /* * free() the object including any strings pointed by it. */ - void (*free)(/*@only@*/void *); + void (*cio_free)(/*@only@*/void *); /* * Return the name of the object (for example, pw_name * for struct passwd). */ - const char *(*getname) (const void *); + const char *(*cio_getname)(const void *); /* * Parse a string, return object (in static area - * should be copied using the dup operation above). */ - void *(*parse) (const char *); + void *(*cio_parse)(const char *); /* * Write the object to the file (this calls putpwent() * for struct passwd, for example). */ - int (*put) (const void *, FILE *); - - /* - * fgets and fputs (can be replaced by versions that - * understand line continuation conventions). - */ - ATTR_ACCESS(write_only, 1, 2) - /*@null@*/char *(*fgets)(/*@returned@*/char *restrict s, int n, - FILE *restrict stream); - int (*fputs) (const char *, FILE *); + int (*cio_put)(const void *, FILE *); /* * open_hook and close_hook. @@ -75,8 +66,8 @@ struct commonio_ops { * is open or before it is closed. * They return 0 on failure and 1 on success. */ - /*@null@*/int (*open_hook) (void); - /*@null@*/int (*close_hook) (void); + /*@null@*/int (*cio_open_hook)(void); + /*@null@*/int (*cio_close_hook)(void); }; /* @@ -103,7 +94,7 @@ struct commonio_db { #endif /* * Default permissions and owner for newly created data file. - */ + */ mode_t st_mode; uid_t st_uid; gid_t st_gid; @@ -138,8 +129,8 @@ extern int commonio_append (struct commonio_db *, const void *); extern int commonio_remove (struct commonio_db *, const char *); extern int commonio_rewind (struct commonio_db *); extern /*@observer@*/ /*@null@*/const void *commonio_next (struct commonio_db *); -extern int commonio_close (struct commonio_db *); -extern int commonio_unlock (struct commonio_db *); +extern int commonio_close (struct commonio_db *, bool); +extern int commonio_unlock (struct commonio_db *, bool); extern void commonio_del_entry (struct commonio_db *, const struct commonio_entry *); extern int commonio_sort_wrt (struct commonio_db *shadow, diff --git a/lib/console.c b/lib/console.c index 23d775de..8e4efb59 100644 --- a/lib/console.c +++ b/lib/console.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include @@ -52,7 +52,7 @@ is_listed(const char *cfgin, const char *tty, bool def) if (*cons != '/') { char *pbuf; - STRTCPY(buf, cons); + strtcpy_a(buf, cons); pbuf = buf; while (NULL != (s = strsep(&pbuf, ":"))) { if (streq(s, tty)) { @@ -76,7 +76,7 @@ is_listed(const char *cfgin, const char *tty, bool def) * See if this tty is listed in the console file. */ - while (fgets (buf, sizeof (buf), fp) != NULL) { + while (fgets(buf, sizeof(buf), fp) != NULL) { stpsep(buf, "\n"); if (streq(buf, tty)) { (void) fclose (fp); diff --git a/lib/copydir.c b/lib/copydir.c index 37462dd8..796015af 100644 --- a/lib/copydir.c +++ b/lib/copydir.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -19,7 +19,7 @@ #include #include -#include "alloc/x/xmalloc.h" +#include "alloc/malloc.h" #include "attr.h" #include "fs/readlink/areadlink.h" #include "prototypes.h" @@ -39,9 +39,9 @@ #endif /* WITH_ATTR */ #include "shadowlog.h" #include "string/sprintf/aprintf.h" -#include "string/sprintf/xaprintf.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" +#include "string/strerrno.h" static /*@null@*/const char *src_orig; @@ -72,12 +72,10 @@ static int copy_dir (const struct path_info *src, const struct path_info *dst, uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t new_gid); static int copy_symlink (const struct path_info *src, const struct path_info *dst, - MAYBE_UNUSED bool reset_selinux, const struct stat *statp, const struct timespec mt[], uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t new_gid); static int copy_hardlink (const struct path_info *dst, - MAYBE_UNUSED bool reset_selinux, struct link_name *lp); static int copy_special (const struct path_info *src, const struct path_info *dst, bool reset_selinux, @@ -101,7 +99,8 @@ static int fchown_if_needed (int fdst, const struct stat *statp, * error_acl - format the error messages for the ACL and EQ libraries. */ format_attr(printf, 2, 3) -static void error_acl (MAYBE_UNUSED struct error_context *ctx, const char *fmt, ...) +static void +error_acl(struct error_context *, const char *fmt, ...) { va_list ap; FILE *shadow_logfd = log_get_logfd(); @@ -118,7 +117,7 @@ static void error_acl (MAYBE_UNUSED struct error_context *ctx, const char *fmt, if (vfprintf (shadow_logfd, fmt, ap) != 0) { (void) fputs (_(": "), shadow_logfd); } - (void) fprintf (shadow_logfd, "%s\n", strerror (errno)); + (void) fprintf(shadow_logfd, "%s\n", strerrno()); va_end (ap); } @@ -230,7 +229,7 @@ static /*@exposed@*/ /*@null@*/struct link_name *check_link (const char *name, c return NULL; } - lp = XMALLOC(1, struct link_name); + lp = xmalloc_T(1, struct link_name); lp->ln_dev = sb->st_dev; lp->ln_ino = sb->st_ino; lp->ln_count = sb->st_nlink; @@ -310,7 +309,7 @@ static int copy_tree_impl (const struct path_info *src, const struct path_info * dst_orig = dst->full_path; set_orig = true; } - while ((0 == err) && (ent = readdir (dir)) != NULL) { + while (0 == err && NULL != (ent = readdir(dir))) { char *src_name = NULL; char *dst_name; struct path_info src_entry, dst_entry; @@ -437,7 +436,7 @@ static int copy_entry (const struct path_info *src, const struct path_info *dst, */ else if (S_ISLNK (sb.st_mode)) { - err = copy_symlink (src, dst, reset_selinux, &sb, mt, + err = copy_symlink (src, dst, &sb, mt, old_uid, new_uid, old_gid, new_gid); } @@ -446,7 +445,7 @@ static int copy_entry (const struct path_info *src, const struct path_info *dst, */ else if ((lp = check_link (src->full_path, &sb)) != NULL) { - err = copy_hardlink (dst, reset_selinux, lp); + err = copy_hardlink (dst, lp); } /* @@ -502,14 +501,14 @@ static int copy_dir (const struct path_info *src, const struct path_info *dst, return -1; } #endif /* WITH_SELINUX */ - /* - * If the destination is already a directory, don't change it - * but copy into it (recursively). - */ - if (fstatat(dst->dirfd, dst->name, &dst_sb, AT_SYMLINK_NOFOLLOW) == 0 && S_ISDIR(dst_sb.st_mode)) { - return (copy_tree_impl (src, dst, false, reset_selinux, - old_uid, new_uid, old_gid, new_gid) != 0); - } + /* + * If the destination is already a directory, don't change it + * but copy into it (recursively). + */ + if (fstatat(dst->dirfd, dst->name, &dst_sb, AT_SYMLINK_NOFOLLOW) == 0 && S_ISDIR(dst_sb.st_mode)) { + return (copy_tree_impl (src, dst, false, reset_selinux, + old_uid, new_uid, old_gid, new_gid) != 0); + } if ( (mkdirat (dst->dirfd, dst->name, 0700) != 0) || (chownat_if_needed (dst, statp, @@ -551,7 +550,6 @@ static int copy_dir (const struct path_info *src, const struct path_info *dst, * Return 0 on success, -1 on error. */ static int copy_symlink (const struct path_info *src, const struct path_info *dst, - MAYBE_UNUSED bool reset_selinux, const struct stat *statp, const struct timespec mt[], uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t new_gid) @@ -622,7 +620,6 @@ static int copy_symlink (const struct path_info *src, const struct path_info *ds * Return 0 on success, -1 on error. */ static int copy_hardlink (const struct path_info *dst, - MAYBE_UNUSED bool reset_selinux, struct link_name *lp) { /* FIXME: selinux, ACL, Extended Attributes needed? */ @@ -653,8 +650,8 @@ static int copy_hardlink (const struct path_info *dst, * Return 0 on success, -1 on error. */ static int -copy_special(const struct path_info *src, const struct path_info *dst, - bool reset_selinux, +copy_special(MAYBE_UNUSED const struct path_info *src, const struct path_info *dst, + MAYBE_UNUSED bool reset_selinux, const struct stat *statp, const struct timespec mt[], uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t new_gid) @@ -709,7 +706,7 @@ copy_special(const struct path_info *src, const struct path_info *dst, * Return 0 on success, -1 on error. */ static int copy_file (const struct path_info *src, const struct path_info *dst, - bool reset_selinux, + MAYBE_UNUSED bool reset_selinux, const struct stat *statp, const struct timespec mt[], uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t new_gid) @@ -761,7 +758,7 @@ static int copy_file (const struct path_info *src, const struct path_info *dst, char buf[8192]; ssize_t cnt; - cnt = read (ifd, buf, sizeof buf); + cnt = read(ifd, buf, sizeof(buf)); if (cnt < 0) { if (errno == EINTR) { continue; @@ -801,7 +798,7 @@ static int chown_function ## _if_needed (type_dst dst, \ { \ uid_t tmpuid = (uid_t) -1; \ gid_t tmpgid = (gid_t) -1; \ - \ + \ /* Use new_uid if old_uid is set to -1 or if the file was \ * owned by the user. */ \ if (((uid_t) -1 == old_uid) || (statp->st_uid == old_uid)) { \ @@ -812,14 +809,14 @@ static int chown_function ## _if_needed (type_dst dst, \ if ((uid_t) -1 == tmpuid) { \ tmpuid = statp->st_uid; \ } \ - \ + \ if (((gid_t) -1 == old_gid) || (statp->st_gid == old_gid)) { \ tmpgid = new_gid; \ } \ if ((gid_t) -1 == tmpgid) { \ tmpgid = statp->st_gid; \ } \ - \ + \ return chown_function (dst, tmpuid, tmpgid); \ } diff --git a/lib/csrand.c b/lib/csrand.c index def32be2..27ca1b82 100644 --- a/lib/csrand.c +++ b/lib/csrand.c @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2022-2024, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #ident "$Id$" diff --git a/lib/defines.h b/lib/defines.h index 8673a09f..09c0965a 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -51,20 +51,9 @@ #include #include -#if defined(SHADOWGRP) -#include "gshadow_.h" -#endif #include -#ifndef NGROUPS_MAX -#ifdef NGROUPS -#define NGROUPS_MAX NGROUPS -#else -#define NGROUPS_MAX 64 -#endif -#endif - #ifndef PATH_MAX #define PATH_MAX 4096 #endif @@ -79,11 +68,6 @@ #define LOG_WARN LOG_WARNING #endif -/* LOG_NOWAIT is deprecated */ -#ifndef LOG_NOWAIT -#define LOG_NOWAIT 0 -#endif - /* LOG_AUTH is deprecated, use LOG_AUTHPRIV instead */ #ifndef LOG_AUTHPRIV #define LOG_AUTHPRIV LOG_AUTH @@ -97,7 +81,7 @@ syslogd should log the current system time for each event, and not trust the formatted time received from the unix domain (or worse, UDP) socket. -MM */ -/* Avoid translated PAM error messages: Set LC_ALL to "C". +/* Avoid translated PAM error messages: set LC_ALL to "C". * --Nekral */ #define SYSLOG(x) \ do { \ @@ -123,7 +107,7 @@ in just one place. */ #ifndef SYSLOG_OPTIONS -/* #define SYSLOG_OPTIONS (LOG_PID | LOG_CONS | LOG_NOWAIT) */ +/* #define SYSLOG_OPTIONS (LOG_PID | LOG_CONS) */ #define SYSLOG_OPTIONS (LOG_PID) #endif @@ -160,10 +144,6 @@ #define GROUP_FILE "/etc/group" #endif -#ifndef SHADOW_FILE -#define SHADOW_FILE "/etc/shadow" -#endif - #ifndef SUBUID_FILE #define SUBUID_FILE "/etc/subuid" #endif @@ -172,12 +152,6 @@ #define SUBGID_FILE "/etc/subgid" #endif -#ifdef SHADOWGRP -#ifndef SGROUP_FILE -#define SGROUP_FILE "/etc/gshadow" -#endif -#endif - /* * string to use for the pw_passwd field in /etc/passwd when using * shadow passwords - most systems use "x" but there are a few diff --git a/lib/encrypt.c b/lib/encrypt.c index 1abe0a62..9a7d4aae 100644 --- a/lib/encrypt.c +++ b/lib/encrypt.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/env.c b/lib/env.c index 5eb58534..f97bb102 100644 --- a/lib/env.c +++ b/lib/env.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -16,15 +16,16 @@ #include #include -#include "alloc/x/xmalloc.h" -#include "alloc/x/xrealloc.h" +#include "alloc/malloc.h" +#include "alloc/realloc.h" #include "prototypes.h" #include "defines.h" #include "shadowlog.h" +#include "string/sprintf/aprintf.h" #include "string/sprintf/snprintf.h" -#include "string/sprintf/xaprintf.h" +#include "string/sprintf/aprintf.h" #include "string/strcmp/strprefix.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" /* @@ -67,7 +68,7 @@ static const char *const noslash[] = { */ void initenv (void) { - newenvp = XMALLOC(NEWENVP_STEP, char *); + newenvp = xmalloc_T(NEWENVP_STEP, char *); *newenvp = NULL; } @@ -134,7 +135,7 @@ void addenv (const char *string, /*@null@*/const char *value) update_environ = (environ == newenvp); - newenvp = XREALLOC(newenvp, newenvc + NEWENVP_STEP, char *); + newenvp = xrealloc_T(newenvp, newenvc + NEWENVP_STEP, char *); /* * If this is our current environment, update @@ -163,13 +164,13 @@ void set_env (int argc, char *const *argv) char *cp; for (; argc > 0; argc--, argv++) { - if (strlen (*argv) >= sizeof variable) { + if (strlen(*argv) >= sizeof(variable)) { continue; /* ignore long entries */ } cp = strchr (*argv, '='); if (NULL == cp) { - assert(SNPRINTF(variable, "L%d", noname) != -1); + assert(stprintf_a(variable, "L%d", noname) != -1); noname++; addenv (variable, *argv); } else { @@ -226,9 +227,9 @@ void sanitize_env (void) if (!strprefix(*cur, *bad)) { continue; } - if (strchr (*cur, '/') == NULL) { + if (!strchr(*cur, '/')) continue; /* OK */ - } + for (move = cur; NULL != *move; move++) { *move = *(move + 1); } diff --git a/lib/exit_if_null.c b/lib/exit_if_null.c new file mode 100644 index 00000000..9d68eaf5 --- /dev/null +++ b/lib/exit_if_null.c @@ -0,0 +1,10 @@ +// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "exit_if_null.h" + + +extern inline void exit_if_null_(void *p); diff --git a/lib/exit_if_null.h b/lib/exit_if_null.h new file mode 100644 index 00000000..6045bbcd --- /dev/null +++ b/lib/exit_if_null.h @@ -0,0 +1,48 @@ +// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_EXIT_IF_NULL_H_ +#define SHADOW_INCLUDE_LIB_EXIT_IF_NULL_H_ + + +#include "config.h" + +#include +#include +#include + +#include "shadowlog.h" +#include "string/strerrno.h" + + +/* + * This macro is used for implementing x*() variants of functions that + * allocate memory, such as xstrdup() for wrapping strdup(3). The macro + * returns the input pointer transparently, with the same type, but + * calls exit(3) if the input is a null pointer (thus, if the allocation + * failed). + */ +#define exit_if_null(p) \ +({ \ + __auto_type p_ = p; \ + \ + exit_if_null_(p_); \ + p_; \ +}) + + +inline void exit_if_null_(void *p); + + +inline void +exit_if_null_(void *p) +{ + if (p == NULL) { + fprintf(log_get_logfd(), "%s: %s\n", log_get_progname(), strerrno()); + exit(13); + } +} + + +#endif // include guard diff --git a/lib/failure.c b/lib/failure.c index afff11aa..24b8c5df 100644 --- a/lib/failure.c +++ b/lib/failure.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -34,7 +34,7 @@ void failure (uid_t uid, const char *tty, struct faillog *fl) { int fd; - off_t offset_uid = (off_t) (sizeof *fl) * uid; + off_t offset_uid = (off_t) sizeof(*fl) * uid; /* * Don't do anything if failure logging isn't set up. @@ -59,7 +59,7 @@ void failure (uid_t uid, const char *tty, struct faillog *fl) */ if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (read (fd, fl, sizeof *fl) != (ssize_t) sizeof *fl)) { + || (read(fd, fl, sizeof(*fl)) != (ssize_t) sizeof(*fl))) { /* This is not necessarily a failure. The file is * initially zero length. * @@ -67,7 +67,7 @@ void failure (uid_t uid, const char *tty, struct faillog *fl) * might reset the counter. But the new failure will be * logged. */ - memzero (fl, sizeof *fl); + memzero(fl, sizeof(*fl)); } /* @@ -81,7 +81,7 @@ void failure (uid_t uid, const char *tty, struct faillog *fl) fl->fail_cnt++; } - STRTCPY(fl->fail_line, tty); + strtcpy_a(fl->fail_line, tty); fl->fail_time = time(NULL); /* @@ -92,7 +92,7 @@ void failure (uid_t uid, const char *tty, struct faillog *fl) */ if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (write_full(fd, fl, sizeof *fl) == -1)) { + || (write_full(fd, fl, sizeof(*fl)) == -1)) { goto err_write; } @@ -150,7 +150,7 @@ int failcheck (uid_t uid, struct faillog *fl, bool failed) { int fd; struct faillog fail; - off_t offset_uid = (off_t) (sizeof *fl) * uid; + off_t offset_uid = (off_t) sizeof(*fl) * uid; /* * Suppress the check if the log file isn't there. @@ -182,7 +182,7 @@ int failcheck (uid_t uid, struct faillog *fl, bool failed) */ if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (read (fd, fl, sizeof *fl) != (ssize_t) sizeof *fl)) { + || (read(fd, fl, sizeof(*fl)) != (ssize_t) sizeof(*fl))) { (void) close (fd); return 1; } @@ -204,7 +204,7 @@ int failcheck (uid_t uid, struct faillog *fl, bool failed) fail.fail_cnt = 0; if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (write_full(fd, &fail, sizeof fail) == -1)) { + || (write_full(fd, &fail, sizeof(fail)) == -1)) { goto err_write; } @@ -252,7 +252,7 @@ void failprint (const struct faillog *fail) /* * Print all information we have. */ - STRFTIME(lasttimeb, "%c", tp); + strftime_a(lasttimeb, "%c", tp); /*@-formatconst@*/ (void) printf (ngettext ("%d failure since last login.\n" diff --git a/lib/fields.c b/lib/fields.c index b32ca466..144e5fd0 100644 --- a/lib/fields.c +++ b/lib/fields.c @@ -7,13 +7,14 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include "fields.h" #include -#include +#include #include +#include #include "prototypes.h" #include "string/ctype/strisascii/strisprint.h" @@ -62,15 +63,14 @@ change_field(char *buf, size_t maxsize, const char *prompt) char newf[200]; char *cp; - if (maxsize > sizeof (newf)) { - maxsize = sizeof (newf); + if (maxsize > sizeof(newf)) { + maxsize = sizeof(newf); } printf ("\t%s [%s]: ", prompt, buf); (void) fflush (stdout); - if (fgets (newf, maxsize, stdin) != newf) { + if (fgets(newf, maxsize, stdin) == NULL) return; - } if (stpsep(newf, "\n") == NULL) return; diff --git a/lib/fields.h b/lib/fields.h index 6e5d61aa..8527737f 100644 --- a/lib/fields.h +++ b/lib/fields.h @@ -5,7 +5,7 @@ #define _SHADOW_INCLUDE_LIB_FIELDS_H_ -#include +#include "config.h" #include diff --git a/lib/find_new_gid.c b/lib/find_new_gid.c index cdf8779e..ea1b8dc9 100644 --- a/lib/find_new_gid.c +++ b/lib/find_new_gid.c @@ -6,7 +6,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include @@ -18,16 +18,18 @@ #include "groupio.h" #include "getdef.h" #include "shadowlog.h" +#include "string/strerrno.h" + /* * get_ranges - Get the minimum and maximum ID ranges for the search * * This function will return the minimum and maximum ranges for IDs * - * 0: The function completed successfully - * EINVAL: The provided ranges are impossible (such as maximum < minimum) + * 0: the function completed successfully + * EINVAL: the provided ranges are impossible (such as maximum < minimum) * - * preferred_min: The special-case minimum value for a specifically- + * preferred_min: the special-case minimum value for a specifically- * requested ID, which may be lower than the standard min_id */ static int get_ranges (bool sys_group, gid_t *min_id, gid_t *max_id, @@ -54,11 +56,11 @@ static int get_ranges (bool sys_group, gid_t *min_id, gid_t *max_id, /* Check that the ranges make sense */ if (*max_id < *min_id) { (void) fprintf (log_get_logfd(), - _("%s: Invalid configuration: SYS_GID_MIN (%lu), " - "GID_MIN (%lu), SYS_GID_MAX (%lu)\n"), - log_get_progname(), (unsigned long) *min_id, - getdef_ulong ("GID_MIN", 1000UL), - (unsigned long) *max_id); + _("%s: Invalid configuration: SYS_GID_MIN (%lu), " + "GID_MIN (%lu), SYS_GID_MAX (%lu)\n"), + log_get_progname(), (unsigned long) *min_id, + getdef_ulong ("GID_MIN", 1000UL), + (unsigned long) *max_id); return EINVAL; } /* @@ -233,11 +235,11 @@ int find_new_gid (bool sys_group, */ /* Create an array to hold all of the discovered GIDs */ - used_gids = CALLOC (gid_max + 1, bool); + used_gids = calloc_T(gid_max + 1, bool); if (NULL == used_gids) { fprintf (log_get_logfd(), _("%s: failed to allocate memory: %s\n"), - log_get_progname(), strerror (errno)); + log_get_progname(), strerrno()); return -1; } @@ -245,7 +247,7 @@ int find_new_gid (bool sys_group, (void) gr_rewind (); highest_found = gid_min; lowest_found = gid_max; - while ((grp = gr_next ()) != NULL) { + while (NULL != (grp = gr_next())) { /* * Does this entry have a lower GID than the lowest we've found * so far? diff --git a/lib/find_new_sub_gids.c b/lib/find_new_sub_gids.c index 74c9d8f5..ee85c4f3 100644 --- a/lib/find_new_sub_gids.c +++ b/lib/find_new_sub_gids.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ifdef ENABLE_SUBIDS diff --git a/lib/find_new_sub_uids.c b/lib/find_new_sub_uids.c index cc4b0cf4..52dbee38 100644 --- a/lib/find_new_sub_uids.c +++ b/lib/find_new_sub_uids.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ifdef ENABLE_SUBIDS diff --git a/lib/find_new_uid.c b/lib/find_new_uid.c index f2ca60ff..3c5000e3 100644 --- a/lib/find_new_uid.c +++ b/lib/find_new_uid.c @@ -6,7 +6,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include @@ -18,16 +18,17 @@ #include "pwio.h" #include "getdef.h" #include "shadowlog.h" +#include "string/strerrno.h" /* * get_ranges - Get the minimum and maximum ID ranges for the search * * This function will return the minimum and maximum ranges for IDs * - * 0: The function completed successfully - * EINVAL: The provided ranges are impossible (such as maximum < minimum) + * 0: the function completed successfully + * EINVAL: the provided ranges are impossible (such as maximum < minimum) * - * preferred_min: The special-case minimum value for a specifically- + * preferred_min: the special-case minimum value for a specifically- * requested ID, which may be lower than the standard min_id */ static int get_ranges (bool sys_user, uid_t *min_id, uid_t *max_id, @@ -54,11 +55,11 @@ static int get_ranges (bool sys_user, uid_t *min_id, uid_t *max_id, /* Check that the ranges make sense */ if (*max_id < *min_id) { (void) fprintf (log_get_logfd(), - _("%s: Invalid configuration: SYS_UID_MIN (%lu), " - "UID_MIN (%lu), SYS_UID_MAX (%lu)\n"), - log_get_progname(), (unsigned long) *min_id, - getdef_ulong ("UID_MIN", 1000UL), - (unsigned long) *max_id); + _("%s: Invalid configuration: SYS_UID_MIN (%lu), " + "UID_MIN (%lu), SYS_UID_MAX (%lu)\n"), + log_get_progname(), (unsigned long) *min_id, + getdef_ulong ("UID_MIN", 1000UL), + (unsigned long) *max_id); return EINVAL; } /* @@ -233,11 +234,11 @@ int find_new_uid(bool sys_user, */ /* Create an array to hold all of the discovered UIDs */ - used_uids = CALLOC(uid_max + 1, bool); + used_uids = calloc_T(uid_max + 1, bool); if (NULL == used_uids) { fprintf (log_get_logfd(), _("%s: failed to allocate memory: %s\n"), - log_get_progname(), strerror (errno)); + log_get_progname(), strerrno()); return -1; } @@ -245,7 +246,7 @@ int find_new_uid(bool sys_user, (void) pw_rewind (); highest_found = uid_min; lowest_found = uid_max; - while ((pwd = pw_next ()) != NULL) { + while (NULL != (pwd = pw_next())) { /* * Does this entry have a lower UID than the lowest we've found * so far? diff --git a/lib/fputsx.c b/lib/fputsx.c deleted file mode 100644 index 96aea278..00000000 --- a/lib/fputsx.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#include -#include - -#include "defines.h" -#include "prototypes.h" -#include "string/strcmp/streq.h" - - -/*@null@*/char * -fgetsx(/*@returned@*/char *restrict buf, int cnt, FILE *restrict f) -{ - char *cp = buf; - char *ep; - - while (cnt > 0) { - if (fgets (cp, cnt, f) != cp) { - if (cp == buf) { - return NULL; - } else { - break; - } - } - ep = strrchr (cp, '\\'); - if ((NULL != ep) && (*(ep + 1) == '\n')) { - cnt -= ep - cp; - if (cnt > 0) - cp = stpcpy(ep, ""); - } else { - break; - } - } - return buf; -} - -int fputsx (const char *s, FILE * stream) -{ - int i; - - for (i = 0; !streq(s, ""); i++, s++) { - if (putc (*s, stream) == EOF) { - return EOF; - } - -#if 0 /* The standard getgr*() can't handle that. --marekm */ - if (i > (BUFSIZ / 2)) { - if (putc ('\\', stream) == EOF || - putc ('\n', stream) == EOF) - return EOF; - - i = 0; - } -#endif - } - return 0; -} - diff --git a/lib/fs/mkstemp/fmkomstemp.c b/lib/fs/mkstemp/fmkomstemp.c index a8b49d6e..c9279ff4 100644 --- a/lib/fs/mkstemp/fmkomstemp.c +++ b/lib/fs/mkstemp/fmkomstemp.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "fs/mkstemp/fmkomstemp.h" diff --git a/lib/fs/mkstemp/fmkomstemp.h b/lib/fs/mkstemp/fmkomstemp.h index c0649d99..369c57ba 100644 --- a/lib/fs/mkstemp/fmkomstemp.h +++ b/lib/fs/mkstemp/fmkomstemp.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_FS_MKSTEMP_FMKOMSTEMP_H_ -#include +#include "config.h" #include #include diff --git a/lib/fs/mkstemp/mkomstemp.c b/lib/fs/mkstemp/mkomstemp.c index 9c6e3206..bae319e6 100644 --- a/lib/fs/mkstemp/mkomstemp.c +++ b/lib/fs/mkstemp/mkomstemp.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "fs/mkstemp/mkomstemp.h" diff --git a/lib/fs/mkstemp/mkomstemp.h b/lib/fs/mkstemp/mkomstemp.h index 6ba5aa34..ff61270c 100644 --- a/lib/fs/mkstemp/mkomstemp.h +++ b/lib/fs/mkstemp/mkomstemp.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_FS_MKSTEMP_MKOMSTEMP_H_ -#include +#include "config.h" #include #include diff --git a/lib/fs/readlink/areadlink.c b/lib/fs/readlink/areadlink.c index b569e3f2..03399fd1 100644 --- a/lib/fs/readlink/areadlink.c +++ b/lib/fs/readlink/areadlink.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "fs/readlink/areadlink.h" diff --git a/lib/fs/readlink/areadlink.h b/lib/fs/readlink/areadlink.h index f1818905..2a35be75 100644 --- a/lib/fs/readlink/areadlink.h +++ b/lib/fs/readlink/areadlink.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_FS_READLINK_AREADLINK_H_ -#include +#include "config.h" #include #include @@ -33,7 +33,7 @@ areadlink(const char *link) int len; char *buf; - buf = MALLOC(size, char); + buf = malloc_T(size, char); if (NULL == buf) return NULL; diff --git a/lib/fs/readlink/readlinknul.c b/lib/fs/readlink/readlinknul.c index bb79dcaa..5fd4f7a4 100644 --- a/lib/fs/readlink/readlinknul.c +++ b/lib/fs/readlink/readlinknul.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "fs/readlink/readlinknul.h" diff --git a/lib/fs/readlink/readlinknul.h b/lib/fs/readlink/readlinknul.h index 0791df57..ecec2f89 100644 --- a/lib/fs/readlink/readlinknul.h +++ b/lib/fs/readlink/readlinknul.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_FS_READLINK_READLINKNUL_H_ -#include +#include "config.h" #include #include @@ -17,7 +17,8 @@ #include "sizeof.h" -#define READLINKNUL(link, buf) readlinknul(link, buf, countof(buf)) +// readlinknul_a - read link nul-terminate array +#define readlinknul_a(link, buf) readlinknul(link, buf, countof(buf)) ATTR_STRING(1) @@ -25,7 +26,7 @@ inline ssize_t readlinknul(const char *restrict link, char *restrict buf, ssize_t size); -// Similar to readlink(2), but terminate the string. +// readlinknul - read link nul-terminate inline ssize_t readlinknul(const char *restrict link, char *restrict buf, ssize_t size) { diff --git a/lib/get_pid.c b/lib/get_pid.c index 6aa3987d..6ccc79d7 100644 --- a/lib/get_pid.c +++ b/lib/get_pid.c @@ -3,7 +3,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include #include @@ -15,6 +15,7 @@ #include "defines.h" #include "prototypes.h" #include "string/sprintf/snprintf.h" +#include "string/strerrno.h" /* @@ -58,16 +59,16 @@ int open_pidfd(const char *pidstr) if (get_pid(pidstr, &target) == -1) return -ENOENT; - if (SNPRINTF(proc_dir_name, "/proc/%d/", target) == -1) { + if (stprintf_a(proc_dir_name, "/proc/%d/", target) == -1) { fprintf(stderr, "snprintf of proc path failed for %d: %s\n", - target, strerror(errno)); + target, strerrno()); return -EINVAL; } proc_dir_fd = open(proc_dir_name, O_DIRECTORY); if (proc_dir_fd < 0) { fprintf(stderr, _("Could not open proc directory for target %d: %s\n"), - target, strerror(errno)); + target, strerrno()); return -EINVAL; } return proc_dir_fd; diff --git a/lib/getdef.c b/lib/getdef.c index e3ae142d..930b350b 100644 --- a/lib/getdef.c +++ b/lib/getdef.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -22,15 +22,13 @@ #include #endif -#include "atoi/a2i/a2s.h" -#include "atoi/a2i/a2u.h" -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "defines.h" #include "getdef.h" #include "prototypes.h" #include "shadowlog_internal.h" #include "sizeof.h" -#include "string/sprintf/xaprintf.h" +#include "string/sprintf/aprintf.h" #include "string/strcmp/strcaseeq.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" @@ -555,7 +553,7 @@ static void def_load (void) /* * Go through all of the lines in the file. */ - while (fgets (buf, sizeof (buf), fp) != NULL) { + while (fgets(buf, sizeof(buf), fp) != NULL) { /* * Trim trailing whitespace. diff --git a/lib/getdef.h b/lib/getdef.h index f55e28b7..e687a2ee 100644 --- a/lib/getdef.h +++ b/lib/getdef.h @@ -9,6 +9,12 @@ #ifndef _GETDEF_H #define _GETDEF_H + +#include "config.h" + +#include + + /* getdef.c */ extern bool getdef_bool (const char *); extern long getdef_long (const char *, long); diff --git a/lib/getgr_nam_gid.c b/lib/getgr_nam_gid.c index 58f38534..5a77b8df 100644 --- a/lib/getgr_nam_gid.c +++ b/lib/getgr_nam_gid.c @@ -6,7 +6,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #ident "$Id$" diff --git a/lib/getrange.c b/lib/getrange.c index 44a055c7..a7f8f059 100644 --- a/lib/getrange.c +++ b/lib/getrange.c @@ -3,14 +3,14 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #ident "$Id: $" #include #include -#include "atoi/a2i/a2u.h" +#include "atoi/a2i.h" #include "defines.h" #include "prototypes.h" #include "string/strcmp/streq.h" diff --git a/lib/gettime.c b/lib/gettime.c index 69285e54..97b873ef 100644 --- a/lib/gettime.c +++ b/lib/gettime.c @@ -3,7 +3,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #ident "$Id$" @@ -11,10 +11,11 @@ #include #include -#include "atoi/a2i/a2i.h" +#include "atoi/a2i.h" #include "defines.h" #include "prototypes.h" #include "shadowlog.h" +#include "string/strerrno.h" /* @@ -40,7 +41,7 @@ gettime(void) if (a2i(time_t, &epoch, source_date_epoch, NULL, 10, 0, fallback) == -1) { fprintf(shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: a2i(\"%s\"): %s"), - source_date_epoch, strerror(errno)); + source_date_epoch, strerrno()); return fallback; } return epoch; diff --git a/lib/groupio.c b/lib/groupio.c index 72391433..f62a9bbd 100644 --- a/lib/groupio.c +++ b/lib/groupio.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -23,6 +23,7 @@ #include "getdef.h" #include "groupio.h" #include "prototypes.h" +#include "shadow/group/sgetgrent.h" #include "string/sprintf/aprintf.h" #include "string/strcmp/streq.h" @@ -101,8 +102,6 @@ static struct commonio_ops group_ops = { group_getname, group_parse, group_put, - fgetsx, - fputsx, group_open_hook, group_close_hook }; @@ -184,14 +183,14 @@ int gr_rewind (void) return commonio_next (&group_db); } -int gr_close (void) +int gr_close (bool process_selinux) { - return commonio_close (&group_db); + return commonio_close (&group_db, process_selinux); } -int gr_unlock (void) +int gr_unlock (bool process_selinux) { - return commonio_unlock (&group_db); + return commonio_unlock (&group_db, process_selinux); } void __gr_set_changed (void) @@ -345,7 +344,7 @@ static /*@null@*/struct commonio_entry *merge_group_entries ( members++; } } - new_members = CALLOC (members + 1, char *); + new_members = calloc_T(members + 1, char *); if (NULL == new_members) { free(new_line); return NULL; @@ -406,7 +405,7 @@ static int split_groups (unsigned int max_members) continue; } - new = MALLOC(1, struct commonio_entry); + new = malloc_T(1, struct commonio_entry); if (NULL == new) { return 0; } diff --git a/lib/groupio.h b/lib/groupio.h index 2014de0c..eae13cd3 100644 --- a/lib/groupio.h +++ b/lib/groupio.h @@ -14,8 +14,9 @@ #include #include +#include -extern int gr_close (void); +extern int gr_close (bool process_selinux); extern /*@observer@*/ /*@null@*/const struct group *gr_locate (const char *name); extern /*@observer@*/ /*@null@*/const struct group *gr_locate_gid (gid_t gid); extern int gr_lock (void); @@ -25,7 +26,7 @@ extern /*@observer@*/ /*@null@*/const struct group *gr_next (void); extern int gr_open (int mode); extern int gr_remove (const char *name); extern int gr_rewind (void); -extern int gr_unlock (void); +extern int gr_unlock (bool process_selinux); extern int gr_update (const struct group *gr); extern int gr_sort (void); diff --git a/lib/groupmem.c b/lib/groupmem.c index 23d7f054..1ebe2f9b 100644 --- a/lib/groupmem.c +++ b/lib/groupmem.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -25,7 +25,7 @@ struct group *gr; int i; - gr = CALLOC(1, struct group); + gr = calloc_T(1, struct group); if (NULL == gr) { return NULL; } @@ -49,7 +49,7 @@ for (i = 0; grent->gr_mem[i]; i++); /*@-mustfreeonly@*/ - gr->gr_mem = MALLOC(i + 1, char *); + gr->gr_mem = malloc_T(i + 1, char *); /*@=mustfreeonly@*/ if (NULL == gr->gr_mem) { gr_free(gr); diff --git a/lib/gshadow.c b/lib/gshadow.c deleted file mode 100644 index a240d386..00000000 --- a/lib/gshadow.c +++ /dev/null @@ -1,253 +0,0 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#if defined(SHADOWGRP) && !__has_include() - -#ident "$Id$" - -#include -#include -#include -#include - -#include "alloc/malloc.h" -#include "alloc/realloc.h" -#include "defines.h" -#include "prototypes.h" -#include "string/strcmp/streq.h" -#include "string/strtok/stpsep.h" -#include "string/strtok/strsep2arr.h" -#include "string/strtok/xastrsep2ls.h" - - -static /*@null@*/FILE *shadow; -static struct sgrp sgroup = {}; - - -static /*@null@*/char ** -build_list(char *s) -{ - char **l; - size_t n; - - l = xastrsep2ls(s, ",", &n); - - if (streq(l[n-1], "")) - l[n-1] = NULL; - - return l; -} - -void setsgent (void) -{ - if (NULL != shadow) { - rewind (shadow); - } else { - shadow = fopen (SGROUP_FILE, "re"); - } -} - -void endsgent (void) -{ - if (NULL != shadow) { - (void) fclose (shadow); - } - - shadow = NULL; -} - -/*@observer@*//*@null@*/struct sgrp * -sgetsgent(const char *s) -{ - static char *dup = NULL; - - char *fields[4]; - - free(dup); - dup = strdup(s); - if (dup == NULL) - return NULL; - - stpsep(dup, "\n"); - - if (STRSEP2ARR(dup, ":", fields) == -1) - return NULL; - - sgroup.sg_namp = fields[0]; - sgroup.sg_passwd = fields[1]; - - free(sgroup.sg_adm); - free(sgroup.sg_mem); - - sgroup.sg_adm = build_list(fields[2]); - sgroup.sg_mem = build_list(fields[3]); - - return &sgroup; -} - -/* - * fgetsgent - convert next line in stream to (struct sgrp) - * - * fgetsgent() reads the next line from the provided stream and - * converts it to a (struct sgrp). NULL is returned on EOF. - */ - -/*@observer@*//*@null@*/struct sgrp *fgetsgent (/*@null@*/FILE * fp) -{ - static size_t buflen = 0; - static char *buf = NULL; - - char *cp; - - if (0 == buflen) { - buf = MALLOC(BUFSIZ, char); - if (NULL == buf) { - return NULL; - } - buflen = BUFSIZ; - } - - if (NULL == fp) { - return NULL; - } - - if (fgetsx(buf, buflen, fp) == NULL) - return NULL; - - while ( (strrchr(buf, '\n') == NULL) - && (feof (fp) == 0)) { - size_t len; - - cp = REALLOC(buf, buflen * 2, char); - if (NULL == cp) { - return NULL; - } - buf = cp; - buflen *= 2; - - len = strlen (buf); - if (fgetsx (&buf[len], - (int) (buflen - len), - fp) != &buf[len]) { - return NULL; - } - } - stpsep(buf, "\n"); - return (sgetsgent (buf)); -} - -/* - * getsgent - get a single shadow group entry - */ - -/*@observer@*//*@null@*/struct sgrp *getsgent (void) -{ - if (NULL == shadow) { - setsgent (); - } - return (fgetsgent (shadow)); -} - -/* - * getsgnam - get a shadow group entry by name - */ - -/*@observer@*//*@null@*/struct sgrp *getsgnam (const char *name) -{ - struct sgrp *sgrp; - - setsgent (); - - while ((sgrp = getsgent ()) != NULL) { - if (streq(name, sgrp->sg_namp)) { - break; - } - } - return sgrp; -} - -/* - * putsgent - output shadow group entry in text form - * - * putsgent() converts the contents of a (struct sgrp) to text and - * writes the result to the given stream. This is the logical - * opposite of fgetsgent. - */ - -int putsgent (const struct sgrp *sgrp, FILE * fp) -{ - char *buf, *cp; - int i; - size_t size; - - if ((NULL == fp) || (NULL == sgrp)) { - return -1; - } - - /* calculate the required buffer size */ - size = strlen (sgrp->sg_namp) + strlen (sgrp->sg_passwd) + 10; - for (i = 0; (NULL != sgrp->sg_adm) && (NULL != sgrp->sg_adm[i]); i++) { - size += strlen (sgrp->sg_adm[i]) + 1; - } - for (i = 0; (NULL != sgrp->sg_mem) && (NULL != sgrp->sg_mem[i]); i++) { - size += strlen (sgrp->sg_mem[i]) + 1; - } - - buf = MALLOC(size, char); - if (NULL == buf) { - return -1; - } - cp = buf; - - /* - * Copy the group name and passwd. - */ - cp = stpcpy(stpcpy(cp, sgrp->sg_namp), ":"); - cp = stpcpy(stpcpy(cp, sgrp->sg_passwd), ":"); - - /* - * Copy the administrators, separating each from the other - * with a ",". - */ - for (i = 0; NULL != sgrp->sg_adm[i]; i++) { - if (i > 0) - cp = stpcpy(cp, ","); - - cp = stpcpy(cp, sgrp->sg_adm[i]); - } - cp = stpcpy(cp, ":"); - - /* - * Now do likewise with the group members. - */ - for (i = 0; NULL != sgrp->sg_mem[i]; i++) { - if (i > 0) - cp = stpcpy(cp, ","); - - cp = stpcpy(cp, sgrp->sg_mem[i]); - } - stpcpy(cp, "\n"); - - /* - * Output using the function which understands the line - * continuation conventions. - */ - if (fputsx (buf, fp) == EOF) { - free (buf); - return -1; - } - - free (buf); - return 0; -} -#else -extern int ISO_C_forbids_an_empty_translation_unit; -#endif // !SHADOWGRP diff --git a/lib/gshadow_.h b/lib/gshadow_.h deleted file mode 100644 index 2b38cb33..00000000 --- a/lib/gshadow_.h +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh -// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz -// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko -// SPDX-FileCopyrightText: 2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_GSHADOW__H_ -#define SHADOW_INCLUDE_LIB_GSHADOW__H_ - - -#if __has_include() -# include -#else - -/* - * Shadow group security file structure - */ - -struct sgrp { - char *sg_namp; /* group name */ - char *sg_passwd; /* group password */ - char **sg_adm; /* group administrator list */ - char **sg_mem; /* group membership list */ -}; - -/* - * Shadow group security file functions. - */ - -#include /* for FILE */ - -/*@observer@*//*@null@*/struct sgrp *getsgent (void); -/*@observer@*//*@null@*/struct sgrp *getsgnam (const char *); -/*@observer@*//*@null@*/struct sgrp *sgetsgent (const char *); -/*@observer@*//*@null@*/struct sgrp *fgetsgent (/*@null@*/FILE *); -void setsgent (void); -void endsgent (void); -int putsgent (const struct sgrp *, FILE *); - -#define GSHADOW "/etc/gshadow" - - -#endif // !__has_include() -#endif // include guard diff --git a/lib/hushed.c b/lib/hushed.c index 526e0f29..c2df9a4b 100644 --- a/lib/hushed.c +++ b/lib/hushed.c @@ -8,11 +8,12 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" #include +#include #include #include #include @@ -60,7 +61,7 @@ bool hushed (const char *username) */ if (hushfile[0] != '/') { - SNPRINTF(buf, "%s/%s", pw->pw_dir, hushfile); + stprintf_a(buf, "%s/%s", pw->pw_dir, hushfile); return (access (buf, F_OK) == 0); } @@ -73,7 +74,7 @@ bool hushed (const char *username) if (NULL == fp) { return false; } - for (found = false; !found && (fgets (buf, sizeof buf, fp) == buf);) { + for (found = false; !found && (fgets(buf, sizeof(buf), fp) != NULL);) { stpsep(buf, "\n"); found = streq(buf, pw->pw_shell) || streq(buf, pw->pw_name); diff --git a/lib/idmapping.c b/lib/idmapping.c index ef685f32..88a0c00e 100644 --- a/lib/idmapping.c +++ b/lib/idmapping.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include #include @@ -12,20 +12,24 @@ #include #include #include -#include #if __has_include() # include #endif +#if __has_include() +# include +#endif #include "alloc/calloc.h" -#include "alloc/x/xmalloc.h" -#include "atoi/a2i/a2u.h" +#include "alloc/malloc.h" +#include "atoi/a2i.h" +#include "attr.h" #include "idmapping.h" #include "prototypes.h" #include "shadowlog.h" #include "sizeof.h" #include "string/sprintf/stpeprintf.h" #include "string/strcmp/streq.h" +#include "string/strerrno.h" struct map_range * @@ -43,7 +47,7 @@ get_map_ranges(int ranges, int argc, char **argv) return NULL; } - mappings = CALLOC(ranges, struct map_range); + mappings = calloc_T(ranges, struct map_range); if (!mappings) { fprintf(log_get_logfd(), _( "%s: Memory allocation failure\n"), log_get_progname()); @@ -121,7 +125,7 @@ static inline bool maps_lower_root(int cap, int ranges, const struct map_range * * If this is wanted: use file capabilities! */ void write_mapping(int proc_dir_fd, int ranges, const struct map_range *mappings, - const char *map_file, uid_t ruid) + const char *map_file, MAYBE_UNUSED uid_t ruid) { int idx; const struct map_range *mapping; @@ -173,7 +177,7 @@ void write_mapping(int proc_dir_fd, int ranges, const struct map_range *mappings #endif bufsize = (ULONG_DIGITS + 1) * 3 * ranges + 1; - pos = buf = XMALLOC(bufsize, char); + pos = buf = xmalloc_T(bufsize, char); end = buf + bufsize; /* Build the mapping command */ @@ -194,17 +198,17 @@ void write_mapping(int proc_dir_fd, int ranges, const struct map_range *mappings fd = openat(proc_dir_fd, map_file, O_WRONLY); if (fd < 0) { fprintf(log_get_logfd(), _("%s: open of %s failed: %s\n"), - log_get_progname(), map_file, strerror(errno)); + log_get_progname(), map_file, strerrno()); exit(EXIT_FAILURE); } if (write_full(fd, buf, pos - buf) == -1) { fprintf(log_get_logfd(), _("%s: write to %s failed: %s\n"), - log_get_progname(), map_file, strerror(errno)); + log_get_progname(), map_file, strerrno()); exit(EXIT_FAILURE); } if (close(fd) != 0 && errno != EINTR) { fprintf(log_get_logfd(), _("%s: closing %s failed: %s\n"), - log_get_progname(), map_file, strerror(errno)); + log_get_progname(), map_file, strerrno()); exit(EXIT_FAILURE); } free(buf); diff --git a/lib/isexpired.c b/lib/isexpired.c index f69938a1..3280e013 100644 --- a/lib/isexpired.c +++ b/lib/isexpired.c @@ -12,7 +12,7 @@ * in other shadow-aware programs. --marekm */ -#include +#include "config.h" #include #include @@ -33,11 +33,11 @@ * password expiration criteria. * * Return value: - * 0: The password is still valid - * 1: The password has expired, it must be changed - * 2: The password has expired since a long time and the account is + * 0: the password is still valid + * 1: the password has expired, it must be changed + * 2: the password has expired since a long time and the account is * now disabled. (password cannot be changed) - * 3: The account has expired + * 3: the account has expired */ int isexpired (const struct passwd *pw, /*@null@*/const struct spwd *sp) { @@ -82,13 +82,11 @@ int isexpired (const struct passwd *pw, /*@null@*/const struct spwd *sp) /* * The last and max fields must be present for an account - * to have an expired password. A maximum of >10000 days - * is considered to be infinite. + * to have an expired password. */ if ( (-1 == sp->sp_lstchg) - || (-1 == sp->sp_max) - || (sp->sp_max >= 10000)) { + || (-1 == sp->sp_max)) { return 0; } diff --git a/lib/limits.c b/lib/limits.c index d0598f0b..4c7ac6ab 100644 --- a/lib/limits.c +++ b/lib/limits.c @@ -13,7 +13,7 @@ * Enhancements of resource limit code by Thomas Orgis */ -#include +#include "config.h" #ifndef USE_PAM @@ -30,9 +30,7 @@ #include "shadowlog.h" #include -#include "atoi/a2i/a2i.h" -#include "atoi/a2i/a2s.h" -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "string/memset/memzero.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" @@ -68,11 +66,11 @@ static int setrlimit_value (unsigned int resource, if (a2i(rlim_t, &l, value, NULL, 10, 0, type_max(rlim_t)) == -1 && errno != ENOTSUP) { - return 0; // FIXME: We could instead throw an error, though. + return 0; // FIXME: we could instead throw an error, though. } if (__builtin_mul_overflow(l, multiplier, &limit)) { - /* FIXME: Again, silent error handling... + /* FIXME: again, silent error handling... * Wouldn't screaming make more sense? */ return 0; @@ -169,7 +167,7 @@ static int check_logins (const char *name, const char *maxlogins) * [Tt]: t = RLIMIT_CPU max CPU time (MIN) * [Uu]: u = RLIMIT_NPROC max number of processes * - * NOTE: Remember to extend the "no-limits" string below when adding a new + * NOTE: remember to extend the "no-limits" string below when adding a new * limit... * * Return value: @@ -289,7 +287,7 @@ static int do_user_limits (const char *buf, const char *name) #endif default: /* Only report invalid strings once */ - /* Note: A string can be invalid just because a + /* Note: a string can be invalid just because a * specific (theoretically valid) setting is not * supported by this build. * It is just a warning in syslog anyway. The line @@ -351,11 +349,11 @@ static int setup_user_limits (const char *uname) char tempbuf[1024]; /* init things */ - MEMZERO(buf); - MEMZERO(name); - MEMZERO(limits); - MEMZERO(deflimits); - MEMZERO(tempbuf); + memzero_a(buf); + memzero_a(name); + memzero_a(limits); + memzero_a(deflimits); + memzero_a(tempbuf); /* start the checks */ fil = fopen (LIMITS_FILE, "r"); @@ -366,13 +364,13 @@ static int setup_user_limits (const char *uname) * - '#' (comment) chars only as first chars on a line; * - username must start on first column (or *, or @group) * - * FIXME: A better (smarter) checking should be done + * FIXME: a better (smarter) checking should be done */ while (fgets (buf, 1024, fil) != NULL) { if (strprefix(buf, "#") || strprefix(buf, "\n")) { continue; } - MEMZERO(tempbuf); + memzero_a(tempbuf); /* a valid line should have a username, then spaces, * then limits * we allow the format: @@ -388,7 +386,7 @@ static int setup_user_limits (const char *uname) * account) * @group: the limit applies to the members of the group * - * To clarify: The first entry with matching user name rules, + * To clarify: the first entry with matching user name rules, * everything after it is ignored. If there is no user entry, * the last encountered entry for a matching group rules. * If there is no matching group entry, the default limits rule. @@ -467,7 +465,7 @@ void setup_limits (const struct passwd *info) if (info->pw_uid != 0) { if ((setup_user_limits (info->pw_name) & LOGIN_ERROR_LOGIN) != 0) { (void) fputs (_("Too many logins.\n"), log_get_logfd()); - (void) sleep (2); /* XXX: Should be FAIL_DELAY */ + (void) sleep (2); /* XXX: should be FAIL_DELAY */ exit (EXIT_FAILURE); } } diff --git a/lib/list.c b/lib/list.c index 25735d72..cf918f47 100644 --- a/lib/list.c +++ b/lib/list.c @@ -6,18 +6,18 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" #include -#include "alloc/x/xmalloc.h" +#include "alloc/malloc.h" #include "prototypes.h" #include "defines.h" #include "string/strchr/strchrcnt.h" #include "string/strcmp/streq.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" #include "string/strtok/strsep2ls.h" @@ -53,7 +53,7 @@ add_list(/*@returned@*/ /*@only@*/char **list, const char *member) * old entries, and the new entries as well. */ - tmp = XMALLOC(i + 2, char *); + tmp = xmalloc_T(i + 2, char *); /* * Copy the original list to the new list, then append the @@ -108,7 +108,7 @@ del_list(/*@returned@*/ /*@only@*/char **list, const char *member) * old entries. */ - tmp = XMALLOC(j + 1, char *); + tmp = xmalloc_T(j + 1, char *); /* * Copy the original list except the deleted members to the @@ -144,7 +144,7 @@ dup_list(char *const *list) for (i = 0; NULL != list[i]; i++); - tmp = XMALLOC(i + 1, char *); + tmp = xmalloc_T(i + 1, char *); i = 0; while (NULL != *list) { @@ -157,6 +157,17 @@ dup_list(char *const *list) return tmp; } +/* + * free_list - free input list + */ +void +free_list(char **list) +{ + for (size_t i = 0; list[i] != NULL; i++) + free(list[i]); + list[0] = NULL; +} + /* * Check if member is part of the input list * The input list is not modified, but in order to allow the use of this @@ -203,7 +214,7 @@ comma_to_list(const char *comma) */ n = strchrcnt(members, ',') + 2; - array = XMALLOC(n, char *); + array = xmalloc_T(n, char *); /* * Empty list is special - 0 members, not 1 empty member. --marekm diff --git a/lib/lockpw.c b/lib/lockpw.c index 15e7c8f4..4f357b48 100644 --- a/lib/lockpw.c +++ b/lib/lockpw.c @@ -6,7 +6,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ifndef HAVE_LCKPWDF @@ -56,7 +56,7 @@ int lckpwdf (void) */ if (i == 15) { - pw_unlock (); + pw_unlock (true); return -1; } @@ -78,7 +78,7 @@ int ulckpwdf (void) * Unlock both files. */ - return (pw_unlock () && spw_unlock ())? 0 : -1; + return (pw_unlock (true) && spw_unlock (true))? 0 : -1; } #else extern int ISO_C_forbids_an_empty_translation_unit; diff --git a/lib/log.c b/lib/log.c index 87eab365..1d5a9b20 100644 --- a/lib/log.c +++ b/lib/log.c @@ -7,16 +7,17 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" -#ident "$Id$" - -#include +#include +#include #include #include +#include #include + +#include "attr.h" #include "defines.h" -#include #include "prototypes.h" #include "string/memset/memzero.h" #include "string/strcpy/strncpy.h" @@ -34,7 +35,7 @@ void dolastlog ( struct lastlog *ll, const struct passwd *pw, /*@unique@*/const char *line, - /*@unique@*/const char *host) + MAYBE_UNUSED /*@unique@*/const char *host) { int fd; off_t offset; @@ -45,7 +46,7 @@ void dolastlog ( * If the file does not exist, don't create it. */ - fd = open (LASTLOG_FILE, O_RDWR); + fd = open(_PATH_LASTLOG, O_RDWR); if (-1 == fd) { return; } @@ -55,12 +56,12 @@ void dolastlog ( * for this UID. Negative UID's will create problems, but ... */ - offset = (off_t) pw->pw_uid * sizeof newlog; + offset = (off_t) pw->pw_uid * sizeof(newlog); if (lseek (fd, offset, SEEK_SET) != offset) { SYSLOG ((LOG_WARN, "Can't read last lastlog entry for UID %lu in %s. Entry not updated.", - (unsigned long) pw->pw_uid, LASTLOG_FILE)); + (unsigned long) pw->pw_uid, _PATH_LASTLOG)); (void) close (fd); return; } @@ -71,8 +72,8 @@ void dolastlog ( * the way we read the old one in. */ - if (read (fd, &newlog, sizeof newlog) != (ssize_t) sizeof newlog) { - memzero (&newlog, sizeof newlog); + if (read(fd, &newlog, sizeof(newlog)) != (ssize_t) sizeof(newlog)) { + memzero(&newlog, sizeof(newlog)); } if (NULL != ll) { *ll = newlog; @@ -81,12 +82,12 @@ void dolastlog ( ll_time = newlog.ll_time; ll_time = time(NULL); newlog.ll_time = ll_time; - STRTCPY(newlog.ll_line, line); + strtcpy_a(newlog.ll_line, line); #if HAVE_LL_HOST - STRNCPY(newlog.ll_host, host); + strncpy_a(newlog.ll_host, host); #endif if ( (lseek (fd, offset, SEEK_SET) != offset) - || (write_full(fd, &newlog, sizeof newlog) == -1)) { + || (write_full(fd, &newlog, sizeof(newlog)) == -1)) { goto err_write; } @@ -105,5 +106,5 @@ err_write: err_close: SYSLOG ((LOG_WARN, "Can't write lastlog entry for UID %lu in %s: %m", - (unsigned long) pw->pw_uid, LASTLOG_FILE)); + (unsigned long) pw->pw_uid, _PATH_LASTLOG)); } diff --git a/lib/logind.c b/lib/logind.c index ba7278ff..3ba3341a 100644 --- a/lib/logind.c +++ b/lib/logind.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -14,39 +14,39 @@ #include -int get_session_host (char **out) +int get_session_host (char **out, pid_t main_pid) { - char *host = NULL; - char *session = NULL; - int ret; + char *host = NULL; + char *session = NULL; + int ret; - ret = sd_pid_get_session (getpid(), &session); - if (ret < 0) { - return ret; - } - ret = sd_session_get_remote_host (session, &host); - if (ret < 0) { - goto done; - } + ret = sd_pid_get_session(main_pid, &session); + if (ret < 0) { + return ret; + } + ret = sd_session_get_remote_host (session, &host); + if (ret < 0) { + goto done; + } - *out = host; + *out = host; done: - free (session); - return ret; + free (session); + return ret; } -unsigned long active_sessions_count(const char *name, MAYBE_UNUSED unsigned long limit) +unsigned long active_sessions_count(const char *name, unsigned long) { - struct passwd *pw; - unsigned long count = 0; + struct passwd *pw; + unsigned long count = 0; - pw = prefix_getpwnam(name); - if (pw == NULL) { - return 0; - } + pw = prefix_getpwnam(name); + if (pw == NULL) { + return 0; + } - count = sd_uid_get_sessions(pw->pw_uid, 0, NULL); + count = sd_uid_get_sessions(pw->pw_uid, 0, NULL); - return count; + return count; } diff --git a/lib/loginprompt.c b/lib/loginprompt.c index 91a2b024..18b899f5 100644 --- a/lib/loginprompt.c +++ b/lib/loginprompt.c @@ -7,13 +7,14 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" #include -#include #include +#include +#include #include "attr.h" #include "defines.h" @@ -25,7 +26,8 @@ #include "string/strtok/stpsep.h" -static void login_exit (MAYBE_UNUSED int sig) +static void +login_exit(int) { _exit (EXIT_FAILURE); } @@ -73,7 +75,7 @@ login_prompt(char *name, int namesize) (void) fclose (fp); } } - (void) gethostname (buf, sizeof buf); + (void) gethostname(buf, sizeof(buf)); printf (_("\n%s login: "), buf); (void) fflush (stdout); @@ -82,10 +84,9 @@ login_prompt(char *name, int namesize) * removed. */ - MEMZERO(buf); - if (fgets (buf, sizeof buf, stdin) != buf) { + memzero_a(buf); + if (fgets(buf, sizeof(buf), stdin) == NULL) exit (EXIT_FAILURE); - } if (stpsep(buf, "\n") == NULL) exit(EXIT_FAILURE); diff --git a/lib/mail.c b/lib/mail.c index 968bfa41..aa670a83 100644 --- a/lib/mail.c +++ b/lib/mail.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include "prototypes.h" #include "defines.h" #include @@ -16,7 +16,7 @@ #include #include "getdef.h" -#include "string/sprintf/xaprintf.h" +#include "string/sprintf/aprintf.h" #ident "$Id$" diff --git a/lib/motd.c b/lib/motd.c index a2efc4ea..bcad1dab 100644 --- a/lib/motd.c +++ b/lib/motd.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/myname.c b/lib/myname.c index fab5d6b5..2c2f218d 100644 --- a/lib/myname.c +++ b/lib/myname.c @@ -11,7 +11,7 @@ * */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/nscd.c b/lib/nscd.c index 451a5a36..e2bb44e3 100644 --- a/lib/nscd.c +++ b/lib/nscd.c @@ -1,6 +1,6 @@ /* Author: Peter Vrabec */ -#include +#include "config.h" #ifdef USE_NSCD #include diff --git a/lib/nss.c b/lib/nss.c index d97e0709..f2112d08 100644 --- a/lib/nss.c +++ b/lib/nss.c @@ -1,4 +1,4 @@ -#include +#include "config.h" #include #include @@ -109,14 +109,14 @@ nss_init(const char *nsswitch_path) { fprintf(shadow_logfd, "Using files\n"); goto null_subid; } - SNPRINTF(libname, "libsubid_%s.so", p); + stprintf_a(libname, "libsubid_%s.so", p); h = dlopen(libname, RTLD_LAZY); if (!h) { fprintf(shadow_logfd, "Error opening %s: %s\n", libname, dlerror()); fprintf(shadow_logfd, "Using files\n"); goto null_subid; } - subid_nss = MALLOC(1, struct subid_nss_ops); + subid_nss = malloc_T(1, struct subid_nss_ops); if (!subid_nss) { goto close_lib; } diff --git a/lib/obscure.c b/lib/obscure.c index ad13d50a..c572b96a 100644 --- a/lib/obscure.c +++ b/lib/obscure.c @@ -6,13 +6,14 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #ident "$Id$" #include #include +#include #include "attr.h" #include "prototypes.h" @@ -20,9 +21,9 @@ #include "getdef.h" #include "string/ctype/strtoascii/strtolower.h" #include "string/memset/memzero.h" -#include "string/sprintf/xaprintf.h" +#include "string/sprintf/aprintf.h" #include "string/strcmp/streq.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" #if WITH_LIBBSD == 0 @@ -32,7 +33,8 @@ /* * can't be a palindrome - like `R A D A R' or `M A D A M' */ -static bool palindrome (MAYBE_UNUSED const char *old, const char *new) +static bool +palindrome(const char *new) { size_t i, j; @@ -66,9 +68,8 @@ static bool similar (/*@notnull@*/const char *old, /*@notnull@*/const char *new) } for (i = j = 0; ('\0' != new[i]) && ('\0' != old[i]); i++) { - if (strchr (new, old[i]) != NULL) { + if (strchr(new, old[i])) j++; - } } if (i >= j * 2) { @@ -81,8 +82,7 @@ static bool similar (/*@notnull@*/const char *old, /*@notnull@*/const char *new) static /*@observer@*//*@null@*/const char *password_check ( /*@notnull@*/const char *old, - /*@notnull@*/const char *new, - /*@notnull@*/MAYBE_UNUSED const struct passwd *pwdp) + /*@notnull@*/const char *new) { const char *msg = NULL; char *oldmono, *newmono, *wrapped; @@ -95,7 +95,7 @@ static /*@observer@*//*@null@*/const char *password_check ( oldmono = strtolower(xstrdup(old)); wrapped = xaprintf("%s%s", oldmono, oldmono); - if (palindrome (oldmono, newmono)) { + if (palindrome(newmono)) { msg = _("a palindrome"); } else if (streq(oldmono, newmono)) { msg = _("case changes only"); @@ -113,18 +113,19 @@ static /*@observer@*//*@null@*/const char *password_check ( static /*@observer@*//*@null@*/const char *obscure_msg ( /*@notnull@*/const char *old, - /*@notnull@*/const char *new, - /*@notnull@*/const struct passwd *pwdp) + /*@notnull@*/const char *new) { - size_t maxlen, oldlen, newlen; + int maxlen, minlen; + size_t oldlen, newlen; char *new1, *old1; const char *msg; - const char *result; oldlen = strlen (old); newlen = strlen (new); - if (newlen < (size_t) getdef_num ("PASS_MIN_LEN", 0)) { + obscure_get_range(&minlen, &maxlen); + + if (newlen < (size_t) minlen) { return _("too short"); } @@ -135,55 +136,34 @@ static /*@observer@*//*@null@*/const char *obscure_msg ( return NULL; } - msg = password_check (old, new, pwdp); + msg = password_check(old, new); if (NULL != msg) { return msg; } - result = getdef_str ("ENCRYPT_METHOD"); - if (NULL == result) { + if (maxlen == -1) { + return NULL; + } + /* The traditional crypt() truncates passwords to 8 chars. It is possible to circumvent the above checks by choosing an easy 8-char password and adding some random characters to it... Example: "password$%^&*123". So check it again, this time truncated to the maximum length. Idea from npasswd. --marekm */ - if (getdef_bool ("MD5_CRYPT_ENAB")) { - return NULL; - } - - } else { - - if ( streq(result, "MD5") -#ifdef USE_SHA_CRYPT - || streq(result, "SHA256") - || streq(result, "SHA512") -#endif -#ifdef USE_BCRYPT - || streq(result, "BCRYPT") -#endif -#ifdef USE_YESCRYPT - || streq(result, "YESCRYPT") -#endif - ) { - return NULL; - } - - } - maxlen = getdef_num ("PASS_MAX_LEN", 8); - if ( (oldlen <= maxlen) - && (newlen <= maxlen)) { + if ( (oldlen <= (size_t) maxlen) + && (newlen <= (size_t) maxlen)) { return NULL; } new1 = xstrdup (new); old1 = xstrdup (old); - if (newlen > maxlen) + if (newlen > (size_t) maxlen) stpcpy(&new1[maxlen], ""); - if (oldlen > maxlen) + if (oldlen > (size_t) maxlen) stpcpy(&old1[maxlen], ""); - msg = password_check (old1, new1, pwdp); + msg = password_check(old1, new1); freezero (new1, newlen); freezero (old1, oldlen); @@ -199,9 +179,10 @@ static /*@observer@*//*@null@*/const char *obscure_msg ( * check passwords. */ -bool obscure (const char *old, const char *new, const struct passwd *pwdp) +bool +obscure(const char *old, const char *new) { - const char *msg = obscure_msg (old, new, pwdp); + const char *msg = obscure_msg(old, new); if (NULL != msg) { printf (_("Bad password: %s. "), msg); @@ -209,3 +190,50 @@ bool obscure (const char *old, const char *new, const struct passwd *pwdp) } return true; } + +/* + * obscure_get_range - retrieve min and max password lengths + * + * Returns minimum and maximum allowed lengths of a password + * to pass obscure checks. + */ +void +obscure_get_range(int *minlen, int *maxlen) +{ + int val; + const char *method; + + /* Minimum length is 0, even if -1 is configured. */ + val = getdef_num("PASS_MIN_LEN", 0); + *minlen = val == -1 ? 0 : val; + + /* Maximum password length check is optional. */ + *maxlen = -1; + + if (!getdef_bool("OBSCURE_CHECKS_ENAB")) { + return; + } + + method = getdef_str ("ENCRYPT_METHOD"); + if (NULL == method) { + if (getdef_bool ("MD5_CRYPT_ENAB")) { + return; + } + } else { + if ( streq(method, "MD5") +#ifdef USE_SHA_CRYPT + || streq(method, "SHA256") + || streq(method, "SHA512") +#endif +#ifdef USE_BCRYPT + || streq(method, "BCRYPT") +#endif +#ifdef USE_YESCRYPT + || streq(method, "YESCRYPT") +#endif + ) { + return; + } + } + *maxlen = getdef_num ("PASS_MAX_LEN", 8); +} diff --git a/lib/pam_defs.h b/lib/pam_defs.h index f12e7d4d..b7c19e2d 100644 --- a/lib/pam_defs.h +++ b/lib/pam_defs.h @@ -5,7 +5,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #if __has_include() diff --git a/lib/pam_pass.c b/lib/pam_pass.c index 33536568..5df10f19 100644 --- a/lib/pam_pass.c +++ b/lib/pam_pass.c @@ -6,7 +6,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ifdef USE_PAM diff --git a/lib/pam_pass_non_interactive.c b/lib/pam_pass_non_interactive.c index aa5c29be..054077f3 100644 --- a/lib/pam_pass_non_interactive.c +++ b/lib/pam_pass_non_interactive.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id:$" @@ -27,7 +27,7 @@ static int ni_conv (int num_msg, const struct pam_message **msg, struct pam_response **resp, - MAYBE_UNUSED void *appdata_ptr); + void *); static const struct pam_conv non_interactive_pam_conv = { ni_conv, NULL @@ -38,7 +38,7 @@ static const struct pam_conv non_interactive_pam_conv = { static int ni_conv (int num_msg, const struct pam_message **msg, struct pam_response **resp, - MAYBE_UNUSED void *appdata_ptr) + void *) { struct pam_response *responses; int count; @@ -49,7 +49,7 @@ static int ni_conv (int num_msg, return PAM_CONV_ERR; } - responses = CALLOC (num_msg, struct pam_response); + responses = calloc_T(num_msg, struct pam_response); if (NULL == responses) { return PAM_CONV_ERR; } @@ -78,7 +78,7 @@ static int ni_conv (int num_msg, break; case PAM_TEXT_INFO: if ( (NULL == msg[count]->msg) - || (fprintf (stdout, "%s\n", msg[count]->msg) <0)) { + || (printf("%s\n", msg[count]->msg) <0)) { goto failed_conversation; } responses[count].resp = NULL; diff --git a/lib/port.c b/lib/port.c index 7e63896d..357be218 100644 --- a/lib/port.c +++ b/lib/port.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -148,7 +148,7 @@ next: stpsep(buf, "\n"); - if (STRSEP2ARR(buf, ":", fields) == -1) + if (strsep2arr_a(buf, ":", fields) == -1) goto next; /* @@ -158,7 +158,7 @@ next: * TTY devices. */ port.pt_names = ttys; - if (STRSEP2LS(fields[0], ",", ttys) == -1) + if (strsep2ls_a(fields[0], ",", ttys) == -1) goto next; /* @@ -168,7 +168,7 @@ next: * The last entry in the list is a NULL pointer. */ port.pt_users = users; - if (STRSEP2LS(fields[1], ",", users) == -1) + if (strsep2ls_a(fields[1], ",", users) == -1) goto next; /* @@ -310,7 +310,7 @@ getttyuser(const char *tty, const char *user) setportent(); - while ((port = getportent()) != NULL) { + while (NULL != (port = getportent())) { char **ptn; char **ptu; diff --git a/lib/prefix_flag.c b/lib/prefix_flag.c index a2bac36a..5ca9e64c 100644 --- a/lib/prefix_flag.c +++ b/lib/prefix_flag.c @@ -5,11 +5,13 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" +#include #include + #include #include "atoi/getnum.h" @@ -27,10 +29,12 @@ #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ #include "getdef.h" +#include "shadow/gshadow/gshadow.h" #include "shadowlog.h" -#include "string/sprintf/xaprintf.h" +#include "string/sprintf/aprintf.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" +#include "string/strerrno.h" static char *passwd_db_file = NULL; @@ -39,7 +43,7 @@ static char *group_db_file = NULL; static char *sgroup_db_file = NULL; static char *suid_db_file = NULL; static char *sgid_db_file = NULL; -static char *def_conf_file = NULL; +MAYBE_UNUSED static char *def_conf_file = NULL; static FILE* fp_pwent = NULL; static FILE* fp_grent = NULL; @@ -93,7 +97,7 @@ extern const char* process_prefix_flag (const char* short_opt, int argc, char ** || (setreuid (getuid (), getuid ()) != 0)) { fprintf (log_get_logfd(), _("%s: failed to drop privileges (%s)\n"), - log_get_progname(), strerror (errno)); + log_get_progname(), strerrno()); exit (EXIT_FAILURE); } @@ -115,11 +119,11 @@ extern const char* process_prefix_flag (const char* short_opt, int argc, char ** gr_setdbname(group_db_file); #ifdef SHADOWGRP - sgroup_db_file = xaprintf("%s/%s", prefix, SGROUP_FILE); + sgroup_db_file = xaprintf("%s/%s", prefix, _PATH_GSHADOW); sgr_setdbname(sgroup_db_file); #endif - spw_db_file = xaprintf("%s/%s", prefix, SHADOW_FILE); + spw_db_file = xaprintf("%s/%s", prefix, _PATH_SHADOW); spw_setdbname(spw_db_file); #ifdef ENABLE_SUBIDS @@ -153,7 +157,7 @@ extern struct group *prefix_getgrnam(const char *name) fg = fopen(group_db_file, "rt"); if (!fg) return NULL; - while ((grp = fgetgrent(fg)) != NULL) { + while (NULL != (grp = fgetgrent(fg))) { if (streq(name, grp->gr_name)) break; } @@ -173,7 +177,7 @@ extern struct group *prefix_getgrgid(gid_t gid) fg = fopen(group_db_file, "rt"); if (!fg) return NULL; - while ((grp = fgetgrent(fg)) != NULL) { + while (NULL != (grp = fgetgrent(fg))) { if (gid == grp->gr_gid) break; } @@ -193,7 +197,7 @@ extern struct passwd *prefix_getpwuid(uid_t uid) fg = fopen(passwd_db_file, "rt"); if (!fg) return NULL; - while ((pwd = fgetpwent(fg)) != NULL) { + while (NULL != (pwd = fgetpwent(fg))) { if (uid == pwd->pw_uid) break; } @@ -213,7 +217,7 @@ extern struct passwd *prefix_getpwnam(const char* name) fg = fopen(passwd_db_file, "rt"); if (!fg) return NULL; - while ((pwd = fgetpwent(fg)) != NULL) { + while (NULL != (pwd = fgetpwent(fg))) { if (streq(name, pwd->pw_name)) break; } @@ -256,7 +260,7 @@ extern struct spwd *prefix_getspnam(const char* name) fg = fopen(spw_db_file, "rt"); if (!fg) return NULL; - while ((sp = fgetspent(fg)) != NULL) { + while (NULL != (sp = fgetspent(fg))) { if (streq(name, sp->sp_namp)) break; } diff --git a/lib/prototypes.h b/lib/prototypes.h index d35c38f8..c53f9544 100644 --- a/lib/prototypes.h +++ b/lib/prototypes.h @@ -19,7 +19,7 @@ #ifndef _PROTOTYPES_H #define _PROTOTYPES_H -#include +#include "config.h" #include #include @@ -34,6 +34,8 @@ #include "attr.h" #include "defines.h" #include "commonio.h" +#include "shadow/gshadow/sgrp.h" + /* addgrps.c */ #if !defined(USE_PAM) @@ -92,11 +94,11 @@ void cleanup_report_del_group_gshadow (void *group_name); void cleanup_report_mod_passwd (void *cleanup_info); void cleanup_report_mod_group (void *cleanup_info); void cleanup_report_mod_gshadow (void *cleanup_info); -void cleanup_unlock_group (/*@null@*/void *MAYBE_UNUSED); +void cleanup_unlock_group (void *process_selinux); #ifdef SHADOWGRP -void cleanup_unlock_gshadow (/*@null@*/void *MAYBE_UNUSED); +void cleanup_unlock_gshadow (void *process_selinux); #endif -void cleanup_unlock_passwd (/*@null@*/void *MAYBE_UNUSED); +void cleanup_unlock_passwd (void *process_selinux); /* console.c */ extern bool console (const char *); @@ -153,11 +155,6 @@ extern int getrange (const char *range, /* gettime.c */ extern time_t gettime (void); -/* fputsx.c */ -ATTR_ACCESS(write_only, 1, 2) -extern /*@null@*/char *fgetsx(/*@returned@*/char *restrict, int, FILE *restrict); -extern int fputsx (const char *, FILE *); - /* groupio.c */ extern void __gr_del_entry (const struct commonio_entry *ent); extern /*@observer@*/const struct commonio_db *__gr_get_db (void); @@ -181,7 +178,7 @@ extern void audit_help_open (void); typedef enum { SHADOW_AUDIT_FAILURE = 0, SHADOW_AUDIT_SUCCESS = 1} shadow_audit_result; -extern void audit_logger (int type, const char *pgname, const char *op, +extern void audit_logger (int type, const char *op, const char *name, unsigned int id, shadow_audit_result result); void audit_logger_message (const char *message, shadow_audit_result result); @@ -199,6 +196,7 @@ extern void setup_limits (const struct passwd *); extern /*@only@*/char **add_list (/*@returned@*/ /*@only@*/char **, const char *); extern /*@only@*/char **del_list (/*@returned@*/ /*@only@*/char **, const char *); extern /*@only@*/char **dup_list (char *const *); +extern void free_list (char **); extern bool is_on_list (char *const *list, const char *member); extern /*@only@*/char **comma_to_list (const char *); @@ -303,7 +301,8 @@ extern int do_pam_passwd_non_interactive (const char *pam_service, #endif /* USE_PAM */ /* obscure.c */ -extern bool obscure (const char *, const char *, const struct passwd *); +extern bool obscure (const char *, const char *); +extern void obscure_get_range(int *, int *); /* pam_pass.c */ #ifdef USE_PAM @@ -337,7 +336,7 @@ extern struct spwd *pwd_to_spwd (const struct passwd *); /* pwdcheck.c */ #ifndef USE_PAM -extern void passwd_check (const char *, const char *, const char *); +extern void passwd_check(const char *, const char *); #endif /* pwd_init.c */ @@ -395,17 +394,6 @@ extern void setup (struct passwd *); /* setupenv.c */ extern void setup_env (struct passwd *); -/* sgetgrent.c */ -extern struct group *sgetgrent (const char *buf); - -/* sgetpwent.c */ -extern struct passwd *sgetpwent (const char *buf); - -/* sgetspent.c */ -#ifndef HAVE_SGETSPENT -extern struct spwd *sgetspent (const char *string); -#endif - /* sgroupio.c */ extern void __sgr_del_entry (const struct commonio_entry *ent); extern /*@null@*/ /*@only@*/struct sgrp *__sgr_dup (const struct sgrp *sgent); @@ -468,11 +456,13 @@ extern int user_busy (const char *name, uid_t uid); * @brief Get host for the current session * * @param[out] out Host name + * @param[in] main_pid the PID of the main process (the parent PID if + * the process forked itself) * * @return 0 or a positive integer if the host was obtained properly, * another value on error. */ -extern int get_session_host (char **out); +extern int get_session_host (char **out, pid_t main_pid); #ifndef ENABLE_LOGIND /** * @brief Update or create an utmp entry in utmp, wtmp, utmpw, or wtmpx @@ -480,24 +470,30 @@ extern int get_session_host (char **out); * @param[in] user username * @param[in] tty tty * @param[in] host hostname + * @param[in] main_pid the PID of the main process (the parent PID if + * the process forked itself) * * @return 0 if utmp was updated properly, * 1 on error. */ extern int update_utmp (const char *user, const char *tty, - const char *host); + const char *host, + pid_t main_pid); /** * @brief Update the cumulative failure log * * @param[in] failent_user username * @param[in] tty tty * @param[in] host hostname + * @param[in] main_pid the PID of the main process (the parent PID if + * the process forked itself) * */ extern void record_failure(const char *failent_user, const char *tty, - const char *hostname); + const char *hostname, + pid_t main_pid); #endif /* ENABLE_LOGIND */ /** diff --git a/lib/pwauth.c b/lib/pwauth.c index e2be3923..0f0d2ff7 100644 --- a/lib/pwauth.c +++ b/lib/pwauth.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ifndef USE_PAM #ident "$Id$" @@ -111,7 +111,7 @@ pw_auth(const char *cipher, const char *user) } #endif - SNPRINTF(prompt, cp, user); + stprintf_a(prompt, cp, user); clear = agetpass(prompt); input = (clear == NULL) ? "" : clear; diff --git a/lib/pwd2spwd.c b/lib/pwd2spwd.c index eea95198..ea1bf064 100644 --- a/lib/pwd2spwd.c +++ b/lib/pwd2spwd.c @@ -7,12 +7,11 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" #include -#include "prototypes.h" #include "defines.h" #include @@ -34,24 +33,13 @@ struct spwd *pwd_to_spwd (const struct passwd *pw) sp.sp_namp = pw->pw_name; sp.sp_pwdp = pw->pw_passwd; - { - /* - * Defaults used if there is no pw_age information. - */ - sp.sp_min = 0; - sp.sp_max = 10000; - sp.sp_lstchg = gettime () / DAY; - if (0 == sp.sp_lstchg) { - /* Better disable aging than requiring a password - * change */ - sp.sp_lstchg = -1; - } - } - /* * These fields have no corresponding information in the password * file. They are set to uninitialized values. */ + sp.sp_lstchg = -1; + sp.sp_min = 0; + sp.sp_max = -1; sp.sp_warn = -1; sp.sp_expire = -1; sp.sp_inact = -1; diff --git a/lib/pwd_init.c b/lib/pwd_init.c index b3f94e1b..bd2cfd3f 100644 --- a/lib/pwd_init.c +++ b/lib/pwd_init.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/pwdcheck.c b/lib/pwdcheck.c index 5003d376..cd85aab6 100644 --- a/lib/pwdcheck.c +++ b/lib/pwdcheck.c @@ -5,7 +5,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -20,7 +20,8 @@ #include "pwauth.h" #include "shadowlog.h" -void passwd_check (const char *user, const char *passwd, MAYBE_UNUSED const char *progname) +void +passwd_check(const char *user, const char *passwd) { struct spwd *sp; diff --git a/lib/pwio.c b/lib/pwio.c index 415447d6..57ed4a45 100644 --- a/lib/pwio.c +++ b/lib/pwio.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include @@ -18,6 +18,8 @@ #include "fields.h" #include "prototypes.h" #include "pwio.h" +#include "shadow/passwd/sgetpwent.h" + static /*@null@*/ /*@only@*/void *passwd_dup (const void *ent) { @@ -73,8 +75,6 @@ static struct commonio_ops passwd_ops = { passwd_getname, passwd_parse, passwd_put, - fgets, - fputs, NULL, /* open_hook */ NULL /* close_hook */ }; @@ -156,14 +156,14 @@ int pw_rewind (void) return commonio_next (&passwd_db); } -int pw_close (void) +int pw_close (bool process_selinux) { - return commonio_close (&passwd_db); + return commonio_close (&passwd_db, process_selinux); } -int pw_unlock (void) +int pw_unlock (bool process_selinux) { - return commonio_unlock (&passwd_db); + return commonio_unlock (&passwd_db, process_selinux); } /*@null@*/struct commonio_entry *__pw_get_head (void) diff --git a/lib/pwio.h b/lib/pwio.h index 882a7c7a..0903b8bd 100644 --- a/lib/pwio.h +++ b/lib/pwio.h @@ -14,8 +14,9 @@ #include #include +#include -extern int pw_close (void); +extern int pw_close (bool process_selinux); extern /*@observer@*/ /*@null@*/const struct passwd *pw_locate (const char *name); extern /*@observer@*/ /*@null@*/const struct passwd *pw_locate_uid (uid_t uid); extern int pw_lock (void); @@ -25,7 +26,7 @@ extern /*@observer@*/ /*@null@*/const struct passwd *pw_next (void); extern int pw_open (int mode); extern int pw_remove (const char *name); extern int pw_rewind (void); -extern int pw_unlock (void); +extern int pw_unlock (bool process_selinux); extern int pw_update (const struct passwd *pw); extern int pw_sort (void); diff --git a/lib/pwmem.c b/lib/pwmem.c index 0f4e621c..b86be4b3 100644 --- a/lib/pwmem.c +++ b/lib/pwmem.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -25,7 +25,7 @@ { struct passwd *pw; - pw = CALLOC (1, struct passwd); + pw = calloc_T(1, struct passwd); if (NULL == pw) { return NULL; } diff --git a/lib/readpassphrase.c b/lib/readpassphrase.c index e23960f0..7deab5a6 100644 --- a/lib/readpassphrase.c +++ b/lib/readpassphrase.c @@ -91,7 +91,7 @@ restart: * generate SIGTTOU, so do it *before* installing the signal handlers. */ if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) { - memcpy(&term, &oterm, sizeof(term)); + term = oterm; if (!(flags & RPP_ECHO_ON)) term.c_lflag &= ~(ECHO | ECHONL); #ifdef VSTATUS diff --git a/lib/remove_tree.c b/lib/remove_tree.c index ce07b40c..71173c06 100644 --- a/lib/remove_tree.c +++ b/lib/remove_tree.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/root_flag.c b/lib/root_flag.c index e8a5a6d2..74ee98dd 100644 --- a/lib/root_flag.c +++ b/lib/root_flag.c @@ -5,7 +5,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -18,6 +18,7 @@ #include "shadowlog.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" +#include "string/strerrno.h" #include @@ -77,7 +78,7 @@ static void change_root (const char* newroot) if ( (setregid (getgid (), getgid ()) != 0) || (setreuid (getuid (), getuid ()) != 0)) { fprintf (log_get_logfd(), _("%s: failed to drop privileges (%s)\n"), - log_get_progname(), strerror (errno)); + log_get_progname(), strerrno()); exit (EXIT_FAILURE); } @@ -91,21 +92,21 @@ static void change_root (const char* newroot) if (access (newroot, F_OK) != 0) { fprintf(log_get_logfd(), _("%s: cannot access chroot directory %s: %s\n"), - log_get_progname(), newroot, strerror (errno)); + log_get_progname(), newroot, strerrno()); exit (E_BAD_ARG); } if (chroot (newroot) != 0) { fprintf(log_get_logfd(), _("%s: unable to chroot to directory %s: %s\n"), - log_get_progname(), newroot, strerror (errno)); + log_get_progname(), newroot, strerrno()); exit (E_BAD_ARG); } if (chdir ("/") != 0) { fprintf(log_get_logfd(), _("%s: cannot chdir in chroot directory %s: %s\n"), - log_get_progname(), newroot, strerror (errno)); + log_get_progname(), newroot, strerrno()); exit (E_BAD_ARG); } } diff --git a/lib/run_part.c b/lib/run_part.c index 745dd354..f3ac46db 100644 --- a/lib/run_part.c +++ b/lib/run_part.c @@ -1,4 +1,4 @@ -#include +#include "config.h" #include #include @@ -14,6 +14,7 @@ #include "run_part.h" #include "shadowlog_internal.h" #include "string/sprintf/aprintf.h" +#include "string/strerrno.h" static int run_part(char *script_path, const char *name, const char *action) @@ -25,14 +26,14 @@ static int run_part(char *script_path, const char *name, const char *action) pid=fork(); if (pid==-1) { - fprintf(shadow_logfd, "fork: %s\n", strerror(errno)); + fprintf(shadow_logfd, "fork: %s\n", strerrno()); return 1; } if (pid==0) { setenv("ACTION",action,1); setenv("SUBJECT",name,1); execv(script_path,args); - fprintf(shadow_logfd, "execv: %s\n", strerror(errno)); + fprintf(shadow_logfd, "execv: %s\n", strerrno()); _exit(1); } @@ -41,7 +42,7 @@ static int run_part(char *script_path, const char *name, const char *action) return (wait_status); } - fprintf(shadow_logfd, "waitpid: %s\n", strerror(errno)); + fprintf(shadow_logfd, "wait: %s\n", strerrno()); return (1); } @@ -63,7 +64,7 @@ int run_parts(const char *directory, const char *name, const char *action) s = aprintf("%s/%s", directory, namelist[n]->d_name); if (s == NULL) { - fprintf(shadow_logfd, "aprintf: %s\n", strerror(errno)); + fprintf(shadow_logfd, "aprintf: %s\n", strerrno()); for (; n +#include "config.h" #ident "$Id$" diff --git a/lib/search/cmp/cmp.c b/lib/search/cmp/cmp.c index 5677b851..34c4ac71 100644 --- a/lib/search/cmp/cmp.c +++ b/lib/search/cmp/cmp.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "search/cmp/cmp.h" diff --git a/lib/search/cmp/cmp.h b/lib/search/cmp/cmp.h index 18687d44..d9ed1ab0 100644 --- a/lib/search/cmp/cmp.h +++ b/lib/search/cmp/cmp.h @@ -6,16 +6,16 @@ #define SHADOW_INCLUDE_LIB_SEARCH_CMP_CMP_H_ -#include +#include "config.h" -#define CMP(TYPE) \ +#define CMP(T) \ ( \ - _Generic((TYPE) 0, \ - int *: cmp_int, \ - long *: cmp_long, \ - unsigned int *: cmp_uint, \ - unsigned long *: cmp_ulong \ + _Generic((T){0}, \ + int: cmp_int, \ + long: cmp_long, \ + unsigned int: cmp_uint, \ + unsigned long: cmp_ulong \ ) \ ) diff --git a/lib/search/l/lfind.c b/lib/search/l/lfind.c index b41ea10a..2d55709f 100644 --- a/lib/search/l/lfind.c +++ b/lib/search/l/lfind.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "search/l/lfind.h" diff --git a/lib/search/l/lfind.h b/lib/search/l/lfind.h index ddbadb1d..7bbd16e0 100644 --- a/lib/search/l/lfind.h +++ b/lib/search/l/lfind.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause @@ -6,27 +6,26 @@ #define SHADOW_INCLUDE_LIB_SEARCH_L_LFIND_H_ -#include +#include "config.h" #include #include #include "search/cmp/cmp.h" -#include "typetraits.h" - -#include +#include "sizeof.h" -#define LFIND(k, a, n) \ +// lfind_T - linear find type-safe +#define lfind_T(T, ...) lfind_T_(typeas(T), __VA_ARGS__) +#define lfind_T_(T, k, a, n, cmp) \ ({ \ - __auto_type k_ = k; \ - __auto_type a_ = a; \ - \ - static_assert(is_same_typeof(k_, a_), ""); \ - \ - (typeof(k_)) lfind_(k_, a_, n, sizeof(*k_), CMP(typeof(k_))); \ + _Generic(k, T *: (void)0, const T *: (void)0); \ + _Generic(a, T *: (void)0, const T *: (void)0); \ + (T *){lfind_(k, a, n, sizeof(T), cmp)}; \ }) +#define LFIND(T, ...) lfind_T(T, __VA_ARGS__, CMP(T)) + inline void *lfind_(const void *k, const void *a, size_t n, size_t ksize, typeof(int (const void *k, const void *elt)) *cmp); diff --git a/lib/search/l/lsearch.c b/lib/search/l/lsearch.c index 0d790cec..c3576467 100644 --- a/lib/search/l/lsearch.c +++ b/lib/search/l/lsearch.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "search/l/lsearch.h" diff --git a/lib/search/l/lsearch.h b/lib/search/l/lsearch.h index 7ee4c9bf..04337c31 100644 --- a/lib/search/l/lsearch.h +++ b/lib/search/l/lsearch.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause @@ -6,25 +6,24 @@ #define SHADOW_INCLUDE_LIB_SEARCH_L_LSEARCH_H_ -#include +#include "config.h" #include #include "search/cmp/cmp.h" -#include "typetraits.h" - -#include +#include "sizeof.h" -#define LSEARCH(k, a, n) \ -({ \ - __auto_type k_ = k; \ - __auto_type a_ = a; \ - \ - static_assert(is_same_typeof(k_, a_), ""); \ - \ - (typeof(k_)) lsearch(k_, a_, n, sizeof(*k_), CMP(typeof(k_)));\ -}) +// lsearch_T - linear search-and-insert type-safe +#define lsearch_T(T, ...) lsearch_T_(typeas(T), __VA_ARGS__) +#define lsearch_T_(T, k, a, n, cmp) do \ +{ \ + _Generic(k, T *: (void)0, const T *: (void)0); \ + _Generic(a, T *: (void)0); \ + lsearch(k, a, n, sizeof(T), cmp); \ +} while (0) + +#define LSEARCH(T, ...) lsearch_T(T, __VA_ARGS__, CMP(T)) #endif // include guard diff --git a/lib/search/sort/qsort.c b/lib/search/sort/qsort.c index 362d43d7..dec9141f 100644 --- a/lib/search/sort/qsort.c +++ b/lib/search/sort/qsort.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "search/sort/qsort.h" diff --git a/lib/search/sort/qsort.h b/lib/search/sort/qsort.h index 962dba24..de1ad71d 100644 --- a/lib/search/sort/qsort.h +++ b/lib/search/sort/qsort.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause @@ -6,20 +6,23 @@ #define SHADOW_INCLUDE_LIB_SEARCH_SORT_QSORT_H_ -#include +#include "config.h" #include #include "search/cmp/cmp.h" -#include "typetraits.h" +#include "sizeof.h" -#define QSORT(a, n) do \ +// qsort_T - sort type-safe +#define qsort_T(T, ...) qsort_T_(typeas(T), __VA_ARGS__) +#define qsort_T_(T, a, n, cmp) do \ { \ - __auto_type p_ = a; \ - \ - qsort(p_, n, sizeof(*p_), CMP(typeof(p_))); \ + _Generic(a, T *: (void)0); \ + qsort(a, n, sizeof(T), cmp); \ } while (0) +#define QSORT(T, ...) qsort_T(T, __VA_ARGS__, CMP(T)) + #endif // include guard diff --git a/lib/selinux.c b/lib/selinux.c index 7f279e94..0f6ffaf7 100644 --- a/lib/selinux.c +++ b/lib/selinux.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ifdef WITH_SELINUX @@ -17,6 +17,7 @@ #include "prototypes.h" #include "shadowlog_internal.h" #include "string/sprintf/aprintf.h" +#include "string/strerrno.h" static bool selinux_checked = false; @@ -192,10 +193,10 @@ int check_selinux_permit (const char *perm_name) if (getprevcon_raw (&user_context_raw) != 0) { fprintf (shadow_logfd, _("%s: can not get previous SELinux process context: %s\n"), - shadow_progname, strerror (errno)); + shadow_progname, strerrno()); SYSLOG ((LOG_WARN, "can not get previous SELinux process context: %s", - strerror (errno))); + strerrno())); return (security_getenforce () != 0); } diff --git a/lib/semanage.c b/lib/semanage.c index 221a0c43..e20fea6e 100644 --- a/lib/semanage.c +++ b/lib/semanage.c @@ -5,7 +5,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ifdef WITH_SELINUX @@ -28,7 +28,7 @@ format_attr(printf, 3, 4) -static void semanage_error_callback (MAYBE_UNUSED void *varg, +static void semanage_error_callback (void *, semanage_handle_t *handle, const char *fmt, ...) { diff --git a/lib/setugid.c b/lib/setugid.c index cfe63e00..3a7191c6 100644 --- a/lib/setugid.c +++ b/lib/setugid.c @@ -11,7 +11,7 @@ * Separated from setup.c. --marekm */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/setupenv.c b/lib/setupenv.c index 8aee2121..26322163 100644 --- a/lib/setupenv.c +++ b/lib/setupenv.c @@ -11,11 +11,12 @@ * Separated from setup.c. --marekm */ -#include +#include "config.h" #ident "$Id$" #include +#include #include #include #include @@ -26,10 +27,10 @@ #include #include "getdef.h" #include "shadowlog.h" -#include "string/sprintf/xaprintf.h" +#include "string/sprintf/aprintf.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" #include "string/strspn/stpspn.h" #include "string/strtok/stpsep.h" @@ -55,7 +56,7 @@ static void read_env_file (const char *filename) if (NULL == fp) { return; } - while (fgets (buf, (int)(sizeof buf), fp) == buf) { + while (fgets(buf, sizeof(buf), fp) != NULL) { if (stpsep(buf, "\n") == NULL) break; @@ -235,7 +236,7 @@ void setup_env (struct passwd *info) if (NULL == cp) { /* not specified, use a minimal default */ addenv ((info->pw_uid == 0) ? "PATH=/sbin:/bin:/usr/sbin:/usr/bin" : "PATH=/bin:/usr/bin", NULL); - } else if (strchr (cp, '=')) { + } else if (strchr(cp, '=')) { /* specified as name=value (PATH=...) */ addenv (cp, NULL); } else { diff --git a/lib/sgroupio.c b/lib/sgroupio.c index ef82976d..ad3adc34 100644 --- a/lib/sgroupio.c +++ b/lib/sgroupio.c @@ -8,11 +8,11 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ifdef SHADOWGRP -#ident "$Id$" +#include #include "alloc/calloc.h" #include "alloc/malloc.h" @@ -22,6 +22,10 @@ #include "fields.h" #include "getdef.h" #include "sgroupio.h" +#include "shadow/gshadow/gshadow.h" +#include "shadow/gshadow/putsgent.h" +#include "shadow/gshadow/sgetsgent.h" +#include "shadow/gshadow/sgrp.h" #include "string/memset/memzero.h" @@ -30,7 +34,7 @@ struct sgrp *sg; int i; - sg = CALLOC (1, struct sgrp); + sg = calloc_T(1, struct sgrp); if (NULL == sg) { return NULL; } @@ -54,7 +58,7 @@ for (i = 0; NULL != sgent->sg_adm[i]; i++); /*@-mustfreeonly@*/ - sg->sg_adm = MALLOC(i + 1, char *); + sg->sg_adm = malloc_T(i + 1, char *); /*@=mustfreeonly@*/ if (NULL == sg->sg_adm) { free (sg->sg_passwd); @@ -79,7 +83,7 @@ for (i = 0; NULL != sgent->sg_mem[i]; i++); /*@-mustfreeonly@*/ - sg->sg_mem = MALLOC(i + 1, char *); + sg->sg_mem = malloc_T(i + 1, char *); /*@=mustfreeonly@*/ if (NULL == sg->sg_mem) { for (i = 0; NULL != sg->sg_adm[i]; i++) { @@ -198,14 +202,12 @@ static struct commonio_ops gshadow_ops = { gshadow_getname, gshadow_parse, gshadow_put, - fgetsx, - fputsx, NULL, /* open_hook */ NULL /* close_hook */ }; static struct commonio_db gshadow_db = { - SGROUP_FILE, /* filename */ + _PATH_GSHADOW, /* filename */ &gshadow_ops, /* ops */ NULL, /* fp */ #ifdef WITH_SELINUX @@ -276,14 +278,14 @@ int sgr_rewind (void) return commonio_next (&gshadow_db); } -int sgr_close (void) +int sgr_close (bool process_selinux) { - return commonio_close (&gshadow_db); + return commonio_close (&gshadow_db, process_selinux); } -int sgr_unlock (void) +int sgr_unlock (bool process_selinux) { - return commonio_unlock (&gshadow_db); + return commonio_unlock (&gshadow_db, process_selinux); } void __sgr_set_changed (void) diff --git a/lib/sgroupio.h b/lib/sgroupio.h index 3474a985..567e380a 100644 --- a/lib/sgroupio.h +++ b/lib/sgroupio.h @@ -12,7 +12,13 @@ #ifndef _SGROUPIO_H #define _SGROUPIO_H -extern int sgr_close (void); + +#include "config.h" + +#include "shadow/gshadow/sgrp.h" + + +extern int sgr_close (bool process_selinux); extern bool sgr_file_present (void); extern /*@observer@*/ /*@null@*/const struct sgrp *sgr_locate (const char *name); extern int sgr_lock (void); @@ -22,7 +28,7 @@ extern /*@null@*/const struct sgrp *sgr_next (void); extern int sgr_open (int mode); extern int sgr_remove (const char *name); extern int sgr_rewind (void); -extern int sgr_unlock (void); +extern int sgr_unlock (bool process_selinux); extern int sgr_update (const struct sgrp *sg); extern int sgr_sort (void); diff --git a/lib/sgetgrent.c b/lib/shadow/group/sgetgrent.c similarity index 74% rename from lib/sgetgrent.c rename to lib/shadow/group/sgetgrent.c index 52653948..2a13091e 100644 --- a/lib/sgetgrent.c +++ b/lib/shadow/group/sgetgrent.c @@ -1,15 +1,14 @@ -/* - * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause -#include -#ident "$Id$" +#include "config.h" + +#include "shadow/group/sgetgrent.h" #include #include @@ -56,6 +55,7 @@ list(char *s) } +// from-string get group entry struct group * sgetgrent(const char *s) { @@ -71,7 +71,7 @@ sgetgrent(const char *s) stpsep(dup, "\n"); - if (STRSEP2ARR(dup, ":", fields) == -1) + if (strsep2arr_a(dup, ":", fields) == -1) return NULL; if (streq(fields[2], "")) diff --git a/lib/shadow/group/sgetgrent.h b/lib/shadow/group/sgetgrent.h new file mode 100644 index 00000000..fcf01660 --- /dev/null +++ b/lib/shadow/group/sgetgrent.h @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GROUP_SGETGRENT_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GROUP_SGETGRENT_H_ + + +#include "config.h" + +#include + + +struct group *sgetgrent(const char *s); + + +#endif // include guard diff --git a/lib/shadow/grp/agetgroups.c b/lib/shadow/grp/agetgroups.c index 9bc47cc6..a1f3a409 100644 --- a/lib/shadow/grp/agetgroups.c +++ b/lib/shadow/grp/agetgroups.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "shadow/grp/agetgroups.h" diff --git a/lib/shadow/grp/agetgroups.h b/lib/shadow/grp/agetgroups.h index 43177556..8c1c2f95 100644 --- a/lib/shadow/grp/agetgroups.h +++ b/lib/shadow/grp/agetgroups.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_SHADOW_GRP_AGETGROUPS_H_ -#include +#include "config.h" #include #include @@ -34,7 +34,9 @@ agetgroups(size_t *ngids) if (n == -1) return NULL; - gids = MALLOC(n, gid_t); + n = n ?: 1; + + gids = malloc_T(n, gid_t); if (gids == NULL) return NULL; diff --git a/lib/shadow/gshadow/endsgent.c b/lib/shadow/gshadow/endsgent.c new file mode 100644 index 00000000..5cfb2d4d --- /dev/null +++ b/lib/shadow/gshadow/endsgent.c @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008-2009, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "shadow/gshadow/endsgent.h" + +#include +#include + +#include "shadow/gshadow/gshadow.h" + + +#if defined(SHADOWGRP) && !__has_include() +// end-working-with shadow group entries +void +endsgent(void) +{ + if (NULL != gshadow) { + fclose(gshadow); + } + + gshadow = NULL; +} +#endif diff --git a/lib/shadow/gshadow/endsgent.h b/lib/shadow/gshadow/endsgent.h new file mode 100644 index 00000000..b1cde28c --- /dev/null +++ b/lib/shadow/gshadow/endsgent.h @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_ENDSGENT_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_ENDSGENT_H_ + + +#include "config.h" + + +#if __has_include() +# include +#else +void endsgent(void); +#endif + + +#endif // include guard diff --git a/lib/shadow/gshadow/fgetsgent.c b/lib/shadow/gshadow/fgetsgent.c new file mode 100644 index 00000000..0af9c601 --- /dev/null +++ b/lib/shadow/gshadow/fgetsgent.c @@ -0,0 +1,60 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008-2009, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "shadow/gshadow/fgetsgent.h" + +#include +#include +#include + +#include "alloc/malloc.h" +#include "alloc/realloc.h" +#include "defines.h" +#include "prototypes.h" +#include "shadow/gshadow/sgetsgent.h" +#include "shadow/gshadow/sgrp.h" +#include "string/strtok/stpsep.h" + + +/* + * fgetsgent - convert next line in stream to (struct sgrp) + * + * fgetsgent() reads the next line from the provided stream and + * converts it to a (struct sgrp). NULL is returned on EOF. + */ +#if defined(SHADOWGRP) && !__has_include() +// from-FILE get-next shadow group entry +struct sgrp * +fgetsgent(FILE *fp) +{ + char *buf; + size_t buflen; + struct sgrp *sg; + + if (NULL == fp) { + return NULL; + } + + buf = NULL; + buflen = 0; + if (getline(&buf, &buflen, fp) == -1) + goto fail; + if (stpsep(buf, "\n") == NULL) + goto fail; + + sg = sgetsgent(buf); + + free(buf); + return sg; +fail: + free(buf); + return NULL; +} +#endif diff --git a/lib/shadow/gshadow/fgetsgent.h b/lib/shadow/gshadow/fgetsgent.h new file mode 100644 index 00000000..e40fbbd9 --- /dev/null +++ b/lib/shadow/gshadow/fgetsgent.h @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_FGETSGENT_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_FGETSGENT_H_ + + +#include "config.h" + +#include + +#include "shadow/gshadow/sgrp.h" + + +#if __has_include() +# include +#else +struct sgrp *fgetsgent(FILE *stream); +#endif + + +#endif // include guard diff --git a/lib/shadow/gshadow/getsgent.c b/lib/shadow/gshadow/getsgent.c new file mode 100644 index 00000000..0e4c5597 --- /dev/null +++ b/lib/shadow/gshadow/getsgent.c @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008-2009, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "shadow/gshadow/getsgent.h" + +#include + +#include "shadow/gshadow/fgetsgent.h" +#include "shadow/gshadow/gshadow.h" +#include "shadow/gshadow/setsgent.h" +#include "shadow/gshadow/sgrp.h" + + +#if defined(SHADOWGRP) && !__has_include() +// get-next shadow group entry +struct sgrp * +getsgent(void) +{ + if (NULL == gshadow) { + setsgent (); + } + return fgetsgent(gshadow); +} +#endif diff --git a/lib/shadow/gshadow/getsgent.h b/lib/shadow/gshadow/getsgent.h new file mode 100644 index 00000000..6107daaa --- /dev/null +++ b/lib/shadow/gshadow/getsgent.h @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_GETSGENT_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_GETSGENT_H_ + + +#include "config.h" + +#include "shadow/gshadow/sgrp.h" + + +#if __has_include() +# include +#else +struct sgrp *getsgent(void); +#endif + + +#endif // include guard diff --git a/lib/shadow/gshadow/getsgnam.c b/lib/shadow/gshadow/getsgnam.c new file mode 100644 index 00000000..86fb9ad4 --- /dev/null +++ b/lib/shadow/gshadow/getsgnam.c @@ -0,0 +1,41 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008-2009, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "shadow/gshadow/getsgnam.h" + +#include +#include + +#include "defines.h" +#include "shadow/gshadow/getsgent.h" +#include "shadow/gshadow/setsgent.h" +#include "shadow/gshadow/sgrp.h" + + +/* + * getsgnam - get a shadow group entry by name + */ +#if defined(SHADOWGRP) && !__has_include() +// get shadow group entry-by-name +struct sgrp * +getsgnam(const char *name) +{ + struct sgrp *sgrp; + + setsgent (); + + while (NULL != (sgrp = getsgent ())) { + if (strcmp (name, sgrp->sg_namp) == 0) { + break; + } + } + return sgrp; +} +#endif diff --git a/lib/shadow/gshadow/getsgnam.h b/lib/shadow/gshadow/getsgnam.h new file mode 100644 index 00000000..f4acc3c4 --- /dev/null +++ b/lib/shadow/gshadow/getsgnam.h @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_GETSGNAM_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_GETSGNAM_H_ + + +#include "config.h" + +#include "shadow/gshadow/sgrp.h" + + +#if __has_include() +# include +#else +struct sgrp *getsgnam(const char *); +#endif + + +#endif // include guard diff --git a/lib/shadow/gshadow/gshadow.c b/lib/shadow/gshadow/gshadow.c new file mode 100644 index 00000000..1fa0fe5f --- /dev/null +++ b/lib/shadow/gshadow/gshadow.c @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008-2009, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "shadow/gshadow/gshadow.h" + +#include +#include + + +FILE *gshadow = NULL; diff --git a/lib/shadow/gshadow/gshadow.h b/lib/shadow/gshadow/gshadow.h new file mode 100644 index 00000000..42f74823 --- /dev/null +++ b/lib/shadow/gshadow/gshadow.h @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_GSHADOW_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_GSHADOW_H_ + + +#include "config.h" + +#include +#include + + +#ifndef _PATH_GSHADOW +# define _PATH_GSHADOW "/etc/gshadow" +#endif + + +extern FILE *gshadow; + + +#endif // include guard diff --git a/lib/shadow/gshadow/putsgent.c b/lib/shadow/gshadow/putsgent.c new file mode 100644 index 00000000..7a7b9872 --- /dev/null +++ b/lib/shadow/gshadow/putsgent.c @@ -0,0 +1,95 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008-2009, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "shadow/gshadow/putsgent.h" + +#include +#include +#include +#include + +#include "alloc/malloc.h" +#include "prototypes.h" +#include "shadow/gshadow/sgrp.h" + + +/* + * putsgent - output shadow group entry in text form + * + * putsgent() converts the contents of a (struct sgrp) to text and + * writes the result to the given stream. This is the logical + * opposite of fgetsgent. + */ +#if defined(SHADOWGRP) && !__has_include() +// put shadow group entry +int +putsgent(const struct sgrp *sgrp, FILE *fp) +{ + char *buf, *cp; + int i; + size_t size; + + if ((NULL == fp) || (NULL == sgrp)) { + return -1; + } + + /* calculate the required buffer size */ + size = strlen (sgrp->sg_namp) + strlen (sgrp->sg_passwd) + 10; + for (i = 0; (NULL != sgrp->sg_adm) && (NULL != sgrp->sg_adm[i]); i++) { + size += strlen (sgrp->sg_adm[i]) + 1; + } + for (i = 0; (NULL != sgrp->sg_mem) && (NULL != sgrp->sg_mem[i]); i++) { + size += strlen (sgrp->sg_mem[i]) + 1; + } + + buf = malloc_T(size, char); + if (NULL == buf) { + return -1; + } + cp = buf; + + /* + * Copy the group name and passwd. + */ + cp = stpcpy(stpcpy(cp, sgrp->sg_namp), ":"); + cp = stpcpy(stpcpy(cp, sgrp->sg_passwd), ":"); + + /* + * Copy the administrators, separating each from the other + * with a ",". + */ + for (i = 0; NULL != sgrp->sg_adm[i]; i++) { + if (i > 0) + cp = stpcpy(cp, ","); + + cp = stpcpy(cp, sgrp->sg_adm[i]); + } + cp = stpcpy(cp, ":"); + + /* + * Now do likewise with the group members. + */ + for (i = 0; NULL != sgrp->sg_mem[i]; i++) { + if (i > 0) + cp = stpcpy(cp, ","); + + cp = stpcpy(cp, sgrp->sg_mem[i]); + } + stpcpy(cp, "\n"); + + if (fputs(buf, fp) == EOF) { + free (buf); + return -1; + } + + free (buf); + return 0; +} +#endif diff --git a/lib/shadow/gshadow/putsgent.h b/lib/shadow/gshadow/putsgent.h new file mode 100644 index 00000000..22ed38ea --- /dev/null +++ b/lib/shadow/gshadow/putsgent.h @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_PUTSGENT_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_PUTSGENT_H_ + + +#include "config.h" + +#include + +#include "shadow/gshadow/sgrp.h" + + +#if __has_include() +# include +#else +int putsgent(const struct sgrp *sgrp, FILE *fp); +#endif + + +#endif // include guard diff --git a/lib/shadow/gshadow/setsgent.c b/lib/shadow/gshadow/setsgent.c new file mode 100644 index 00000000..73be7790 --- /dev/null +++ b/lib/shadow/gshadow/setsgent.c @@ -0,0 +1,31 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008-2009, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "shadow/gshadow/setsgent.h" + +#include +#include +#include + +#include "shadow/gshadow/gshadow.h" + + +#if defined(SHADOWGRP) && !__has_include() +// set-resources-for-working-with shadow group entries +void +setsgent(void) +{ + if (NULL != gshadow) { + rewind(gshadow); + } else { + gshadow = fopen(_PATH_GSHADOW, "re"); + } +} +#endif diff --git a/lib/shadow/gshadow/setsgent.h b/lib/shadow/gshadow/setsgent.h new file mode 100644 index 00000000..2c4435e7 --- /dev/null +++ b/lib/shadow/gshadow/setsgent.h @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_SETSGENT_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_SETSGENT_H_ + + +#include "config.h" + + +#if __has_include() +# include +#else +void setsgent(void); +#endif + + +#endif // include guard diff --git a/lib/shadow/gshadow/sgetsgent.c b/lib/shadow/gshadow/sgetsgent.c new file mode 100644 index 00000000..a239b45a --- /dev/null +++ b/lib/shadow/gshadow/sgetsgent.c @@ -0,0 +1,75 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008-2009, Nicolas François +// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "shadow/gshadow/sgetsgent.h" + +#include +#include +#include + +#include "shadow/gshadow/sgrp.h" +#include "string/strcmp/streq.h" +#include "string/strtok/astrsep2ls.h" +#include "string/strtok/stpsep.h" +#include "string/strtok/strsep2arr.h" + + +#if defined(SHADOWGRP) && !__has_include() +static struct sgrp sgroup = {}; + + +static char **build_list(char *s); + + +// from-string get shadow group entry +struct sgrp * +sgetsgent(const char *s) +{ + static char *dup = NULL; + + char *fields[4]; + + free(dup); + dup = strdup(s); + if (dup == NULL) + return NULL; + + stpsep(dup, "\n"); + + if (strsep2arr_a(dup, ":", fields) == -1) + return NULL; + + sgroup.sg_namp = fields[0]; + sgroup.sg_passwd = fields[1]; + + free(sgroup.sg_adm); + free(sgroup.sg_mem); + + sgroup.sg_adm = build_list(fields[2]); + sgroup.sg_mem = build_list(fields[3]); + + return &sgroup; +} + + +static char ** +build_list(char *s) +{ + char **l; + size_t n; + + l = xastrsep2ls(s, ",", &n); + + if (streq(l[n-1], "")) + l[n-1] = NULL; + + return l; +} +#endif diff --git a/lib/shadow/gshadow/sgetsgent.h b/lib/shadow/gshadow/sgetsgent.h new file mode 100644 index 00000000..65fda800 --- /dev/null +++ b/lib/shadow/gshadow/sgetsgent.h @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_SGETSGENT_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_SGETSGENT_H_ + + +#include "config.h" + +#include "shadow/gshadow/sgrp.h" + + +#if __has_include() +# include +#else +struct sgrp *sgetsgent(const char *); +#endif + + +#endif // include guard diff --git a/lib/shadow/gshadow/sgrp.c b/lib/shadow/gshadow/sgrp.c new file mode 100644 index 00000000..5c0d186b --- /dev/null +++ b/lib/shadow/gshadow/sgrp.c @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008-2009, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "shadow/gshadow/sgrp.h" diff --git a/lib/shadow/gshadow/sgrp.h b/lib/shadow/gshadow/sgrp.h new file mode 100644 index 00000000..ae63f2e5 --- /dev/null +++ b/lib/shadow/gshadow/sgrp.h @@ -0,0 +1,27 @@ +// SPDX-FileCopyrightText: 1988-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1997, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_SGRP_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_GSHADOW_SGRP_H_ + + +#include "config.h" + + +#if __has_include() +# include +#else +struct sgrp { + char *sg_namp; /* group name */ + char *sg_passwd; /* group password */ + char **sg_adm; /* group administrator list */ + char **sg_mem; /* group membership list */ +}; +#endif + + +#endif // include guard diff --git a/lib/sgetpwent.c b/lib/shadow/passwd/sgetpwent.c similarity index 75% rename from lib/sgetpwent.c rename to lib/shadow/passwd/sgetpwent.c index 370fd215..73473e68 100644 --- a/lib/sgetpwent.c +++ b/lib/shadow/passwd/sgetpwent.c @@ -1,15 +1,14 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ +// SPDX-FileCopyrightText: 1989-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008, Nicolas François +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause -#include -#ident "$Id$" +#include "config.h" + +#include "shadow/passwd/sgetpwent.h" #include #include @@ -34,10 +33,11 @@ * presence of the correct number of colons. Any failing tests result * in a NULL pointer being returned. * - * NOTE: This function uses hard-coded string scanning functions for + * NOTE: this function uses hard-coded string scanning functions for * performance reasons. I am going to come up with some conditional * compilation glarp to improve on this in the future. */ +// from-string get pasword entry struct passwd * sgetpwent(const char *s) { @@ -53,7 +53,7 @@ sgetpwent(const char *s) stpsep(dup, "\n"); - if (STRSEP2ARR(dup, ":", fields) == -1) + if (strsep2arr_a(dup, ":", fields) == -1) return NULL; /* @@ -85,4 +85,3 @@ sgetpwent(const char *s) return &pwent; } - diff --git a/lib/shadow/passwd/sgetpwent.h b/lib/shadow/passwd/sgetpwent.h new file mode 100644 index 00000000..7b82a5ce --- /dev/null +++ b/lib/shadow/passwd/sgetpwent.h @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_PASSWD_SGETPWENT_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_PASSWD_SGETPWENT_H_ + + +#include "config.h" + +#include + + +struct passwd *sgetpwent(const char *s); + + +#endif // include guard diff --git a/lib/sgetspent.c b/lib/shadow/shadow/sgetspent.c similarity index 87% rename from lib/sgetspent.c rename to lib/shadow/shadow/sgetspent.c index 2c620aef..bd778cdc 100644 --- a/lib/sgetspent.c +++ b/lib/shadow/shadow/sgetspent.c @@ -1,27 +1,24 @@ -/* - * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh - * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz - * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko - * SPDX-FileCopyrightText: 2009 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ +// SPDX-FileCopyrightText: 1989-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2005, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2009, Nicolas François +// SPDX-FileCopyrightText: 2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause -#include -/* Newer versions of Linux libc already have shadow support. */ +#include "config.h" + +#include "shadow/shadow/sgetspent.h" + #ifndef HAVE_SGETSPENT -#ident "$Id$" - #include #include #include #include #include -#include "atoi/a2i/a2s.h" -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "defines.h" #include "prototypes.h" #include "shadowlog_internal.h" diff --git a/lib/shadow/shadow/sgetspent.h b/lib/shadow/shadow/sgetspent.h new file mode 100644 index 00000000..4f88d08a --- /dev/null +++ b/lib/shadow/shadow/sgetspent.h @@ -0,0 +1,19 @@ +// SPDX-FileCopyrightText: 2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_SHADOW_SHADOW_SGETSPENT_H_ +#define SHADOW_INCLUDE_LIB_SHADOW_SHADOW_SGETSPENT_H_ + + +#include "config.h" + +#include + + +#if !defined(HAVE_SGETSPENT) +struct spwd *sgetspent(const char *s); +#endif + + +#endif // include guard diff --git a/lib/shadowio.c b/lib/shadowio.c index 8b1c1d2c..bf875036 100644 --- a/lib/shadowio.c +++ b/lib/shadowio.c @@ -8,8 +8,9 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" +#include #include #include @@ -18,6 +19,7 @@ #include "fields.h" #include "getdef.h" #include "prototypes.h" +#include "shadow/shadow/sgetspent.h" #include "shadowio.h" #ifdef WITH_TCB @@ -74,14 +76,12 @@ static struct commonio_ops shadow_ops = { shadow_getname, shadow_parse, shadow_put, - fgets, - fputs, NULL, /* open_hook */ NULL /* close_hook */ }; static struct commonio_db shadow_db = { - SHADOW_FILE, /* filename */ + _PATH_SHADOW, /* filename */ &shadow_ops, /* ops */ NULL, /* fp */ #ifdef WITH_SELINUX @@ -185,7 +185,7 @@ int spw_rewind (void) return commonio_next (&shadow_db); } -int spw_close (void) +int spw_close (bool process_selinux) { int retval = 0; #ifdef WITH_TCB @@ -195,7 +195,7 @@ int spw_close (void) return 0; } #endif /* WITH_TCB */ - retval = commonio_close (&shadow_db); + retval = commonio_close (&shadow_db, process_selinux); #ifdef WITH_TCB if (use_tcb && (shadowtcb_gain_priv () == SHADOWTCB_FAILURE)) { return 0; @@ -204,14 +204,14 @@ int spw_close (void) return retval; } -int spw_unlock (void) +int spw_unlock (bool process_selinux) { #ifdef WITH_TCB int retval = 0; if (!getdef_bool ("USE_TCB")) { #endif /* WITH_TCB */ - return commonio_unlock (&shadow_db); + return commonio_unlock (&shadow_db, process_selinux); #ifdef WITH_TCB } if (shadowtcb_drop_priv () == SHADOWTCB_FAILURE) { diff --git a/lib/shadowio.h b/lib/shadowio.h index 4dbeb6d6..be645d0e 100644 --- a/lib/shadowio.h +++ b/lib/shadowio.h @@ -13,7 +13,7 @@ #include "defines.h" -extern int spw_close (void); +extern int spw_close (bool process_selinux); extern bool spw_file_present (void); extern /*@observer@*/ /*@null@*/const struct spwd *spw_locate (const char *name); extern int spw_lock (void); @@ -23,7 +23,7 @@ extern /*@observer@*/ /*@null@*/const struct spwd *spw_next (void); extern int spw_open (int mode); extern int spw_remove (const char *name); extern int spw_rewind (void); -extern int spw_unlock (void); +extern int spw_unlock (bool process_selinux); extern int spw_update (const struct spwd *sp); extern int spw_sort (void); diff --git a/lib/shadowmem.c b/lib/shadowmem.c index 99f1b121..1a7b9a2a 100644 --- a/lib/shadowmem.c +++ b/lib/shadowmem.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -26,7 +26,7 @@ { struct spwd *sp; - sp = CALLOC (1, struct spwd); + sp = calloc_T(1, struct spwd); if (NULL == sp) { return NULL; } diff --git a/lib/shell.c b/lib/shell.c index b4db966a..1e49df7b 100644 --- a/lib/shell.c +++ b/lib/shell.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -48,7 +48,7 @@ int shell (const char *file, /*@null@*/const char *arg, char *const envp[]) * don't want to tell us what it is themselves. */ if (arg == NULL) { - SNPRINTF(arg0, "-%s", Basename(file)); + stprintf_a(arg0, "-%s", Basename(file)); arg = arg0; } @@ -74,7 +74,7 @@ int shell (const char *file, /*@null@*/const char *arg, char *const envp[]) * how to execute this stupid shell, so I might as well give * up in disgust ... */ - SNPRINTF(arg0, _("Cannot execute %s"), file); + stprintf_a(arg0, _("Cannot execute %s"), file); errno = err; perror (arg0); return err; diff --git a/lib/sizeof.h b/lib/sizeof.h index dca4b36c..1fc38873 100644 --- a/lib/sizeof.h +++ b/lib/sizeof.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIBMISC_SIZEOF_H_ -#include +#include "config.h" #include #if __has_include() @@ -15,7 +15,9 @@ #include -#define ssizeof(x) ((ssize_t) sizeof(x)) +#define typeas(T) typeof((T){0}) + +#define ssizeof(x) ({(ssize_t){sizeof(x)};}) #define memberof(T, member) ((T){}.member) #define WIDTHOF(x) (sizeof(x) * CHAR_BIT) @@ -23,7 +25,8 @@ # define countof(a) (sizeof(a) / sizeof((a)[0])) #endif -#define SIZEOF_ARRAY(a) (countof(a) * sizeof((a)[0])) +// sizeof_a - sizeof array +#define sizeof_a(a) (countof(a) * sizeof((a)[0])) #define STRLEN(s) (countof("" s "") - 1) diff --git a/lib/spawn.c b/lib/spawn.c index 0a2b1095..2bcbc445 100644 --- a/lib/spawn.c +++ b/lib/spawn.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include @@ -12,10 +12,12 @@ #include #include #include + #include "exitcodes.h" #include "prototypes.h" - #include "shadowlog_internal.h" +#include "string/strerrno.h" + int run_command(const char *cmd, const char *argv[], @@ -38,11 +40,11 @@ run_command(const char *cmd, const char *argv[], _exit (E_CMD_NOTFOUND); } fprintf (shadow_logfd, "%s: cannot execute %s: %s\n", - shadow_progname, cmd, strerror (errno)); + shadow_progname, cmd, strerrno()); _exit (E_CMD_NOEXEC); } else if ((pid_t)-1 == pid) { fprintf (shadow_logfd, "%s: cannot execute %s: %s\n", - shadow_progname, cmd, strerror (errno)); + shadow_progname, cmd, strerrno()); return -1; } @@ -55,7 +57,7 @@ run_command(const char *cmd, const char *argv[], if ((pid_t)-1 == wpid) { fprintf (shadow_logfd, "%s: waitpid (status: %d): %s\n", - shadow_progname, *status, strerror (errno)); + shadow_progname, *status, strerrno()); return -1; } diff --git a/lib/sssd.c b/lib/sssd.c index c795229a..b915b80a 100644 --- a/lib/sssd.c +++ b/lib/sssd.c @@ -1,6 +1,6 @@ /* Author: Peter Vrabec */ -#include +#include "config.h" #ifdef USE_SSSD #include "sssd.h" @@ -32,26 +32,25 @@ sssd_flush_cache(int dbflags) const char *spawnedEnv[] = {NULL}; struct stat sb; + if ((dbflags & (SSSD_DB_PASSWD|SSSD_DB_GROUP)) == 0) + /* Neither passwd nor group, nothing to do */ + return 0; + rv = stat(cmd, &sb); if (rv == -1 && errno == ENOENT) return 0; - sss_cache_args = MALLOC(4, char); + sss_cache_args = malloc_T(4, char); if (sss_cache_args == NULL) { return -1; } p = stpcpy(sss_cache_args, "-"); if (dbflags & SSSD_DB_PASSWD) - stpcpy(p, "U"); + p = stpcpy(p, "U"); if (dbflags & SSSD_DB_GROUP) - stpcpy(p, "G"); + p = stpcpy(p, "G"); - if (streq(p, "")) { - /* Neither passwd nor group, nothing to do */ - free(sss_cache_args); - return 0; - } spawnedArgs[1] = sss_cache_args; rv = run_command (cmd, spawnedArgs, spawnedEnv, &status); diff --git a/lib/sssd.h b/lib/sssd.h index 00ff2a8a..1f7ff3cc 100644 --- a/lib/sssd.h +++ b/lib/sssd.h @@ -10,7 +10,11 @@ #ifdef USE_SSSD extern int sssd_flush_cache (int dbflags); #else -#define sssd_flush_cache(service) (0) +static inline int +sssd_flush_cache(int) +{ + return 0; +} #endif #endif diff --git a/lib/string/ctype/strchrisascii/strchriscntrl.c b/lib/string/ctype/strchrisascii/strchriscntrl.c index cb99c6f3..ca77b4cf 100644 --- a/lib/string/ctype/strchrisascii/strchriscntrl.c +++ b/lib/string/ctype/strchrisascii/strchriscntrl.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/ctype/strchrisascii/strchriscntrl.h" diff --git a/lib/string/ctype/strchrisascii/strchriscntrl.h b/lib/string/ctype/strchrisascii/strchriscntrl.h index 966aa945..a1eaca37 100644 --- a/lib/string/ctype/strchrisascii/strchriscntrl.h +++ b/lib/string/ctype/strchrisascii/strchriscntrl.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_CTYPE_STRCHRISASCII_STRCHRISCNTRL_H_ -#include +#include "config.h" #include #include diff --git a/lib/string/ctype/strisascii/strisdigit.c b/lib/string/ctype/strisascii/strisdigit.c index a0e14499..acd45228 100644 --- a/lib/string/ctype/strisascii/strisdigit.c +++ b/lib/string/ctype/strisascii/strisdigit.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/ctype/strisascii/strisdigit.h" diff --git a/lib/string/ctype/strisascii/strisdigit.h b/lib/string/ctype/strisascii/strisdigit.h index 065ba19f..0c5175fc 100644 --- a/lib/string/ctype/strisascii/strisdigit.h +++ b/lib/string/ctype/strisascii/strisdigit.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_CTYPE_STRISASCII_STRISDIGIT_H_ -#include +#include "config.h" #include diff --git a/lib/string/ctype/strisascii/strisprint.c b/lib/string/ctype/strisascii/strisprint.c index 8fc62963..47fb2a3b 100644 --- a/lib/string/ctype/strisascii/strisprint.c +++ b/lib/string/ctype/strisascii/strisprint.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/ctype/strisascii/strisprint.h" diff --git a/lib/string/ctype/strisascii/strisprint.h b/lib/string/ctype/strisascii/strisprint.h index 12e6a895..566dbf88 100644 --- a/lib/string/ctype/strisascii/strisprint.h +++ b/lib/string/ctype/strisascii/strisprint.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_CTYPE_STRISASCII_STRISPRINT_H_ -#include +#include "config.h" #include #include diff --git a/lib/string/ctype/strtoascii/strtolower.c b/lib/string/ctype/strtoascii/strtolower.c index b46e19a8..99ea4097 100644 --- a/lib/string/ctype/strtoascii/strtolower.c +++ b/lib/string/ctype/strtoascii/strtolower.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/ctype/strtoascii/strtolower.h" diff --git a/lib/string/ctype/strtoascii/strtolower.h b/lib/string/ctype/strtoascii/strtolower.h index a19e851b..d283fe1e 100644 --- a/lib/string/ctype/strtoascii/strtolower.h +++ b/lib/string/ctype/strtoascii/strtolower.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_CTYPE_STRTOASCII_STRTOLOWER_H_ -#include +#include "config.h" #include diff --git a/lib/string/memset/memzero.c b/lib/string/memset/memzero.c index 0725bd93..2ceb5664 100644 --- a/lib/string/memset/memzero.c +++ b/lib/string/memset/memzero.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include diff --git a/lib/string/memset/memzero.h b/lib/string/memset/memzero.h index d20967b1..ea7c267b 100644 --- a/lib/string/memset/memzero.h +++ b/lib/string/memset/memzero.h @@ -7,7 +7,7 @@ #define SHADOW_INCLUDE_LIB_STRING_MEMSET_MEMZERO_H_ -#include +#include "config.h" #include #include @@ -16,13 +16,15 @@ #include "sizeof.h" -#define MEMZERO(arr) memzero(arr, SIZEOF_ARRAY(arr)) +// memzero_a - memory zero (explicit) array +#define memzero_a(arr) memzero(arr, sizeof_a(arr)) inline void *memzero(void *ptr, size_t size); inline char *strzero(char *s); +// memzero - memory zero (explicit) inline void * memzero(void *ptr, size_t size) { @@ -38,6 +40,7 @@ memzero(void *ptr, size_t size) } +// strzero - string zero (explicit) inline char * strzero(char *s) { diff --git a/lib/string/sprintf/aprintf.c b/lib/string/sprintf/aprintf.c index d243d9c4..605517f7 100644 --- a/lib/string/sprintf/aprintf.c +++ b/lib/string/sprintf/aprintf.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/sprintf/aprintf.h" diff --git a/lib/string/sprintf/aprintf.h b/lib/string/sprintf/aprintf.h index f4cd7217..eaf64e94 100644 --- a/lib/string/sprintf/aprintf.h +++ b/lib/string/sprintf/aprintf.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_SPRINTF_APRINTF_H_ -#include +#include "config.h" #include #include @@ -14,6 +14,11 @@ #include #include "attr.h" +#include "exit_if_null.h" + + +// exit-on-error allocate print formatted +#define xaprintf(...) exit_if_null(aprintf(__VA_ARGS__)) ATTR_MALLOC(free) diff --git a/lib/string/sprintf/snprintf.c b/lib/string/sprintf/snprintf.c index 3a71a697..e3755da7 100644 --- a/lib/string/sprintf/snprintf.c +++ b/lib/string/sprintf/snprintf.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/sprintf/snprintf.h" diff --git a/lib/string/sprintf/snprintf.h b/lib/string/sprintf/snprintf.h index 4395c71f..f6dee124 100644 --- a/lib/string/sprintf/snprintf.h +++ b/lib/string/sprintf/snprintf.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_SPRINTF_SNPRINTF_H_ -#include +#include "config.h" #include #include @@ -16,7 +16,8 @@ #include "sizeof.h" -#define SNPRINTF(s, fmt, ...) \ +// stprintf_a - string truncate print formatted array +#define stprintf_a(s, fmt, ...) \ ( \ snprintf_(s, countof(s), fmt __VA_OPT__(,) __VA_ARGS__) \ ) diff --git a/lib/string/sprintf/stpeprintf.c b/lib/string/sprintf/stpeprintf.c index 15148df5..d195931b 100644 --- a/lib/string/sprintf/stpeprintf.c +++ b/lib/string/sprintf/stpeprintf.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/sprintf/stpeprintf.h" diff --git a/lib/string/sprintf/stpeprintf.h b/lib/string/sprintf/stpeprintf.h index c34e4efa..b0048c44 100644 --- a/lib/string/sprintf/stpeprintf.h +++ b/lib/string/sprintf/stpeprintf.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_SPRINTF_STPEPRINTF_H_ -#include +#include "config.h" #include #include diff --git a/lib/string/sprintf/xaprintf.c b/lib/string/sprintf/xaprintf.c deleted file mode 100644 index 02880656..00000000 --- a/lib/string/sprintf/xaprintf.c +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "string/sprintf/xaprintf.h" - -#include - - -extern inline char *xaprintf(const char *restrict fmt, ...); -extern inline char *xvaprintf(const char *restrict fmt, va_list ap); diff --git a/lib/string/sprintf/xaprintf.h b/lib/string/sprintf/xaprintf.h deleted file mode 100644 index b6c10ef9..00000000 --- a/lib/string/sprintf/xaprintf.h +++ /dev/null @@ -1,59 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_STRING_SPRINTF_XASPRINTF_H_ -#define SHADOW_INCLUDE_LIB_STRING_SPRINTF_XASPRINTF_H_ - - -#include - -#include -#include -#include -#include - -#include "attr.h" -#include "string/sprintf/aprintf.h" - - -ATTR_MALLOC(free) -format_attr(printf, 1, 2) -inline char *xaprintf(const char *restrict fmt, ...); - -ATTR_MALLOC(free) -format_attr(printf, 1, 0) -inline char *xvaprintf(const char *restrict fmt, va_list ap); - - -// exit-on-error allocate print formatted -inline char * -xaprintf(const char *restrict fmt, ...) -{ - char *p; - va_list ap; - - va_start(ap, fmt); - p = xvaprintf(fmt, ap); - va_end(ap); - - return p; -} - - -inline char * -xvaprintf(const char *restrict fmt, va_list ap) -{ - char *p; - - p = vaprintf(fmt, ap); - if (p == NULL) { - perror("vaprintf"); - exit(EXIT_FAILURE); - } - - return p; -} - - -#endif // include guard diff --git a/lib/string/strchr/strchrcnt.c b/lib/string/strchr/strchrcnt.c index 793b2add..5e4c88b7 100644 --- a/lib/string/strchr/strchrcnt.c +++ b/lib/string/strchr/strchrcnt.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strchr/strchrcnt.h" diff --git a/lib/string/strchr/strchrcnt.h b/lib/string/strchr/strchrcnt.h index ba76bbdf..e1945d36 100644 --- a/lib/string/strchr/strchrcnt.h +++ b/lib/string/strchr/strchrcnt.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCHR_STRCHRCNT_H_ -#include +#include "config.h" #include diff --git a/lib/string/strchr/strchrscnt.c b/lib/string/strchr/strchrscnt.c index 8b1a5eca..5dffbf1c 100644 --- a/lib/string/strchr/strchrscnt.c +++ b/lib/string/strchr/strchrscnt.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strchr/strchrscnt.h" diff --git a/lib/string/strchr/strchrscnt.h b/lib/string/strchr/strchrscnt.h index 2d8b25c7..e87d4573 100644 --- a/lib/string/strchr/strchrscnt.h +++ b/lib/string/strchr/strchrscnt.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCHR_STRCHRSCNT_H_ -#include +#include "config.h" #include diff --git a/lib/string/strchr/strnul.c b/lib/string/strchr/strnul.c index 93b3ab7c..3607ce62 100644 --- a/lib/string/strchr/strnul.c +++ b/lib/string/strchr/strnul.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strchr/strnul.h" diff --git a/lib/string/strchr/strnul.h b/lib/string/strchr/strnul.h index a55c892a..4cb3b2ca 100644 --- a/lib/string/strchr/strnul.h +++ b/lib/string/strchr/strnul.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCHR_STRNUL_H_ -#include +#include "config.h" #include @@ -18,7 +18,7 @@ #define strnul(s) \ ({ \ __auto_type s_ = s; \ - \ + \ s_ + strlen(s_); \ }) diff --git a/lib/string/strcmp/strcaseeq.c b/lib/string/strcmp/strcaseeq.c index 2abb3696..e44f1166 100644 --- a/lib/string/strcmp/strcaseeq.c +++ b/lib/string/strcmp/strcaseeq.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include diff --git a/lib/string/strcmp/strcaseeq.h b/lib/string/strcmp/strcaseeq.h index 248903d9..41a8d563 100644 --- a/lib/string/strcmp/strcaseeq.h +++ b/lib/string/strcmp/strcaseeq.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCMP_STRCASEEQ_H_ -#include +#include "config.h" #include #include diff --git a/lib/string/strcmp/strcaseprefix.c b/lib/string/strcmp/strcaseprefix.c index 7fffa4ee..ca74aa31 100644 --- a/lib/string/strcmp/strcaseprefix.c +++ b/lib/string/strcmp/strcaseprefix.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strcmp/strcaseprefix.h" diff --git a/lib/string/strcmp/strcaseprefix.h b/lib/string/strcmp/strcaseprefix.h index 37ca4d89..b001076b 100644 --- a/lib/string/strcmp/strcaseprefix.h +++ b/lib/string/strcmp/strcaseprefix.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCMP_STRCASEPREFIX_H_ -#include +#include "config.h" #include #include @@ -19,9 +19,9 @@ #define strcaseprefix(s, prefix) \ ({ \ const char *p_; \ - \ + \ p_ = strcaseprefix_(s, prefix); \ - \ + \ _Generic(s, \ const char *: p_, \ const void *: p_, \ diff --git a/lib/string/strcmp/streq.c b/lib/string/strcmp/streq.c index 52057ed8..030169ad 100644 --- a/lib/string/strcmp/streq.c +++ b/lib/string/strcmp/streq.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include diff --git a/lib/string/strcmp/streq.h b/lib/string/strcmp/streq.h index 2c7c8392..fc0268cb 100644 --- a/lib/string/strcmp/streq.h +++ b/lib/string/strcmp/streq.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCMP_STREQ_H_ -#include +#include "config.h" #include #include diff --git a/lib/string/strcmp/strneq.c b/lib/string/strcmp/strneq.c new file mode 100644 index 00000000..5791811a --- /dev/null +++ b/lib/string/strcmp/strneq.c @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "string/strcmp/strneq.h" + +#include +#include + + +extern inline bool strneq(const char *strn, const char *s, size_t size); diff --git a/lib/string/strcmp/strneq.h b/lib/string/strcmp/strneq.h new file mode 100644 index 00000000..a8783fed --- /dev/null +++ b/lib/string/strcmp/strneq.h @@ -0,0 +1,37 @@ +// SPDX-FileCopyrightText: 2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_STRCMP_STRNEQ_H_ +#define SHADOW_INCLUDE_LIB_STRING_STRCMP_STRNEQ_H_ + + +#include "config.h" + +#include +#include + +#include "attr.h" +#include "sizeof.h" + + +#define strneq_a(strn, s) strneq(strn, s, countof(strn)) + + +ATTR_STRING(2) +inline bool strneq(ATTR_NONSTRING const char *strn, const char *s, size_t size); + + +// nonstring equal +/* Return true if the nonstring strn and the string s compare equal. */ +inline bool +strneq(const char *strn, const char *s, size_t size) +{ + if (strlen(s) > size) + return false; + + return strncmp(strn, s, size) == 0; +} + + +#endif // include guard diff --git a/lib/string/strcmp/strprefix.c b/lib/string/strcmp/strprefix.c index 31209cfa..1b751459 100644 --- a/lib/string/strcmp/strprefix.c +++ b/lib/string/strcmp/strprefix.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strcmp/strprefix.h" diff --git a/lib/string/strcmp/strprefix.h b/lib/string/strcmp/strprefix.h index 245b5bf6..3abffb5f 100644 --- a/lib/string/strcmp/strprefix.h +++ b/lib/string/strcmp/strprefix.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCMP_STRPREFIX_H_ -#include +#include "config.h" #include #include @@ -19,9 +19,9 @@ #define strprefix(s, prefix) \ ({ \ const char *p_; \ - \ + \ p_ = strprefix_(s, prefix); \ - \ + \ _Generic(s, \ const char *: p_, \ const void *: p_, \ diff --git a/lib/string/strcpy/stpecpy.c b/lib/string/strcpy/stpecpy.c index 3268663b..2e6f92b0 100644 --- a/lib/string/strcpy/stpecpy.c +++ b/lib/string/strcpy/stpecpy.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strcpy/stpecpy.h" diff --git a/lib/string/strcpy/stpecpy.h b/lib/string/strcpy/stpecpy.h index cc7dc0a2..91c6ce7a 100644 --- a/lib/string/strcpy/stpecpy.h +++ b/lib/string/strcpy/stpecpy.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCPY_STPECPY_H_ -#include +#include "config.h" #include #include diff --git a/lib/string/strcpy/strncat.c b/lib/string/strcpy/strncat.c index d55f1729..acfdd676 100644 --- a/lib/string/strcpy/strncat.c +++ b/lib/string/strcpy/strncat.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strcpy/strncat.h" diff --git a/lib/string/strcpy/strncat.h b/lib/string/strcpy/strncat.h index c88d8928..754b6450 100644 --- a/lib/string/strcpy/strncat.h +++ b/lib/string/strcpy/strncat.h @@ -6,14 +6,15 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCPY_STRNCAT_H_ -#include +#include "config.h" #include #include "sizeof.h" -#define STRNCAT(dst, src) strncat(dst, src, countof(src)) +// strncat_a - nonstring catenate-into-string array +#define strncat_a(dst, src) strncat(dst, src, countof(src)) #endif // include guard diff --git a/lib/string/strcpy/strncpy.c b/lib/string/strcpy/strncpy.c index 5544feda..492efdf7 100644 --- a/lib/string/strcpy/strncpy.c +++ b/lib/string/strcpy/strncpy.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strcpy/strncpy.h" diff --git a/lib/string/strcpy/strncpy.h b/lib/string/strcpy/strncpy.h index 391d0d3f..518e9674 100644 --- a/lib/string/strcpy/strncpy.h +++ b/lib/string/strcpy/strncpy.h @@ -6,14 +6,15 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCPY_STRNCPY_H_ -#include +#include "config.h" #include #include "sizeof.h" -#define STRNCPY(dst, src) strncpy(dst, src, countof(dst)) +// strncpy_a - nonstring copy array +#define strncpy_a(dst, src) strncpy(dst, src, countof(dst)) #endif // include guard diff --git a/lib/string/strcpy/strtcpy.c b/lib/string/strcpy/strtcpy.c index 28e3d056..8b74b133 100644 --- a/lib/string/strcpy/strtcpy.c +++ b/lib/string/strcpy/strtcpy.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include #include diff --git a/lib/string/strcpy/strtcpy.h b/lib/string/strcpy/strtcpy.h index aa89f99c..a440bcdf 100644 --- a/lib/string/strcpy/strtcpy.h +++ b/lib/string/strcpy/strtcpy.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRCPY_STRTCPY_H_ -#include +#include "config.h" #include #include @@ -17,34 +17,8 @@ #include "sizeof.h" -/* - * SYNOPSIS - * [[gnu::null_terminated_string_arg(2)]] - * int STRTCPY(char dst[restrict], const char *restrict src); - * - * ARGUMENTS - * dst Destination buffer where to copy a string. - * src Source string to be copied into dst. - * - * DESCRIPTION - * This macro copies the string pointed to by src, into a string - * at the buffer pointed to by dst. If the destination buffer, - * isn't large enough to hold the copy, the resulting string is - * truncated. The size of the buffer is calculated internally via - * countof(). - * - * RETURN VALUE - * -1 If this call truncated the resulting string. - * - * strlen(dst) - * On success. - * - * ERRORS - * This function doesn't set errno. - */ - - -#define STRTCPY(dst, src) strtcpy(dst, src, countof(dst)) +// strtcpy_a - string truncate copy array +#define strtcpy_a(dst, src) strtcpy(dst, src, countof(dst)) ATTR_STRING(2) @@ -52,6 +26,7 @@ inline ssize_t strtcpy(char *restrict dst, const char *restrict src, size_t dsize); +// strtcpy - string truncate copy inline ssize_t strtcpy(char *restrict dst, const char *restrict src, size_t dsize) { diff --git a/lib/atoi/a2i/a2i.c b/lib/string/strdup/strdup.c similarity index 68% rename from lib/atoi/a2i/a2i.c rename to lib/string/strdup/strdup.c index ec4c976d..f7169ae0 100644 --- a/lib/atoi/a2i/a2i.c +++ b/lib/string/strdup/strdup.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" -#include "atoi/a2i/a2i.h" +#include "string/strdup/strdup.h" diff --git a/lib/string/strdup/strdup.h b/lib/string/strdup/strdup.h new file mode 100644 index 00000000..8d13fc9e --- /dev/null +++ b/lib/string/strdup/strdup.h @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh +// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz +// SPDX-FileCopyrightText: 2003-2006, Tomasz Kłoczko +// SPDX-FileCopyrightText: 2008, Nicolas François +// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_STRDUP_STRDUP_H_ +#define SHADOW_INCLUDE_LIB_STRING_STRDUP_STRDUP_H_ + + +#include "config.h" + +#include + +#include "exit_if_null.h" + + +// xstrdup - exit-on-error string duplicate +#define xstrdup(s) exit_if_null(strdup(s)) + + +#endif // include guard diff --git a/lib/string/strdup/xstrndup.c b/lib/string/strdup/strndup.c similarity index 66% rename from lib/string/strdup/xstrndup.c rename to lib/string/strdup/strndup.c index e659073f..961f665b 100644 --- a/lib/string/strdup/xstrndup.c +++ b/lib/string/strdup/strndup.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" -#include "string/strdup/xstrndup.h" +#include "string/strdup/strndup.h" diff --git a/lib/string/strdup/strndup.h b/lib/string/strdup/strndup.h new file mode 100644 index 00000000..44c0dcfd --- /dev/null +++ b/lib/string/strdup/strndup.h @@ -0,0 +1,24 @@ +// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_STRDUP_STRNDUP_H_ +#define SHADOW_INCLUDE_LIB_STRING_STRDUP_STRNDUP_H_ + + +#include "config.h" + +#include + +#include "sizeof.h" +#include "exit_if_null.h" + + +// strndup_a - nonstring duplicate-into-string array +#define strndup_a(s) strndup(s, countof(s)) + +// xstrndup_a - exit-on-error nonstring duplicate-into-string array +#define xstrndup_a(s) exit_if_null(strndup_a(s)) + + +#endif // include guard diff --git a/lib/string/strdup/strndupa.c b/lib/string/strdup/strndupa.c index aa67fa27..25d90399 100644 --- a/lib/string/strdup/strndupa.c +++ b/lib/string/strdup/strndupa.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strdup/strndupa.h" diff --git a/lib/string/strdup/strndupa.h b/lib/string/strdup/strndupa.h index 844c76ba..9a5a2dfc 100644 --- a/lib/string/strdup/strndupa.h +++ b/lib/string/strdup/strndupa.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRDUP_STRNDUPA_H_ -#include +#include "config.h" #include #include @@ -14,13 +14,14 @@ #include "sizeof.h" -// string n-bounded-read duplicate using-alloca(3) +// strndupa - nonstring duplicate-into-string using-alloca(3) #ifndef strndupa # define strndupa(s, n) strncat(strcpy(alloca(n + 1), ""), s, n) #endif -#define STRNDUPA(s) strndupa(s, countof(s)) +// strndupa_a - nonstring duplicate-into-string using-alloca(3) array +#define strndupa_a(s) strndupa(s, countof(s)) #endif // include guard diff --git a/lib/string/strdup/xstrdup.c b/lib/string/strdup/xstrdup.c deleted file mode 100644 index 00ec9db3..00000000 --- a/lib/string/strdup/xstrdup.c +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh -// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz -// SPDX-FileCopyrightText: 2003-2006, Tomasz Kłoczko -// SPDX-FileCopyrightText: 2008 , Nicolas François -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "string/strdup/xstrdup.h" - - -extern inline char *xstrdup(const char *str); diff --git a/lib/string/strdup/xstrdup.h b/lib/string/strdup/xstrdup.h deleted file mode 100644 index ba3e2556..00000000 --- a/lib/string/strdup/xstrdup.h +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-FileCopyrightText: 1990-1994, Julianne Frances Haugh -// SPDX-FileCopyrightText: 1996-1998, Marek Michałkiewicz -// SPDX-FileCopyrightText: 2003-2006, Tomasz Kłoczko -// SPDX-FileCopyrightText: 2008 , Nicolas François -// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_STRING_STRDUP_XSTRDUP_H_ -#define SHADOW_INCLUDE_LIB_STRING_STRDUP_XSTRDUP_H_ - - -#include - -#include - -#include "alloc/x/xmalloc.h" -#include "attr.h" - - -ATTR_MALLOC(free) -inline char *xstrdup(const char *str); - - -inline char * -xstrdup(const char *str) -{ - return strcpy(XMALLOC(strlen(str) + 1, char), str); -} - - -#endif // include guard diff --git a/lib/string/strdup/xstrndup.h b/lib/string/strdup/xstrndup.h deleted file mode 100644 index 8d93eb3f..00000000 --- a/lib/string/strdup/xstrndup.h +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-FileCopyrightText: 2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_STRING_STRDUP_XSTRNDUP_H_ -#define SHADOW_INCLUDE_LIB_STRING_STRDUP_XSTRNDUP_H_ - - -#include - -#include - -#include "alloc/x/xmalloc.h" -#include "sizeof.h" -#include "string/strcpy/strncat.h" - - -// Similar to strndup(3), but ensure that 's' is an array, and exit on ENOMEM. -#define XSTRNDUP(s) \ -( \ - STRNCAT(strcpy(XMALLOC(strnlen(s, countof(s)) + 1, char), ""), s) \ -) - - -#endif // include guard diff --git a/lib/string/strerrno.c b/lib/string/strerrno.c new file mode 100644 index 00000000..d7e817c0 --- /dev/null +++ b/lib/string/strerrno.c @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "config.h" + +#include "string/strerrno.h" diff --git a/lib/string/strerrno.h b/lib/string/strerrno.h new file mode 100644 index 00000000..9f28a86a --- /dev/null +++ b/lib/string/strerrno.h @@ -0,0 +1,19 @@ +// SPDX-FileCopyrightText: 2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_STRERRNO_H_ +#define SHADOW_INCLUDE_LIB_STRING_STRERRNO_H_ + + +#include "config.h" + +#include +#include + + +// strerrno - string errno +#define strerrno() ({(const char *){strerror(errno)};}) + + +#endif // include guard diff --git a/lib/string/strftime.c b/lib/string/strftime.c index ea1deb3f..baccdb17 100644 --- a/lib/string/strftime.c +++ b/lib/string/strftime.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "strftime.h" diff --git a/lib/string/strftime.h b/lib/string/strftime.h index 8e71237d..0c816d53 100644 --- a/lib/string/strftime.h +++ b/lib/string/strftime.h @@ -6,15 +6,15 @@ #define SHADOW_INCLUDE_LIB_STRFTIME_H_ -#include +#include "config.h" #include #include "sizeof.h" -// string format time -#define STRFTIME(dst, fmt, tm) strftime(dst, countof(dst), fmt, tm) +// strftime_a - string format time array +#define strftime_a(dst, fmt, tm) strftime(dst, countof(dst), fmt, tm) #endif // include guard diff --git a/lib/string/strspn/stprcspn.c b/lib/string/strspn/stprcspn.c index 80b4a51a..012d5e39 100644 --- a/lib/string/strspn/stprcspn.c +++ b/lib/string/strspn/stprcspn.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strspn/stprcspn.h" diff --git a/lib/string/strspn/stprcspn.h b/lib/string/strspn/stprcspn.h index 9be7b7fa..d9cf1077 100644 --- a/lib/string/strspn/stprcspn.h +++ b/lib/string/strspn/stprcspn.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRSPN_STPRCSPN_H_ -#include +#include "config.h" #include @@ -17,7 +17,7 @@ #define stprcspn(s, reject) \ ({ \ __auto_type s_ = (s); \ - \ + \ s_ + strrcspn(s_, reject); \ }) diff --git a/lib/string/strspn/stprspn.c b/lib/string/strspn/stprspn.c index c7450e11..8b5ab59e 100644 --- a/lib/string/strspn/stprspn.c +++ b/lib/string/strspn/stprspn.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strspn/stprspn.h" diff --git a/lib/string/strspn/stprspn.h b/lib/string/strspn/stprspn.h index a8a5ef36..8684f9ef 100644 --- a/lib/string/strspn/stprspn.h +++ b/lib/string/strspn/stprspn.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRSPN_STPRSPN_H_ -#include +#include "config.h" #include @@ -19,7 +19,7 @@ #define stprspn(s, accept) \ ({ \ __auto_type s_ = (s); \ - \ + \ s_ + strrspn_(s_, accept); \ }) diff --git a/lib/string/strspn/stpspn.c b/lib/string/strspn/stpspn.c index 510aaef9..9d99c0c5 100644 --- a/lib/string/strspn/stpspn.c +++ b/lib/string/strspn/stpspn.c @@ -2,6 +2,6 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strspn/stpspn.h" diff --git a/lib/string/strspn/stpspn.h b/lib/string/strspn/stpspn.h index 08a10f73..1834f5fc 100644 --- a/lib/string/strspn/stpspn.h +++ b/lib/string/strspn/stpspn.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRSPN_STPSPN_H_ -#include +#include "config.h" #include @@ -19,7 +19,7 @@ #define stpspn(s, accept) \ ({ \ __auto_type s_ = s; \ - \ + \ s_ + strspn(s_, accept); \ }) diff --git a/lib/string/strspn/strrcspn.c b/lib/string/strspn/strrcspn.c index 99e9bf71..96ba6bb5 100644 --- a/lib/string/strspn/strrcspn.c +++ b/lib/string/strspn/strrcspn.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strspn/strrcspn.h" diff --git a/lib/string/strspn/strrcspn.h b/lib/string/strspn/strrcspn.h index 1510041e..6855ad33 100644 --- a/lib/string/strspn/strrcspn.h +++ b/lib/string/strspn/strrcspn.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRSPN_STRRCSPN_H_ -#include +#include "config.h" #include #include @@ -24,7 +24,7 @@ inline size_t strrcspn(const char *s, const char *reject); inline size_t strrcspn(const char *s, const char *reject) { - char *p; + const char *p; p = strnul(s); while (p > s) { diff --git a/lib/string/strspn/strrspn.c b/lib/string/strspn/strrspn.c index a8fbeff1..a2c62c10 100644 --- a/lib/string/strspn/strrspn.c +++ b/lib/string/strspn/strrspn.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strspn/strrspn.h" diff --git a/lib/string/strspn/strrspn.h b/lib/string/strspn/strrspn.h index 6e2e6bfa..b5ffdc37 100644 --- a/lib/string/strspn/strrspn.h +++ b/lib/string/strspn/strrspn.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRSPN_STRRSPN_H_ -#include +#include "config.h" #include #include @@ -24,7 +24,7 @@ inline size_t strrspn_(const char *s, const char *accept); inline size_t strrspn_(const char *s, const char *accept) { - char *p; + const char *p; p = strnul(s); while (p > s) { diff --git a/lib/string/strtok/astrsep2ls.c b/lib/string/strtok/astrsep2ls.c index 03d14324..1778b719 100644 --- a/lib/string/strtok/astrsep2ls.c +++ b/lib/string/strtok/astrsep2ls.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strtok/astrsep2ls.h" diff --git a/lib/string/strtok/astrsep2ls.h b/lib/string/strtok/astrsep2ls.h index aa5d2f6a..aa9283a1 100644 --- a/lib/string/strtok/astrsep2ls.h +++ b/lib/string/strtok/astrsep2ls.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause @@ -6,24 +6,28 @@ #define SHADOW_INCLUDE_LIB_STRING_STRTOK_ASTRSEP2LS_H_ -#include +#include "config.h" #include #include "alloc/malloc.h" #include "attr.h" +#include "exit_if_null.h" #include "string/strchr/strchrscnt.h" #include "string/strtok/strsep2ls.h" +// xastrsep2ls - exit-on-error allocate string separate to list-of-strings +#define xastrsep2ls(s, delim, np) exit_if_null(astrsep2ls(s, delim, np)) + + ATTR_ACCESS(read_write, 1) ATTR_ACCESS(write_only, 3) ATTR_STRING(1) ATTR_STRING(2) inline char **astrsep2ls(char *restrict s, const char *restrict delim, size_t *restrict np); -// allocate string separate to list-of-strings -// Like strsep2ls(), but allocate the list array. +// astrsep2ls - allocate string separate to list-of-strings inline char ** astrsep2ls(char *s, const char *restrict delim, size_t *restrict np) { @@ -32,7 +36,7 @@ astrsep2ls(char *s, const char *restrict delim, size_t *restrict np) n = strchrscnt(s, delim) + 2; - ls = MALLOC(n, char *); + ls = malloc_T(n, char *); if (ls == NULL) return NULL; diff --git a/lib/string/strtok/stpsep.c b/lib/string/strtok/stpsep.c index d7813d1b..a79257a3 100644 --- a/lib/string/strtok/stpsep.c +++ b/lib/string/strtok/stpsep.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strtok/stpsep.h" diff --git a/lib/string/strtok/stpsep.h b/lib/string/strtok/stpsep.h index 782b11fd..132a4bc5 100644 --- a/lib/string/strtok/stpsep.h +++ b/lib/string/strtok/stpsep.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRTOK_STPSEP_H_ -#include +#include "config.h" #include diff --git a/lib/string/strtok/strsep2arr.c b/lib/string/strtok/strsep2arr.c index 775eee20..fb0b9308 100644 --- a/lib/string/strtok/strsep2arr.c +++ b/lib/string/strtok/strsep2arr.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strtok/strsep2arr.h" diff --git a/lib/string/strtok/strsep2arr.h b/lib/string/strtok/strsep2arr.h index 71704727..f96ddfdd 100644 --- a/lib/string/strtok/strsep2arr.h +++ b/lib/string/strtok/strsep2arr.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRTOK_STRSEP2ARR_H_ -#include +#include "config.h" #include #include @@ -17,7 +17,8 @@ #include "sizeof.h" -#define STRSEP2ARR(s, delim, a) \ +// strsep2arr_a - string separate to array-of-strings array +#define strsep2arr_a(s, delim, a) \ ( \ strsep2arr(s, delim, countof(a), a) == countof(a) ? 0 : -1 \ ) @@ -29,9 +30,7 @@ inline ssize_t strsep2arr(char *s, const char *restrict delim, size_t n, char *a[restrict n]); -// string separate to array-of-strings -// strsep(3) a string into an array of strings. -// Return the number of fields in the string, or -1 on error. +// strsep2arr - string separate to array-of-strings inline ssize_t strsep2arr(char *s, const char *restrict delim, size_t n, char *a[restrict n]) { diff --git a/lib/string/strtok/strsep2ls.c b/lib/string/strtok/strsep2ls.c index b7eed180..73f24f38 100644 --- a/lib/string/strtok/strsep2ls.c +++ b/lib/string/strtok/strsep2ls.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "string/strtok/strsep2ls.h" diff --git a/lib/string/strtok/strsep2ls.h b/lib/string/strtok/strsep2ls.h index 473fe58c..a61e2ef9 100644 --- a/lib/string/strtok/strsep2ls.h +++ b/lib/string/strtok/strsep2ls.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_STRING_STRTOK_STRSEP2LS_H_ -#include +#include "config.h" #include #include @@ -17,7 +17,8 @@ #include "string/strtok/strsep2arr.h" -#define STRSEP2LS(s, delim, ls) strsep2ls(s, delim, countof(ls), ls) +// strsep2ls_a - string separate to list-of-strings array +#define strsep2ls_a(s, delim, ls) strsep2ls(s, delim, countof(ls), ls) ATTR_ACCESS(read_write, 1) ATTR_ACCESS(write_only, 4, 3) @@ -26,7 +27,7 @@ inline ssize_t strsep2ls(char *s, const char *restrict delim, size_t n, char *ls[restrict n]); -// string separate to list-of-strings +// strsep2ls - string separate to list-of-strings // Like strsep2arr(), but add a NULL terminator. inline ssize_t strsep2ls(char *s, const char *restrict delim, size_t n, char *ls[restrict n]) diff --git a/lib/string/strtok/xastrsep2ls.c b/lib/string/strtok/xastrsep2ls.c deleted file mode 100644 index 84572fd6..00000000 --- a/lib/string/strtok/xastrsep2ls.c +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include - -#include "string/strtok/xastrsep2ls.h" - -#include - - -extern inline char **xastrsep2ls(char *restrict s, const char *restrict delim, - size_t *restrict np); diff --git a/lib/string/strtok/xastrsep2ls.h b/lib/string/strtok/xastrsep2ls.h deleted file mode 100644 index e935a929..00000000 --- a/lib/string/strtok/xastrsep2ls.h +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-FileCopyrightText: 2024, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#ifndef SHADOW_INCLUDE_LIB_STRING_STRTOK_XASTRSEP2LS_H_ -#define SHADOW_INCLUDE_LIB_STRING_STRTOK_XASTRSEP2LS_H_ - - -#include - -#include -#include -#include -#include -#include - -#include "attr.h" -#include "shadowlog.h" -#include "string/strtok/astrsep2ls.h" - - -ATTR_ACCESS(read_write, 1) ATTR_ACCESS(write_only, 3) -ATTR_STRING(1) ATTR_STRING(2) -inline char **xastrsep2ls(char *restrict s, const char *restrict delim, - size_t *restrict np); - - -// exit-on-error allocate string separate to list-of-strings -inline char ** -xastrsep2ls(char *s, const char *restrict delim, size_t *restrict np) -{ - char **ls; - - ls = astrsep2ls(s, delim, np); - if (ls == NULL) - goto x; - - return ls; -x: - fprintf(log_get_logfd(), "%s: %s\n", - log_get_progname(), strerror(errno)); - exit(13); -} - - -#endif // include guard diff --git a/lib/strtoday.c b/lib/strtoday.c index ac3be800..5f092733 100644 --- a/lib/strtoday.c +++ b/lib/strtoday.c @@ -7,12 +7,12 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include #include -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "defines.h" #include "prototypes.h" #include "string/strcmp/streq.h" diff --git a/lib/sub.c b/lib/sub.c index d8e24473..4babee52 100644 --- a/lib/sub.c +++ b/lib/sub.c @@ -6,7 +6,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/subordinateio.c b/lib/subordinateio.c index 27f888b9..acd3f1ff 100644 --- a/lib/subordinateio.c +++ b/lib/subordinateio.c @@ -2,7 +2,7 @@ * SPDX-FileCopyrightText: 2012 - Eric Biederman */ -#include +#include "config.h" #ifdef ENABLE_SUBIDS @@ -11,6 +11,7 @@ #include #include "commonio.h" #include "subordinateio.h" +#include "getdef.h" #include "../libsubid/subid.h" #include #include @@ -19,9 +20,8 @@ #include #include "alloc/malloc.h" -#include "alloc/realloc.h" #include "alloc/reallocf.h" -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "string/ctype/strisascii/strisdigit.h" #include "string/sprintf/snprintf.h" #include "string/strcmp/streq.h" @@ -43,7 +43,7 @@ static /*@null@*/ /*@only@*/void *subordinate_dup (const void *ent) const struct subordinate_range *rangeent = ent; struct subordinate_range *range; - range = MALLOC(1, struct subordinate_range); + range = malloc_T(1, struct subordinate_range); if (NULL == range) { return NULL; } @@ -92,11 +92,11 @@ subordinate_parse(const char *line) * Copy the string to a temporary buffer so the substrings can * be modified to be NULL terminated. */ - if (strlen (line) >= sizeof rangebuf) + if (strlen(line) >= sizeof(rangebuf)) return NULL; /* fail if too long */ strcpy (rangebuf, line); - if (STRSEP2ARR(rangebuf, ":", fields) == -1) + if (strsep2arr_a(rangebuf, ":", fields) == -1) return NULL; if (streq(fields[0], "")) @@ -138,14 +138,12 @@ static struct commonio_ops subordinate_ops = { NULL, /* getname */ subordinate_parse, /* parse */ subordinate_put, /* put */ - fgets, /* fgets */ - fputs, /* fputs */ NULL, /* open_hook */ NULL, /* close_hook */ }; /* - * range_exists: Check whether @owner owns any ranges + * range_exists: check whether @owner owns any ranges * * @db: database to query * @owner: owner being queried @@ -156,7 +154,7 @@ static bool range_exists(struct commonio_db *db, const char *owner) { const struct subordinate_range *range; commonio_rewind(db); - while ((range = commonio_next(db)) != NULL) { + while (NULL != (range = commonio_next(db))) { if (streq(range->owner, owner)) return true; } @@ -188,7 +186,7 @@ static const struct subordinate_range *find_range(struct commonio_db *db, * before. */ commonio_rewind(db); - while ((range = commonio_next(db)) != NULL) { + while (NULL != (range = commonio_next(db))) { unsigned long first = range->start; unsigned long last = first + range->count - 1; @@ -200,74 +198,74 @@ static const struct subordinate_range *find_range(struct commonio_db *db, } - /* - * We only do special handling for these two files - */ - if (!streq(db->filename, SUBUID_FILE) && !streq(db->filename, SUBGID_FILE)) - return NULL; + /* + * We only do special handling for these two files + */ + if (!streq(db->filename, SUBUID_FILE) && !streq(db->filename, SUBGID_FILE)) + return NULL; - /* - * Search loop above did not produce any result. Let's rerun it, - * but this time try to match actual UIDs. The first entry that - * matches is considered a success. - * (It may be specified as literal UID or as another username which - * has the same UID as the username we are looking for.) - */ - char owner_uid_string[33]; - uid_t owner_uid; - struct passwd *pwd; + /* + * Search loop above did not produce any result. Let's rerun it, + * but this time try to match actual UIDs. The first entry that + * matches is considered a success. + * (It may be specified as literal UID or as another username which + * has the same UID as the username we are looking for.) + */ + char owner_uid_string[33]; + uid_t owner_uid; + struct passwd *pwd; - /* Get UID of the username we are looking for */ - pwd = getpwnam(owner); - if (NULL == pwd) { - /* Username not defined in /etc/passwd, or error occurred during lookup */ - return NULL; - } - owner_uid = pwd->pw_uid; - if (SNPRINTF(owner_uid_string, "%lu", (unsigned long) owner_uid) == -1) - return NULL; + /* Get UID of the username we are looking for */ + pwd = getpwnam(owner); + if (NULL == pwd) { + /* Username not defined in /etc/passwd, or error occurred during lookup */ + return NULL; + } + owner_uid = pwd->pw_uid; + if (stprintf_a(owner_uid_string, "%lu", (unsigned long) owner_uid) == -1) + return NULL; - commonio_rewind(db); - while ((range = commonio_next(db)) != NULL) { - unsigned long first = range->start; - unsigned long last = first + range->count - 1; + commonio_rewind(db); + while (NULL != (range = commonio_next(db))) { + unsigned long first = range->start; + unsigned long last = first + range->count - 1; - /* For performance reasons check range before using getpwnam() */ - if ((val < first) || (val > last)) { - continue; - } + /* For performance reasons check range before using getpwnam() */ + if ((val < first) || (val > last)) { + continue; + } - /* - * Range matches. Check if range owner is specified - * as numeric UID and if it matches. - */ - if (streq(range->owner, owner_uid_string)) { - return range; - } + /* + * Range matches. Check if range owner is specified + * as numeric UID and if it matches. + */ + if (streq(range->owner, owner_uid_string)) { + return range; + } - /* - * Ok, this range owner is not specified as numeric UID - * we are looking for. It may be specified as another - * UID or as a literal username. - * - * If specified as another UID, the call to getpwnam() - * will return NULL. - * - * If specified as literal username, we will get its - * UID and compare that to UID we are looking for. - */ - const struct passwd *range_owner_pwd; + /* + * Ok, this range owner is not specified as numeric UID + * we are looking for. It may be specified as another + * UID or as a literal username. + * + * If specified as another UID, the call to getpwnam() + * will return NULL. + * + * If specified as literal username, we will get its + * UID and compare that to UID we are looking for. + */ + const struct passwd *range_owner_pwd; - range_owner_pwd = getpwnam(range->owner); - if (NULL == range_owner_pwd) { - continue; - } + range_owner_pwd = getpwnam(range->owner); + if (NULL == range_owner_pwd) { + continue; + } - if (owner_uid == range_owner_pwd->pw_uid) { - return range; - } - } + if (owner_uid == range_owner_pwd->pw_uid) { + return range; + } + } return NULL; } @@ -275,19 +273,17 @@ static const struct subordinate_range *find_range(struct commonio_db *db, static bool have_range(struct commonio_db *db, const char *owner, unsigned long start, unsigned long count); -static bool append_range(struct subid_range **ranges, const struct subordinate_range *new, int n) +static struct subid_range * +append_range(struct subid_range *ranges, const struct subordinate_range *new, int n) { - struct subid_range *sr; + ranges = reallocf_T(ranges, n + 1, struct subid_range); + if (ranges == NULL) + return NULL; - sr = REALLOC(*ranges, n + 1, struct subid_range); - if (!sr) - return false; + ranges[n].start = new->start; + ranges[n].count = new->count; - sr[n].start = new->start; - sr[n].count = new->count; - *ranges = sr; - - return true; + return ranges; } void free_subordinate_ranges(struct subordinate_range **ranges, int count) @@ -366,7 +362,7 @@ static unsigned long find_free_range(struct commonio_db *db, commonio_rewind(db); low = min; - while ((range = commonio_next(db)) != NULL) { + while (NULL != (range = commonio_next(db))) { unsigned long first = range->start; unsigned long last = first + range->count - 1; @@ -590,9 +586,9 @@ static bool have_range(struct commonio_db *db, if (doclose) { if (db == &subordinate_uid_db) - sub_uid_close(); + sub_uid_close(true); else - sub_gid_close(); + sub_gid_close(true); } return ret; @@ -668,14 +664,14 @@ int sub_uid_remove (const char *owner, uid_t start, unsigned long count) return remove_range (&subordinate_uid_db, owner, start, count); } -int sub_uid_close (void) +int sub_uid_close (bool process_selinux) { - return commonio_close (&subordinate_uid_db); + return commonio_close (&subordinate_uid_db, process_selinux); } -int sub_uid_unlock (void) +int sub_uid_unlock (bool process_selinux) { - return commonio_unlock (&subordinate_uid_db); + return commonio_unlock (&subordinate_uid_db, process_selinux); } uid_t sub_uid_find_free_range(uid_t min, uid_t max, unsigned long count) @@ -685,6 +681,37 @@ uid_t sub_uid_find_free_range(uid_t min, uid_t max, unsigned long count) return start == ULONG_MAX ? (uid_t) -1 : start; } + +/* + * want_subuid_file: check if /etc/subuid should be used. + * + * Returns true if /etc/subuid should be opened/created, if + * false is returned, /etc/subuid should not be accessed. + */ +bool want_subuid_file(void) +{ + if (get_subid_nss_handle() != NULL) + return false; + if (getdef_ulong("SUB_UID_COUNT", 65536) == 0) + return false; + return true; +} + +/* + * want_subgid_file: check if /etc/subuid should be used. + * + * Returns true if /etc/subgid should be opened/created, if + * false is returned, /etc/subgid should not be accessed. + */ +bool want_subgid_file(void) +{ + if (get_subid_nss_handle() != NULL) + return false; + if (getdef_ulong("SUB_GID_COUNT", 65536) == 0) + return false; + return true; +} + static struct commonio_db subordinate_gid_db = { SUBGID_FILE, /* filename */ &subordinate_ops, /* ops */ @@ -775,14 +802,14 @@ int sub_gid_remove (const char *owner, gid_t start, unsigned long count) return remove_range (&subordinate_gid_db, owner, start, count); } -int sub_gid_close (void) +int sub_gid_close (bool process_selinux) { - return commonio_close (&subordinate_gid_db); + return commonio_close (&subordinate_gid_db, process_selinux); } -int sub_gid_unlock (void) +int sub_gid_unlock (bool process_selinux) { - return commonio_unlock (&subordinate_gid_db); + return commonio_unlock (&subordinate_gid_db, process_selinux); } gid_t sub_gid_find_free_range(gid_t min, gid_t max, unsigned long count) @@ -884,21 +911,12 @@ int list_owner_ranges(const char *owner, enum subid_type id_type, struct subid_r have_owner_id = get_owner_id(owner, id_type, id); commonio_rewind(db); - while ((range = commonio_next(db)) != NULL) { - if (streq(range->owner, owner)) { - if (!append_range(&ranges, range, count++)) { - free(ranges); - ranges = NULL; - count = -1; - goto out; - } - } - - // Let's also compare with the ID - if (have_owner_id == true && streq(range->owner, id)) { - if (!append_range(&ranges, range, count++)) { - free(ranges); - ranges = NULL; + while (NULL != (range = commonio_next(db))) { + if ( streq(range->owner, owner) + || (have_owner_id && streq(range->owner, id))) + { + ranges = append_range(ranges, range, count++); + if (ranges == NULL) { count = -1; goto out; } @@ -907,9 +925,9 @@ int list_owner_ranges(const char *owner, enum subid_type id_type, struct subid_r out: if (id_type == ID_TYPE_UID) - sub_uid_close(); + sub_uid_close(true); else - sub_gid_close(); + sub_gid_close(true); *in_ranges = ranges; return count; @@ -944,7 +962,7 @@ static int append_uids(uid_t **uids, const char *owner, int n) return n; } - *uids = REALLOCF(*uids, n + 1, uid_t); + *uids = reallocf_T(*uids, n + 1, uid_t); if (!*uids) return -1; @@ -989,7 +1007,7 @@ int find_subid_owners(unsigned long id, enum subid_type id_type, uid_t **uids) *uids = NULL; commonio_rewind(db); - while ((range = commonio_next(db)) != NULL) { + while (NULL != (range = commonio_next(db))) { if (id >= range->start && id < range->start + range-> count) { n = append_uids(uids, range->owner, n); if (n < 0) @@ -998,9 +1016,9 @@ int find_subid_owners(unsigned long id, enum subid_type id_type, uid_t **uids) } if (id_type == ID_TYPE_UID) - sub_uid_close(); + sub_uid_close(true); else - sub_gid_close(); + sub_gid_close(true); return n; } @@ -1022,7 +1040,7 @@ bool new_subid_range(struct subordinate_range *range, enum subid_type id_type, b } if (!sub_uid_open(O_CREAT | O_RDWR)) { printf("Failed opening subuids (errno %d)\n", errno); - sub_uid_unlock(); + sub_uid_unlock(true); return false; } db = &subordinate_uid_db; @@ -1034,7 +1052,7 @@ bool new_subid_range(struct subordinate_range *range, enum subid_type id_type, b } if (!sub_gid_open(O_CREAT | O_RDWR)) { printf("Failed opening subgids (errno %d)\n", errno); - sub_gid_unlock(); + sub_gid_unlock(true); return false; } db = &subordinate_gid_db; @@ -1045,7 +1063,7 @@ bool new_subid_range(struct subordinate_range *range, enum subid_type id_type, b commonio_rewind(db); if (reuse) { - while ((r = commonio_next(db)) != NULL) { + while (NULL != (r = commonio_next(db))) { // TODO account for username vs uid_t if (!streq(r->owner, range->owner)) continue; @@ -1068,11 +1086,11 @@ bool new_subid_range(struct subordinate_range *range, enum subid_type id_type, b out: if (id_type == ID_TYPE_UID) { - sub_uid_close(); - sub_uid_unlock(); + sub_uid_close(true); + sub_uid_unlock(true); } else { - sub_gid_close(); - sub_gid_unlock(); + sub_gid_close(true); + sub_gid_unlock(true); } return ret; @@ -1094,7 +1112,7 @@ bool release_subid_range(struct subordinate_range *range, enum subid_type id_typ } if (!sub_uid_open(O_CREAT | O_RDWR)) { printf("Failed opening subuids (errno %d)\n", errno); - sub_uid_unlock(); + sub_uid_unlock(true); return false; } db = &subordinate_uid_db; @@ -1106,7 +1124,7 @@ bool release_subid_range(struct subordinate_range *range, enum subid_type id_typ } if (!sub_gid_open(O_CREAT | O_RDWR)) { printf("Failed opening subgids (errno %d)\n", errno); - sub_gid_unlock(); + sub_gid_unlock(true); return false; } db = &subordinate_gid_db; @@ -1118,11 +1136,11 @@ bool release_subid_range(struct subordinate_range *range, enum subid_type id_typ ret = remove_range(db, range->owner, range->start, range->count) == 1; if (id_type == ID_TYPE_UID) { - sub_uid_close(); - sub_uid_unlock(); + sub_uid_close(true); + sub_uid_unlock(true); } else { - sub_gid_close(); - sub_gid_unlock(); + sub_gid_close(true); + sub_gid_unlock(true); } return ret; diff --git a/lib/subordinateio.h b/lib/subordinateio.h index 3d1a0547..38f9f285 100644 --- a/lib/subordinateio.h +++ b/lib/subordinateio.h @@ -5,7 +5,7 @@ #ifndef _SUBORDINATEIO_H #define _SUBORDINATEIO_H -#include +#include "config.h" #ifdef ENABLE_SUBIDS @@ -13,7 +13,7 @@ #include "../libsubid/subid.h" -extern int sub_uid_close(void); +extern int sub_uid_close(bool process_selinux); extern bool have_sub_uids(const char *owner, uid_t start, unsigned long count); extern bool sub_uid_file_present (void); extern bool local_sub_uid_assigned(const char *owner); @@ -21,17 +21,18 @@ extern int sub_uid_lock (void); extern int sub_uid_setdbname (const char *filename); extern /*@observer@*/const char *sub_uid_dbname (void); extern int sub_uid_open (int mode); -extern int sub_uid_unlock (void); +extern int sub_uid_unlock (bool process_selinux); extern int sub_uid_add (const char *owner, uid_t start, unsigned long count); extern int sub_uid_remove (const char *owner, uid_t start, unsigned long count); extern uid_t sub_uid_find_free_range(uid_t min, uid_t max, unsigned long count); +extern bool want_subuid_file(void); extern int list_owner_ranges(const char *owner, enum subid_type id_type, struct subid_range **ranges); extern bool new_subid_range(struct subordinate_range *range, enum subid_type id_type, bool reuse); extern bool release_subid_range(struct subordinate_range *range, enum subid_type id_type); extern int find_subid_owners(unsigned long id, enum subid_type id_type, uid_t **uids); extern void free_subordinate_ranges(struct subordinate_range **ranges, int count); -extern int sub_gid_close(void); +extern int sub_gid_close(bool process_selinux); extern bool have_sub_gids(const char *owner, gid_t start, unsigned long count); extern bool sub_gid_file_present (void); extern bool local_sub_gid_assigned(const char *owner); @@ -39,10 +40,11 @@ extern int sub_gid_lock (void); extern int sub_gid_setdbname (const char *filename); extern /*@observer@*/const char *sub_gid_dbname (void); extern int sub_gid_open (int mode); -extern int sub_gid_unlock (void); +extern int sub_gid_unlock (bool process_selinux); extern int sub_gid_add (const char *owner, gid_t start, unsigned long count); extern int sub_gid_remove (const char *owner, gid_t start, unsigned long count); extern uid_t sub_gid_find_free_range(gid_t min, gid_t max, unsigned long count); +extern bool want_subgid_file(void); extern void free_subid_pointer(void *ptr); diff --git a/lib/sulog.c b/lib/sulog.c index 82f3ab77..db32dde4 100644 --- a/lib/sulog.c +++ b/lib/sulog.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/tcbfuncs.c b/lib/tcbfuncs.c index 998e601a..269ae0d0 100644 --- a/lib/tcbfuncs.c +++ b/lib/tcbfuncs.c @@ -5,7 +5,7 @@ #define _GNU_SOURCE -#include +#include "config.h" #include #include @@ -26,6 +26,8 @@ #include "shadowlog_internal.h" #include "string/sprintf/aprintf.h" #include "string/strcmp/streq.h" +#include "string/strcmp/strprefix.h" +#include "string/strerrno.h" #define SHADOWTCB_HASH_BY 1000 @@ -102,7 +104,7 @@ static /*@null@*/ char *shadowtcb_path_rel_existing (const char *name) if (lstat (path, &st) != 0) { fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - shadow_progname, path, strerror (errno)); + shadow_progname, path, strerrno()); free (path); return NULL; } @@ -122,10 +124,10 @@ static /*@null@*/ char *shadowtcb_path_rel_existing (const char *name) free (path); return NULL; } - if (READLINKNUL(path, link) == -1) { + if (readlinknul_a(path, link) == -1) { fprintf (shadow_logfd, _("%s: Cannot read symbolic link %s: %s\n"), - shadow_progname, path, strerror (errno)); + shadow_progname, path, strerrno()); free (path); return NULL; } @@ -186,10 +188,10 @@ static shadowtcb_status mkdir_leading (const char *name, uid_t uid) if (stat (TCB_DIR, &st) != 0) { fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - shadow_progname, TCB_DIR, strerror (errno)); + shadow_progname, TCB_DIR, strerrno()); goto out_free_path; } - while ((ind = strchr (ptr, '/'))) { + while (NULL != (ind = strchr(ptr, '/'))) { stpcpy(ind, ""); dir = aprintf(TCB_DIR "/%s", path); if (dir == NULL) { @@ -199,19 +201,19 @@ static shadowtcb_status mkdir_leading (const char *name, uid_t uid) if ((mkdir (dir, 0700) != 0) && (errno != EEXIST)) { fprintf (shadow_logfd, _("%s: Cannot create directory %s: %s\n"), - shadow_progname, dir, strerror (errno)); + shadow_progname, dir, strerrno()); goto out_free_dir; } if (chown (dir, 0, st.st_gid) != 0) { fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - shadow_progname, dir, strerror (errno)); + shadow_progname, dir, strerrno()); goto out_free_dir; } if (chmod (dir, 0711) != 0) { fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - shadow_progname, dir, strerror (errno)); + shadow_progname, dir, strerrno()); goto out_free_dir; } free (dir); @@ -242,7 +244,7 @@ static shadowtcb_status unlink_suffs (const char *user) if ((unlink (tmp) != 0) && (errno != ENOENT)) { fprintf (shadow_logfd, _("%s: unlink: %s: %s\n"), - shadow_progname, tmp, strerror (errno)); + shadow_progname, tmp, strerrno()); free (tmp); return SHADOWTCB_FAILURE; } @@ -253,30 +255,38 @@ static shadowtcb_status unlink_suffs (const char *user) } /* path should be a relative existing tcb directory */ -static shadowtcb_status rmdir_leading (char *path) +static shadowtcb_status +rmdir_leading(const char *relpath) { - char *ind, *dir; + char *ind, *path, *p; shadowtcb_status ret = SHADOWTCB_SUCCESS; - while ((ind = strrchr (path, '/'))) { + + path = aprintf(TCB_DIR "/%s", relpath); + if (path == NULL) + goto oom; + + p = strprefix(path, TCB_DIR "/"); + + while ((ind = strrchr(p, '/'))) { stpcpy(ind, ""); - dir = aprintf(TCB_DIR "/%s", path); - if (dir == NULL) { - OUT_OF_MEMORY; - return SHADOWTCB_FAILURE; - } - if (rmdir (dir) != 0) { + + if (rmdir(path) != 0) { if (errno != ENOTEMPTY) { fprintf (shadow_logfd, _("%s: Cannot remove directory %s: %s\n"), - shadow_progname, dir, strerror (errno)); + shadow_progname, path, strerrno()); ret = SHADOWTCB_FAILURE; } - free (dir); break; } - free (dir); } + + free(path); return ret; + +oom: + OUT_OF_MEMORY; + return SHADOWTCB_FAILURE; } static shadowtcb_status move_dir (const char *user_newname, uid_t user_newid) @@ -298,7 +308,7 @@ static shadowtcb_status move_dir (const char *user_newname, uid_t user_newid) if (stat (olddir, &oldmode) != 0) { fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - shadow_progname, olddir, strerror (errno)); + shadow_progname, olddir, strerrno()); goto out_free; } old_uid = oldmode.st_uid; @@ -325,7 +335,7 @@ static shadowtcb_status move_dir (const char *user_newname, uid_t user_newid) if (rename (real_old_dir, real_new_dir) != 0) { fprintf (shadow_logfd, _("%s: Cannot rename %s to %s: %s\n"), - shadow_progname, real_old_dir, real_new_dir, strerror (errno)); + shadow_progname, real_old_dir, real_new_dir, strerrno()); goto out_free; } if (rmdir_leading (real_old_dir_rel) == SHADOWTCB_FAILURE) { @@ -334,7 +344,7 @@ static shadowtcb_status move_dir (const char *user_newname, uid_t user_newid) if ((unlink (olddir) != 0) && (errno != ENOENT)) { fprintf (shadow_logfd, _("%s: Cannot remove %s: %s\n"), - shadow_progname, olddir, strerror (errno)); + shadow_progname, olddir, strerrno()); goto out_free; } newdir = aprintf(TCB_DIR "/%s", user_newname); @@ -349,7 +359,7 @@ static shadowtcb_status move_dir (const char *user_newname, uid_t user_newid) && (symlink (real_new_dir_rel, newdir) != 0)) { fprintf (shadow_logfd, _("%s: Cannot create symbolic link %s: %s\n"), - shadow_progname, real_new_dir_rel, strerror (errno)); + shadow_progname, real_new_dir_rel, strerrno()); goto out_free; } ret = SHADOWTCB_SUCCESS; @@ -453,26 +463,26 @@ shadowtcb_status shadowtcb_move (/*@NULL@*/const char *user_newname, uid_t user_ if (stat (tcbdir, &dirmode) != 0) { fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - shadow_progname, tcbdir, strerror (errno)); + shadow_progname, tcbdir, strerrno()); goto out_free; } if (chown (tcbdir, 0, 0) != 0) { fprintf (shadow_logfd, _("%s: Cannot change owners of %s: %s\n"), - shadow_progname, tcbdir, strerror (errno)); + shadow_progname, tcbdir, strerrno()); goto out_free; } if (chmod (tcbdir, 0700) != 0) { fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - shadow_progname, tcbdir, strerror (errno)); + shadow_progname, tcbdir, strerrno()); goto out_free; } if (lstat (shadow, &filemode) != 0) { if (errno != ENOENT) { fprintf (shadow_logfd, _("%s: Cannot lstat %s: %s\n"), - shadow_progname, shadow, strerror (errno)); + shadow_progname, shadow, strerrno()); goto out_free; } fprintf (shadow_logfd, @@ -491,13 +501,13 @@ shadowtcb_status shadowtcb_move (/*@NULL@*/const char *user_newname, uid_t user_ if (chown (shadow, user_newid, filemode.st_gid) != 0) { fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - shadow_progname, shadow, strerror (errno)); + shadow_progname, shadow, strerrno()); goto out_free; } if (chmod (shadow, filemode.st_mode & 07777) != 0) { fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - shadow_progname, shadow, strerror (errno)); + shadow_progname, shadow, strerrno()); goto out_free; } } @@ -507,13 +517,13 @@ shadowtcb_status shadowtcb_move (/*@NULL@*/const char *user_newname, uid_t user_ if (chown (tcbdir, user_newid, dirmode.st_gid) != 0) { fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - shadow_progname, tcbdir, strerror (errno)); + shadow_progname, tcbdir, strerrno()); goto out_free; } if (chmod (tcbdir, dirmode.st_mode & 07777) != 0) { fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - shadow_progname, tcbdir, strerror (errno)); + shadow_progname, tcbdir, strerrno()); goto out_free; } ret = SHADOWTCB_SUCCESS; @@ -538,7 +548,7 @@ shadowtcb_status shadowtcb_create (const char *name, uid_t uid) if (stat (TCB_DIR, &tcbdir_stat) != 0) { fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - shadow_progname, TCB_DIR, strerror (errno)); + shadow_progname, TCB_DIR, strerrno()); return SHADOWTCB_FAILURE; } shadowgid = tcbdir_stat.st_gid; @@ -562,39 +572,38 @@ shadowtcb_status shadowtcb_create (const char *name, uid_t uid) } if (mkdir (dir, 0700) != 0) { fprintf (shadow_logfd, - _("%s: mkdir: %s: %s\n"), - shadow_progname, dir, strerror (errno)); + _("%s: mkdir: %s: %s\n"), shadow_progname, dir, strerrno()); goto out_free; } fd = open (shadow, O_RDWR | O_CREAT | O_TRUNC, 0600); if (fd < 0) { fprintf (shadow_logfd, _("%s: Cannot open %s: %s\n"), - shadow_progname, shadow, strerror (errno)); + shadow_progname, shadow, strerrno()); goto out_free; } if (fchown (fd, 0, authgid) != 0) { fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - shadow_progname, shadow, strerror (errno)); + shadow_progname, shadow, strerrno()); goto out_free; } if (fchmod (fd, (mode_t) ((authgid == shadowgid) ? 0600 : 0640)) != 0) { fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - shadow_progname, shadow, strerror (errno)); + shadow_progname, shadow, strerrno()); goto out_free; } if (chown (dir, 0, authgid) != 0) { fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - shadow_progname, dir, strerror (errno)); + shadow_progname, dir, strerrno()); goto out_free; } if (chmod (dir, (mode_t) ((authgid == shadowgid) ? 02700 : 02710)) != 0) { fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - shadow_progname, dir, strerror (errno)); + shadow_progname, dir, strerrno()); goto out_free; } if ( (shadowtcb_set_user (name) == SHADOWTCB_FAILURE) diff --git a/lib/time/day_to_str.c b/lib/time/day_to_str.c index e3e42210..fb8f3418 100644 --- a/lib/time/day_to_str.c +++ b/lib/time/day_to_str.c @@ -3,7 +3,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include "time/day_to_str.h" diff --git a/lib/time/day_to_str.h b/lib/time/day_to_str.h index 3feb089e..f2f75d6e 100644 --- a/lib/time/day_to_str.h +++ b/lib/time/day_to_str.h @@ -7,7 +7,7 @@ #define SHADOW_INCLUDE_LIB_TIME_DAY_TO_STR_H_ -#include +#include "config.h" #include @@ -16,12 +16,14 @@ #include "string/strcpy/strtcpy.h" -#define DAY_TO_STR(str, day) day_to_str(countof(str), str, day) +// day_to_str_a - day-since-Epoch to string array +#define day_to_str_a(str, day) day_to_str(countof(str), str, day) inline void day_to_str(size_t size, char buf[size], long day); +// dat_to_str - day-since-Epoch to string inline void day_to_str(size_t size, char buf[size], long day) { diff --git a/lib/ttytype.c b/lib/ttytype.c index 3514f294..ee50ce3b 100644 --- a/lib/ttytype.c +++ b/lib/ttytype.c @@ -7,10 +7,11 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" +#include #include #include @@ -47,7 +48,7 @@ void ttytype (const char *line) perror (typefile); return; } - while (fgets (buf, sizeof buf, fp) == buf) { + while (fgets(buf, sizeof(buf), fp) != NULL) { if (strprefix(buf, "#")) { continue; } diff --git a/lib/typetraits.h b/lib/typetraits.h index 7d3269d6..fb3d970d 100644 --- a/lib/typetraits.h +++ b/lib/typetraits.h @@ -6,7 +6,7 @@ #define SHADOW_INCLUDE_LIB_TYPETRAITS_H_ -#include +#include "config.h" #include "sizeof.h" @@ -54,4 +54,15 @@ ) +#define QChar_of(s) typeof \ +( \ + _Generic(s, \ + const char *: (const char){0}, \ + const void *: (const char){0}, \ + char *: (char){0}, \ + void *: (char){0} \ + ) \ +) + + #endif // include guard diff --git a/lib/tz.c b/lib/tz.c index b854a593..78f6593c 100644 --- a/lib/tz.c +++ b/lib/tz.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ifndef USE_PAM @@ -37,7 +37,7 @@ fp = fopen (fname, "r"); if ( (NULL == fp) - || (fgets (tzbuf, sizeof (tzbuf), fp) == NULL)) { + || (fgets(tzbuf, sizeof(tzbuf), fp) == NULL)) { result = "TZ=CST6CDT"; } else { stpsep(tzbuf, "\n"); diff --git a/lib/ulimit.c b/lib/ulimit.c index 45a184af..541f45fd 100644 --- a/lib/ulimit.c +++ b/lib/ulimit.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/user_busy.c b/lib/user_busy.c index d689d34d..d08229cb 100644 --- a/lib/user_busy.c +++ b/lib/user_busy.c @@ -7,11 +7,12 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id: $" #include +#include #include #include #include @@ -29,6 +30,7 @@ #include "shadowlog.h" #include "string/sprintf/snprintf.h" #include "string/strcmp/streq.h" +#include "string/strcmp/strneq.h" #include "string/strcmp/strprefix.h" @@ -65,14 +67,14 @@ user_busy_utmp(const char *name) struct utmpx *utent; setutxent(); - while ((utent = getutxent()) != NULL) + while (NULL != (utent = getutxent())) { if (utent->ut_type != USER_PROCESS) { continue; } - if (strncmp (utent->ut_user, name, sizeof utent->ut_user) != 0) { + if (!strneq_a(utent->ut_user, name)) continue; - } + if (kill (utent->ut_pid, 0) != 0) { continue; } @@ -97,12 +99,12 @@ static int different_namespace (const char *sname) char path[41]; char buf[512], buf2[512]; - SNPRINTF(path, "/proc/%s/ns/user", sname); + stprintf_a(path, "/proc/%s/ns/user", sname); - if (READLINKNUL(path, buf) == -1) + if (readlinknul_a(path, buf) == -1) return 0; - if (READLINKNUL("/proc/self/ns/user", buf2) == -1) + if (readlinknul_a("/proc/self/ns/user", buf2) == -1) return 0; if (streq(buf, buf2)) @@ -120,13 +122,13 @@ static int check_status (const char *name, const char *sname, uid_t uid) char line[1024]; FILE *sfile; - SNPRINTF(status, "/proc/%s/status", sname); + stprintf_a(status, "/proc/%s/status", sname); sfile = fopen (status, "r"); if (NULL == sfile) { return 0; } - while (fgets (line, sizeof (line), sfile) == line) { + while (fgets(line, sizeof(line), sfile) != NULL) { if (strprefix(line, "Uid:\t")) { unsigned long ruid, euid, suid; @@ -180,7 +182,7 @@ static int user_busy_processes (const char *name, uid_t uid) if (proc == NULL) { perror ("opendir /proc"); #ifdef ENABLE_SUBIDS - sub_uid_close(); + sub_uid_close(true); #endif return 0; } @@ -188,12 +190,12 @@ static int user_busy_processes (const char *name, uid_t uid) perror ("stat (\"/\")"); (void) closedir (proc); #ifdef ENABLE_SUBIDS - sub_uid_close(); + sub_uid_close(true); #endif return 0; } - while ((ent = readdir (proc)) != NULL) { + while (NULL != (ent = readdir(proc))) { tmp_d_name = ent->d_name; /* * Ingo Molnar's patch introducing NPTL for 2.4 hides @@ -213,7 +215,7 @@ static int user_busy_processes (const char *name, uid_t uid) } /* Check if the process is in our chroot */ - SNPRINTF(root_path, "/proc/%lu/root", (unsigned long) pid); + stprintf_a(root_path, "/proc/%lu/root", (unsigned long) pid); if (stat (root_path, &sbroot_process) != 0) { continue; } @@ -225,7 +227,7 @@ static int user_busy_processes (const char *name, uid_t uid) if (check_status (name, tmp_d_name, uid) != 0) { (void) closedir (proc); #ifdef ENABLE_SUBIDS - sub_uid_close(); + sub_uid_close(true); #endif fprintf (log_get_logfd(), _("%s: user %s is currently used by process %d\n"), @@ -233,10 +235,10 @@ static int user_busy_processes (const char *name, uid_t uid) return 1; } - SNPRINTF(task_path, "/proc/%lu/task", (unsigned long) pid); + stprintf_a(task_path, "/proc/%lu/task", (unsigned long) pid); task_dir = opendir (task_path); if (task_dir != NULL) { - while ((ent = readdir (task_dir)) != NULL) { + while (NULL != (ent = readdir(task_dir))) { pid_t tid; if (get_pid(ent->d_name, &tid) == -1) { continue; @@ -248,7 +250,7 @@ static int user_busy_processes (const char *name, uid_t uid) (void) closedir (proc); (void) closedir (task_dir); #ifdef ENABLE_SUBIDS - sub_uid_close(); + sub_uid_close(true); #endif fprintf (log_get_logfd(), _("%s: user %s is currently used by process %d\n"), @@ -264,7 +266,7 @@ static int user_busy_processes (const char *name, uid_t uid) (void) closedir (proc); #ifdef ENABLE_SUBIDS - sub_uid_close(); + sub_uid_close(true); #endif /* ENABLE_SUBIDS */ return 0; } diff --git a/lib/utmp.c b/lib/utmp.c index ff886354..3c2a51aa 100644 --- a/lib/utmp.c +++ b/lib/utmp.c @@ -3,11 +3,12 @@ * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François + * SPDX-FileCopyrightText: 2025, Evgeny Grin (Karlson2k) * * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include "defines.h" #include "prototypes.h" @@ -15,29 +16,37 @@ #include #include +#include #include #include #include #include #include +#include #include #include +#include -#include "alloc/x/xcalloc.h" -#include "alloc/x/xmalloc.h" +#include "alloc/calloc.h" +#include "alloc/malloc.h" +#include "attr.h" #include "sizeof.h" +#include "string/strchr/strnul.h" #include "string/strcmp/streq.h" +#include "string/strcmp/strneq.h" #include "string/strcmp/strprefix.h" #include "string/strcpy/strncpy.h" -#include "string/strcpy/strtcpy.h" -#include "string/strdup/xstrdup.h" -#include "string/strdup/xstrndup.h" +#include "string/strdup/strdup.h" +#include "string/strdup/strndup.h" #ident "$Id$" #define UTX_LINESIZE countof(memberof(struct utmpx, ut_line)) +// ttyname_ra - tty name re-entrant array +#define ttyname_ra(fd, buf) ttyname_r(fd, buf, countof(buf)) + /* * is_my_tty -- determine if "tty" is the same TTY stdin is using @@ -45,27 +54,20 @@ static bool is_my_tty(const char tty[UTX_LINESIZE]) { - char full_tty[STRLEN("/dev/") + UTX_LINESIZE + 1]; - /* tmptty shall be bigger than full_tty */ - static char tmptty[sizeof(full_tty) + 1]; + char full_tty[STRLEN("/dev/") + UTX_LINESIZE + 1]; + char my_tty[countof(full_tty)]; stpcpy(full_tty, ""); if (tty[0] != '/') strcpy (full_tty, "/dev/"); strncat(full_tty, tty, UTX_LINESIZE); - if (streq(tmptty, "")) { - const char *tname = ttyname (STDIN_FILENO); - if (NULL != tname) - STRTCPY(tmptty, tname); - } - - if (streq(tmptty, "")) { + if (ttyname_ra(STDIN_FILENO, my_tty) != 0) { (void) puts (_("Unable to determine your tty name.")); exit (EXIT_FAILURE); } - return streq(full_tty, tmptty); + return streq(full_tty, my_tty); } @@ -110,7 +112,7 @@ failtmp(const char *username, const struct utmpx *failent) * Append the new failure record and close the log file. */ - if (write_full(fd, failent, sizeof *failent) == -1) { + if (write_full(fd, failent, sizeof(*failent)) == -1) { goto err_write; } @@ -137,61 +139,76 @@ err_close: * get_current_utmp - return the most probable utmp entry for the current * session * - * The utmp file is scanned for an entry with the same process ID. - * The line entered by the *getty / telnetd, etc. should also match - * the current terminal. + * When an entry is returned by this function, and if the utmpx structure + * has a ut_id field and this field is not empty, then this field + * should be used to update the entry information. * - * When an entry is returned by get_current_utmp, and if the utmpx - * structure has a ut_id field, this field should be used to update - * the entry information. - * - * Return NULL if no entries exist in utmp for the current process. + * Return NULL if no entries exist in utmp for the current process or + * there is an error reading utmp. */ +ATTR_MALLOC(free) static /*@null@*/ /*@only@*/struct utmpx * -get_current_utmp(void) +get_current_utmp(pid_t main_pid) { struct utmpx *ut; - struct utmpx *ret = NULL; + struct utmpx *ut_by_pid = NULL; + struct utmpx *ut_by_line = NULL; setutxent(); /* First, try to find a valid utmp entry for this process. */ - while ((ut = getutxent()) != NULL) { - if ( (ut->ut_pid == getpid ()) - && ('\0' != ut->ut_id[0]) - && ( (LOGIN_PROCESS == ut->ut_type) - || (USER_PROCESS == ut->ut_type)) - /* A process may have failed to close an entry - * Check if this entry refers to the current tty */ - && is_my_tty(ut->ut_line)) - { - break; + while (NULL != (ut = getutxent())) { + if ( (LOGIN_PROCESS != ut->ut_type) + && (USER_PROCESS != ut->ut_type)) + continue; + + if (main_pid == ut->ut_pid) { + if (is_my_tty(ut->ut_line)) + break; /* Perfect match, stop the search */ + + if (NULL == ut_by_pid) { + ut_by_pid = xmalloc_T(1, struct utmpx); + *ut_by_pid = *ut; + } + + } else if ( (NULL == ut_by_line) + && (LOGIN_PROCESS == ut->ut_type) /* Be more picky when matching by 'ut_line' only */ + && (is_my_tty(ut->ut_line))) { + ut_by_line = xmalloc_T(1, struct utmpx); + *ut_by_line = *ut; } } + if (NULL == ut) + ut = ut_by_pid ?: ut_by_line; + if (NULL != ut) { - ret = XMALLOC(1, struct utmpx); - memcpy (ret, ut, sizeof (*ret)); + struct utmpx *ut_copy; + + ut_copy = xmalloc_T(1, struct utmpx); + memcpy(ut_copy, ut, sizeof(*ut)); + ut = ut_copy; } + free(ut_by_line); + free(ut_by_pid); endutxent(); - return ret; + return ut; } int -get_session_host(char **out) +get_session_host(char **out, pid_t main_pid) { int ret = 0; struct utmpx *ut; - ut = get_current_utmp(); + ut = get_current_utmp(main_pid); #if defined(HAVE_STRUCT_UTMPX_UT_HOST) - if ((ut != NULL) && (ut->ut_host[0] != '\0')) { - *out = XSTRNDUP(ut->ut_host); - free (ut); + if ((ut != NULL) && !strneq_a(ut->ut_host, "")) { + *out = xstrndup_a(ut->ut_host); } else { *out = NULL; ret = -2; @@ -201,6 +218,8 @@ get_session_host(char **out) ret = -2; #endif + free(ut); + return ret; } @@ -231,7 +250,8 @@ updwtmpx(const char *filename, const struct utmpx *ut) * It accepts an utmp entry in input (ut) to return an entry with * the right ut_id. This is typically an entry returned by * get_current_utmp - * If ut is NULL, ut_id will be forged based on the line argument. + * If ut is NULL or ut->ut_id is empty, ut_id will be forged based on + * the line argument. * * The ut_host field of the input structure may also be kept, and is * used to define the ut_addr/ut_addr_v6 fields. (if these fields @@ -244,7 +264,7 @@ updwtmpx(const char *filename, const struct utmpx *ut) */ static /*@only@*/struct utmpx * prepare_utmp(const char *name, const char *line, const char *host, - /*@null@*/const struct utmpx *ut) + /*@null@*/const struct utmpx *ut, pid_t main_pid) { char *hostname = NULL; struct utmpx *utent; @@ -258,36 +278,36 @@ prepare_utmp(const char *name, const char *line, const char *host, if (NULL != host && !streq(host, "")) hostname = xstrdup(host); #if defined(HAVE_STRUCT_UTMPX_UT_HOST) - else if (NULL != ut && '\0' != ut->ut_host[0]) - hostname = XSTRNDUP(ut->ut_host); + else if (NULL != ut && !strneq_a(ut->ut_host, "")) + hostname = xstrndup_a(ut->ut_host); #endif line = strprefix(line, "/dev/") ?: line; - utent = XCALLOC(1, struct utmpx); + utent = xcalloc_T(1, struct utmpx); utent->ut_type = USER_PROCESS; - utent->ut_pid = getpid (); - STRNCPY(utent->ut_line, line); - if (NULL != ut) { - STRNCPY(utent->ut_id, ut->ut_id); + utent->ut_pid = main_pid; + strncpy_a(utent->ut_line, line); + if ( (NULL != ut) + && ('\0' != ut->ut_id[0])) { + strncpy_a(utent->ut_id, ut->ut_id); } else { - /* XXX - assumes /dev/tty?? */ - STRNCPY(utent->ut_id, line + 3); + strncpy_a(utent->ut_id, strnul(line) - MIN(strlen(line), countof(utent->ut_id))); } #if defined(HAVE_STRUCT_UTMPX_UT_NAME) - STRNCPY(utent->ut_name, name); + strncpy_a(utent->ut_name, name); #endif - STRNCPY(utent->ut_user, name); + strncpy_a(utent->ut_user, name); if (NULL != hostname) { struct addrinfo *info = NULL; #if defined(HAVE_STRUCT_UTMPX_UT_HOST) - STRNCPY(utent->ut_host, hostname); + strncpy_a(utent->ut_host, hostname); #endif #if defined(HAVE_STRUCT_UTMPX_UT_SYSLEN) - utent->ut_syslen = MIN (strlen (hostname), - sizeof (utent->ut_host)); + utent->ut_syslen = MIN(strlen(hostname), + sizeof(utent->ut_host)); #endif #if defined(HAVE_STRUCT_UTMPX_UT_ADDR) || defined(HAVE_STRUCT_UTMPX_UT_ADDR_V6) if (getaddrinfo (hostname, NULL, NULL, &info) == 0) { @@ -298,23 +318,17 @@ prepare_utmp(const char *name, const char *line, const char *host, struct sockaddr_in *sa = (struct sockaddr_in *) info->ai_addr; # if defined(HAVE_STRUCT_UTMPX_UT_ADDR) - memcpy (&(utent->ut_addr), - &(sa->sin_addr), - MIN (sizeof (utent->ut_addr), - sizeof (sa->sin_addr))); + utent->ut_addr = sa->sin_addr.s_addr; # endif # if defined(HAVE_STRUCT_UTMPX_UT_ADDR_V6) - memcpy (utent->ut_addr_v6, - &(sa->sin_addr), - MIN (sizeof (utent->ut_addr_v6), - sizeof (sa->sin_addr))); + utent->ut_addr_v6[0] = sa->sin_addr.s_addr; } else if (info->ai_family == AF_INET6) { struct sockaddr_in6 *sa = (struct sockaddr_in6 *) info->ai_addr; memcpy (utent->ut_addr_v6, &(sa->sin6_addr), - MIN (sizeof (utent->ut_addr_v6), - sizeof (sa->sin6_addr))); + MIN(sizeof(utent->ut_addr_v6), + sizeof(sa->sin6_addr))); # endif } freeaddrinfo (info); @@ -359,7 +373,7 @@ setutmp(struct utmpx *ut) #if !defined(USE_PAM) /* This is done by pam_lastlog */ - updwtmpx(_WTMP_FILE, ut); + updwtmpx(_PATH_WTMP, ut); #endif return err; @@ -367,12 +381,13 @@ setutmp(struct utmpx *ut) int -update_utmp(const char *user, const char *tty, const char *host) +update_utmp(const char *user, const char *tty, const char *host, + pid_t main_pid) { struct utmpx *utent, *ut; - utent = get_current_utmp (); - ut = prepare_utmp (user, tty, host, utent); + utent = get_current_utmp(main_pid); + ut = prepare_utmp(user, tty, host, utent, main_pid); (void) setutmp (ut); /* make entry in the utmp & wtmp files */ @@ -384,13 +399,15 @@ update_utmp(const char *user, const char *tty, const char *host) void -record_failure(const char *failent_user, const char *tty, const char *hostname) +record_failure(const char *failent_user, const char *tty, const char *hostname, + pid_t main_pid) { struct utmpx *utent, *failent; if (getdef_str ("FTMP_FILE") != NULL) { - utent = get_current_utmp (); - failent = prepare_utmp (failent_user, tty, hostname, utent); + utent = get_current_utmp(main_pid); + failent = prepare_utmp(failent_user, tty, hostname, utent, + main_pid); failtmp (failent_user, failent); free (utent); free (failent); @@ -410,12 +427,12 @@ active_sessions_count(const char *name, unsigned long limit) if (USER_PROCESS != ut->ut_type) { continue; } - if ('\0' == ut->ut_user[0]) { + if (strneq_a(ut->ut_user, "")) continue; - } - if (strncmp (name, ut->ut_user, sizeof (ut->ut_user)) != 0) { + + if (!strneq_a(ut->ut_user, name)) continue; - } + count++; if (count > limit) { break; diff --git a/lib/valid.c b/lib/valid.c index a237e9e1..919a99bc 100644 --- a/lib/valid.c +++ b/lib/valid.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/write_full.c b/lib/write_full.c index 4ef902cd..b5b05056 100644 --- a/lib/write_full.c +++ b/lib/write_full.c @@ -6,7 +6,7 @@ */ -#include +#include "config.h" #ident "$Id$" diff --git a/lib/xgetXXbyYY.c b/lib/xgetXXbyYY.c index 01976fe7..58902120 100644 --- a/lib/xgetXXbyYY.c +++ b/lib/xgetXXbyYY.c @@ -29,10 +29,11 @@ #include #include #include +#include #include #include "alloc/malloc.h" -#include "alloc/x/xrealloc.h" +#include "alloc/realloc.h" #include "prototypes.h" #include "shadowlog.h" @@ -53,7 +54,7 @@ /* we have to start with something */ size_t length = 0x100; - result = MALLOC(1, LOOKUP_TYPE); + result = malloc_T(1, LOOKUP_TYPE); if (NULL == result) { goto oom; } @@ -61,7 +62,7 @@ while (true) { int status; LOOKUP_TYPE *resbuf = NULL; - buffer = XREALLOC(buffer, length, char); + buffer = xrealloc_T(buffer, length, char); status = REENTRANT_NAME(ARG_NAME, result, buffer, length, &resbuf); if ((0 == status) && (resbuf == result)) { diff --git a/lib/xgetgrgid.c b/lib/xgetgrgid.c index 64191966..99234b9f 100644 --- a/lib/xgetgrgid.c +++ b/lib/xgetgrgid.c @@ -26,7 +26,7 @@ * This file provides wrapper to the getgrgid or getgrgid_r functions. */ -#include +#include "config.h" #include "groupio.h" diff --git a/lib/xgetgrnam.c b/lib/xgetgrnam.c index 35ad9ee9..76577e8f 100644 --- a/lib/xgetgrnam.c +++ b/lib/xgetgrnam.c @@ -26,7 +26,7 @@ * This file provides wrapper to the getgrnam or getgrnam_r functions. */ -#include +#include "config.h" #include "groupio.h" diff --git a/lib/xgetpwnam.c b/lib/xgetpwnam.c index 4387e798..1992b67c 100644 --- a/lib/xgetpwnam.c +++ b/lib/xgetpwnam.c @@ -26,7 +26,7 @@ * This file provides wrapper to the getpwnam or getpwnam_r functions. */ -#include +#include "config.h" #include "pwio.h" diff --git a/lib/xgetpwuid.c b/lib/xgetpwuid.c index d663a429..ccd1d563 100644 --- a/lib/xgetpwuid.c +++ b/lib/xgetpwuid.c @@ -26,7 +26,7 @@ * This file provides wrapper to the getpwuid or getpwuid_r functions. */ -#include +#include "config.h" #include "pwio.h" diff --git a/lib/xgetspnam.c b/lib/xgetspnam.c index ebda94ba..6df61fd3 100644 --- a/lib/xgetspnam.c +++ b/lib/xgetspnam.c @@ -26,7 +26,7 @@ * This file provides wrapper to the getspnam or getspnam_r functions. */ -#include +#include "config.h" #include "shadowio.h" diff --git a/lib/xprefix_getpwnam.c b/lib/xprefix_getpwnam.c index cec01062..1004efeb 100644 --- a/lib/xprefix_getpwnam.c +++ b/lib/xprefix_getpwnam.c @@ -26,7 +26,7 @@ * This file provides wrapper to the prefix_getpwnam or prefix_getpwnam_r functions. */ -#include +#include "config.h" #include "pwio.h" diff --git a/lib/yesno.c b/lib/yesno.c index b37e41a9..6951b5dd 100644 --- a/lib/yesno.c +++ b/lib/yesno.c @@ -7,7 +7,7 @@ */ -#include +#include "config.h" #ident "$Id$" diff --git a/libsubid/Makefile.in b/libsubid/Makefile.in index 96c5604d..bc11891a 100644 --- a/libsubid/Makefile.in +++ b/libsubid/Makefile.in @@ -168,7 +168,7 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/api.Plo am__mv = mv -f @@ -216,11 +216,12 @@ am__define_uniq_tagged_files = \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/subid.h.in \ - $(top_srcdir)/depcomp + $(top_srcdir)/build-aux/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -249,7 +250,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -293,7 +293,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/libsubid/api.c b/libsubid/api.c index feed2f7c..0bc4364e 100644 --- a/libsubid/api.c +++ b/libsubid/api.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include #include diff --git a/libsubid/subid.h b/libsubid/subid.h index a38d1fa9..8dc73b75 100644 --- a/libsubid/subid.h +++ b/libsubid/subid.h @@ -42,9 +42,9 @@ extern "C" { /* * subid_init: initialize libsubid * - * @progname: Name to display as program. If NULL, then "(libsubid)" will be + * @progname: name to display as program. If NULL, then "(libsubid)" will be * shown in error messages. - * @logfd: Open file pointer to pass error messages to. If NULL, then + * @logfd: open file pointer to pass error messages to. If NULL, then * /dev/null will be opened and messages will be sent there. The * default if libsubid_init() is not called is stderr (2). * @@ -58,7 +58,7 @@ bool subid_init(const char *progname, FILE *logfd); /* * subid_free: free memory allocated in any subid_* function * - * @ptr: Pointer to a memory block to release. + * @ptr: pointer to a memory block to release. * * Some functions like @subid_get_uid_ranges allocate memory internally. As * soon as a result is no longer needed, it should be freed with this routine. @@ -98,7 +98,7 @@ int subid_get_gid_ranges(const char *owner, struct subid_range **ranges); * subid_get_uid_owners: return a list of uids to which the given uid has been * delegated. * - * @uid: The subuid being queried + * @uid: the subuid being queried * @owners: a pointer to an array of uids into which the results are placed. * The returned array must be freed by the caller. * @@ -110,7 +110,7 @@ int subid_get_uid_owners(uid_t uid, uid_t **owner); * subid_get_gid_owners: return a list of uids to which the given gid has been * delegated. * - * @uid: The subgid being queried + * @uid: the subgid being queried * @owners: a pointer to an array of uids into which the results are placed. * The returned array must be freed by the caller. * diff --git a/libsubid/subid.h.in b/libsubid/subid.h.in index 7090c6c8..decc28b7 100644 --- a/libsubid/subid.h.in +++ b/libsubid/subid.h.in @@ -42,9 +42,9 @@ extern "C" { /* * subid_init: initialize libsubid * - * @progname: Name to display as program. If NULL, then "(libsubid)" will be + * @progname: name to display as program. If NULL, then "(libsubid)" will be * shown in error messages. - * @logfd: Open file pointer to pass error messages to. If NULL, then + * @logfd: open file pointer to pass error messages to. If NULL, then * /dev/null will be opened and messages will be sent there. The * default if libsubid_init() is not called is stderr (2). * @@ -58,7 +58,7 @@ bool subid_init(const char *progname, FILE *logfd); /* * subid_free: free memory allocated in any subid_* function * - * @ptr: Pointer to a memory block to release. + * @ptr: pointer to a memory block to release. * * Some functions like @subid_get_uid_ranges allocate memory internally. As * soon as a result is no longer needed, it should be freed with this routine. @@ -98,7 +98,7 @@ int subid_get_gid_ranges(const char *owner, struct subid_range **ranges); * subid_get_uid_owners: return a list of uids to which the given uid has been * delegated. * - * @uid: The subuid being queried + * @uid: the subuid being queried * @owners: a pointer to an array of uids into which the results are placed. * The returned array must be freed by the caller. * @@ -110,7 +110,7 @@ int subid_get_uid_owners(uid_t uid, uid_t **owner); * subid_get_gid_owners: return a list of uids to which the given gid has been * delegated. * - * @uid: The subgid being queried + * @uid: the subgid being queried * @owners: a pointer to an array of uids into which the results are placed. * The returned array must be freed by the caller. * diff --git a/m4/libtool.m4 b/m4/libtool.m4 index e7b68334..c4c02946 100644 --- a/m4/libtool.m4 +++ b/m4/libtool.m4 @@ -1,7 +1,6 @@ # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # -# Copyright (C) 1996-2001, 2003-2019, 2021-2022 Free Software -# Foundation, Inc. +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives @@ -32,7 +31,7 @@ m4_define([_LT_COPYING], [dnl # along with this program. If not, see . ]) -# serial 59 LT_INIT +# serial 58 LT_INIT # LT_PREREQ(VERSION) @@ -182,7 +181,6 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_DECL_FILECMD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl @@ -221,8 +219,8 @@ esac ofile=libtool can_build_shared=yes -# All known linkers require a '.a' archive for static linking (except MSVC and -# ICC, which need '.lib'). +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld @@ -779,7 +777,7 @@ _LT_EOF # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? - $SED '$q' "$ltmain" >> "$cfgfile" \ + sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || @@ -1043,8 +1041,8 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF @@ -1068,12 +1066,17 @@ _LT_EOF _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) - case $MACOSX_DEPLOYMENT_TARGET,$host in - 10.[[012]],*|,*powerpc*-darwin[[5-8]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - *) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[912]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*|11.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac @@ -1122,12 +1125,12 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES], output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - _LT_TAGVAR(module_expsym_cmds, $1)="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else @@ -1241,8 +1244,7 @@ _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], -[m4_require([_LT_DECL_SED])dnl -AC_MSG_CHECKING([for sysroot]) +[AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot @@ -1259,7 +1261,7 @@ case $with_sysroot in #( fi ;; #( /*) - lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( @@ -1289,7 +1291,7 @@ ia64-*-hpux*) # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; @@ -1306,7 +1308,7 @@ ia64-*-hpux*) echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; @@ -1318,7 +1320,7 @@ ia64-*-hpux*) ;; esac else - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; @@ -1340,7 +1342,7 @@ mips64*-*linux*) echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; @@ -1348,7 +1350,7 @@ mips64*-*linux*) emul="${emul}64" ;; esac - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; @@ -1356,7 +1358,7 @@ mips64*-*linux*) emul="${emul}ltsmip" ;; esac - case `$FILECMD conftest.$ac_objext` in + case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; @@ -1376,14 +1378,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `$FILECMD conftest.o` in + case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - case `$FILECMD conftest.o` in + case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; @@ -1451,7 +1453,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then - case `$FILECMD conftest.o` in + case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) @@ -1490,22 +1492,9 @@ need_locks=$enable_libtool_lock m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} +: ${AR_FLAGS=cr} _LT_DECL([], [AR], [1], [The archiver]) - -# Use ARFLAGS variable as AR's operation code to sync the variable naming with -# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have -# higher priority because thats what people were doing historically (setting -# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS -# variable obsoleted/removed. - -test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} -lt_ar_flags=$AR_FLAGS -_LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) - -# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override -# by AR_FLAGS because that was never working and AR_FLAGS is about to die. -_LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], - [Flags to create an archive]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no @@ -1724,7 +1713,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl lt_cv_sys_max_cmd_len=8192; ;; - bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` @@ -1767,7 +1756,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[[ ]]//'` + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi @@ -2217,35 +2206,26 @@ m4_defun([_LT_CMD_STRIPLIB], striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -z "$STRIP"; then - AC_MSG_RESULT([no]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) else - if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - old_striplib="$STRIP --strip-debug" - striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) - else - case $host_os in - darwin*) - # FIXME - insert some real tests, host_os isn't really good enough +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) - ;; - freebsd*) - if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then - old_striplib="$STRIP --strip-debug" - striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) + else AC_MSG_RESULT([no]) - ;; - esac - fi + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) @@ -2568,7 +2548,7 @@ cygwin* | mingw* | pw32* | cegcc*) case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; @@ -2578,14 +2558,14 @@ m4_if([$1], [],[ ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; - *,cl* | *,icl*) - # Native MSVC or ICC + *,cl*) + # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' @@ -2604,7 +2584,7 @@ m4_if([$1], [],[ done IFS=$lt_save_ifs # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form @@ -2641,7 +2621,7 @@ m4_if([$1], [],[ ;; *) - # Assume MSVC and ICC wrapper + # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; @@ -2674,7 +2654,7 @@ dgux*) shlibpath_var=LD_LIBRARY_PATH ;; -freebsd* | dragonfly* | midnightbsd*) +freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then @@ -3485,7 +3465,7 @@ beos*) bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='$FILECMD -L' + lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; @@ -3519,14 +3499,14 @@ darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; -freebsd* | dragonfly* | midnightbsd*) +freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac @@ -3540,7 +3520,7 @@ haiku*) ;; hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' @@ -3587,7 +3567,7 @@ netbsd* | netbsdelf*-gnu) newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=$FILECMD + lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; @@ -3714,13 +3694,13 @@ else mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) - case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 @@ -3746,7 +3726,7 @@ else # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; @@ -3986,7 +3966,7 @@ esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" @@ -4004,20 +3984,20 @@ fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ @@ -4041,7 +4021,7 @@ for ac_symprfx in "" "_"; do if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++ or ICC, + # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ @@ -4059,9 +4039,9 @@ for ac_symprfx in "" "_"; do " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else - lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no @@ -4349,7 +4329,7 @@ m4_if([$1], [CXX], [ ;; esac ;; - freebsd* | dragonfly* | midnightbsd*) + freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) @@ -4432,7 +4412,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) - case `$CC -V 2>&1 | $SED 5q` in + case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4774,7 +4754,7 @@ m4_if([$1], [CXX], [ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) - case `$CC -V 2>&1 | $SED 5q` in + case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' @@ -4957,7 +4937,7 @@ m4_if([$1], [CXX], [ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) @@ -4965,7 +4945,7 @@ m4_if([$1], [CXX], [ ;; cygwin* | mingw* | cegcc*) case $cc_basename in - cl* | icl*) + cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) @@ -5025,15 +5005,15 @@ dnl Note also adjust exclude_expsyms for C++ above. case $host_os in cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time + # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using - # Microsoft Visual C++ or Intel C++ Compiler. + # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) + # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) @@ -5088,7 +5068,7 @@ dnl Note also adjust exclude_expsyms for C++ above. _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no - case `$LD -v | $SED -e 's/([[^)]]\+)\s\+//' 2>&1` in + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... @@ -5200,7 +5180,6 @@ _LT_EOF emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) @@ -5215,7 +5194,7 @@ _LT_EOF # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) @@ -5258,7 +5237,7 @@ _LT_EOF _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac - case `$CC -V 2>&1 | $SED 5q` in + case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes @@ -5270,14 +5249,13 @@ _LT_EOF if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) @@ -5287,7 +5265,7 @@ _LT_EOF _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi @@ -5419,7 +5397,7 @@ _LT_EOF if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no @@ -5602,12 +5580,12 @@ _LT_EOF cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using - # Microsoft Visual C++ or Intel C++ Compiler. + # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in - cl* | icl*) - # Native MSVC or ICC + cl*) + # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes @@ -5648,7 +5626,7 @@ _LT_EOF fi' ;; *) - # Assume MSVC and ICC wrapper + # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. @@ -5696,7 +5674,7 @@ _LT_EOF ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly* | midnightbsd*) + freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes @@ -5837,7 +5815,6 @@ _LT_EOF # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; esac ;; @@ -5909,7 +5886,6 @@ _LT_EOF emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) @@ -6680,8 +6656,8 @@ if test yes != "$_lt_caught_CXX_error"; then cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in - ,cl* | no,cl* | ,icl* | no,icl*) - # Native MSVC or ICC + ,cl* | no,cl*) + # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' @@ -6779,7 +6755,6 @@ if test yes != "$_lt_caught_CXX_error"; then emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) @@ -6810,7 +6785,7 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; - freebsd* | dragonfly* | midnightbsd*) + freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes @@ -6947,7 +6922,7 @@ if test yes != "$_lt_caught_CXX_error"; then # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in @@ -7087,13 +7062,13 @@ if test yes != "$_lt_caught_CXX_error"; then _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) - case `$CC -V 2>&1 | $SED 5q` in + case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' @@ -8239,14 +8214,6 @@ _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) -# _LT_DECL_FILECMD -# ---------------- -# Check for a file(cmd) program that can be used to detect file type and magic -m4_defun([_LT_DECL_FILECMD], -[AC_CHECK_TOOL([FILECMD], [file], [:]) -_LT_DECL([], [FILECMD], [1], [A file(cmd) program that detects file types]) -])# _LD_DECL_FILECMD - # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 index b0b5e9c2..94b08297 100644 --- a/m4/ltoptions.m4 +++ b/m4/ltoptions.m4 @@ -1,7 +1,7 @@ # Helper functions for option handling. -*- Autoconf -*- # -# Copyright (C) 2004-2005, 2007-2009, 2011-2019, 2021-2022 Free -# Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 index 902508bd..48bc9344 100644 --- a/m4/ltsugar.m4 +++ b/m4/ltsugar.m4 @@ -1,6 +1,6 @@ # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007-2008, 2011-2019, 2021-2022 Free Software +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 index b155d0ac..fa04b52a 100644 --- a/m4/ltversion.m4 +++ b/m4/ltversion.m4 @@ -1,7 +1,6 @@ # ltversion.m4 -- version numbers -*- Autoconf -*- # -# Copyright (C) 2004, 2011-2019, 2021-2022 Free Software Foundation, -# Inc. +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives @@ -10,15 +9,15 @@ # @configure_input@ -# serial 4245 ltversion.m4 +# serial 4179 ltversion.m4 # This file is part of GNU Libtool -m4_define([LT_PACKAGE_VERSION], [2.4.7]) -m4_define([LT_PACKAGE_REVISION], [2.4.7]) +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.7' -macro_revision='2.4.7' +[macro_version='2.4.6' +macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 index 0f7a8759..c6b26f88 100644 --- a/m4/lt~obsolete.m4 +++ b/m4/lt~obsolete.m4 @@ -1,7 +1,7 @@ # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # -# Copyright (C) 2004-2005, 2007, 2009, 2011-2019, 2021-2022 Free -# Software Foundation, Inc. +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives diff --git a/man/Makefile.in b/man/Makefile.in index 640ba660..54a3f5c8 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -233,6 +233,7 @@ am__relativize = \ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -261,7 +262,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -305,7 +305,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/chage.1.xml b/man/chage.1.xml index 4ccdf483..a3fff291 100644 --- a/man/chage.1.xml +++ b/man/chage.1.xml @@ -205,6 +205,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/chfn.1.xml b/man/chfn.1.xml index 2fa49feb..e329efe9 100644 --- a/man/chfn.1.xml +++ b/man/chfn.1.xml @@ -138,6 +138,7 @@ Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory. + No SELINUX support. diff --git a/man/chgpasswd.8.xml b/man/chgpasswd.8.xml index f4a83c24..d74e11d3 100644 --- a/man/chgpasswd.8.xml +++ b/man/chgpasswd.8.xml @@ -134,6 +134,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/chpasswd.8.xml b/man/chpasswd.8.xml index cffd9df1..b6ae345e 100644 --- a/man/chpasswd.8.xml +++ b/man/chpasswd.8.xml @@ -176,6 +176,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/chsh.1.xml b/man/chsh.1.xml index db2d0ceb..c4e5614e 100644 --- a/man/chsh.1.xml +++ b/man/chsh.1.xml @@ -89,6 +89,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. @@ -115,30 +116,22 @@ NOTE - - The only restriction placed on the login shell is that the command - name must be listed in /etc/shells, unless the - invoker is the superuser, and then any value may be added. An - account with a restricted login shell may not change her login shell. - For this reason, placing /bin/rsh in - /etc/shells is discouraged since accidentally - changing to a restricted shell would prevent the user from ever - changing her login shell back to its original value. - - + The only restriction placed on the login shell is that the command name must be listed in /etc/shells. + + If this file does not exist, the definitions are taken from the files %vendordir%/shells, %vendordir%/shells.d/* and /etc/shells.d/* in that order. If /etc/shells.d/@filename@ exists, then %vendordir%/shells.d/@filename@ will not be used. + + If the invoker is the superuser any value may be added regardless what is defined in the configuration files. An account with a restricted login shell may not change her login shell. - - For this reason, placing /bin/rsh in /etc/shells is discouraged since accidentally changing to a restricted shell would prevent the user from ever diff --git a/man/config.xml b/man/config.xml index a071111f..976f4475 100644 --- a/man/config.xml +++ b/man/config.xml @@ -1,2 +1,2 @@ - + diff --git a/man/cs/Makefile.in b/man/cs/Makefile.in index 05ac560b..1aca495b 100644 --- a/man/cs/Makefile.in +++ b/man/cs/Makefile.in @@ -165,6 +165,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -193,7 +194,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -237,7 +237,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/da/Makefile.in b/man/da/Makefile.in index 05e4c41f..a7692f7d 100644 --- a/man/da/Makefile.in +++ b/man/da/Makefile.in @@ -167,6 +167,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -195,7 +196,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -239,7 +239,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/da/man1/chfn.1 b/man/da/man1/chfn.1 index 5158c18b..79857a35 100644 --- a/man/da/man1/chfn.1 +++ b/man/da/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Danish .\" -.TH "CHFN" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHFN" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -87,7 +87,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. +directory\&. No SELINUX support\&. .RE .PP \fB\-u\fR, \fB\-\-help\fR diff --git a/man/da/man1/newgrp.1 b/man/da/man1/newgrp.1 index 1d5c1d80..04443bb4 100644 --- a/man/da/man1/newgrp.1 +++ b/man/da/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Danish .\" -.TH "NEWGRP" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGRP" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man1/sg.1 b/man/da/man1/sg.1 index 31a37b72..75ec0e0b 100644 --- a/man/da/man1/sg.1 +++ b/man/da/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Danish .\" -.TH "SG" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SG" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- execute command as different group ID .SH "SYNOPSIS" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "BESKRIVELSE" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "TILVALG" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "KONFIGURATION" .PP The following configuration variables in diff --git a/man/da/man5/gshadow.5 b/man/da/man5/gshadow.5 index 91a8c3e0..e6cb95da 100644 --- a/man/da/man5/gshadow.5 +++ b/man/da/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Danish .\" -.TH "GSHADOW" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "GSHADOW" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man8/groupdel.8 b/man/da/man8/groupdel.8 index 91347512..d35155c3 100644 --- a/man/da/man8/groupdel.8 +++ b/man/da/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Danish .\" -.TH "GROUPDEL" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPDEL" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/da/man8/logoutd.8 b/man/da/man8/logoutd.8 index 3a5cd2c3..c635456f 100644 --- a/man/da/man8/logoutd.8 +++ b/man/da/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Danish .\" -.TH "LOGOUTD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LOGOUTD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man8/nologin.8 b/man/da/man8/nologin.8 index 266785a7..9fca4a69 100644 --- a/man/da/man8/nologin.8 +++ b/man/da/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Danish .\" -.TH "NOLOGIN" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NOLOGIN" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man8/vipw.8 b/man/da/man8/vipw.8 index 04716507..c881d853 100644 --- a/man/da/man8/vipw.8 +++ b/man/da/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Danish .\" -.TH "VIPW" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "VIPW" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/de/Makefile.in b/man/de/Makefile.in index b62fb9fa..7d000260 100644 --- a/man/de/Makefile.in +++ b/man/de/Makefile.in @@ -169,6 +169,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -197,7 +198,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -241,7 +241,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/de/man1/chage.1 b/man/de/man1/chage.1 index 3f9a3dd8..927d19c6 100644 --- a/man/de/man1/chage.1 +++ b/man/de/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "CHAGE" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHAGE" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -138,7 +138,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/de/man1/chfn.1 b/man/de/man1/chfn.1 index 80ad271f..033a9e76 100644 --- a/man/de/man1/chfn.1 +++ b/man/de/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "CHFN" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHFN" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -87,7 +87,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. +directory\&. No SELINUX support\&. .RE .PP \fB\-u\fR, \fB\-\-help\fR diff --git a/man/de/man1/chsh.1 b/man/de/man1/chsh.1 index 5d2cb26f..b9ce26dc 100644 --- a/man/de/man1/chsh.1 +++ b/man/de/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "CHSH" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHSH" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -54,7 +54,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR @@ -76,13 +76,9 @@ marks\&. .SH "ANMERKUNGEN" .PP The only restriction placed on the login shell is that the command name must be listed in -/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing -/bin/rsh -in -/etc/shells -is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +/etc/shells\&. .PP -For this reason, placing +If the invoker is the superuser any value may be added regardless what is defined in the configuration files\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh in /etc/shells diff --git a/man/de/man1/expiry.1 b/man/de/man1/expiry.1 index bd4386f3..fd557781 100644 --- a/man/de/man1/expiry.1 +++ b/man/de/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "EXPIRY" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "EXPIRY" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man1/gpasswd.1 b/man/de/man1/gpasswd.1 index b7a49380..cd817c79 100644 --- a/man/de/man1/gpasswd.1 +++ b/man/de/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "GPASSWD" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "GPASSWD" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -98,7 +98,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-r\fR, \fB\-\-remove\-password\fR diff --git a/man/de/man1/login.1 b/man/de/man1/login.1 index ea808053..21b3c248 100644 --- a/man/de/man1/login.1 +++ b/man/de/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "LOGIN" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "LOGIN" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -100,7 +100,7 @@ from the shell prompt without .RS 4 Keine Authentifizierung durchf\(:uhren, der Benutzer ist vorauthentifiziert\&. .sp -Note: In that case, +Note: in that case, \fIusername\fR is mandatory\&. .RE diff --git a/man/de/man1/newgrp.1 b/man/de/man1/newgrp.1 index 03e0820f..f5d2d448 100644 --- a/man/de/man1/newgrp.1 +++ b/man/de/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "NEWGRP" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGRP" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man1/passwd.1 b/man/de/man1/passwd.1 index f01186c9..7fe7200b 100644 --- a/man/de/man1/passwd.1 +++ b/man/de/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "PASSWD" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "PASSWD" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/de/man1/sg.1 b/man/de/man1/sg.1 index c867c061..6f867998 100644 --- a/man/de/man1/sg.1 +++ b/man/de/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "SG" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SG" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- f\(:uhrt einen Befehl unter einer anderen Gruppenkennung aus .SH "\(:UBERSICHT" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "BESCHREIBUNG" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "OPTIONEN" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "KONFIGURATION" .PP The following configuration variables in diff --git a/man/de/man1/su.1 b/man/de/man1/su.1 index 3f4a8bef..9c778b51 100644 --- a/man/de/man1/su.1 +++ b/man/de/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "SU" "1" "24.06.2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SU" "1" "30.12.2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man3/shadow.3 b/man/de/man3/shadow.3 index 49ece1cb..82f8b9fa 100644 --- a/man/de/man3/shadow.3 +++ b/man/de/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: Library Calls -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "SHADOW" "3" "24.06.2025" "shadow\-utils 4\&.18\&.0" "Library Calls" +.TH "SHADOW" "3" "30.12.2025" "shadow\-utils 4\&.19\&.0" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/faillog.5 b/man/de/man5/faillog.5 index a584820e..d524fd8f 100644 --- a/man/de/man5/faillog.5 +++ b/man/de/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "FAILLOG" "5" "24.06.2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuratio" +.TH "FAILLOG" "5" "30.12.2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/gshadow.5 b/man/de/man5/gshadow.5 index f70f198f..5da01881 100644 --- a/man/de/man5/gshadow.5 +++ b/man/de/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "GSHADOW" "5" "24.06.2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "GSHADOW" "5" "30.12.2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/limits.5 b/man/de/man5/limits.5 index 1586bb72..82d56b56 100644 --- a/man/de/man5/limits.5 +++ b/man/de/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "LIMITS" "5" "24.06.2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LIMITS" "5" "30.12.2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/login.access.5 b/man/de/man5/login.access.5 index a9f44318..a47b5fd7 100644 --- a/man/de/man5/login.access.5 +++ b/man/de/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "LOGIN\&.ACCESS" "5" "24.06.2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "30.12.2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/login.defs.5 b/man/de/man5/login.defs.5 index ecb8f6b5..3e76d49c 100644 --- a/man/de/man5/login.defs.5 +++ b/man/de/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "LOGIN\&.DEFS" "5" "24.06.2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "30.12.2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/passwd.5 b/man/de/man5/passwd.5 index 1d7f5e94..19747476 100644 --- a/man/de/man5/passwd.5 +++ b/man/de/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "PASSWD" "5" "24.06.2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PASSWD" "5" "30.12.2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,7 @@ Informationen zu den Benutzerkonten .PP /etc/shadow .RS 4 -optionale Datei f\(:ur verschl\(:usselte Passw\(:orter +Optional encrypted password file\&. .RE .PP /etc/passwd\- diff --git a/man/de/man5/porttime.5 b/man/de/man5/porttime.5 index f2895783..42e037c9 100644 --- a/man/de/man5/porttime.5 +++ b/man/de/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "PORTTIME" "5" "24.06.2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PORTTIME" "5" "30.12.2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/shadow.5 b/man/de/man5/shadow.5 index f8ec3008..e7b31953 100644 --- a/man/de/man5/shadow.5 +++ b/man/de/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "SHADOW" "5" "24.06.2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SHADOW" "5" "30.12.2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/suauth.5 b/man/de/man5/suauth.5 index 9d9841fc..ac31af82 100644 --- a/man/de/man5/suauth.5 +++ b/man/de/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "SUAUTH" "5" "24.06.2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUAUTH" "5" "30.12.2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/chgpasswd.8 b/man/de/man8/chgpasswd.8 index df79298a..6e2c4351 100644 --- a/man/de/man8/chgpasswd.8 +++ b/man/de/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "CHGPASSWD" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHGPASSWD" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -92,7 +92,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/de/man8/chpasswd.8 b/man/de/man8/chpasswd.8 index 2ec9a7cc..4c716f03 100644 --- a/man/de/man8/chpasswd.8 +++ b/man/de/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "CHPASSWD" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHPASSWD" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -108,7 +108,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/de/man8/faillog.8 b/man/de/man8/faillog.8 index 170139de..4435de27 100644 --- a/man/de/man8/faillog.8 +++ b/man/de/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "FAILLOG" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "FAILLOG" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -113,7 +113,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/de/man8/groupadd.8 b/man/de/man8/groupadd.8 index 4c86c17f..6cdf49a0 100644 --- a/man/de/man8/groupadd.8 +++ b/man/de/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "GROUPADD" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPADD" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,7 +135,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/de/man8/groupdel.8 b/man/de/man8/groupdel.8 index 7e44f5dc..b54d8647 100644 --- a/man/de/man8/groupdel.8 +++ b/man/de/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "GROUPDEL" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPDEL" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/de/man8/groupmems.8 b/man/de/man8/groupmems.8 index fbf54e74..c771e633 100644 --- a/man/de/man8/groupmems.8 +++ b/man/de/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "GROUPMEMS" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMEMS" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -107,7 +107,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "EINRICHTUNG" .PP diff --git a/man/de/man8/groupmod.8 b/man/de/man8/groupmod.8 index 64deee58..82188da4 100644 --- a/man/de/man8/groupmod.8 +++ b/man/de/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "GROUPMOD" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMOD" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -117,7 +117,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/de/man8/grpck.8 b/man/de/man8/grpck.8 index 5eca402a..2ecb7ed7 100644 --- a/man/de/man8/grpck.8 +++ b/man/de/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "GRPCK" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GRPCK" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -148,7 +148,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/de/man8/lastlog.8 b/man/de/man8/lastlog.8 index fb6e3df6..4aa62d60 100644 --- a/man/de/man8/lastlog.8 +++ b/man/de/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "LASTLOG" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LASTLOG" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ Print only lastlog records older than .RS 4 Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,14 +73,14 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/de/man8/logoutd.8 b/man/de/man8/logoutd.8 index 91fa06b8..d2de91c7 100644 --- a/man/de/man8/logoutd.8 +++ b/man/de/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "LOGOUTD" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LOGOUTD" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/newusers.8 b/man/de/man8/newusers.8 index eb2b447d..5bc78e9a 100644 --- a/man/de/man8/newusers.8 +++ b/man/de/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "NEWUSERS" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NEWUSERS" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -53,7 +53,7 @@ It can be the name of a new user or the name of an existing user (or a user crea .PP \fIpw_passwd\fR .RS 4 -Dieses Feld wird verschl\(:usselt und als neues verschl\(:usseltes Passwort benutzt\&. +If this field is not empty, it will be encrypted and used as the new value of the encrypted password\&. .RE .PP \fIpw_uid\fR @@ -161,7 +161,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/de/man8/nologin.8 b/man/de/man8/nologin.8 index 58d73fed..1468355d 100644 --- a/man/de/man8/nologin.8 +++ b/man/de/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "NOLOGIN" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NOLOGIN" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/pwck.8 b/man/de/man8/pwck.8 index d72b8e11..5853becc 100644 --- a/man/de/man8/pwck.8 +++ b/man/de/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "PWCK" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCK" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -226,7 +226,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/de/man8/pwconv.8 b/man/de/man8/pwconv.8 index 10e11f37..d0dde1e4 100644 --- a/man/de/man8/pwconv.8 +++ b/man/de/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "PWCONV" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCONV" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -128,7 +128,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "FEHLER" .PP diff --git a/man/de/man8/sulogin.8 b/man/de/man8/sulogin.8 index f9bece4c..b74d2039 100644 --- a/man/de/man8/sulogin.8 +++ b/man/de/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "SULOGIN" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "SULOGIN" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/useradd.8 b/man/de/man8/useradd.8 index dac17238..9a2bc24d 100644 --- a/man/de/man8/useradd.8 +++ b/man/de/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "USERADD" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERADD" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -351,7 +351,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/de/man8/userdel.8 b/man/de/man8/userdel.8 index 670618f4..035b132c 100644 --- a/man/de/man8/userdel.8 +++ b/man/de/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "USERDEL" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERDEL" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,7 +74,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/de/man8/usermod.8 b/man/de/man8/usermod.8 index 2fe0fb4f..c9bd9fc3 100644 --- a/man/de/man8/usermod.8 +++ b/man/de/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "USERMOD" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERMOD" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,7 +188,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/de/man8/vipw.8 b/man/de/man8/vipw.8 index cf0bbdb6..446869a6 100644 --- a/man/de/man8/vipw.8 +++ b/man/de/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24.06.2025 +.\" Date: 30.12.2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: German .\" -.TH "VIPW" "8" "24.06.2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "VIPW" "8" "30.12.2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/es/Makefile.in b/man/es/Makefile.in index 3cf7ebf6..e928a181 100644 --- a/man/es/Makefile.in +++ b/man/es/Makefile.in @@ -130,6 +130,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -158,7 +159,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -202,7 +202,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/faillog.8.xml b/man/faillog.8.xml index effe43a9..7d453fd2 100644 --- a/man/faillog.8.xml +++ b/man/faillog.8.xml @@ -162,6 +162,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/fi/Makefile.in b/man/fi/Makefile.in index 991b5c26..fd0ea0b8 100644 --- a/man/fi/Makefile.in +++ b/man/fi/Makefile.in @@ -161,6 +161,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -189,7 +190,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -233,7 +233,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/fr/Makefile.in b/man/fr/Makefile.in index 10a407ee..f89abb40 100644 --- a/man/fr/Makefile.in +++ b/man/fr/Makefile.in @@ -171,6 +171,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -199,7 +200,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -243,7 +243,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/fr/man1/chage.1 b/man/fr/man1/chage.1 index 32e9e3f4..80f32614 100644 --- a/man/fr/man1/chage.1 +++ b/man/fr/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "CHAGE" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHAGE" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -138,7 +138,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/fr/man1/chfn.1 b/man/fr/man1/chfn.1 index 7fdea83a..77ae343f 100644 --- a/man/fr/man1/chfn.1 +++ b/man/fr/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "CHFN" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHFN" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -87,7 +87,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. +directory\&. No SELINUX support\&. .RE .PP \fB\-u\fR, \fB\-\-help\fR diff --git a/man/fr/man1/chsh.1 b/man/fr/man1/chsh.1 index e31eed9e..a6a8e81b 100644 --- a/man/fr/man1/chsh.1 +++ b/man/fr/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "CHSH" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHSH" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -54,7 +54,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR @@ -72,13 +72,9 @@ marks\&. .SH "NOTE" .PP The only restriction placed on the login shell is that the command name must be listed in -/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing -/bin/rsh -in -/etc/shells -is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +/etc/shells\&. .PP -For this reason, placing +If the invoker is the superuser any value may be added regardless what is defined in the configuration files\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh in /etc/shells diff --git a/man/fr/man1/expiry.1 b/man/fr/man1/expiry.1 index 1820cf56..93c5735e 100644 --- a/man/fr/man1/expiry.1 +++ b/man/fr/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "EXPIRY" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "EXPIRY" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/gpasswd.1 b/man/fr/man1/gpasswd.1 index 8d8af3e1..5a122421 100644 --- a/man/fr/man1/gpasswd.1 +++ b/man/fr/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "GPASSWD" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "GPASSWD" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -98,7 +98,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-r\fR, \fB\-\-remove\-password\fR diff --git a/man/fr/man1/login.1 b/man/fr/man1/login.1 index d94dc06a..68829322 100644 --- a/man/fr/man1/login.1 +++ b/man/fr/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "LOGIN" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "LOGIN" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -100,7 +100,7 @@ from the shell prompt without .RS 4 Ne pas r\('ealiser d\*(Aqauthentification\&. L\*(Aqutilisateur est pr\('e\-authentifi\('e\&. .sp -Note: In that case, +Note: in that case, \fIusername\fR is mandatory\&. .RE diff --git a/man/fr/man1/newgidmap.1 b/man/fr/man1/newgidmap.1 index 42850cd5..822cdd86 100644 --- a/man/fr/man1/newgidmap.1 +++ b/man/fr/man1/newgidmap.1 @@ -2,12 +2,12 @@ .\" Title: newgidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "NEWGIDMAP" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGIDMAP" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/newgrp.1 b/man/fr/man1/newgrp.1 index fec72008..cb44ad87 100644 --- a/man/fr/man1/newgrp.1 +++ b/man/fr/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "NEWGRP" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGRP" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/newuidmap.1 b/man/fr/man1/newuidmap.1 index 972d6bff..774407a7 100644 --- a/man/fr/man1/newuidmap.1 +++ b/man/fr/man1/newuidmap.1 @@ -2,12 +2,12 @@ .\" Title: newuidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "NEWUIDMAP" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWUIDMAP" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/passwd.1 b/man/fr/man1/passwd.1 index 3fa495be..25d874b4 100644 --- a/man/fr/man1/passwd.1 +++ b/man/fr/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "PASSWD" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "PASSWD" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/fr/man1/sg.1 b/man/fr/man1/sg.1 index d97d56fd..1c2bfb16 100644 --- a/man/fr/man1/sg.1 +++ b/man/fr/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "SG" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SG" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- ex\('ecuter une commande avec un autre identifiant de groupe .SH "SYNOPSIS" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "DESCRIPTION" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "OPTIONS" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in diff --git a/man/fr/man1/su.1 b/man/fr/man1/su.1 index c644fd7d..9aaa380e 100644 --- a/man/fr/man1/su.1 +++ b/man/fr/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "SU" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SU" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man3/shadow.3 b/man/fr/man3/shadow.3 index 2f7ae0e7..e70ea7d2 100644 --- a/man/fr/man3/shadow.3 +++ b/man/fr/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: Library Calls -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "SHADOW" "3" "24/06/2025" "shadow\-utils 4\&.18\&.0" "Library Calls" +.TH "SHADOW" "3" "30/12/2025" "shadow\-utils 4\&.19\&.0" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/faillog.5 b/man/fr/man5/faillog.5 index 9e12280f..3f86c065 100644 --- a/man/fr/man5/faillog.5 +++ b/man/fr/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "FAILLOG" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuratio" +.TH "FAILLOG" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/gshadow.5 b/man/fr/man5/gshadow.5 index 5d01f2b4..874fad05 100644 --- a/man/fr/man5/gshadow.5 +++ b/man/fr/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "GSHADOW" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "GSHADOW" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/limits.5 b/man/fr/man5/limits.5 index 8f0a6ea8..3fb514db 100644 --- a/man/fr/man5/limits.5 +++ b/man/fr/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "LIMITS" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LIMITS" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/login.access.5 b/man/fr/man5/login.access.5 index 5fae65d0..337c3c95 100644 --- a/man/fr/man5/login.access.5 +++ b/man/fr/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "LOGIN\&.ACCESS" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/login.defs.5 b/man/fr/man5/login.defs.5 index d6bcb6b8..3efc422e 100644 --- a/man/fr/man5/login.defs.5 +++ b/man/fr/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "LOGIN\&.DEFS" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/passwd.5 b/man/fr/man5/passwd.5 index 397b7dec..4d4e5df5 100644 --- a/man/fr/man5/passwd.5 +++ b/man/fr/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "PASSWD" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PASSWD" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,7 @@ Informations sur les comptes des utilisateurs\&. .PP /etc/shadow .RS 4 -un mot de passe chiffr\('e optionnel +Optional encrypted password file\&. .RE .PP /etc/passwd\- diff --git a/man/fr/man5/porttime.5 b/man/fr/man5/porttime.5 index 924c4254..ae8f8518 100644 --- a/man/fr/man5/porttime.5 +++ b/man/fr/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "PORTTIME" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PORTTIME" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/shadow.5 b/man/fr/man5/shadow.5 index cd3ccf42..154728ed 100644 --- a/man/fr/man5/shadow.5 +++ b/man/fr/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "SHADOW" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SHADOW" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/suauth.5 b/man/fr/man5/suauth.5 index d37f0eb4..01b14467 100644 --- a/man/fr/man5/suauth.5 +++ b/man/fr/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "SUAUTH" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUAUTH" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/subgid.5 b/man/fr/man5/subgid.5 index 171c757a..e9fedba4 100644 --- a/man/fr/man5/subgid.5 +++ b/man/fr/man5/subgid.5 @@ -2,12 +2,12 @@ .\" Title: subgid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "SUBGID" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUBGID" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/subuid.5 b/man/fr/man5/subuid.5 index 609b2136..5cc0b261 100644 --- a/man/fr/man5/subuid.5 +++ b/man/fr/man5/subuid.5 @@ -2,12 +2,12 @@ .\" Title: subuid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "SUBUID" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUBUID" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/chgpasswd.8 b/man/fr/man8/chgpasswd.8 index a5c234be..c55f98f1 100644 --- a/man/fr/man8/chgpasswd.8 +++ b/man/fr/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "CHGPASSWD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHGPASSWD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -92,7 +92,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/fr/man8/chpasswd.8 b/man/fr/man8/chpasswd.8 index c5961e7f..8e91a28f 100644 --- a/man/fr/man8/chpasswd.8 +++ b/man/fr/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "CHPASSWD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHPASSWD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -108,7 +108,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/fr/man8/faillog.8 b/man/fr/man8/faillog.8 index d72db444..ed978842 100644 --- a/man/fr/man8/faillog.8 +++ b/man/fr/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "FAILLOG" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "FAILLOG" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -113,7 +113,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/fr/man8/groupadd.8 b/man/fr/man8/groupadd.8 index 142e5533..49c67db6 100644 --- a/man/fr/man8/groupadd.8 +++ b/man/fr/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "GROUPADD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPADD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,7 +135,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/fr/man8/groupdel.8 b/man/fr/man8/groupdel.8 index 413a952d..91411ef1 100644 --- a/man/fr/man8/groupdel.8 +++ b/man/fr/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "GROUPDEL" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPDEL" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/fr/man8/groupmems.8 b/man/fr/man8/groupmems.8 index 4db98a30..d69a75fd 100644 --- a/man/fr/man8/groupmems.8 +++ b/man/fr/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "GROUPMEMS" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMEMS" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -107,7 +107,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "CONFIGURATION" .PP diff --git a/man/fr/man8/groupmod.8 b/man/fr/man8/groupmod.8 index ff56dda0..2c7dd7d7 100644 --- a/man/fr/man8/groupmod.8 +++ b/man/fr/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "GROUPMOD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMOD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -117,7 +117,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/fr/man8/grpck.8 b/man/fr/man8/grpck.8 index 8f6f1a1d..bd947b50 100644 --- a/man/fr/man8/grpck.8 +++ b/man/fr/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "GRPCK" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GRPCK" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -148,7 +148,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/fr/man8/lastlog.8 b/man/fr/man8/lastlog.8 index e96a14b8..ab50c3ab 100644 --- a/man/fr/man8/lastlog.8 +++ b/man/fr/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "LASTLOG" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LASTLOG" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ Print only lastlog records older than .RS 4 Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,14 +73,14 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/fr/man8/logoutd.8 b/man/fr/man8/logoutd.8 index 6db0a74b..bed3629a 100644 --- a/man/fr/man8/logoutd.8 +++ b/man/fr/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "LOGOUTD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LOGOUTD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/newusers.8 b/man/fr/man8/newusers.8 index ebeb2691..5b86ba65 100644 --- a/man/fr/man8/newusers.8 +++ b/man/fr/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "NEWUSERS" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NEWUSERS" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -53,7 +53,7 @@ It can be the name of a new user or the name of an existing user (or a user crea .PP \fIpw_passwd\fR .RS 4 -Ce champ sera chiffr\('e et utilis\('e comme nouvelle valeur du mot de passe chiffr\('e\&. +If this field is not empty, it will be encrypted and used as the new value of the encrypted password\&. .RE .PP \fIpw_uid\fR @@ -161,7 +161,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/fr/man8/nologin.8 b/man/fr/man8/nologin.8 index d724437b..30a196f2 100644 --- a/man/fr/man8/nologin.8 +++ b/man/fr/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "NOLOGIN" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NOLOGIN" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/pwck.8 b/man/fr/man8/pwck.8 index cb83f967..c10a1a11 100644 --- a/man/fr/man8/pwck.8 +++ b/man/fr/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "PWCK" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCK" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -222,7 +222,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/fr/man8/pwconv.8 b/man/fr/man8/pwconv.8 index 82a1834b..4be6cad8 100644 --- a/man/fr/man8/pwconv.8 +++ b/man/fr/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "PWCONV" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCONV" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -128,7 +128,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "BOGUES" .PP diff --git a/man/fr/man8/sulogin.8 b/man/fr/man8/sulogin.8 index 31080cdf..0ec04eda 100644 --- a/man/fr/man8/sulogin.8 +++ b/man/fr/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "SULOGIN" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "SULOGIN" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/useradd.8 b/man/fr/man8/useradd.8 index 1efc37dd..28a4118e 100644 --- a/man/fr/man8/useradd.8 +++ b/man/fr/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "USERADD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERADD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -347,7 +347,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/fr/man8/userdel.8 b/man/fr/man8/userdel.8 index 594f31b4..50c8282a 100644 --- a/man/fr/man8/userdel.8 +++ b/man/fr/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "USERDEL" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERDEL" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,7 +74,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/fr/man8/usermod.8 b/man/fr/man8/usermod.8 index 2c391014..2021a69d 100644 --- a/man/fr/man8/usermod.8 +++ b/man/fr/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "USERMOD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERMOD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,7 +188,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/fr/man8/vipw.8 b/man/fr/man8/vipw.8 index 00d4af18..6d93c2ca 100644 --- a/man/fr/man8/vipw.8 +++ b/man/fr/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: French .\" -.TH "VIPW" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "VIPW" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/gpasswd.1.xml b/man/gpasswd.1.xml index 9b89d915..6ff1339d 100644 --- a/man/gpasswd.1.xml +++ b/man/gpasswd.1.xml @@ -165,6 +165,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/groupadd.8.xml b/man/groupadd.8.xml index 9abf159a..2dea7ae5 100644 --- a/man/groupadd.8.xml +++ b/man/groupadd.8.xml @@ -206,6 +206,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/groupdel.8.xml b/man/groupdel.8.xml index 8d41b883..be7cb4c1 100644 --- a/man/groupdel.8.xml +++ b/man/groupdel.8.xml @@ -94,6 +94,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/groupmems.8.xml b/man/groupmems.8.xml index cbc84622..8bb5ed5d 100644 --- a/man/groupmems.8.xml +++ b/man/groupmems.8.xml @@ -147,6 +147,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/groupmod.8.xml b/man/groupmod.8.xml index 2d51f271..ca287441 100644 --- a/man/groupmod.8.xml +++ b/man/groupmod.8.xml @@ -169,6 +169,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/grpck.8.xml b/man/grpck.8.xml index 31aa6ca3..abc7b881 100644 --- a/man/grpck.8.xml +++ b/man/grpck.8.xml @@ -154,6 +154,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/hu/Makefile.in b/man/hu/Makefile.in index b7befd66..f2f58d95 100644 --- a/man/hu/Makefile.in +++ b/man/hu/Makefile.in @@ -165,6 +165,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -193,7 +194,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -237,7 +237,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/id/Makefile.in b/man/id/Makefile.in index c5438991..8f1de7b9 100644 --- a/man/id/Makefile.in +++ b/man/id/Makefile.in @@ -162,6 +162,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -190,7 +191,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -234,7 +234,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/it/Makefile.in b/man/it/Makefile.in index 2a24ea88..69496254 100644 --- a/man/it/Makefile.in +++ b/man/it/Makefile.in @@ -169,6 +169,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -197,7 +198,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -241,7 +241,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/it/man1/chage.1 b/man/it/man1/chage.1 index a665ff01..b46d8d50 100644 --- a/man/it/man1/chage.1 +++ b/man/it/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "CHAGE" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHAGE" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -138,7 +138,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/it/man1/chfn.1 b/man/it/man1/chfn.1 index 883dd0f6..e7cffad2 100644 --- a/man/it/man1/chfn.1 +++ b/man/it/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "CHFN" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHFN" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -87,7 +87,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. +directory\&. No SELINUX support\&. .RE .PP \fB\-u\fR, \fB\-\-help\fR diff --git a/man/it/man1/chsh.1 b/man/it/man1/chsh.1 index bc180a7d..d0bb7a3f 100644 --- a/man/it/man1/chsh.1 +++ b/man/it/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "CHSH" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHSH" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -54,7 +54,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR @@ -72,13 +72,9 @@ marks\&. .SH "NOTA" .PP The only restriction placed on the login shell is that the command name must be listed in -/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing -/bin/rsh -in -/etc/shells -is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +/etc/shells\&. .PP -For this reason, placing +If the invoker is the superuser any value may be added regardless what is defined in the configuration files\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh in /etc/shells diff --git a/man/it/man1/expiry.1 b/man/it/man1/expiry.1 index 69dfbd1d..0827072d 100644 --- a/man/it/man1/expiry.1 +++ b/man/it/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "EXPIRY" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "EXPIRY" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/gpasswd.1 b/man/it/man1/gpasswd.1 index 6211aae4..8dc928d2 100644 --- a/man/it/man1/gpasswd.1 +++ b/man/it/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "GPASSWD" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "GPASSWD" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -98,7 +98,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-r\fR, \fB\-\-remove\-password\fR diff --git a/man/it/man1/login.1 b/man/it/man1/login.1 index d95e44dc..79eaec39 100644 --- a/man/it/man1/login.1 +++ b/man/it/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "LOGIN" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "LOGIN" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -100,7 +100,7 @@ from the shell prompt without .RS 4 Non effettua l\*(Aqautenticazione, l\*(Aqutente \(`e gi\(`a autenticato .sp -Note: In that case, +Note: in that case, \fIusername\fR is mandatory\&. .RE diff --git a/man/it/man1/newgrp.1 b/man/it/man1/newgrp.1 index e230d26d..366daad5 100644 --- a/man/it/man1/newgrp.1 +++ b/man/it/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "NEWGRP" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGRP" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/passwd.1 b/man/it/man1/passwd.1 index 31f069fa..a4b74282 100644 --- a/man/it/man1/passwd.1 +++ b/man/it/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "PASSWD" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "PASSWD" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/it/man1/sg.1 b/man/it/man1/sg.1 index 89bf6471..aa7bead5 100644 --- a/man/it/man1/sg.1 +++ b/man/it/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "SG" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SG" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- esegue un comando con un diverso ID di gruppo .SH "SINOSSI" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "DESCRIZIONE" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "OPZIONI" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "CONFIGURAZIONE" .PP The following configuration variables in diff --git a/man/it/man1/su.1 b/man/it/man1/su.1 index cb2e3c6b..1774d331 100644 --- a/man/it/man1/su.1 +++ b/man/it/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "SU" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SU" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man3/shadow.3 b/man/it/man3/shadow.3 index b6ad900e..4ff1f4a0 100644 --- a/man/it/man3/shadow.3 +++ b/man/it/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: Library Calls -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "SHADOW" "3" "24/06/2025" "shadow\-utils 4\&.18\&.0" "Library Calls" +.TH "SHADOW" "3" "30/12/2025" "shadow\-utils 4\&.19\&.0" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/faillog.5 b/man/it/man5/faillog.5 index 3d0045b2..1ebfe164 100644 --- a/man/it/man5/faillog.5 +++ b/man/it/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "FAILLOG" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuratio" +.TH "FAILLOG" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/gshadow.5 b/man/it/man5/gshadow.5 index a13a0e0b..16a016d2 100644 --- a/man/it/man5/gshadow.5 +++ b/man/it/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "GSHADOW" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "GSHADOW" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/limits.5 b/man/it/man5/limits.5 index 7fdc5ac0..bddf2fdc 100644 --- a/man/it/man5/limits.5 +++ b/man/it/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "LIMITS" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LIMITS" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/login.access.5 b/man/it/man5/login.access.5 index 38850efe..a02b4dd6 100644 --- a/man/it/man5/login.access.5 +++ b/man/it/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "LOGIN\&.ACCESS" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/login.defs.5 b/man/it/man5/login.defs.5 index 96362a21..b427f057 100644 --- a/man/it/man5/login.defs.5 +++ b/man/it/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "LOGIN\&.DEFS" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/passwd.5 b/man/it/man5/passwd.5 index 07f29b93..e94ae5d3 100644 --- a/man/it/man5/passwd.5 +++ b/man/it/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "PASSWD" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PASSWD" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,7 @@ Informazioni sugli account utente\&. .PP /etc/shadow .RS 4 -file opzionale delle password cifrate +Optional encrypted password file\&. .RE .PP /etc/passwd\- diff --git a/man/it/man5/porttime.5 b/man/it/man5/porttime.5 index d9693ec3..2e6326c9 100644 --- a/man/it/man5/porttime.5 +++ b/man/it/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "PORTTIME" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PORTTIME" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/shadow.5 b/man/it/man5/shadow.5 index b5fd7f1d..bd135c11 100644 --- a/man/it/man5/shadow.5 +++ b/man/it/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "SHADOW" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SHADOW" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/suauth.5 b/man/it/man5/suauth.5 index 35d9f95b..ef461a56 100644 --- a/man/it/man5/suauth.5 +++ b/man/it/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "SUAUTH" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUAUTH" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/chgpasswd.8 b/man/it/man8/chgpasswd.8 index 27d5ba00..1b1b5b57 100644 --- a/man/it/man8/chgpasswd.8 +++ b/man/it/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "CHGPASSWD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHGPASSWD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -92,7 +92,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/it/man8/chpasswd.8 b/man/it/man8/chpasswd.8 index 95910a10..61fcfe50 100644 --- a/man/it/man8/chpasswd.8 +++ b/man/it/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "CHPASSWD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHPASSWD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -108,7 +108,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/it/man8/faillog.8 b/man/it/man8/faillog.8 index 38b42a35..ce3ce5ca 100644 --- a/man/it/man8/faillog.8 +++ b/man/it/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "FAILLOG" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "FAILLOG" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -113,7 +113,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/it/man8/groupadd.8 b/man/it/man8/groupadd.8 index 7e5f6765..a001fb5b 100644 --- a/man/it/man8/groupadd.8 +++ b/man/it/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "GROUPADD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPADD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,7 +135,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/it/man8/groupdel.8 b/man/it/man8/groupdel.8 index 7d5fc0f1..3dfbd598 100644 --- a/man/it/man8/groupdel.8 +++ b/man/it/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "GROUPDEL" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPDEL" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/it/man8/groupmems.8 b/man/it/man8/groupmems.8 index 9502265c..7c5f0775 100644 --- a/man/it/man8/groupmems.8 +++ b/man/it/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "GROUPMEMS" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMEMS" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -107,7 +107,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "CONFIGURAZIONE" .PP diff --git a/man/it/man8/groupmod.8 b/man/it/man8/groupmod.8 index cfb1e264..57a65e03 100644 --- a/man/it/man8/groupmod.8 +++ b/man/it/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "GROUPMOD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMOD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -117,7 +117,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/it/man8/grpck.8 b/man/it/man8/grpck.8 index 5a55daec..192f39df 100644 --- a/man/it/man8/grpck.8 +++ b/man/it/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "GRPCK" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GRPCK" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -148,7 +148,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/it/man8/lastlog.8 b/man/it/man8/lastlog.8 index 93a1af31..ec5406fd 100644 --- a/man/it/man8/lastlog.8 +++ b/man/it/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "LASTLOG" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LASTLOG" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ Print only lastlog records older than .RS 4 Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,14 +73,14 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/it/man8/logoutd.8 b/man/it/man8/logoutd.8 index 0cda9777..293ca40f 100644 --- a/man/it/man8/logoutd.8 +++ b/man/it/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "LOGOUTD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LOGOUTD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/newusers.8 b/man/it/man8/newusers.8 index e543f767..c211f75e 100644 --- a/man/it/man8/newusers.8 +++ b/man/it/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "NEWUSERS" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NEWUSERS" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -53,7 +53,7 @@ It can be the name of a new user or the name of an existing user (or a user crea .PP \fIpw_passwd\fR .RS 4 -Questo campo verr\(`a cifrato e utilizzato come nuovo valore per la password cifrata\&. +If this field is not empty, it will be encrypted and used as the new value of the encrypted password\&. .RE .PP \fIpw_uid\fR @@ -161,7 +161,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/it/man8/nologin.8 b/man/it/man8/nologin.8 index 7bd9bb19..d8c9d227 100644 --- a/man/it/man8/nologin.8 +++ b/man/it/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "NOLOGIN" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NOLOGIN" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/pwck.8 b/man/it/man8/pwck.8 index 58a8f62b..c4faa2c3 100644 --- a/man/it/man8/pwck.8 +++ b/man/it/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "PWCK" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCK" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -222,7 +222,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/it/man8/pwconv.8 b/man/it/man8/pwconv.8 index 9c78683a..52a9fc06 100644 --- a/man/it/man8/pwconv.8 +++ b/man/it/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "PWCONV" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCONV" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -128,7 +128,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "ERRORI" .PP diff --git a/man/it/man8/sulogin.8 b/man/it/man8/sulogin.8 index edcaa442..0a332713 100644 --- a/man/it/man8/sulogin.8 +++ b/man/it/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "SULOGIN" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "SULOGIN" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/useradd.8 b/man/it/man8/useradd.8 index d74e3348..00c88a04 100644 --- a/man/it/man8/useradd.8 +++ b/man/it/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "USERADD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERADD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -347,7 +347,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/it/man8/userdel.8 b/man/it/man8/userdel.8 index 1185d62a..b3d8d483 100644 --- a/man/it/man8/userdel.8 +++ b/man/it/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "USERDEL" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERDEL" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,7 +74,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/it/man8/usermod.8 b/man/it/man8/usermod.8 index 64aa2834..a7d6b3b5 100644 --- a/man/it/man8/usermod.8 +++ b/man/it/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "USERMOD" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERMOD" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,7 +188,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/it/man8/vipw.8 b/man/it/man8/vipw.8 index 1ad90bbe..f8f95488 100644 --- a/man/it/man8/vipw.8 +++ b/man/it/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Italian .\" -.TH "VIPW" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "VIPW" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/ja/Makefile.in b/man/ja/Makefile.in index db7fb405..00a23115 100644 --- a/man/ja/Makefile.in +++ b/man/ja/Makefile.in @@ -167,6 +167,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -195,7 +196,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -239,7 +239,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/ko/Makefile.in b/man/ko/Makefile.in index d1d9d953..1570a6d5 100644 --- a/man/ko/Makefile.in +++ b/man/ko/Makefile.in @@ -164,6 +164,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -192,7 +193,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -236,7 +236,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/lastlog.8.xml b/man/lastlog.8.xml index cefe5ac2..f72de01b 100644 --- a/man/lastlog.8.xml +++ b/man/lastlog.8.xml @@ -87,7 +87,7 @@ Clear lastlog record of a user. This option can be used only together - with ()). + with (). @@ -109,6 +109,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. @@ -119,7 +120,7 @@ Set lastlog record of a user to the current time. This option can be - used only together with ()). + used only together with (). diff --git a/man/login.1.xml b/man/login.1.xml index 26e6ea44..83aa52d2 100644 --- a/man/login.1.xml +++ b/man/login.1.xml @@ -194,7 +194,7 @@ Do not perform authentication, user is preauthenticated. - Note: In that case, username is + Note: in that case, username is mandatory. diff --git a/man/login.defs.d/BCRYPT_MIN_ROUNDS.xml b/man/login.defs.d/BCRYPT_MIN_ROUNDS.xml index 81ee5c9a..acb70d31 100644 --- a/man/login.defs.d/BCRYPT_MIN_ROUNDS.xml +++ b/man/login.defs.d/BCRYPT_MIN_ROUNDS.xml @@ -31,7 +31,7 @@ used. - Note: This only affect the generation of group passwords. + Note: this only affect the generation of group passwords. The generation of user passwords is done by PAM and subject to the PAM configuration. It is recommended to set this variable consistently with the PAM configuration. diff --git a/man/login.defs.d/ENCRYPT_METHOD.xml b/man/login.defs.d/ENCRYPT_METHOD.xml index 531ce04a..4ae1f087 100644 --- a/man/login.defs.d/ENCRYPT_METHOD.xml +++ b/man/login.defs.d/ENCRYPT_METHOD.xml @@ -7,7 +7,7 @@ This defines the system default encryption algorithm for encrypting - passwords (if no algorithm are specified on the command line). + passwords (if no algorithm is specified on the command line). It can take one of these values: @@ -26,7 +26,7 @@ variable. - Note: This only affect the generation of group passwords. + Note: this only affects the generation of group passwords. The generation of user passwords is done by PAM and subject to the PAM configuration. It is recommended to set this variable consistently with the PAM configuration. diff --git a/man/login.defs.d/HMAC_CRYPTO_ALGO.xml b/man/login.defs.d/HMAC_CRYPTO_ALGO.xml index 3aa3370a..a3e6a2b9 100644 --- a/man/login.defs.d/HMAC_CRYPTO_ALGO.xml +++ b/man/login.defs.d/HMAC_CRYPTO_ALGO.xml @@ -13,7 +13,7 @@ code. - Note: Check hmac3 + Note: check hmac3 to see the possible algorithms that are available in your system. diff --git a/man/login.defs.d/MD5_CRYPT_ENAB.xml b/man/login.defs.d/MD5_CRYPT_ENAB.xml index 94006a64..7aef62fc 100644 --- a/man/login.defs.d/MD5_CRYPT_ENAB.xml +++ b/man/login.defs.d/MD5_CRYPT_ENAB.xml @@ -27,7 +27,7 @@ . - Note: This only affect the generation of group passwords. + Note: this only affect the generation of group passwords. The generation of user passwords is done by PAM and subject to the PAM configuration. It is recommended to set this variable consistently with the PAM configuration. diff --git a/man/login.defs.d/PASS_MAX_LEN.xml b/man/login.defs.d/PASS_MAX_LEN.xml index 2e145837..3d29fc54 100644 --- a/man/login.defs.d/PASS_MAX_LEN.xml +++ b/man/login.defs.d/PASS_MAX_LEN.xml @@ -10,10 +10,26 @@ Number of significant characters in the password for crypt(). - is 8 by default. Don't change unless - your crypt() is better. This is ignored if - set to + + + is 8 by default. + Don't change unless your crypt() is better. + + + is only used for DES. + It is ignored if an encryption algorithm other than DES is used, + either because set to + yes or + set to an algorithm other than DES. + + + In addition, is only used if + set to yes. + + Note: This only affects the generation of user passwords. + Group password lengths are not checked. + diff --git a/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml b/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml index a22c324c..64cd8dce 100644 --- a/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml +++ b/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml @@ -36,7 +36,7 @@ used. - Note: This only affect the generation of group passwords. + Note: this only affect the generation of group passwords. The generation of user passwords is done by PAM and subject to the PAM configuration. It is recommended to set this variable consistently with the PAM configuration. diff --git a/man/login.defs.d/YESCRYPT_COST_FACTOR.xml b/man/login.defs.d/YESCRYPT_COST_FACTOR.xml index b9c53140..3603d9d4 100644 --- a/man/login.defs.d/YESCRYPT_COST_FACTOR.xml +++ b/man/login.defs.d/YESCRYPT_COST_FACTOR.xml @@ -20,7 +20,7 @@ The value must be inside the 1-11 range. - Note: This only affect the generation of group passwords. + Note: this only affect the generation of group passwords. The generation of user passwords is done by PAM and subject to the PAM configuration. It is recommended to set this variable consistently with the PAM configuration. diff --git a/man/man1/chage.1 b/man/man1/chage.1 index 16fa044e..bb81a663 100644 --- a/man/man1/chage.1 +++ b/man/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "CHAGE" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHAGE" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -138,7 +138,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/man1/chfn.1 b/man/man1/chfn.1 index a92cecdf..664842b4 100644 --- a/man/man1/chfn.1 +++ b/man/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "CHFN" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHFN" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -87,7 +87,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. +directory\&. No SELINUX support\&. .RE .PP \fB\-u\fR, \fB\-\-help\fR diff --git a/man/man1/chsh.1 b/man/man1/chsh.1 index 5d7b3edb..1204a4ca 100644 --- a/man/man1/chsh.1 +++ b/man/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "CHSH" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHSH" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -54,7 +54,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR @@ -72,13 +72,9 @@ marks\&. .SH "NOTE" .PP The only restriction placed on the login shell is that the command name must be listed in -/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing -/bin/rsh -in -/etc/shells -is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +/etc/shells\&. .PP -For this reason, placing +If the invoker is the superuser any value may be added regardless what is defined in the configuration files\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh in /etc/shells diff --git a/man/man1/expiry.1 b/man/man1/expiry.1 index 20647430..50754431 100644 --- a/man/man1/expiry.1 +++ b/man/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "EXPIRY" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "EXPIRY" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/getsubids.1 b/man/man1/getsubids.1 index 106a18c8..0283be23 100644 --- a/man/man1/getsubids.1 +++ b/man/man1/getsubids.1 @@ -2,12 +2,12 @@ .\" Title: getsubids .\" Author: Iker Pedrosa .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "GETSUBIDS" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "GETSUBIDS" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/gpasswd.1 b/man/man1/gpasswd.1 index ddbecef5..e9dfd815 100644 --- a/man/man1/gpasswd.1 +++ b/man/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "GPASSWD" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "GPASSWD" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -98,7 +98,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-r\fR, \fB\-\-remove\-password\fR @@ -142,7 +142,7 @@ change the behavior of this tool: .PP \fBENCRYPT_METHOD\fR (string) .RS 4 -This defines the system default encryption algorithm for encrypting passwords (if no algorithm are specified on the command line)\&. +This defines the system default encryption algorithm for encrypting passwords (if no algorithm is specified on the command line)\&. .sp It can take one of these values: \fIDES\fR diff --git a/man/man1/login.1 b/man/man1/login.1 index e5305739..c894a49c 100644 --- a/man/man1/login.1 +++ b/man/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "LOGIN" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "LOGIN" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -100,7 +100,7 @@ from the shell prompt without .RS 4 Do not perform authentication, user is preauthenticated\&. .sp -Note: In that case, +Note: in that case, \fIusername\fR is mandatory\&. .RE diff --git a/man/man1/newgidmap.1 b/man/man1/newgidmap.1 index 8b09fe39..35ac57ca 100644 --- a/man/man1/newgidmap.1 +++ b/man/man1/newgidmap.1 @@ -2,12 +2,12 @@ .\" Title: newgidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "NEWGIDMAP" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGIDMAP" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/newgrp.1 b/man/man1/newgrp.1 index d0955476..53545170 100644 --- a/man/man1/newgrp.1 +++ b/man/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "NEWGRP" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGRP" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/newuidmap.1 b/man/man1/newuidmap.1 index c4d6402a..0959baed 100644 --- a/man/man1/newuidmap.1 +++ b/man/man1/newuidmap.1 @@ -2,12 +2,12 @@ .\" Title: newuidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "NEWUIDMAP" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWUIDMAP" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/passwd.1 b/man/man1/passwd.1 index ebc918e1..d03e8d3a 100644 --- a/man/man1/passwd.1 +++ b/man/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "PASSWD" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "PASSWD" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR @@ -196,7 +196,7 @@ change the behavior of this tool: .PP \fBENCRYPT_METHOD\fR (string) .RS 4 -This defines the system default encryption algorithm for encrypting passwords (if no algorithm are specified on the command line)\&. +This defines the system default encryption algorithm for encrypting passwords (if no algorithm is specified on the command line)\&. .sp It can take one of these values: \fIDES\fR @@ -244,11 +244,28 @@ Maximum number of attempts to change password if rejected (too easy)\&. \fBPASS_MAX_LEN\fR (number), \fBPASS_MIN_LEN\fR (number) .RS 4 Number of significant characters in the password for crypt()\&. +.sp \fBPASS_MAX_LEN\fR -is 8 by default\&. Don\*(Aqt change unless your crypt() is better\&. This is ignored if +is 8 by default\&. Don\*(Aqt change unless your crypt() is better\&. +.sp +\fBPASS_MAX_LEN\fR +is only used for DES\&. It is ignored if an encryption algorithm other than DES is used, either because \fBMD5_CRYPT_ENAB\fR set to +\fIyes\fR +or +\fBENCRYPT_METHOD\fR +set to an algorithm other than +\fIDES\fR\&. +.sp +In addition, +\fBPASS_MAX_LEN\fR +is only used if +\fBOBSCURE_CHECKS_ENAB\fR +set to \fIyes\fR\&. +.sp +Note: This only affects the generation of user passwords\&. Group password lengths are not checked\&. .RE .PP \fBSHA_CRYPT_MIN_ROUNDS\fR (number), \fBSHA_CRYPT_MAX_ROUNDS\fR (number) diff --git a/man/man1/sg.1 b/man/man1/sg.1 index c67694a3..85236aae 100644 --- a/man/man1/sg.1 +++ b/man/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "SG" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SG" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- execute command as different group ID .SH "SYNOPSIS" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "DESCRIPTION" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "OPTIONS" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in diff --git a/man/man1/su.1 b/man/man1/su.1 index 58b473a2..00331cfe 100644 --- a/man/man1/su.1 +++ b/man/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "SU" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SU" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man3/shadow.3 b/man/man3/shadow.3 index 621697f0..5d48ae98 100644 --- a/man/man3/shadow.3 +++ b/man/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: Library Calls -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "SHADOW" "3" "06/24/2025" "shadow\-utils 4\&.18\&.0" "Library Calls" +.TH "SHADOW" "3" "12/30/2025" "shadow\-utils 4\&.19\&.0" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/faillog.5 b/man/man5/faillog.5 index 28022fb5..d0bbd72f 100644 --- a/man/man5/faillog.5 +++ b/man/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "FAILLOG" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuratio" +.TH "FAILLOG" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/gshadow.5 b/man/man5/gshadow.5 index ea28c425..57354417 100644 --- a/man/man5/gshadow.5 +++ b/man/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas François .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "GSHADOW" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "GSHADOW" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/limits.5 b/man/man5/limits.5 index 817d0ff2..9d62dbb2 100644 --- a/man/man5/limits.5 +++ b/man/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "LIMITS" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LIMITS" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/login.access.5 b/man/man5/login.access.5 index a559448f..eefbbebe 100644 --- a/man/man5/login.access.5 +++ b/man/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "LOGIN\&.ACCESS" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/login.defs.5 b/man/man5/login.defs.5 index 2754842e..10336f77 100644 --- a/man/man5/login.defs.5 +++ b/man/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "LOGIN\&.DEFS" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -121,7 +121,7 @@ If set to .PP \fBENCRYPT_METHOD\fR (string) .RS 4 -This defines the system default encryption algorithm for encrypting passwords (if no algorithm are specified on the command line)\&. +This defines the system default encryption algorithm for encrypting passwords (if no algorithm is specified on the command line)\&. .sp It can take one of these values: \fIDES\fR @@ -229,7 +229,7 @@ The default value for .RS 4 Used to select the HMAC cryptography algorithm that the pam_timestamp module is going to use to calculate the keyed\-hash message authentication code\&. .sp -Note: Check +Note: check hmac(3) to see the possible algorithms that are available in your system\&. .RE @@ -429,11 +429,28 @@ are only used at the time of account creation\&. Any changes to these settings w \fBPASS_MAX_LEN\fR (number), \fBPASS_MIN_LEN\fR (number) .RS 4 Number of significant characters in the password for crypt()\&. +.sp \fBPASS_MAX_LEN\fR -is 8 by default\&. Don\*(Aqt change unless your crypt() is better\&. This is ignored if +is 8 by default\&. Don\*(Aqt change unless your crypt() is better\&. +.sp +\fBPASS_MAX_LEN\fR +is only used for DES\&. It is ignored if an encryption algorithm other than DES is used, either because \fBMD5_CRYPT_ENAB\fR set to +\fIyes\fR +or +\fBENCRYPT_METHOD\fR +set to an algorithm other than +\fIDES\fR\&. +.sp +In addition, +\fBPASS_MAX_LEN\fR +is only used if +\fBOBSCURE_CHECKS_ENAB\fR +set to \fIyes\fR\&. +.sp +Note: This only affects the generation of user passwords\&. Group password lengths are not checked\&. .RE .PP \fBPORTTIME_CHECKS_ENAB\fR (boolean) diff --git a/man/man5/passwd.5 b/man/man5/passwd.5 index cd8989ea..94ee241c 100644 --- a/man/man5/passwd.5 +++ b/man/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "PASSWD" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PASSWD" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,7 @@ User account information\&. .PP /etc/shadow .RS 4 -optional encrypted password file +Optional encrypted password file\&. .RE .PP /etc/passwd\- diff --git a/man/man5/porttime.5 b/man/man5/porttime.5 index 7810e833..6bdc6b79 100644 --- a/man/man5/porttime.5 +++ b/man/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "PORTTIME" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PORTTIME" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/shadow.5 b/man/man5/shadow.5 index 58e8a5fe..e82138bd 100644 --- a/man/man5/shadow.5 +++ b/man/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "SHADOW" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SHADOW" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/suauth.5 b/man/man5/suauth.5 index 2a2af6e0..6202e654 100644 --- a/man/man5/suauth.5 +++ b/man/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "SUAUTH" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUAUTH" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/subgid.5 b/man/man5/subgid.5 index d88e2671..9fb12a35 100644 --- a/man/man5/subgid.5 +++ b/man/man5/subgid.5 @@ -2,12 +2,12 @@ .\" Title: subgid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "SUBGID" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUBGID" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/subuid.5 b/man/man5/subuid.5 index 42455e1d..844e2ae1 100644 --- a/man/man5/subuid.5 +++ b/man/man5/subuid.5 @@ -2,12 +2,12 @@ .\" Title: subuid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "SUBUID" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUBUID" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/chgpasswd.8 b/man/man8/chgpasswd.8 index cdbab607..e434dbd6 100644 --- a/man/man8/chgpasswd.8 +++ b/man/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas Kłoczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "CHGPASSWD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHGPASSWD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -92,7 +92,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR @@ -120,7 +120,7 @@ change the behavior of this tool: .PP \fBENCRYPT_METHOD\fR (string) .RS 4 -This defines the system default encryption algorithm for encrypting passwords (if no algorithm are specified on the command line)\&. +This defines the system default encryption algorithm for encrypting passwords (if no algorithm is specified on the command line)\&. .sp It can take one of these values: \fIDES\fR diff --git a/man/man8/chpasswd.8 b/man/man8/chpasswd.8 index 0e3fbeb8..7c61a463 100644 --- a/man/man8/chpasswd.8 +++ b/man/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "CHPASSWD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHPASSWD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -108,7 +108,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR @@ -140,7 +140,7 @@ change the behavior of this tool: .PP \fBENCRYPT_METHOD\fR (string) .RS 4 -This defines the system default encryption algorithm for encrypting passwords (if no algorithm are specified on the command line)\&. +This defines the system default encryption algorithm for encrypting passwords (if no algorithm is specified on the command line)\&. .sp It can take one of these values: \fIDES\fR diff --git a/man/man8/faillog.8 b/man/man8/faillog.8 index 1f5fd4de..22d31a71 100644 --- a/man/man8/faillog.8 +++ b/man/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "FAILLOG" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "FAILLOG" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -113,7 +113,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/man8/groupadd.8 b/man/man8/groupadd.8 index 044462ed..76e67a80 100644 --- a/man/man8/groupadd.8 +++ b/man/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "GROUPADD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPADD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,7 +135,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/man8/groupdel.8 b/man/man8/groupdel.8 index 59d5b34e..2459ddd1 100644 --- a/man/man8/groupdel.8 +++ b/man/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "GROUPDEL" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPDEL" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/man8/groupmems.8 b/man/man8/groupmems.8 index 4ec4c27e..7c630d9c 100644 --- a/man/man8/groupmems.8 +++ b/man/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "GROUPMEMS" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMEMS" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -107,7 +107,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "SETUP" .PP diff --git a/man/man8/groupmod.8 b/man/man8/groupmod.8 index 9a5ac57e..f39810eb 100644 --- a/man/man8/groupmod.8 +++ b/man/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "GROUPMOD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMOD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -117,7 +117,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/man8/grpck.8 b/man/man8/grpck.8 index 2d7a51cc..04827b18 100644 --- a/man/man8/grpck.8 +++ b/man/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "GRPCK" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GRPCK" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -148,7 +148,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/man8/lastlog.8 b/man/man8/lastlog.8 index ab4d6c88..123b90a1 100644 --- a/man/man8/lastlog.8 +++ b/man/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "LASTLOG" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LASTLOG" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ Print only lastlog records older than .RS 4 Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,14 +73,14 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/man8/logoutd.8 b/man/man8/logoutd.8 index 3ef633d9..6bdfd8b3 100644 --- a/man/man8/logoutd.8 +++ b/man/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "LOGOUTD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LOGOUTD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/newusers.8 b/man/man8/newusers.8 index b3eb70b9..58fb5b9c 100644 --- a/man/man8/newusers.8 +++ b/man/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "NEWUSERS" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NEWUSERS" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -53,7 +53,7 @@ It can be the name of a new user or the name of an existing user (or a user crea .PP \fIpw_passwd\fR .RS 4 -This field will be encrypted and used as the new value of the encrypted password\&. +If this field is not empty, it will be encrypted and used as the new value of the encrypted password\&. .RE .PP \fIpw_uid\fR @@ -161,7 +161,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR @@ -189,7 +189,7 @@ change the behavior of this tool: .PP \fBENCRYPT_METHOD\fR (string) .RS 4 -This defines the system default encryption algorithm for encrypting passwords (if no algorithm are specified on the command line)\&. +This defines the system default encryption algorithm for encrypting passwords (if no algorithm is specified on the command line)\&. .sp It can take one of these values: \fIDES\fR diff --git a/man/man8/nologin.8 b/man/man8/nologin.8 index a7eae596..4931c6e3 100644 --- a/man/man8/nologin.8 +++ b/man/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas François .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "NOLOGIN" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NOLOGIN" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/pwck.8 b/man/man8/pwck.8 index 77b2ad9c..61c551ca 100644 --- a/man/man8/pwck.8 +++ b/man/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "PWCK" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCK" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -222,7 +222,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/man8/pwconv.8 b/man/man8/pwconv.8 index 4514bde9..4eaeb387 100644 --- a/man/man8/pwconv.8 +++ b/man/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "PWCONV" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCONV" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -128,7 +128,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "BUGS" .PP diff --git a/man/man8/sulogin.8 b/man/man8/sulogin.8 index a061d388..a0e3e9c9 100644 --- a/man/man8/sulogin.8 +++ b/man/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "SULOGIN" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "SULOGIN" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/useradd.8 b/man/man8/useradd.8 index 443de9c5..80ce39a5 100644 --- a/man/man8/useradd.8 +++ b/man/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "USERADD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERADD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -347,7 +347,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/man8/userdel.8 b/man/man8/userdel.8 index b336aa36..5979e000 100644 --- a/man/man8/userdel.8 +++ b/man/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "USERDEL" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERDEL" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,7 +74,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/man8/usermod.8 b/man/man8/usermod.8 index 19e74b66..20a16a06 100644 --- a/man/man8/usermod.8 +++ b/man/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "USERMOD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERMOD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,7 +188,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/man8/vipw.8 b/man/man8/vipw.8 index 2802194f..62d45f30 100644 --- a/man/man8/vipw.8 +++ b/man/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: English .\" -.TH "VIPW" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "VIPW" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/newusers.8.xml b/man/newusers.8.xml index 6812c750..7fff1a8c 100644 --- a/man/newusers.8.xml +++ b/man/newusers.8.xml @@ -107,8 +107,9 @@ - This field will be encrypted and used as the new value of the - encrypted password. + If this field is not empty, + it will be encrypted + and used as the new value of the encrypted password. @@ -313,6 +314,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/passwd.1.xml b/man/passwd.1.xml index 65dca040..def35609 100644 --- a/man/passwd.1.xml +++ b/man/passwd.1.xml @@ -279,6 +279,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/passwd.5.xml b/man/passwd.5.xml index 99a07847..c528e697 100644 --- a/man/passwd.5.xml +++ b/man/passwd.5.xml @@ -147,7 +147,7 @@ /etc/shadow - optional encrypted password file + Optional encrypted password file. diff --git a/man/pl/Makefile.in b/man/pl/Makefile.in index ca61387a..e4e488e2 100644 --- a/man/pl/Makefile.in +++ b/man/pl/Makefile.in @@ -169,6 +169,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -197,7 +198,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -241,7 +241,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/pl/man1/chage.1 b/man/pl/man1/chage.1 index f0127c17..6a2d0b63 100644 --- a/man/pl/man1/chage.1 +++ b/man/pl/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "CHAGE" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHAGE" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -138,7 +138,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/pl/man1/chsh.1 b/man/pl/man1/chsh.1 index cb31f365..080b1c23 100644 --- a/man/pl/man1/chsh.1 +++ b/man/pl/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "CHSH" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHSH" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -54,7 +54,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR @@ -72,13 +72,9 @@ marks\&. .SH "UWAGI" .PP The only restriction placed on the login shell is that the command name must be listed in -/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing -/bin/rsh -in -/etc/shells -is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +/etc/shells\&. .PP -For this reason, placing +If the invoker is the superuser any value may be added regardless what is defined in the configuration files\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh in /etc/shells diff --git a/man/pl/man1/expiry.1 b/man/pl/man1/expiry.1 index 4a92398a..8b3ecd80 100644 --- a/man/pl/man1/expiry.1 +++ b/man/pl/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "EXPIRY" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "EXPIRY" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/newgrp.1 b/man/pl/man1/newgrp.1 index 9f704233..3997ba8c 100644 --- a/man/pl/man1/newgrp.1 +++ b/man/pl/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "NEWGRP" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGRP" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/sg.1 b/man/pl/man1/sg.1 index 10ba897e..8b835573 100644 --- a/man/pl/man1/sg.1 +++ b/man/pl/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "SG" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SG" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- execute command as different group ID .SH "STRESZCZENIE" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "OPIS" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "OPCJE" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in diff --git a/man/pl/man3/shadow.3 b/man/pl/man3/shadow.3 index 6b52697b..78fbf0d3 100644 --- a/man/pl/man3/shadow.3 +++ b/man/pl/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: Library Calls -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "SHADOW" "3" "06/24/2025" "shadow\-utils 4\&.18\&.0" "Library Calls" +.TH "SHADOW" "3" "12/30/2025" "shadow\-utils 4\&.19\&.0" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man5/faillog.5 b/man/pl/man5/faillog.5 index d7a7eb7f..9f960ff7 100644 --- a/man/pl/man5/faillog.5 +++ b/man/pl/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "FAILLOG" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuratio" +.TH "FAILLOG" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man5/porttime.5 b/man/pl/man5/porttime.5 index d3652090..dfd3bfbc 100644 --- a/man/pl/man5/porttime.5 +++ b/man/pl/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "PORTTIME" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PORTTIME" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man8/faillog.8 b/man/pl/man8/faillog.8 index 1b4a19e5..67c2e7eb 100644 --- a/man/pl/man8/faillog.8 +++ b/man/pl/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "FAILLOG" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "FAILLOG" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -113,7 +113,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/pl/man8/groupadd.8 b/man/pl/man8/groupadd.8 index fdf19c84..6b294f44 100644 --- a/man/pl/man8/groupadd.8 +++ b/man/pl/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "GROUPADD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPADD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,7 +135,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/pl/man8/groupdel.8 b/man/pl/man8/groupdel.8 index 2f3ad726..58e69048 100644 --- a/man/pl/man8/groupdel.8 +++ b/man/pl/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "GROUPDEL" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPDEL" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/pl/man8/groupmems.8 b/man/pl/man8/groupmems.8 index c5389eb3..7f71a4ef 100644 --- a/man/pl/man8/groupmems.8 +++ b/man/pl/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "GROUPMEMS" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMEMS" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -107,7 +107,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "SETUP" .PP diff --git a/man/pl/man8/groupmod.8 b/man/pl/man8/groupmod.8 index 61c72ae6..89213574 100644 --- a/man/pl/man8/groupmod.8 +++ b/man/pl/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "GROUPMOD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMOD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -117,7 +117,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/pl/man8/grpck.8 b/man/pl/man8/grpck.8 index 2f509509..a43b2d1d 100644 --- a/man/pl/man8/grpck.8 +++ b/man/pl/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "GRPCK" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GRPCK" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -148,7 +148,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/pl/man8/lastlog.8 b/man/pl/man8/lastlog.8 index 6563f5de..a26eeca2 100644 --- a/man/pl/man8/lastlog.8 +++ b/man/pl/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "LASTLOG" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LASTLOG" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ Print only lastlog records older than .RS 4 Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,14 +73,14 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/pl/man8/logoutd.8 b/man/pl/man8/logoutd.8 index 1303b5a9..5b412bc2 100644 --- a/man/pl/man8/logoutd.8 +++ b/man/pl/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "LOGOUTD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LOGOUTD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man8/userdel.8 b/man/pl/man8/userdel.8 index d8d6ba79..9c10285f 100644 --- a/man/pl/man8/userdel.8 +++ b/man/pl/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "USERDEL" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERDEL" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,7 +74,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/pl/man8/usermod.8 b/man/pl/man8/usermod.8 index 0785ad4a..0fcf7929 100644 --- a/man/pl/man8/usermod.8 +++ b/man/pl/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "USERMOD" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERMOD" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,7 +188,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/pl/man8/vipw.8 b/man/pl/man8/vipw.8 index 3d7be991..a7e0796d 100644 --- a/man/pl/man8/vipw.8 +++ b/man/pl/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Polish .\" -.TH "VIPW" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "VIPW" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/po/pt.po b/man/po/pt.po index 69a0c80c..b0ee7d20 100644 --- a/man/po/pt.po +++ b/man/po/pt.po @@ -4,8371 +4,3469 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.8.1-1\n" -"POT-Creation-Date: 2024-03-14 18:23-0500\n" +"POT-Creation-Date: 2020-01-23 15:00-0600\n" "PO-Revision-Date: 2020-08-12 19:33+0000\n" "Last-Translator: Américo Monteiro \n" "Language-Team: Portuguese <>\n" -"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 2.0\n" -#. (itstool) path: author/firstname -#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:21 chsh.1.xml.out:18 -#: expiry.1.xml.out:19 faillog.5.xml.out:15 faillog.8.xml.out:15 -#: groupadd.8.xml.out:18 groupdel.8.xml.out:16 groupmod.8.xml.out:16 -#: groups.1.xml.out:15 grpck.8.xml.out:15 lastlog.8.xml.out:17 -#: login.1.xml.out:48 login.defs.5.xml.out:86 logoutd.8.xml.out:15 -#: newgrp.1.xml.out:16 newusers.8.xml.out:33 passwd.1.xml.out:24 -#: passwd.5.xml.out:15 porttime.5.xml.out:15 pwck.8.xml.out:22 -#: shadow.3.xml.out:15 shadow.5.xml.out:15 sg.1.xml.out:16 su.1.xml.out:32 -#: useradd.8.xml.out:34 userdel.8.xml.out:21 usermod.8.xml.out:22 -msgid "Julianne Frances" -msgstr "Julianne Frances" +#: vipw.8.xml:41(firstname) suauth.5.xml:39(firstname) pwconv.8.xml:45(firstname) login.access.5.xml:40(firstname) +msgid "Marek" +msgstr "Marek" -#. (itstool) path: author/surname -#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:22 chsh.1.xml.out:19 -#: expiry.1.xml.out:20 faillog.5.xml.out:16 faillog.8.xml.out:16 -#: groupadd.8.xml.out:19 groupdel.8.xml.out:17 groupmod.8.xml.out:17 -#: groups.1.xml.out:16 grpck.8.xml.out:16 lastlog.8.xml.out:18 -#: login.1.xml.out:49 login.defs.5.xml.out:87 logoutd.8.xml.out:16 -#: newgrp.1.xml.out:17 newusers.8.xml.out:34 passwd.1.xml.out:25 -#: passwd.5.xml.out:16 porttime.5.xml.out:16 pwck.8.xml.out:23 -#: shadow.3.xml.out:16 shadow.5.xml.out:16 sg.1.xml.out:17 su.1.xml.out:33 -#: useradd.8.xml.out:35 userdel.8.xml.out:22 usermod.8.xml.out:23 -msgid "Haugh" -msgstr "Haugh" +#: vipw.8.xml:42(surname) suauth.5.xml:40(surname) pwconv.8.xml:46(surname) login.access.5.xml:41(surname) +msgid "Michałkiewicz" +msgstr "Michałkiewicz" -#. (itstool) path: author/contrib -#: chage.1.xml.out:18 chfn.1.xml.out:20 chsh.1.xml.out:20 expiry.1.xml.out:21 -msgid "Creation, 1990" -msgstr "Criação, 1990" +#: vipw.8.xml:43(contrib) limits.5.xml:43(contrib) +msgid "Creation, 1997" +msgstr "Criação, 1997" -#. (itstool) path: author/firstname -#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:22 -#: chpasswd.8.xml.out:26 chsh.1.xml.out:23 expiry.1.xml.out:24 -#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:27 -#: groupadd.8.xml.out:23 groupdel.8.xml.out:21 groupmems.8.xml.out:24 -#: groupmod.8.xml.out:21 groups.1.xml.out:20 grpck.8.xml.out:20 -#: lastlog.8.xml.out:22 limits.5.xml.out:22 login.1.xml.out:53 -#: login.access.5.xml.out:21 login.defs.5.xml.out:91 logoutd.8.xml.out:20 -#: newgrp.1.xml.out:21 newusers.8.xml.out:38 passwd.1.xml.out:29 -#: passwd.5.xml.out:20 porttime.5.xml.out:20 pwck.8.xml.out:27 -#: pwconv.8.xml.out:26 shadow.3.xml.out:20 shadow.5.xml.out:20 sg.1.xml.out:21 -#: su.1.xml.out:37 suauth.5.xml.out:20 useradd.8.xml.out:39 -#: userdel.8.xml.out:26 usermod.8.xml.out:27 vipw.8.xml.out:22 +#: vipw.8.xml:46(firstname) usermod.8.xml:51(firstname) userdel.8.xml:50(firstname) useradd.8.xml:63(firstname) suauth.5.xml:44(firstname) su.1.xml:61(firstname) sg.1.xml:45(firstname) shadow.5.xml:44(firstname) shadow.3.xml:44(firstname) pwconv.8.xml:50(firstname) pwck.8.xml:50(firstname) porttime.5.xml:44(firstname) passwd.5.xml:44(firstname) passwd.1.xml:51(firstname) newusers.8.xml:60(firstname) newgrp.1.xml:45(firstname) logoutd.8.xml:44(firstname) login.defs.5.xml:111(firstname) login.access.5.xml:45(firstname) login.1.xml:77(firstname) limits.5.xml:46(firstname) lastlog.8.xml:46(firstname) grpck.8.xml:45(firstname) groups.1.xml:44(firstname) groupmod.8.xml:45(firstname) groupmems.8.xml:48(firstname) groupdel.8.xml:45(firstname) groupadd.8.xml:47(firstname) gpasswd.1.xml:49(firstname) faillog.8.xml:44(firstname) faillog.5.xml:44(firstname) expiry.1.xml:48(firstname) chsh.1.xml:47(firstname) chpasswd.8.xml:48(firstname) chgpasswd.8.xml:44(firstname) chfn.1.xml:47(firstname) chage.1.xml:45(firstname) msgid "Thomas" msgstr "Thomas" -#. (itstool) path: author/surname -#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:23 -#: chpasswd.8.xml.out:27 chsh.1.xml.out:24 expiry.1.xml.out:25 -#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:28 -#: groupadd.8.xml.out:24 groupdel.8.xml.out:22 groupmems.8.xml.out:25 -#: groupmod.8.xml.out:22 groups.1.xml.out:21 grpck.8.xml.out:21 -#: lastlog.8.xml.out:23 limits.5.xml.out:23 login.1.xml.out:54 -#: login.access.5.xml.out:22 login.defs.5.xml.out:92 logoutd.8.xml.out:21 -#: newgrp.1.xml.out:22 newusers.8.xml.out:39 passwd.1.xml.out:30 -#: passwd.5.xml.out:21 porttime.5.xml.out:21 pwck.8.xml.out:28 -#: pwconv.8.xml.out:27 shadow.3.xml.out:21 shadow.5.xml.out:21 sg.1.xml.out:22 -#: su.1.xml.out:38 suauth.5.xml.out:21 useradd.8.xml.out:40 -#: userdel.8.xml.out:27 usermod.8.xml.out:28 vipw.8.xml.out:23 +#: vipw.8.xml:47(surname) usermod.8.xml:52(surname) userdel.8.xml:51(surname) useradd.8.xml:64(surname) suauth.5.xml:45(surname) su.1.xml:62(surname) sg.1.xml:46(surname) shadow.5.xml:45(surname) shadow.3.xml:45(surname) pwconv.8.xml:51(surname) pwck.8.xml:51(surname) porttime.5.xml:45(surname) passwd.5.xml:45(surname) passwd.1.xml:52(surname) newusers.8.xml:61(surname) newgrp.1.xml:46(surname) logoutd.8.xml:45(surname) login.defs.5.xml:112(surname) login.access.5.xml:46(surname) login.1.xml:78(surname) limits.5.xml:47(surname) lastlog.8.xml:47(surname) grpck.8.xml:46(surname) groups.1.xml:45(surname) groupmod.8.xml:46(surname) groupmems.8.xml:49(surname) groupdel.8.xml:46(surname) groupadd.8.xml:48(surname) gpasswd.1.xml:50(surname) faillog.8.xml:45(surname) faillog.5.xml:45(surname) expiry.1.xml:49(surname) chsh.1.xml:48(surname) chpasswd.8.xml:49(surname) chgpasswd.8.xml:45(surname) chfn.1.xml:48(surname) chage.1.xml:46(surname) msgid "Kłoczko" msgstr "Kłoczko" -#. (itstool) path: author/email -#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:24 -#: chpasswd.8.xml.out:28 chsh.1.xml.out:25 expiry.1.xml.out:26 -#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:29 -#: groupadd.8.xml.out:25 groupdel.8.xml.out:23 groupmems.8.xml.out:26 -#: groupmod.8.xml.out:23 groups.1.xml.out:22 grpck.8.xml.out:22 -#: lastlog.8.xml.out:24 limits.5.xml.out:24 login.1.xml.out:55 -#: login.access.5.xml.out:23 login.defs.5.xml.out:93 logoutd.8.xml.out:22 -#: newgrp.1.xml.out:23 newusers.8.xml.out:40 passwd.1.xml.out:31 -#: passwd.5.xml.out:22 porttime.5.xml.out:22 pwck.8.xml.out:29 -#: pwconv.8.xml.out:28 shadow.3.xml.out:22 shadow.5.xml.out:22 sg.1.xml.out:23 -#: su.1.xml.out:39 suauth.5.xml.out:22 useradd.8.xml.out:41 -#: userdel.8.xml.out:28 usermod.8.xml.out:29 vipw.8.xml.out:24 +#: vipw.8.xml:48(email) usermod.8.xml:53(email) userdel.8.xml:52(email) useradd.8.xml:65(email) suauth.5.xml:46(email) su.1.xml:63(email) sg.1.xml:47(email) shadow.5.xml:46(email) shadow.3.xml:46(email) pwconv.8.xml:52(email) pwck.8.xml:52(email) porttime.5.xml:46(email) passwd.5.xml:46(email) passwd.1.xml:53(email) newusers.8.xml:62(email) newgrp.1.xml:47(email) logoutd.8.xml:46(email) login.defs.5.xml:113(email) login.access.5.xml:47(email) login.1.xml:79(email) limits.5.xml:48(email) lastlog.8.xml:48(email) grpck.8.xml:47(email) groups.1.xml:46(email) groupmod.8.xml:47(email) groupmems.8.xml:50(email) groupdel.8.xml:47(email) groupadd.8.xml:49(email) gpasswd.1.xml:51(email) faillog.8.xml:46(email) faillog.5.xml:46(email) expiry.1.xml:50(email) chsh.1.xml:49(email) chpasswd.8.xml:50(email) chgpasswd.8.xml:46(email) chfn.1.xml:49(email) chage.1.xml:47(email) msgid "kloczek@pld.org.pl" msgstr "kloczek@pld.org.pl" -#. (itstool) path: author/contrib -#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:29 chsh.1.xml.out:26 -#: expiry.1.xml.out:27 faillog.5.xml.out:23 faillog.8.xml.out:23 -#: gpasswd.1.xml.out:30 groupadd.8.xml.out:26 groupdel.8.xml.out:24 -#: groupmems.8.xml.out:27 groupmod.8.xml.out:24 groups.1.xml.out:23 -#: grpck.8.xml.out:23 lastlog.8.xml.out:25 limits.5.xml.out:25 -#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:94 -#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:41 -#: passwd.1.xml.out:32 passwd.5.xml.out:23 porttime.5.xml.out:23 -#: pwck.8.xml.out:30 pwconv.8.xml.out:29 shadow.3.xml.out:23 -#: shadow.5.xml.out:23 sg.1.xml.out:24 su.1.xml.out:40 suauth.5.xml.out:23 -#: useradd.8.xml.out:42 userdel.8.xml.out:29 usermod.8.xml.out:30 -#: vipw.8.xml.out:25 +#: vipw.8.xml:49(contrib) usermod.8.xml:54(contrib) userdel.8.xml:53(contrib) useradd.8.xml:66(contrib) suauth.5.xml:47(contrib) su.1.xml:64(contrib) sg.1.xml:48(contrib) shadow.5.xml:47(contrib) shadow.3.xml:47(contrib) pwconv.8.xml:53(contrib) pwck.8.xml:53(contrib) porttime.5.xml:47(contrib) passwd.5.xml:47(contrib) passwd.1.xml:54(contrib) newusers.8.xml:63(contrib) newgrp.1.xml:48(contrib) logoutd.8.xml:47(contrib) login.defs.5.xml:114(contrib) login.access.5.xml:48(contrib) login.1.xml:80(contrib) limits.5.xml:49(contrib) lastlog.8.xml:49(contrib) grpck.8.xml:48(contrib) groups.1.xml:47(contrib) groupmod.8.xml:48(contrib) groupmems.8.xml:51(contrib) groupdel.8.xml:48(contrib) groupadd.8.xml:50(contrib) gpasswd.1.xml:52(contrib) faillog.8.xml:47(contrib) faillog.5.xml:47(contrib) expiry.1.xml:51(contrib) chsh.1.xml:50(contrib) chpasswd.8.xml:51(contrib) chfn.1.xml:50(contrib) chage.1.xml:48(contrib) msgid "shadow-utils maintainer, 2000 - 2007" msgstr "shadow-utils maintainer, 2000 - 2007" -#. (itstool) path: author/firstname -#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:28 -#: chpasswd.8.xml.out:32 chsh.1.xml.out:29 expiry.1.xml.out:30 -#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:33 -#: groupadd.8.xml.out:29 groupdel.8.xml.out:27 groupmems.8.xml.out:30 -#: groupmod.8.xml.out:27 groups.1.xml.out:26 grpck.8.xml.out:26 -#: gshadow.5.xml.out:14 lastlog.8.xml.out:28 limits.5.xml.out:28 -#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:97 -#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:44 -#: nologin.8.xml.out:15 passwd.1.xml.out:35 passwd.5.xml.out:26 -#: porttime.5.xml.out:26 pwck.8.xml.out:33 pwconv.8.xml.out:32 -#: shadow.3.xml.out:26 shadow.5.xml.out:26 sg.1.xml.out:27 su.1.xml.out:43 -#: suauth.5.xml.out:26 useradd.8.xml.out:45 userdel.8.xml.out:32 -#: usermod.8.xml.out:33 vipw.8.xml.out:28 +#: vipw.8.xml:52(firstname) usermod.8.xml:57(firstname) userdel.8.xml:56(firstname) useradd.8.xml:69(firstname) suauth.5.xml:50(firstname) su.1.xml:67(firstname) sg.1.xml:51(firstname) shadow.5.xml:50(firstname) shadow.3.xml:50(firstname) pwconv.8.xml:56(firstname) pwck.8.xml:56(firstname) porttime.5.xml:50(firstname) passwd.5.xml:50(firstname) passwd.1.xml:57(firstname) nologin.8.xml:39(firstname) newusers.8.xml:66(firstname) newgrp.1.xml:51(firstname) logoutd.8.xml:50(firstname) login.defs.5.xml:117(firstname) login.access.5.xml:51(firstname) login.1.xml:83(firstname) limits.5.xml:52(firstname) lastlog.8.xml:52(firstname) gshadow.5.xml:38(firstname) grpck.8.xml:51(firstname) groups.1.xml:50(firstname) groupmod.8.xml:51(firstname) groupmems.8.xml:54(firstname) groupdel.8.xml:51(firstname) groupadd.8.xml:53(firstname) gpasswd.1.xml:55(firstname) faillog.8.xml:50(firstname) faillog.5.xml:50(firstname) expiry.1.xml:54(firstname) chsh.1.xml:53(firstname) chpasswd.8.xml:54(firstname) chgpasswd.8.xml:50(firstname) chfn.1.xml:53(firstname) chage.1.xml:51(firstname) msgid "Nicolas" msgstr "Nicolas" -#. (itstool) path: author/surname -#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:29 -#: chpasswd.8.xml.out:33 chsh.1.xml.out:30 expiry.1.xml.out:31 -#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:34 -#: groupadd.8.xml.out:30 groupdel.8.xml.out:28 groupmems.8.xml.out:31 -#: groupmod.8.xml.out:28 groups.1.xml.out:27 grpck.8.xml.out:27 -#: gshadow.5.xml.out:15 lastlog.8.xml.out:29 limits.5.xml.out:29 -#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:98 -#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:45 -#: nologin.8.xml.out:16 passwd.1.xml.out:36 passwd.5.xml.out:27 -#: porttime.5.xml.out:27 pwck.8.xml.out:34 pwconv.8.xml.out:33 -#: shadow.3.xml.out:27 shadow.5.xml.out:27 sg.1.xml.out:28 su.1.xml.out:44 -#: suauth.5.xml.out:27 useradd.8.xml.out:46 userdel.8.xml.out:33 -#: usermod.8.xml.out:34 vipw.8.xml.out:29 +#: vipw.8.xml:53(surname) usermod.8.xml:58(surname) userdel.8.xml:57(surname) useradd.8.xml:70(surname) suauth.5.xml:51(surname) su.1.xml:68(surname) sg.1.xml:52(surname) shadow.5.xml:51(surname) shadow.3.xml:51(surname) pwconv.8.xml:57(surname) pwck.8.xml:57(surname) porttime.5.xml:51(surname) passwd.5.xml:51(surname) passwd.1.xml:58(surname) nologin.8.xml:40(surname) newusers.8.xml:67(surname) newgrp.1.xml:52(surname) logoutd.8.xml:51(surname) login.defs.5.xml:118(surname) login.access.5.xml:52(surname) login.1.xml:84(surname) limits.5.xml:53(surname) lastlog.8.xml:53(surname) gshadow.5.xml:39(surname) grpck.8.xml:52(surname) groups.1.xml:51(surname) groupmod.8.xml:52(surname) groupmems.8.xml:55(surname) groupdel.8.xml:52(surname) groupadd.8.xml:54(surname) gpasswd.1.xml:56(surname) faillog.8.xml:51(surname) faillog.5.xml:51(surname) expiry.1.xml:55(surname) chsh.1.xml:54(surname) chpasswd.8.xml:55(surname) chgpasswd.8.xml:51(surname) chfn.1.xml:54(surname) chage.1.xml:52(surname) msgid "François" msgstr "François" -#. (itstool) path: author/email -#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:30 -#: chpasswd.8.xml.out:34 chsh.1.xml.out:31 expiry.1.xml.out:32 -#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:35 -#: groupadd.8.xml.out:31 groupdel.8.xml.out:29 groupmems.8.xml.out:32 -#: groupmod.8.xml.out:29 groups.1.xml.out:28 grpck.8.xml.out:28 -#: gshadow.5.xml.out:16 lastlog.8.xml.out:30 limits.5.xml.out:30 -#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:99 -#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:46 -#: nologin.8.xml.out:17 passwd.1.xml.out:37 passwd.5.xml.out:28 -#: porttime.5.xml.out:28 pwck.8.xml.out:35 pwconv.8.xml.out:34 -#: shadow.3.xml.out:28 shadow.5.xml.out:28 sg.1.xml.out:29 su.1.xml.out:45 -#: suauth.5.xml.out:28 useradd.8.xml.out:47 userdel.8.xml.out:34 -#: usermod.8.xml.out:35 vipw.8.xml.out:30 +#: vipw.8.xml:54(email) usermod.8.xml:59(email) userdel.8.xml:58(email) useradd.8.xml:71(email) suauth.5.xml:52(email) su.1.xml:69(email) sg.1.xml:53(email) shadow.5.xml:52(email) shadow.3.xml:52(email) pwconv.8.xml:58(email) pwck.8.xml:58(email) porttime.5.xml:52(email) passwd.5.xml:52(email) passwd.1.xml:59(email) nologin.8.xml:41(email) newusers.8.xml:68(email) newgrp.1.xml:53(email) logoutd.8.xml:52(email) login.defs.5.xml:119(email) login.access.5.xml:53(email) login.1.xml:85(email) limits.5.xml:54(email) lastlog.8.xml:54(email) gshadow.5.xml:40(email) grpck.8.xml:53(email) groups.1.xml:52(email) groupmod.8.xml:53(email) groupmems.8.xml:56(email) groupdel.8.xml:53(email) groupadd.8.xml:55(email) gpasswd.1.xml:57(email) faillog.8.xml:52(email) faillog.5.xml:52(email) expiry.1.xml:56(email) chsh.1.xml:55(email) chpasswd.8.xml:56(email) chgpasswd.8.xml:52(email) chfn.1.xml:55(email) chage.1.xml:53(email) msgid "nicolas.francois@centraliens.net" msgstr "nicolas.francois@centraliens.net" -#. (itstool) path: author/contrib -#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:31 -#: chpasswd.8.xml.out:35 chsh.1.xml.out:32 expiry.1.xml.out:33 -#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:36 -#: groupadd.8.xml.out:32 groupdel.8.xml.out:30 groupmems.8.xml.out:33 -#: groupmod.8.xml.out:30 groups.1.xml.out:29 grpck.8.xml.out:29 -#: gshadow.5.xml.out:18 lastlog.8.xml.out:31 limits.5.xml.out:31 -#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:100 -#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:47 -#: nologin.8.xml.out:18 passwd.1.xml.out:38 passwd.5.xml.out:29 -#: porttime.5.xml.out:29 pwck.8.xml.out:36 pwconv.8.xml.out:35 -#: shadow.3.xml.out:29 shadow.5.xml.out:29 sg.1.xml.out:30 su.1.xml.out:46 -#: suauth.5.xml.out:29 useradd.8.xml.out:48 userdel.8.xml.out:35 -#: usermod.8.xml.out:36 vipw.8.xml.out:31 +#: vipw.8.xml:55(contrib) usermod.8.xml:60(contrib) userdel.8.xml:59(contrib) useradd.8.xml:72(contrib) suauth.5.xml:53(contrib) su.1.xml:70(contrib) sg.1.xml:54(contrib) shadow.5.xml:53(contrib) shadow.3.xml:53(contrib) pwconv.8.xml:59(contrib) pwck.8.xml:59(contrib) porttime.5.xml:53(contrib) passwd.5.xml:53(contrib) passwd.1.xml:60(contrib) nologin.8.xml:42(contrib) newusers.8.xml:69(contrib) newgrp.1.xml:54(contrib) logoutd.8.xml:53(contrib) login.defs.5.xml:120(contrib) login.access.5.xml:54(contrib) login.1.xml:86(contrib) limits.5.xml:55(contrib) lastlog.8.xml:55(contrib) gshadow.5.xml:42(contrib) grpck.8.xml:54(contrib) groups.1.xml:53(contrib) groupmod.8.xml:54(contrib) groupmems.8.xml:57(contrib) groupdel.8.xml:54(contrib) groupadd.8.xml:56(contrib) gpasswd.1.xml:58(contrib) faillog.8.xml:53(contrib) faillog.5.xml:53(contrib) expiry.1.xml:57(contrib) chsh.1.xml:56(contrib) chpasswd.8.xml:57(contrib) chgpasswd.8.xml:53(contrib) chfn.1.xml:56(contrib) chage.1.xml:54(contrib) msgid "shadow-utils maintainer, 2007 - now" msgstr "shadow-utils maintainer, 2007 - até ao presente" -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#. (itstool) path: varlistentry/term -#. (itstool) path: citerefentry/refentrytitle -#: chage.1.xml.out:34 chage.1.xml.out:41 chage.1.xml.out:46 chage.1.xml.out:59 -#: chage.1.xml.out:69 chage.1.xml.out:231 chage.1.xml.out:241 -#: chage.1.xml.out:251 chage.1.xml.out:256 chage.1.xml.out:300 -#: login.defs.5.xml.out:237 shadow.5.xml.out:262 -msgid "chage" -msgstr "chage" +#: vipw.8.xml:59(refentrytitle) vipw.8.xml:66(refname) vipw.8.xml:75(command) login.defs.5.xml:520(term) +msgid "vipw" +msgstr "vipw" -#. (itstool) path: refmeta/manvolnum -#. (itstool) path: term/replaceable -#. (itstool) path: citerefentry/manvolnum -#. (itstool) path: para/replaceable -#: chage.1.xml.out:35 chage.1.xml.out:309 chfn.1.xml.out:37 chfn.1.xml.out:65 -#: chfn.1.xml.out:205 chgpasswd.8.xml.out:245 chpasswd.8.xml.out:307 -#: chsh.1.xml.out:37 chsh.1.xml.out:212 expiry.1.xml.out:38 -#: faillog.8.xml.out:235 gpasswd.1.xml.out:41 gpasswd.1.xml.out:95 -#: gpasswd.1.xml.out:279 groupadd.8.xml.out:345 groupadd.8.xml.out:348 -#: groupadd.8.xml.out:351 groupdel.8.xml.out:205 groupdel.8.xml.out:208 -#: groupdel.8.xml.out:211 groupmems.8.xml.out:209 groupmems.8.xml.out:212 -#: groupmems.8.xml.out:215 groupmod.8.xml.out:326 groupmod.8.xml.out:329 -#: groupmod.8.xml.out:332 groups.1.xml.out:34 groups.1.xml.out:92 -#: grpck.8.xml.out:243 gshadow.5.xml.out:77 gshadow.5.xml.out:165 -#: limits.5.xml.out:185 login.1.xml.out:67 login.1.xml.out:128 -#: login.1.xml.out:377 login.1.xml.out:380 login.1.xml.out:383 -#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:535 -#: login.defs.5.xml.out:537 login.defs.5.xml.out:539 login.defs.5.xml.out:549 -#: login.defs.5.xml.out:552 login.defs.5.xml.out:555 newgrp.1.xml.out:35 -#: newgrp.1.xml.out:130 newgrp.1.xml.out:133 newgrp.1.xml.out:136 -#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:477 -#: nologin.8.xml.out:60 passwd.1.xml.out:43 passwd.1.xml.out:453 -#: passwd.1.xml.out:499 passwd.5.xml.out:118 passwd.5.xml.out:173 -#: passwd.5.xml.out:179 passwd.5.xml.out:182 passwd.5.xml.out:197 -#: porttime.5.xml.out:121 pwck.8.xml.out:293 shadow.5.xml.out:262 -#: shadow.5.xml.out:265 shadow.5.xml.out:268 shadow.5.xml.out:283 -#: sg.1.xml.out:35 sg.1.xml.out:119 sg.1.xml.out:122 sg.1.xml.out:125 -#: sg.1.xml.out:128 sg.1.xml.out:131 su.1.xml.out:51 su.1.xml.out:391 -#: su.1.xml.out:415 su.1.xml.out:421 su.1.xml.out:424 suauth.5.xml.out:201 -#: useradd.8.xml.out:837 useradd.8.xml.out:898 useradd.8.xml.out:901 -#: useradd.8.xml.out:904 userdel.8.xml.out:241 userdel.8.xml.out:310 -#: userdel.8.xml.out:313 userdel.8.xml.out:316 usermod.8.xml.out:105 -#: usermod.8.xml.out:244 usermod.8.xml.out:622 usermod.8.xml.out:625 -#: usermod.8.xml.out:628 vipw.8.xml.out:78 vipw.8.xml.out:205 -msgid "1" -msgstr "1" +#: vipw.8.xml:60(manvolnum) usermod.8.xml:65(manvolnum) userdel.8.xml:64(manvolnum) userdel.8.xml:276(replaceable) useradd.8.xml:77(manvolnum) pwconv.8.xml:64(manvolnum) pwck.8.xml:64(manvolnum) nologin.8.xml:47(manvolnum) newusers.8.xml:74(manvolnum) logoutd.8.xml:58(manvolnum) lastlog.8.xml:60(manvolnum) grpck.8.xml:59(manvolnum) groupmod.8.xml:59(manvolnum) groupmems.8.xml:62(manvolnum) groupdel.8.xml:59(manvolnum) groupdel.8.xml:198(replaceable) groupadd.8.xml:61(manvolnum) faillog.8.xml:58(manvolnum) faillog.5.xml:111(manvolnum) chpasswd.8.xml:62(manvolnum) chgpasswd.8.xml:58(manvolnum) +msgid "8" +msgstr "8" -#. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:36 chfn.1.xml.out:38 chsh.1.xml.out:38 expiry.1.xml.out:39 -#: gpasswd.1.xml.out:42 groups.1.xml.out:35 login.1.xml.out:68 -#: newgrp.1.xml.out:36 passwd.1.xml.out:44 sg.1.xml.out:36 su.1.xml.out:52 -msgid "User Commands" -msgstr "Comandos de Utilizador" +#: vipw.8.xml:61(refmiscinfo) usermod.8.xml:66(refmiscinfo) userdel.8.xml:65(refmiscinfo) useradd.8.xml:78(refmiscinfo) pwconv.8.xml:65(refmiscinfo) pwck.8.xml:65(refmiscinfo) nologin.8.xml:48(refmiscinfo) newusers.8.xml:75(refmiscinfo) logoutd.8.xml:59(refmiscinfo) lastlog.8.xml:61(refmiscinfo) grpck.8.xml:60(refmiscinfo) groupmod.8.xml:60(refmiscinfo) groupmems.8.xml:63(refmiscinfo) groupdel.8.xml:60(refmiscinfo) groupadd.8.xml:62(refmiscinfo) faillog.8.xml:59(refmiscinfo) chpasswd.8.xml:63(refmiscinfo) chgpasswd.8.xml:59(refmiscinfo) +msgid "System Management Commands" +msgstr "Comandos de Gestão do Sistema" -#. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:38 -#: chpasswd.8.xml.out:42 chsh.1.xml.out:39 expiry.1.xml.out:40 -#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:43 -#: groupadd.8.xml.out:39 groupdel.8.xml.out:37 groupmems.8.xml.out:40 -#: groupmod.8.xml.out:37 groups.1.xml.out:36 grpck.8.xml.out:36 -#: gshadow.5.xml.out:25 lastlog.8.xml.out:38 limits.5.xml.out:38 -#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:107 -#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:54 -#: nologin.8.xml.out:25 passwd.1.xml.out:45 passwd.5.xml.out:36 -#: porttime.5.xml.out:36 pwck.8.xml.out:43 pwconv.8.xml.out:42 -#: shadow.3.xml.out:36 shadow.5.xml.out:36 sg.1.xml.out:37 su.1.xml.out:53 -#: suauth.5.xml.out:36 useradd.8.xml.out:55 userdel.8.xml.out:42 -#: usermod.8.xml.out:43 vipw.8.xml.out:38 +#: vipw.8.xml:62(refmiscinfo) usermod.8.xml:67(refmiscinfo) userdel.8.xml:66(refmiscinfo) useradd.8.xml:79(refmiscinfo) suauth.5.xml:60(refmiscinfo) su.1.xml:77(refmiscinfo) sg.1.xml:61(refmiscinfo) shadow.5.xml:60(refmiscinfo) shadow.3.xml:60(refmiscinfo) pwconv.8.xml:66(refmiscinfo) pwck.8.xml:66(refmiscinfo) porttime.5.xml:60(refmiscinfo) passwd.5.xml:60(refmiscinfo) passwd.1.xml:67(refmiscinfo) nologin.8.xml:49(refmiscinfo) newusers.8.xml:76(refmiscinfo) newgrp.1.xml:61(refmiscinfo) logoutd.8.xml:60(refmiscinfo) login.defs.5.xml:127(refmiscinfo) login.access.5.xml:61(refmiscinfo) login.1.xml:93(refmiscinfo) limits.5.xml:62(refmiscinfo) lastlog.8.xml:62(refmiscinfo) gshadow.5.xml:49(refmiscinfo) grpck.8.xml:61(refmiscinfo) groups.1.xml:60(refmiscinfo) groupmod.8.xml:61(refmiscinfo) groupmems.8.xml:64(refmiscinfo) groupdel.8.xml:61(refmiscinfo) groupadd.8.xml:63(refmiscinfo) gpasswd.1.xml:65(refmiscinfo) faillog.8.xml:60(refmiscinfo) faillog.5.xml:60(refmiscinfo) expiry.1.xml:64(refmiscinfo) chsh.1.xml:63(refmiscinfo) chpasswd.8.xml:64(refmiscinfo) chgpasswd.8.xml:60(refmiscinfo) chfn.1.xml:63(refmiscinfo) chage.1.xml:61(refmiscinfo) msgid "shadow-utils" msgstr "shadow-utils" -#. (itstool) path: refmeta/refmiscinfo -#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:39 -#: chpasswd.8.xml.out:43 chsh.1.xml.out:40 expiry.1.xml.out:41 -#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:44 -#: groupadd.8.xml.out:40 groupdel.8.xml.out:38 groupmems.8.xml.out:41 -#: groupmod.8.xml.out:38 groups.1.xml.out:37 grpck.8.xml.out:37 -#: gshadow.5.xml.out:26 lastlog.8.xml.out:39 limits.5.xml.out:39 -#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:108 -#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:55 -#: nologin.8.xml.out:26 passwd.1.xml.out:46 passwd.5.xml.out:37 -#: porttime.5.xml.out:37 pwck.8.xml.out:44 pwconv.8.xml.out:43 -#: shadow.3.xml.out:37 shadow.5.xml.out:37 sg.1.xml.out:38 su.1.xml.out:54 -#: suauth.5.xml.out:37 useradd.8.xml.out:56 userdel.8.xml.out:43 -#: usermod.8.xml.out:44 vipw.8.xml.out:39 -msgid "4.15.0" -msgstr "" +#: vipw.8.xml:67(refname) vipw.8.xml:81(command) +msgid "vigr" +msgstr "vigr" -#. (itstool) path: refnamediv/refpurpose -#: chage.1.xml.out:42 -msgid "change user password expiry information" -msgstr "muda a informação de expiração da palavra passe do utilizador" +#: vipw.8.xml:68(refpurpose) +msgid "edit the password, group, shadow-password or shadow-group file" +msgstr "edita o ficheiro password, group, shadow-password ou shadow-group" -#. (itstool) path: arg/replaceable -#. (itstool) path: cmdsynopsis/arg -#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:50 -#: chpasswd.8.xml.out:54 chsh.1.xml.out:51 faillog.8.xml.out:48 -#: groupdel.8.xml.out:49 groupmod.8.xml.out:49 grpck.8.xml.out:47 -#: lastlog.8.xml.out:50 newusers.8.xml.out:66 passwd.1.xml.out:57 -#: pwck.8.xml.out:54 pwconv.8.xml.out:57 pwconv.8.xml.out:63 -#: pwconv.8.xml.out:69 pwconv.8.xml.out:75 su.1.xml.out:64 useradd.8.xml.out:66 -#: useradd.8.xml.out:78 userdel.8.xml.out:52 usermod.8.xml.out:55 -#: vipw.8.xml.out:53 vipw.8.xml.out:59 +#: vipw.8.xml:77(replaceable) vipw.8.xml:83(replaceable) usermod.8.xml:79(replaceable) userdel.8.xml:76(arg) useradd.8.xml:90(replaceable) useradd.8.xml:102(replaceable) su.1.xml:88(replaceable) pwconv.8.xml:81(replaceable) pwconv.8.xml:87(replaceable) pwconv.8.xml:93(replaceable) pwconv.8.xml:99(replaceable) pwck.8.xml:77(arg) passwd.1.xml:79(replaceable) newusers.8.xml:88(replaceable) lastlog.8.xml:74(replaceable) grpck.8.xml:72(arg) groupmod.8.xml:73(replaceable) groupdel.8.xml:73(replaceable) groupadd.8.xml:75(replaceable) faillog.8.xml:72(replaceable) chsh.1.xml:75(replaceable) chpasswd.8.xml:76(replaceable) chgpasswd.8.xml:72(replaceable) chfn.1.xml:75(replaceable) chage.1.xml:72(replaceable) msgid "options" msgstr "opções" -#. (itstool) path: arg/replaceable -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#. (itstool) path: para/emphasis -#: chage.1.xml.out:51 chfn.1.xml.out:54 chsh.1.xml.out:54 faillog.8.xml.out:180 -#: lastlog.8.xml.out:139 passwd.1.xml.out:60 useradd.8.xml.out:68 -#: useradd.8.xml.out:158 userdel.8.xml.out:54 userdel.8.xml.out:64 -#: usermod.8.xml.out:57 usermod.8.xml.out:222 usermod.8.xml.out:506 -msgid "LOGIN" -msgstr "LOGIN" - -#. (itstool) path: refsect1/title -#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:56 -#: chpasswd.8.xml.out:60 chsh.1.xml.out:60 expiry.1.xml.out:58 -#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:72 -#: groupadd.8.xml.out:60 groupdel.8.xml.out:56 groupmems.8.xml.out:61 -#: groupmod.8.xml.out:56 groups.1.xml.out:54 grpck.8.xml.out:58 -#: gshadow.5.xml.out:34 lastlog.8.xml.out:56 limits.5.xml.out:48 -#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:116 -#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:75 -#: nologin.8.xml.out:40 passwd.1.xml.out:66 passwd.5.xml.out:45 -#: porttime.5.xml.out:45 pwck.8.xml.out:69 pwconv.8.xml.out:81 -#: shadow.3.xml.out:94 shadow.3.xml.out:150 shadow.5.xml.out:45 sg.1.xml.out:57 -#: su.1.xml.out:79 suauth.5.xml.out:51 useradd.8.xml.out:84 -#: userdel.8.xml.out:60 usermod.8.xml.out:62 vipw.8.xml.out:65 +#: vipw.8.xml:89(title) usermod.8.xml:86(title) userdel.8.xml:84(title) useradd.8.xml:108(title) suauth.5.xml:75(title) su.1.xml:103(title) sg.1.xml:81(title) shadow.5.xml:69(title) shadow.3.xml:118(title) shadow.3.xml:174(title) pwconv.8.xml:105(title) pwck.8.xml:92(title) porttime.5.xml:69(title) passwd.5.xml:69(title) passwd.1.xml:88(title) nologin.8.xml:64(title) newusers.8.xml:97(title) newgrp.1.xml:77(title) logoutd.8.xml:75(title) login.defs.5.xml:136(title) login.access.5.xml:70(title) login.1.xml:125(title) limits.5.xml:72(title) lastlog.8.xml:80(title) gshadow.5.xml:58(title) grpck.8.xml:83(title) groups.1.xml:78(title) groupmod.8.xml:80(title) groupmems.8.xml:85(title) groupdel.8.xml:80(title) groupadd.8.xml:84(title) gpasswd.1.xml:94(title) faillog.8.xml:78(title) faillog.5.xml:69(title) expiry.1.xml:82(title) chsh.1.xml:84(title) chpasswd.8.xml:82(title) chgpasswd.8.xml:78(title) chfn.1.xml:84(title) chage.1.xml:81(title) msgid "DESCRIPTION" msgstr "DESCRIÇÃO" -#. (itstool) path: refsect1/para -#: chage.1.xml.out:58 -#, fuzzy -#| msgid "" -#| "The chage command changes the number of days between " -#| "password changes and the date of the last password change. This " -#| "information is used by the system to determine when a user must change " -#| "their password." +#: vipw.8.xml:90(para) msgid "" -"The <_:command-1/> command changes the number of days between password " -"changes and the date of the last password change. This information is used " -"by the system to determine when a user must change their password." +"The vipw and vigr commands edits the" +" files /etc/passwd and /etc/group," +" respectively. With the flag, they will edit the shadow" +" versions of those files, /etc/shadow and /etc/gshadow, respectively. The programs will set the appropriate" +" locks to prevent file corruption. When looking for an editor, the programs" +" will first try the environment variable $VISUAL, then the" +" environment variable $EDITOR, and finally the default editor," +" vi1<" +"/citerefentry>." msgstr "" -"O comando chage muda o número de dias entre mudanças de " -"palavra passe e a data da última mudança de palavra passe. Esta informação é " -"usada pelo sistema para determinar quando um utilizador tem de mudar a sua " -"palavra passe." +"Os comandos vipw e vigr editam os " +"ficheiros /etc/passwd e /etc/group, " +"respetivamente. Com a bandeira , eles irão editar as " +"versões sombra desses ficheiros, /etc/shadow e /etc/gshadow, respetivamente. Os programas irão definir as " +"trancas apropriadas para prevenir a corrupção dos ficheiros. Quando se tranca " +"para um editor, os programas irão primeiro tentar a variável de ambiente " +"$VISUAL, depois a variável de ambiente $EDITOR, " +"e finalmente o editor predefinido, vi1." -#. (itstool) path: refsect1/title -#. (itstool) path: arg/replaceable -#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:83 -#: chpasswd.8.xml.out:108 chsh.1.xml.out:71 expiry.1.xml.out:67 -#: faillog.8.xml.out:65 gpasswd.1.xml.out:112 groupadd.8.xml.out:51 -#: groupadd.8.xml.out:80 groupdel.8.xml.out:64 groupmems.8.xml.out:76 -#: groupmod.8.xml.out:65 grpck.8.xml.out:122 lastlog.8.xml.out:68 -#: login.1.xml.out:186 newusers.8.xml.out:252 passwd.1.xml.out:146 -#: pwck.8.xml.out:153 pwconv.8.xml.out:163 su.1.xml.out:120 -#: useradd.8.xml.out:102 userdel.8.xml.out:69 usermod.8.xml.out:70 -#: vipw.8.xml.out:83 +#: vipw.8.xml:107(title) usermod.8.xml:94(title) userdel.8.xml:93(title) useradd.8.xml:126(title) su.1.xml:144(title) pwconv.8.xml:187(title) pwck.8.xml:176(title) passwd.1.xml:174(title) newusers.8.xml:266(title) login.1.xml:210(title) lastlog.8.xml:92(title) grpck.8.xml:147(title) groupmod.8.xml:89(title) groupmems.8.xml:100(title) groupdel.8.xml:88(title) groupadd.8.xml:93(title) gpasswd.1.xml:134(title) faillog.8.xml:89(title) expiry.1.xml:91(title) chsh.1.xml:95(title) chpasswd.8.xml:130(title) chgpasswd.8.xml:105(title) chfn.1.xml:111(title) chage.1.xml:91(title) msgid "OPTIONS" msgstr "OPÇÕES" -#. (itstool) path: refsect1/para -#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:84 -#: chpasswd.8.xml.out:109 chsh.1.xml.out:72 expiry.1.xml.out:68 -#: faillog.8.xml.out:66 gpasswd.1.xml.out:120 groupadd.8.xml.out:81 -#: groupdel.8.xml.out:65 groupmems.8.xml.out:77 groupmod.8.xml.out:66 -#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:253 -#: passwd.1.xml.out:147 pwck.8.xml.out:158 su.1.xml.out:121 -#: useradd.8.xml.out:103 userdel.8.xml.out:70 usermod.8.xml.out:71 -#, fuzzy -#| msgid "The options which apply to the su command are:" -msgid "The options which apply to the <_:command-1/> command are:" -msgstr "As opções que se aplicam ao comando su são:" - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: chage.1.xml.out:74 gpasswd.1.xml.out:139 groupmems.8.xml.out:94 -#: passwd.1.xml.out:164 useradd.8.xml.out:123 useradd.8.xml.out:151 -#: useradd.8.xml.out:619 usermod.8.xml.out:112 usermod.8.xml.out:260 -#, fuzzy -#| msgid "-" -msgid "-d" -msgstr "-" - -#. (itstool) path: term/option -#: chage.1.xml.out:74 -msgid "--lastday" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: chage.1.xml.out:74 chage.1.xml.out:81 chage.1.xml.out:175 -#, fuzzy -#| msgid "LASTLOG_UID_MAX" -msgid "LAST_DAY" -msgstr "LASTLOG_UID_MAX" - -#. (itstool) path: varlistentry/term -#: chage.1.xml.out:73 chage.1.xml.out:88 chage.1.xml.out:127 -#: chage.1.xml.out:156 chage.1.xml.out:168 chage.1.xml.out:189 -#: chage.1.xml.out:202 chage.1.xml.out:217 chfn.1.xml.out:93 chfn.1.xml.out:101 -#: chfn.1.xml.out:109 chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:150 -#: chgpasswd.8.xml.out:128 chpasswd.8.xml.out:115 chpasswd.8.xml.out:170 -#: chpasswd.8.xml.out:183 chpasswd.8.xml.out:198 chsh.1.xml.out:83 -#: chsh.1.xml.out:96 faillog.8.xml.out:104 faillog.8.xml.out:119 -#: faillog.8.xml.out:156 faillog.8.xml.out:169 gpasswd.1.xml.out:125 -#: gpasswd.1.xml.out:138 gpasswd.1.xml.out:159 groupadd.8.xml.out:101 -#: groupadd.8.xml.out:157 groupadd.8.xml.out:200 groupadd.8.xml.out:213 -#: groupdel.8.xml.out:88 groupdel.8.xml.out:101 groupmems.8.xml.out:83 -#: groupmems.8.xml.out:94 groupmems.8.xml.out:110 groupmems.8.xml.out:141 -#: groupmod.8.xml.out:72 groupmod.8.xml.out:81 groupmod.8.xml.out:120 -#: groupmod.8.xml.out:142 groupmod.8.xml.out:163 groupmod.8.xml.out:176 -#: grpck.8.xml.out:148 lastlog.8.xml.out:74 lastlog.8.xml.out:103 -#: lastlog.8.xml.out:127 newusers.8.xml.out:307 passwd.1.xml.out:192 -#: passwd.1.xml.out:241 passwd.1.xml.out:263 passwd.1.xml.out:273 -#: passwd.1.xml.out:286 passwd.1.xml.out:332 passwd.1.xml.out:345 -#: pwck.8.xml.out:196 pwconv.8.xml.out:177 su.1.xml.out:125 su.1.xml.out:162 -#: useradd.8.xml.out:117 useradd.8.xml.out:138 useradd.8.xml.out:150 -#: useradd.8.xml.out:178 useradd.8.xml.out:195 useradd.8.xml.out:229 -#: useradd.8.xml.out:279 useradd.8.xml.out:426 useradd.8.xml.out:490 -#: useradd.8.xml.out:503 useradd.8.xml.out:518 useradd.8.xml.out:532 -#: useradd.8.xml.out:567 useradd.8.xml.out:611 useradd.8.xml.out:629 -#: useradd.8.xml.out:641 useradd.8.xml.out:658 useradd.8.xml.out:674 -#: userdel.8.xml.out:122 userdel.8.xml.out:135 usermod.8.xml.out:98 -#: usermod.8.xml.out:111 usermod.8.xml.out:128 usermod.8.xml.out:151 -#: usermod.8.xml.out:173 usermod.8.xml.out:216 usermod.8.xml.out:289 -#: usermod.8.xml.out:327 usermod.8.xml.out:340 usermod.8.xml.out:356 -#: usermod.8.xml.out:368 usermod.8.xml.out:500 vipw.8.xml.out:114 -msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>" -msgstr "" - -#. (itstool) path: para/emphasis -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: chage.1.xml.out:82 chage.1.xml.out:303 groupadd.8.xml.out:303 -#: groupdel.8.xml.out:168 groupmod.8.xml.out:259 grpck.8.xml.out:237 -#: login.defs.5.xml.out:140 passwd.1.xml.out:447 pwck.8.xml.out:287 -#: su.1.xml.out:385 useradd.8.xml.out:831 userdel.8.xml.out:235 -msgid "0" -msgstr "0" - -#. (itstool) path: listitem/para -#: chage.1.xml.out:77 -#, fuzzy -#| msgid "" -#| "Set the number of days since January 1st, 1970 when the password was last " -#| "changed. The date may also be expressed in the format YYYY-MM-DD (or the " -#| "format more commonly used in your area)." +#: vipw.8.xml:108(para) msgid "" -"Set the number of days since January 1st, 1970 when the password was last " -"changed. The date may also be expressed in the format YYYY-MM-DD (or the " -"format more commonly used in your area). If the <_:replaceable-1/> is set to " -"<_:emphasis-2/> the user is forced to change his password on the next log on." +"The options which apply to the vipw and vigr<" +"/command> commands are:" msgstr "" -"Define o número de dias desde 1 de Janeiro de 1970 em que a palavra passe " -"foi mudada pela última vez. A data também pode ser expressada no formato " -"AAAA-MM-DD (ou no formato mais comum usado na sua área)." +"As opções que se aplicam aos comandos vipw e " +"vigr são:" -#. (itstool) path: term/option -#: chage.1.xml.out:89 -#, fuzzy -#| msgid "-" -msgid "-E" -msgstr "-" +#: vipw.8.xml:114(term) +msgid ", " +msgstr ", " -#. (itstool) path: term/option -#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:630 -#: usermod.8.xml.out:129 -msgid "--expiredate" -msgstr "" +#: vipw.8.xml:116(para) +msgid "Edit group database." +msgstr "Edita a base de dados de grupos." -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: chage.1.xml.out:89 chage.1.xml.out:109 useradd.8.xml.out:179 -#: useradd.8.xml.out:630 usermod.8.xml.out:129 usermod.8.xml.out:243 -#: usermod.8.xml.out:416 -msgid "EXPIRE_DATE" -msgstr "" +#: vipw.8.xml:120(term) userdel.8.xml:123(term) useradd.8.xml:278(term) pwconv.8.xml:195(term) pwck.8.xml:196(term) passwd.1.xml:214(term) newusers.8.xml:296(term) lastlog.8.xml:119(term) grpck.8.xml:157(term) groupmod.8.xml:129(term) groupmems.8.xml:142(term) groupdel.8.xml:95(term) groupadd.8.xml:131(term) gpasswd.1.xml:173(term) faillog.8.xml:122(term) expiry.1.xml:112(term) chsh.1.xml:101(term) chpasswd.8.xml:171(term) chgpasswd.8.xml:131(term) chage.1.xml:129(term) +msgid ", " +msgstr ", " -#. (itstool) path: listitem/para -#: chage.1.xml.out:92 -msgid "" -"Set the date or number of days since January 1, 1970 on which the user's " -"account will no longer be accessible. The date may also be expressed in the " -"format YYYY-MM-DD (or the format more commonly used in your area). A user " -"whose account is locked must contact the system administrator before being " -"able to use the system again." -msgstr "" -"Define a data ou número de dias desde 1 Janeiro 1970 no qual a conta do " -"utilizador não estará mais acessível. A data também pode ser expressada no " -"formato AAAA-MM-DD (ou no formato maus comum usado na sua área). Um " -"utilizador cuja conta está trancada tem de contactar o administrador do " -"sistema antes de poder voltar a usar o sistema." - -#. (itstool) path: listitem/para -#: chage.1.xml.out:100 -msgid "" -"For example the following can be used to set an account to expire in 180 " -"days:" -msgstr "" - -#. (itstool) path: listitem/programlisting -#: chage.1.xml.out:104 -msgid "chage -E $(date -d +180days +%Y-%m-%d)" -msgstr "" - -#. (itstool) path: para/emphasis -#. (itstool) path: para/replaceable -#: chage.1.xml.out:108 chage.1.xml.out:139 chage.1.xml.out:182 -#: passwd.1.xml.out:355 useradd.8.xml.out:317 -#, fuzzy -#| msgid "1" -msgid "-1" -msgstr "1" - -#. (itstool) path: listitem/para -#: chage.1.xml.out:107 -#, fuzzy -#| msgid "" -#| "Passing the number -1 as the " -#| "EXPIRE_DATE will remove an account expiration " -#| "date." -msgid "" -"Passing the number <_:emphasis-1/> as the <_:replaceable-2/> will remove an " -"account expiration date." -msgstr "" -"Passar o número -1 como " -"EXPIRE_DATE irá remover a data de expiração da " -"conta." - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 -#: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 -#: grpck.8.xml.out:132 lastlog.8.xml.out:96 login.1.xml.out:204 -#: login.1.xml.out:229 newusers.8.xml.out:282 passwd.1.xml.out:186 -#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:273 -#: userdel.8.xml.out:99 vipw.8.xml.out:96 -msgid "-h" -msgstr "-h" - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: chage.1.xml.out:115 chfn.1.xml.out:143 chgpasswd.8.xml.out:113 -#: chpasswd.8.xml.out:153 chsh.1.xml.out:77 expiry.1.xml.out:88 -#: faillog.8.xml.out:98 gpasswd.1.xml.out:151 groupadd.8.xml.out:118 -#: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 -#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:282 -#: passwd.1.xml.out:186 pwck.8.xml.out:173 pwconv.8.xml.out:171 -#: su.1.xml.out:387 useradd.8.xml.out:273 userdel.8.xml.out:99 -#: vipw.8.xml.out:96 -msgid "--help" -msgstr "" - -#. (itstool) path: varlistentry/term -#: chage.1.xml.out:115 chage.1.xml.out:121 chage.1.xml.out:146 -#: chfn.1.xml.out:142 chgpasswd.8.xml.out:90 chgpasswd.8.xml.out:107 -#: chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:119 chgpasswd.8.xml.out:141 -#: chpasswd.8.xml.out:145 chpasswd.8.xml.out:153 chpasswd.8.xml.out:161 -#: chsh.1.xml.out:77 expiry.1.xml.out:73 expiry.1.xml.out:79 -#: expiry.1.xml.out:88 faillog.8.xml.out:72 faillog.8.xml.out:98 -#: faillog.8.xml.out:144 gpasswd.1.xml.out:151 gpasswd.1.xml.out:174 -#: gpasswd.1.xml.out:190 groupadd.8.xml.out:87 groupadd.8.xml.out:118 -#: groupadd.8.xml.out:144 groupadd.8.xml.out:184 groupadd.8.xml.out:228 -#: groupdel.8.xml.out:71 groupdel.8.xml.out:82 groupmems.8.xml.out:118 -#: groupmems.8.xml.out:124 groupmems.8.xml.out:130 groupmod.8.xml.out:114 -#: groupmod.8.xml.out:131 groupmod.8.xml.out:193 grpck.8.xml.out:132 -#: grpck.8.xml.out:138 grpck.8.xml.out:161 grpck.8.xml.out:172 -#: lastlog.8.xml.out:84 lastlog.8.xml.out:95 lastlog.8.xml.out:116 -#: newusers.8.xml.out:270 newusers.8.xml.out:282 newusers.8.xml.out:288 -#: newusers.8.xml.out:322 passwd.1.xml.out:152 passwd.1.xml.out:163 -#: passwd.1.xml.out:175 passwd.1.xml.out:186 passwd.1.xml.out:205 -#: passwd.1.xml.out:217 passwd.1.xml.out:253 passwd.1.xml.out:301 -#: passwd.1.xml.out:319 passwd.1.xml.out:362 pwck.8.xml.out:173 -#: pwck.8.xml.out:179 pwck.8.xml.out:188 pwck.8.xml.out:209 -#: pwconv.8.xml.out:171 useradd.8.xml.out:168 useradd.8.xml.out:217 -#: useradd.8.xml.out:273 useradd.8.xml.out:332 useradd.8.xml.out:351 -#: useradd.8.xml.out:374 useradd.8.xml.out:387 useradd.8.xml.out:406 -#: useradd.8.xml.out:457 useradd.8.xml.out:550 userdel.8.xml.out:75 -#: userdel.8.xml.out:99 userdel.8.xml.out:105 userdel.8.xml.out:152 -#: usermod.8.xml.out:77 usermod.8.xml.out:88 usermod.8.xml.out:230 -#: usermod.8.xml.out:249 usermod.8.xml.out:270 usermod.8.xml.out:316 -#: usermod.8.xml.out:404 vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 -#: vipw.8.xml.out:108 vipw.8.xml.out:127 vipw.8.xml.out:133 -#, fuzzy -#| msgid ", " -msgid "<_:option-1/>, <_:option-2/>" -msgstr ", " - -#. (itstool) path: listitem/para -#: chage.1.xml.out:117 chfn.1.xml.out:146 chgpasswd.8.xml.out:115 -#: chpasswd.8.xml.out:155 chsh.1.xml.out:79 expiry.1.xml.out:90 -#: faillog.8.xml.out:100 gpasswd.1.xml.out:153 groupadd.8.xml.out:120 -#: groupdel.8.xml.out:84 groupmems.8.xml.out:120 groupmod.8.xml.out:116 -#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:284 -#: passwd.1.xml.out:188 pwck.8.xml.out:175 pwconv.8.xml.out:173 -#: useradd.8.xml.out:275 userdel.8.xml.out:101 vipw.8.xml.out:98 +#: vipw.8.xml:122(para) userdel.8.xml:125(para) useradd.8.xml:280(para) pwconv.8.xml:197(para) pwck.8.xml:198(para) passwd.1.xml:216(para) newusers.8.xml:298(para) lastlog.8.xml:123(para) grpck.8.xml:159(para) groupmod.8.xml:131(para) groupmems.8.xml:144(para) groupdel.8.xml:97(para) groupadd.8.xml:133(para) gpasswd.1.xml:175(para) faillog.8.xml:124(para) expiry.1.xml:114(para) chsh.1.xml:103(para) chpasswd.8.xml:173(para) chgpasswd.8.xml:133(para) chfn.1.xml:169(para) chage.1.xml:131(para) msgid "Display help message and exit." msgstr "Mostra mensagem de ajuda e termina." -#. (itstool) path: term/option -#: chage.1.xml.out:121 passwd.1.xml.out:193 -#, fuzzy -#| msgid "-" -msgid "-i" -msgstr "-" +#: vipw.8.xml:126(term) +msgid ", " +msgstr ", " -#. (itstool) path: term/option -#: chage.1.xml.out:121 -msgid "--iso8601" -msgstr "" +#: vipw.8.xml:128(para) +msgid "Edit passwd database." +msgstr "Edita a base de dados passwd." -#. (itstool) path: listitem/para -#: chage.1.xml.out:123 -msgid "When printing dates, use YYYY-MM-DD format." -msgstr "ao escrever datas, usa o formato AAAA-MM-DD." +#: vipw.8.xml:132(term) pwck.8.xml:202(term) passwd.1.xml:281(term) +msgid ", " +msgstr ", " -#. (itstool) path: term/option -#: chage.1.xml.out:128 -#, fuzzy -#| msgid "-" -msgid "-I" -msgstr "-" +#: vipw.8.xml:134(para) passwd.1.xml:285(para) +msgid "Quiet mode." +msgstr "Modo silencioso." -#. (itstool) path: term/option -#: chage.1.xml.out:128 passwd.1.xml.out:193 useradd.8.xml.out:196 -#: useradd.8.xml.out:642 usermod.8.xml.out:152 -msgid "--inactive" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#. (itstool) path: para/option -#: chage.1.xml.out:128 chage.1.xml.out:134 chage.1.xml.out:140 -#: passwd.1.xml.out:193 passwd.1.xml.out:199 useradd.8.xml.out:196 -#: useradd.8.xml.out:211 useradd.8.xml.out:642 useradd.8.xml.out:652 -#: usermod.8.xml.out:152 -msgid "INACTIVE" -msgstr "" - -#. (itstool) path: listitem/para -#: chage.1.xml.out:131 -#, fuzzy -#| msgid "" -#| "Set the number of days of inactivity after a password has expired before " -#| "the account is locked. The INACTIVE option is " -#| "the number of days of inactivity. A user whose account is locked must " -#| "contact the system administrator before being able to use the system " -#| "again." +#: vipw.8.xml:138(term) usermod.8.xml:322(term) userdel.8.xml:146(term) useradd.8.xml:457(term) pwconv.8.xml:201(term) pwck.8.xml:219(term) passwd.1.xml:301(term) newusers.8.xml:321(term) lastlog.8.xml:127(term) grpck.8.xml:173(term) groupmod.8.xml:178(term) groupmems.8.xml:165(term) groupdel.8.xml:101(term) groupadd.8.xml:204(term) faillog.8.xml:180(term) chsh.1.xml:107(term) chpasswd.8.xml:188(term) chgpasswd.8.xml:146(term) chfn.1.xml:153(term) chage.1.xml:203(term) msgid "" -"Set the number of days of inactivity after a password has expired before the " -"account is locked. The <_:replaceable-1/> option is the number of days of " -"inactivity. A user whose account is locked must contact the system " -"administrator before being able to use the system again." +",  CHROOT_DIR<" +"/replaceable>" msgstr "" -"Define o dias de inactividade após a palavra passe ter expirado e antes da " -"conta ser trancada. A opção INACTIVE é o número " -"de ias de inactividade. Um utilizador cuja conta está trancada tem de " -"contactar o administrador do sistema antes de poder voltar a usar o sistema." +",  CHROOT_DIR<" +"/replaceable>" -#. (itstool) path: listitem/para -#: chage.1.xml.out:138 -#, fuzzy -#| msgid "" -#| "Passing the number -1 as the " -#| "INACTIVE will remove an account's inactivity." +#: vipw.8.xml:142(para) usermod.8.xml:326(para) userdel.8.xml:150(para) useradd.8.xml:461(para) pwconv.8.xml:205(para) pwck.8.xml:223(para) passwd.1.xml:305(para) newusers.8.xml:325(para) lastlog.8.xml:131(para) grpck.8.xml:177(para) groupmod.8.xml:182(para) groupmems.8.xml:169(para) groupdel.8.xml:105(para) groupadd.8.xml:208(para) gpasswd.1.xml:185(para) faillog.8.xml:184(para) chsh.1.xml:111(para) chpasswd.8.xml:192(para) chgpasswd.8.xml:150(para) chfn.1.xml:157(para) chage.1.xml:207(para) msgid "" -"Passing the number <_:emphasis-1/> as the <_:replaceable-2/> will remove an " -"account's inactivity." +"Apply changes in the CHROOT_DIR directory and use" +" the configuration files from the CHROOT_DIR" +" directory." msgstr "" -"Passar o número -1 como " -"INACTIVE irá remover a inactividade da conta." +"Aplica alterações no directório CHROOT_DIR e " +"usa os ficheiros de configuração do directório " +"CHROOT_DIR." -#. (itstool) path: term/option -#. (itstool) path: para/option -#. (itstool) path: group/arg -#: chage.1.xml.out:147 chage.1.xml.out:257 faillog.8.xml.out:88 -#: faillog.8.xml.out:105 faillog.8.xml.out:185 faillog.8.xml.out:202 -#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:218 -#: passwd.1.xml.out:327 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:332 -#: usermod.8.xml.out:217 -msgid "-l" -msgstr "-l" +#: vipw.8.xml:150(term) +msgid ", " +msgstr ", " -#. (itstool) path: term/option -#: chage.1.xml.out:147 groupmems.8.xml.out:124 -msgid "--list" -msgstr "" +#: vipw.8.xml:152(para) +msgid "Edit shadow or gshadow database." +msgstr "Edita a base de dados shadow ou gshadow." -#. (itstool) path: listitem/para -#: chage.1.xml.out:150 -msgid "Show account aging information." -msgstr "Mostra informação de envelhecimento da conta." +#: vipw.8.xml:156(term) +msgid ", " +msgstr ", " -#. (itstool) path: term/option -#. (itstool) path: para/option -#: chage.1.xml.out:157 chgpasswd.8.xml.out:74 chgpasswd.8.xml.out:119 -#: chpasswd.8.xml.out:80 chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 -#: chpasswd.8.xml.out:161 faillog.8.xml.out:88 faillog.8.xml.out:120 -#: faillog.8.xml.out:185 faillog.8.xml.out:202 su.1.xml.out:207 -#: useradd.8.xml.out:289 useradd.8.xml.out:352 useradd.8.xml.out:478 -#: usermod.8.xml.out:119 usermod.8.xml.out:250 -#, fuzzy -#| msgid "-" -msgid "-m" -msgstr "-" +#: vipw.8.xml:158(para) +msgid "Indicates which user's tcb shadow file to edit." +msgstr "Indica qual o ficheiro shadow de utilizador tcb a editar." -#. (itstool) path: term/option -#: chage.1.xml.out:157 passwd.1.xml.out:242 -msgid "--mindays" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:242 -#: passwd.1.xml.out:247 -msgid "MIN_DAYS" -msgstr "" - -#. (itstool) path: listitem/para -#: chage.1.xml.out:160 passwd.1.xml.out:245 -#, fuzzy -#| msgid "" -#| "Set the minimum number of days between password changes to " -#| "MIN_DAYS. A value of zero for this field " -#| "indicates that the user may change their password at any time." -msgid "" -"Set the minimum number of days between password changes to <_:replaceable-1/" -">. A value of zero for this field indicates that the user may change their " -"password at any time." -msgstr "" -"Define o número mínimo de dias entre mudanças de palavra passe para " -"MIN_DAYS. Um valor zero neste campo indica que o " -"utilizador pode mudar a sua palavra passe a qualquer altura." - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: chage.1.xml.out:169 gpasswd.1.xml.out:83 gpasswd.1.xml.out:114 -#: gpasswd.1.xml.out:219 useradd.8.xml.out:162 useradd.8.xml.out:375 -#, fuzzy -#| msgid "-" -msgid "-M" -msgstr "-" - -#. (itstool) path: term/option -#: chage.1.xml.out:169 passwd.1.xml.out:346 -msgid "--maxdays" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: chage.1.xml.out:169 chage.1.xml.out:174 chage.1.xml.out:183 -#: passwd.1.xml.out:346 passwd.1.xml.out:351 passwd.1.xml.out:356 -msgid "MAX_DAYS" -msgstr "" - -#. (itstool) path: para/option -#. (itstool) path: term/option -#: chage.1.xml.out:178 chage.1.xml.out:218 usermod.8.xml.out:481 -#, fuzzy -#| msgid "-" -msgid "-W" -msgstr "-" - -#. (itstool) path: listitem/para -#: chage.1.xml.out:172 -#, fuzzy -#| msgid "" -#| "Set the maximum number of days during which a password is valid. When " -#| "MAX_DAYS plus LAST_DAY is less than the current day, the user will be required to " -#| "change their password before being able to use their account. This " -#| "occurrence can be planned for in advance by use of the , shadow<" +"manvolnum>5." +msgstr "" +"vi1<" +"/citerefentry>, group5, gshadow<" +"/refentrytitle>5login.defs5<" +"/manvolnum>, passwd<" +"/refentrytitle>5, tcb5, shadow<" +"manvolnum>5." + +#: usermod.8.xml:46(firstname) userdel.8.xml:45(firstname) useradd.8.xml:58(firstname) su.1.xml:56(firstname) sg.1.xml:40(firstname) shadow.5.xml:39(firstname) shadow.3.xml:39(firstname) pwck.8.xml:45(firstname) porttime.5.xml:39(firstname) passwd.5.xml:39(firstname) passwd.1.xml:46(firstname) newusers.8.xml:55(firstname) newgrp.1.xml:40(firstname) logoutd.8.xml:39(firstname) login.defs.5.xml:106(firstname) login.1.xml:72(firstname) lastlog.8.xml:41(firstname) grpck.8.xml:40(firstname) groups.1.xml:39(firstname) groupmod.8.xml:40(firstname) groupdel.8.xml:40(firstname) groupadd.8.xml:42(firstname) faillog.8.xml:39(firstname) faillog.5.xml:39(firstname) expiry.1.xml:43(firstname) chsh.1.xml:42(firstname) chpasswd.8.xml:43(firstname) chfn.1.xml:42(firstname) chage.1.xml:40(firstname) +msgid "Julianne Frances" +msgstr "Julianne Frances" + +#: usermod.8.xml:47(surname) userdel.8.xml:46(surname) useradd.8.xml:59(surname) su.1.xml:57(surname) sg.1.xml:41(surname) shadow.5.xml:40(surname) shadow.3.xml:40(surname) pwck.8.xml:46(surname) porttime.5.xml:40(surname) passwd.5.xml:40(surname) passwd.1.xml:47(surname) newusers.8.xml:56(surname) newgrp.1.xml:41(surname) logoutd.8.xml:40(surname) login.defs.5.xml:107(surname) login.1.xml:73(surname) lastlog.8.xml:42(surname) grpck.8.xml:41(surname) groups.1.xml:40(surname) groupmod.8.xml:41(surname) groupdel.8.xml:41(surname) groupadd.8.xml:43(surname) faillog.8.xml:40(surname) faillog.5.xml:40(surname) expiry.1.xml:44(surname) chsh.1.xml:43(surname) chpasswd.8.xml:44(surname) chfn.1.xml:43(surname) chage.1.xml:41(surname) +msgid "Haugh" +msgstr "Haugh" + +#: usermod.8.xml:48(contrib) userdel.8.xml:47(contrib) useradd.8.xml:60(contrib) sg.1.xml:42(contrib) newusers.8.xml:57(contrib) newgrp.1.xml:42(contrib) logoutd.8.xml:41(contrib) login.defs.5.xml:108(contrib) groups.1.xml:41(contrib) groupmod.8.xml:42(contrib) groupdel.8.xml:42(contrib) groupadd.8.xml:44(contrib) chpasswd.8.xml:45(contrib) msgid "Creation, 1991" msgstr "Criação, 1991" -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#. (itstool) path: varlistentry/term -#. (itstool) path: citerefentry/refentrytitle -#: chpasswd.8.xml.out:39 chpasswd.8.xml.out:46 chpasswd.8.xml.out:52 -#: chpasswd.8.xml.out:62 chpasswd.8.xml.out:72 chpasswd.8.xml.out:91 -#: chpasswd.8.xml.out:98 chpasswd.8.xml.out:110 chpasswd.8.xml.out:297 -#: login.defs.5.xml.out:266 passwd.1.xml.out:496 -msgid "chpasswd" -msgstr "chpasswd" +#: usermod.8.xml:64(refentrytitle) usermod.8.xml:71(refname) usermod.8.xml:77(command) login.defs.5.xml:510(term) +msgid "usermod" +msgstr "usermod" -#. (itstool) path: refnamediv/refpurpose -#: chpasswd.8.xml.out:47 -msgid "update passwords in batch mode" -msgstr "actualiza palavras passe em modo de lote" +#: usermod.8.xml:72(refpurpose) +msgid "modify a user account" +msgstr "modifica uma conta de utilizador" -#. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:61 -#, fuzzy -#| msgid "" -#| "The chpasswd command reads a list of user name and " -#| "password pairs from standard input and uses this information to update a " -#| "group of existing users. Each line is of the format:" +#: usermod.8.xml:81(replaceable) userdel.8.xml:78(replaceable) useradd.8.xml:92(replaceable) passwd.1.xml:82(replaceable) chsh.1.xml:78(replaceable) chfn.1.xml:78(replaceable) chage.1.xml:75(replaceable) +msgid "LOGIN" +msgstr "LOGIN" + +#: usermod.8.xml:87(para) msgid "" -"The <_:command-1/> command reads a list of user name and password pairs from " -"standard input and uses this information to update a group of existing " -"users. Each line is of the format:" +"The usermod command modifies the system account files to" +" reflect the changes that are specified on the command line." msgstr "" -"O comando chpasswd lê uma lista de pares de nome de " -"utilizador e palavra passe a partir da entrada standard e usa esta " -"informação para actualizar um grupo de utilizadores existentes. Cada linha " -"tem o formato:" +"O comando usermod modifica os ficheiros de conta do " +"sistema para refletor as alterações que foram especificadas na linha de " +"comandos." -#. (itstool) path: para/emphasis -#. (itstool) path: arg/replaceable -#. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:67 groupmems.8.xml.out:52 groupmems.8.xml.out:53 -#: groupmems.8.xml.out:83 groupmems.8.xml.out:94 -msgid "user_name" -msgstr "user_name" +#: usermod.8.xml:95(para) +msgid "The options which apply to the usermod command are:" +msgstr "As opções que se aplicam ao comando usermod são:" -#. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:70 -#, fuzzy -#| msgid "" -#| "By default the passwords must be supplied in clear-text, and are " -#| "encrypted by chpasswd. Also the password age will be " -#| "updated, if present." +#: usermod.8.xml:101(term) +msgid ", " +msgstr ", " + +#: usermod.8.xml:105(para) msgid "" -"By default the passwords must be supplied in clear-text, and are encrypted " -"by <_:command-1/>. Also the password age will be updated, if present." +"Add the user to the supplementary group(s). Use only with the ." -#. (itstool) path: para/option -#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:139 -#, fuzzy -#| msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" -msgid "MD5_CRYPT_ENAB" -msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" +#: usermod.8.xml:112(term) +msgid ", " +msgstr ", " -#. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:75 -#, fuzzy -#| msgid "" -#| "The default encryption algorithm can be defined for the system with the " -#| " variable of /etc/login.defs, and can be overwritten with the , , or options." +#: usermod.8.xml:116(para) useradd.8.xml:135(para) pwck.8.xml:190(para) newusers.8.xml:276(para) +msgid "Allow names that do not conform to standards." +msgstr "Permite nomes que não estão em conformidade com standards." + +#: usermod.8.xml:122(term) useradd.8.xml:162(term) msgid "" -"The default encryption algorithm can be defined for the system with the <_:" -"option-1/> or <_:option-2/> variables of <_:filename-3/>, and can be " -"overwritten with the <_:option-4/>, <_:option-5/>, or <_:option-6/> options." +",  COMMENT<" +"/replaceable>" msgstr "" -"O algoritmo de encriptação predefinido pode ser definido para o sistema com " -"a variável de /etc/login.defs, e pode ser sobreposto com as opções , , ou ." +",  COMMENT<" +"/replaceable>" -#. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:83 -#, fuzzy -#| msgid "" -#| "By default, passwords are encrypted by PAM, but (even if not recommended) " -#| "you can select a different encryption method with the , or options." +#: usermod.8.xml:126(para) msgid "" -"By default, passwords are encrypted by PAM, but (even if not recommended) " -"you can select a different encryption method with the <_:option-1/>, <_:" -"option-2/>, or <_:option-3/> options." +"The new value of the user's password file comment field. It is normally" +" modified using the chfn<" +"manvolnum>1 utility." msgstr "" -"Por predefinição, as palavras passe são encriptadas pelo PAM, mas (mesmo que " -"não recomendado) você pode selecionar um método de encriptação diferente com " -"as opções , , ou ." +"O novo valor do campo de comentários do ficheiro password do utilizador. " +"E normalmente modificado usando o utilitário chfn1." -#. (itstool) path: para/phrase -#: chpasswd.8.xml.out:90 -#, fuzzy -#| msgid "By default, PAM is used to encrypt the passwords." -msgid "Except when PAM is used to encrypt the passwords," -msgstr "Por predefinição, é usado o PAM para encriptar as palavras passe." - -#. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:89 -#, fuzzy -#| msgid "" -#| "Except when PAM is used to encrypt the " -#| "passwords,chpasswd first updates all the " -#| "passwords in memory, and then commits all the changes to disk if no " -#| "errors occurred for any user." +#: usermod.8.xml:135(term) msgid "" -"<_:phrase-1/> <_:command-2/> first updates all the passwords in memory, and " -"then commits all the changes to disk if no errors occurred for any user." +",  HOME_DIR<" +"/replaceable>" msgstr "" -"Excepto quando o PAM é usado para encriptar as " -"palavras passe, o chpasswd primeiro actualiza " -"todas as palavras passe em memória, e depois guarda todas as alterações no " -"disco, se não ocorrerem erros para nenhum utilizador." +",  HOME_DIR<" +"/replaceable>" -#. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:95 -#, fuzzy -#| msgid "" -#| "When PAM is used to encrypt the passwords (and update the passwords in " -#| "the system database) then if a password cannot be updated " -#| "chpasswd continues updating the passwords of the next " -#| "users, and will return an error code on exit." +#: usermod.8.xml:139(para) +msgid "The user's new login directory." +msgstr "O novo directório de login do utilizador." + +#: usermod.8.xml:142(para) msgid "" -"When PAM is used to encrypt the passwords (and update the passwords in the " -"system database) then if a password cannot be updated <_:command-1/> " -"continues updating the passwords of the next users, and will return an error " -"code on exit." +"If the option is given, the contents of the current home" +" directory will be moved to the new home directory, which is created if it" +" does not already exist." msgstr "" -"Quando o PAM é usado para encriptar as palavras passe (e actualizar as " -"palavras passe na base de dados do sistema) então se uma palavra passe não " -"puder ser actualizada o chpasswd continua a actualizar as " -"palavras passe dos próximos utilizadores, e irá retornar um código de erro " -"ao terminar." +"Se for fornecida a opção , o conteúdo do directório home " +"actual será movido para o novo directório home, o qual será criado se não " +"existir já." -#. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:116 -msgid "METHOD" -msgstr "" - -#. (itstool) path: listitem/para -#: chpasswd.8.xml.out:131 -msgid "By default, PAM is used to encrypt the passwords." -msgstr "Por predefinição, é usado o PAM para encriptar as palavras passe." - -#. (itstool) path: listitem/para -#: chpasswd.8.xml.out:134 -#, fuzzy -#| msgid "" -#| "By default (if none of the , , or " -#| " options are specified), the encryption method is " -#| "defined by the or ,  EXPIRE_DATE" msgstr "" -"Por predefinição (se nenhuma da opções , for especificada), o método de encriptação é " -"definido pelas variáveis ou " -" de /etc/login.defs." +",  EXPIRE_DATE" -#. (itstool) path: term/replaceable -#: chpasswd.8.xml.out:199 -msgid "ROUNDS" -msgstr "" - -#. (itstool) path: term/filename -#: chpasswd.8.xml.out:295 -msgid "/etc/pam.d/chpasswd" -msgstr "/etc/pam.d/chpasswd" - -#. (itstool) path: listitem/para -#: chpasswd.8.xml.out:297 newusers.8.xml.out:452 passwd.1.xml.out:435 -#, fuzzy -#| msgid "PAM configuration for passwd." -msgid "PAM configuration for <_:command-1/>." -msgstr "Configuração PAM para passwd." - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: varlistentry/term -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: chpasswd.8.xml.out:310 login.defs.5.xml.out:393 newusers.8.xml.out:51 -#: newusers.8.xml.out:58 newusers.8.xml.out:64 newusers.8.xml.out:77 -#: newusers.8.xml.out:98 newusers.8.xml.out:125 newusers.8.xml.out:134 -#: newusers.8.xml.out:153 newusers.8.xml.out:166 newusers.8.xml.out:172 -#: newusers.8.xml.out:174 newusers.8.xml.out:212 newusers.8.xml.out:232 -#: newusers.8.xml.out:254 newusers.8.xml.out:452 useradd.8.xml.out:922 -msgid "newusers" -msgstr "newusers" - -#. (itstool) path: para/phrase -#: chpasswd.8.xml.out:312 grpck.8.xml.out:285 passwd.1.xml.out:507 -msgid "<_:citerefentry-1/>," -msgstr "" - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: varlistentry/term -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: chpasswd.8.xml.out:318 groupadd.8.xml.out:366 groupdel.8.xml.out:223 -#: groupmems.8.xml.out:224 groupmod.8.xml.out:347 login.defs.5.xml.out:481 -#: newusers.8.xml.out:488 useradd.8.xml.out:52 useradd.8.xml.out:59 -#: useradd.8.xml.out:64 useradd.8.xml.out:71 useradd.8.xml.out:75 -#: useradd.8.xml.out:87 useradd.8.xml.out:90 useradd.8.xml.out:103 -#: useradd.8.xml.out:129 useradd.8.xml.out:187 useradd.8.xml.out:209 -#: useradd.8.xml.out:239 useradd.8.xml.out:286 useradd.8.xml.out:343 -#: useradd.8.xml.out:474 useradd.8.xml.out:604 useradd.8.xml.out:606 -#: useradd.8.xml.out:710 useradd.8.xml.out:828 userdel.8.xml.out:342 -#: usermod.8.xml.out:657 -msgid "useradd" -msgstr "useradd" - -#. (itstool) path: refsect1/para -#: chpasswd.8.xml.out:305 newusers.8.xml.out:472 +#: usermod.8.xml:155(para) useradd.8.xml:204(para) msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." +"The date on which the user account will be disabled. The date is specified in" +" the format YYYY-MM-DD." msgstr "" +"A data na qual a conta do utilizador será desactivada. A data é especificada " +"no formato AAAA-MM-DD." -#. (itstool) path: refnamediv/refpurpose -#: chsh.1.xml.out:44 -msgid "change login shell" -msgstr "muda a shell de login" - -#. (itstool) path: refsect1/para -#: chsh.1.xml.out:61 -#, fuzzy -#| msgid "" -#| "The chsh command changes the user login shell. This " -#| "determines the name of the user's initial login command. A normal user " -#| "may only change the login shell for her own account; the superuser may " -#| "change the login shell for any account." +#: usermod.8.xml:159(para) msgid "" -"The <_:command-1/> command changes the user login shell. This determines the " -"name of the user's initial login command. A normal user may only change the " -"login shell for her own account; the superuser may change the login shell " -"for any account." +"An empty EXPIRE_DATE argument will disable the" +" expiration of the account." msgstr "" -"O comando chsh muda a shell de login do utilizador. Isto " -"determina o nome do comando de login inicial. Um utilizador normal pode " -"apenas mudar a shell de login para a sua própria conta; o super-utilizador " -"pode mudar a shell de login para qualquer conta." +"Um argumento EXPIRE_DATE vazio irá desactivar " +"o expirar da conta." -#. (itstool) path: term/option -#. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 su.1.xml.out:199 useradd.8.xml.out:519 -#: useradd.8.xml.out:675 usermod.8.xml.out:357 -#, fuzzy -#| msgid "pw_shell" -msgid "--shell" -msgstr "pw_shell" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/option -#: chsh.1.xml.out:97 su.1.xml.out:163 useradd.8.xml.out:519 -#: useradd.8.xml.out:524 useradd.8.xml.out:675 useradd.8.xml.out:682 -#: usermod.8.xml.out:357 -msgid "SHELL" -msgstr "" - -#. (itstool) path: listitem/para -#: chsh.1.xml.out:100 +#: usermod.8.xml:163(para) usermod.8.xml:184(para) msgid "" -"The name of the user's new login shell. Setting this field to blank causes " -"the system to select the default login shell." +"This option requires a /etc/shadow file. A /etc/shadow entry will be created if there were none." msgstr "" -"O nome da shell de login do novo utilizador. Definir este campo para vazio " -"faz com que o sistema selecione a shell de login predefinida." +"Esta opção requer um ficheiro /etc/shadow. Será criada " +"uma entrada /etc/shadow se não existir nenhuma." -#. (itstool) path: refsect1/para -#: chsh.1.xml.out:107 -#, fuzzy -#| msgid "" -#| "If the option is not selected, chsh operates in an interactive fashion, prompting the user with the " -#| "current login shell. Enter the new value to change the shell, or leave " -#| "the line blank to use the current one. The current shell is displayed " -#| "between a pair of [ ] marks." +#: usermod.8.xml:171(term) useradd.8.xml:217(term) useradd.8.xml:589(term) msgid "" -"If the <_:option-1/> option is not selected, <_:command-2/> operates in an " -"interactive fashion, prompting the user with the current login shell. Enter " -"the new value to change the shell, or leave the line blank to use the " -"current one. The current shell is displayed between a pair of <_:emphasis-3/" -"> marks." +",  INACTIVE<" +"/replaceable>" msgstr "" -"Se a opção não for selecionada, o chsh opera em modo interactivo, pedindo ao utilizador a shell de login " -"actual. Insira novo valor para mudar a shell, ou deixe a linha em branco " -"para usar a actual. A shell actual é mostrada entre um para de parêntesis " -"rectos [ ]." +",  INACTIVE<" +"/replaceable>" -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: chsh.1.xml.out:120 chsh.1.xml.out:124 chsh.1.xml.out:130 chsh.1.xml.out:143 -#: chsh.1.xml.out:172 chsh.1.xml.out:184 su.1.xml.out:198 -msgid "/etc/shells" -msgstr "/etc/shells" - -#. (itstool) path: para/filename -#: chsh.1.xml.out:123 chsh.1.xml.out:142 -msgid "/bin/rsh" -msgstr "" - -#. (itstool) path: refsect1/para -#: chsh.1.xml.out:118 -#, fuzzy -#| msgid "" -#| "The only restriction placed on the login shell is that the command name " -#| "must be listed in /etc/shells, unless the invoker is " -#| "the superuser, and then any value may be added. An account with a " -#| "restricted login shell may not change her login shell. For this reason, " -#| "placing /bin/rsh in /etc/shells " -#| "is discouraged since accidentally changing to a restricted shell would " -#| "prevent the user from ever changing her login shell back to its original " -#| "value." +#: usermod.8.xml:175(para) msgid "" -"The only restriction placed on the login shell is that the command name must " -"be listed in <_:filename-1/>, unless the invoker is the superuser, and then " -"any value may be added. An account with a restricted login shell may not " -"change her login shell. For this reason, placing <_:filename-2/> in <_:" -"filename-3/> is discouraged since accidentally changing to a restricted " -"shell would prevent the user from ever changing her login shell back to its " -"original value." +"The number of days after a password expires until the account is permanently" +" disabled." msgstr "" -"A única restrição colocada na shell de login é que o nome de comando tem de " -"estar listado em /etc/shells, a menos que o invocador " -"seja o super-utilizador, e assim qualquer valor pode ser adicionado. Uma " -"conta com uma shell de login restringida não pode mudar a sua shell de " -"login. Por esta razão, colocar /bin/rsh em /" -"etc/shells é desencorajado a mudança acidental para uma shell " -"restringida iria impedir o utilizador de alguma vez voltar a mudar a sua " -"shell de login para o seu valor original." +"O número de dias após uma palavra-passe expirar até que a conta seja " +"desactivada permanentemente." -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: chsh.1.xml.out:132 chsh.1.xml.out:181 -msgid "%vendordir%/shells" -msgstr "" - -#. (itstool) path: para/filename -#: chsh.1.xml.out:133 -msgid "%vendordir%/shells.d/*" -msgstr "" - -#. (itstool) path: para/filename -#: chsh.1.xml.out:134 -#, fuzzy -#| msgid "/etc/shells" -msgid "/etc/shells.d/*" -msgstr "/etc/shells" - -#. (itstool) path: para/filename -#: chsh.1.xml.out:135 -#, fuzzy -#| msgid "/etc/shells" -msgid "/etc/shells.d/@filename@" -msgstr "/etc/shells" - -#. (itstool) path: para/filename -#: chsh.1.xml.out:136 -msgid "%vendordir%/shells.d/@filename@" -msgstr "" - -#. (itstool) path: refsect1/para -#: chsh.1.xml.out:128 +#: usermod.8.xml:179(para) msgid "" -"The only restriction placed on the login shell is that the command name must " -"be listed in <_:filename-1/>. If this file does not exist, the definitions " -"are taken from the files <_:filename-2/>, <_:filename-3/> and <_:filename-4/" -"> in that order. If <_:filename-5/> exists, then <_:filename-6/> will not be " -"used. If the invoker is the superuser any value may be added regardless what " -"is defined in the configuration files. An account with a restricted login " -"shell may not change her login shell." +"A value of 0 disables the account as soon as the password has expired, and a" +" value of -1 disables the feature." msgstr "" +"Um valor de 0 desactiva a conta assim que a palavra-passe expirar, e um " +"valor -1 desactiva esta funcionalidade." -#. (itstool) path: refsect1/para -#: chsh.1.xml.out:141 +#: usermod.8.xml:192(term) useradd.8.xml:236(term) useradd.8.xml:604(term) msgid "" -"For this reason, placing <_:filename-1/> in <_:filename-2/> is discouraged " -"since accidentally changing to a restricted shell would prevent the user " -"from ever changing her login shell back to its original value." +",  GROUP<" +"/replaceable>" msgstr "" +",  GROUP<" +"/replaceable>" -#. (itstool) path: listitem/para -#: chsh.1.xml.out:174 -msgid "List of valid login shells." -msgstr "Lista de shells de login válidas." - -#. (itstool) path: listitem/para -#: chsh.1.xml.out:177 -#, fuzzy -#| msgid "List of valid login shells." -msgid "User defined list of valid login shells." -msgstr "Lista de shells de login válidas." - -#. (itstool) path: listitem/para -#: chsh.1.xml.out:183 -msgid "Default configuration file if <_:filename-1/> does not exist." -msgstr "" - -#. (itstool) path: term/filename -#: chsh.1.xml.out:188 -msgid "%vendordir%/shells.d" -msgstr "" - -#. (itstool) path: listitem/para -#: chsh.1.xml.out:190 -msgid "Directory for additional vendor specific configuration files." -msgstr "" - -#. (itstool) path: term/filename -#: chsh.1.xml.out:194 -#, fuzzy -#| msgid "/etc/shells" -msgid "/etc/shells.d" -msgstr "/etc/shells" - -#. (itstool) path: listitem/para -#: chsh.1.xml.out:196 -#, fuzzy -#| msgid "Directory containing default files." -msgid "Directory for additional user defined configuration files." -msgstr "Directório que contém ficheiros predefinidos." - -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: expiry.1.xml.out:37 expiry.1.xml.out:44 expiry.1.xml.out:50 -#: expiry.1.xml.out:60 expiry.1.xml.out:69 -msgid "expiry" -msgstr "expiry" - -#. (itstool) path: refnamediv/refpurpose -#: expiry.1.xml.out:45 -msgid "check and enforce password expiration policy" -msgstr "verifica e reforça a política de expiração da palavra passe" - -#. (itstool) path: arg/replaceable -#: expiry.1.xml.out:52 gpasswd.1.xml.out:63 -msgid "option" -msgstr "opção" - -#. (itstool) path: refsect1/para -#: expiry.1.xml.out:59 -#, fuzzy -#| msgid "" -#| "The expiry command checks () the " -#| "current password expiration and forces () changes when " -#| "required. It is callable as a normal user command." +#: usermod.8.xml:196(para) msgid "" -"The <_:command-1/> command checks (<_:option-2/>) the current password " -"expiration and forces (<_:option-3/>) changes when required. It is callable " -"as a normal user command." +"The group name or number of the user's new initial login group. The group" +" must exist." msgstr "" -"O comando expiry verifica () a " -"expiração da palavra passe actual e força () alterações " -"quando requerido. Pode ser chamado como comando de utilizador normal." +"O nome do grupo ou número do grupo de login inicial dos novos utilizadores. " +"O grupo tem de existir." -#. (itstool) path: term/option -#: expiry.1.xml.out:73 -msgid "--check" -msgstr "" - -#. (itstool) path: listitem/para -#: expiry.1.xml.out:75 -msgid "Check the password expiration of the current user." -msgstr "Verifica a expiração da palavra passe do utilizador actual." - -#. (itstool) path: term/option -#: expiry.1.xml.out:79 groupadd.8.xml.out:88 groupdel.8.xml.out:72 -#: userdel.8.xml.out:76 -msgid "--force" -msgstr "" - -#. (itstool) path: listitem/para -#: expiry.1.xml.out:81 -msgid "Force a password change if the current user has an expired password." -msgstr "" -"Força a mudança da palavra passe se o utilizador actual tem uma palavra " -"passe expirada." - -#. (itstool) path: author/contrib -#: faillog.5.xml.out:17 faillog.8.xml.out:17 login.1.xml.out:50 -#: passwd.1.xml.out:26 passwd.5.xml.out:17 porttime.5.xml.out:17 -#: shadow.3.xml.out:17 shadow.5.xml.out:17 su.1.xml.out:34 -msgid "Creation, 1989" -msgstr "Criação, 1989" - -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#. (itstool) path: para/filename -#: faillog.5.xml.out:33 faillog.5.xml.out:40 faillog.5.xml.out:87 -#: faillog.8.xml.out:33 faillog.8.xml.out:40 faillog.8.xml.out:46 -#: faillog.8.xml.out:56 faillog.8.xml.out:59 faillog.8.xml.out:67 -#: faillog.8.xml.out:76 faillog.8.xml.out:203 faillog.8.xml.out:211 -#: faillog.8.xml.out:238 -msgid "faillog" -msgstr "faillog" - -#. (itstool) path: refmeta/refmiscinfo -#: faillog.5.xml.out:35 gshadow.5.xml.out:24 limits.5.xml.out:37 -#: login.access.5.xml.out:36 login.defs.5.xml.out:106 passwd.5.xml.out:35 -#: porttime.5.xml.out:35 shadow.5.xml.out:35 suauth.5.xml.out:35 -#, fuzzy -#| msgid "File Formats and Conversions" -msgid "File Formats and Configuration Files" -msgstr "Formatos de Ficheiros e Conversões" - -#. (itstool) path: refnamediv/refpurpose -#: faillog.5.xml.out:41 -msgid "login failure logging file" -msgstr "ficheiro de registo de falhas de login" - -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: faillog.5.xml.out:47 faillog.5.xml.out:75 faillog.8.xml.out:57 -#: faillog.8.xml.out:113 faillog.8.xml.out:138 faillog.8.xml.out:150 -#: faillog.8.xml.out:223 -msgid "/var/log/faillog" -msgstr "/var/log/faillog" - -#. (itstool) path: refsect1/para -#: faillog.5.xml.out:46 -#, fuzzy -#| msgid "" -#| "/var/log/faillog maintains a count of login failures " -#| "and the limits for each account." +#: usermod.8.xml:200(para) msgid "" -"<_:filename-1/> maintains a count of login failures and the limits for each " -"account." +"Any file from the user's home directory owned by the previous primary group" +" of the user will be owned by this new group." msgstr "" -"/var/log/faillog mantém uma contagem de falhas de login " -"e os limites de cada conta." +"Qualquer ficheiro do directório home do utilizador que pertença ao grupo " +"primário anterior do utilizador passará a pertencer a este novo grupo." -#. (itstool) path: refsect1/para -#: faillog.5.xml.out:50 +#: usermod.8.xml:204(para) msgid "" -"The file contains fixed length records, indexed by numerical UID. Each " -"record contains the count of login failures since the last successful login; " -"the maximum number of failures before the account is disabled; the line on " -"which the last login failure occurred; the date of the last login failure; " -"and the duration (in seconds) during which the account will be locked after " -"a failure." +"The group ownership of files outside of the user's home directory must be" +" fixed manually." msgstr "" -"O ficheiro contém registos de comprimento fixo, indexados pelo UID numérico. " -"Cada registo contém a contagem de falhas de login desde o último login com " -"sucesso; o número máximo da falhas antes da conta ser desativada; a linha na " -"qual a última falha de login ocorreu; a data da última falha de login; e a " -"duração (em segundos) durante a conta ficará trancada após uma falha." +"A pertença de grupo dos ficheiros que estejam fora do directório home do " +"utilizador terá que ser corrigida manualmente." -#. (itstool) path: refsect1/para -#: faillog.5.xml.out:60 -msgid "The structure of the file is:" -msgstr "A estrutura do ficheiro é:" - -#. (itstool) path: refsect1/programlisting -#: faillog.5.xml.out:61 -#, fuzzy -#| msgid "" -#| "\n" -#| "struct\tfaillog {\n" -#| "\tshort fail_cnt;\n" -#| "\tshort fail_max;\n" -#| "\tchar fail_line[12];\n" -#| "\ttime_t fail_time;\n" -#| "\tlong fail_locktime;\n" -#| "};" +#: usermod.8.xml:211(term) useradd.8.xml:263(term) msgid "" -"struct faillog { short fail_cnt; short fail_max; char fail_line[12]; time_t " -"fail_time; long fail_locktime; };" +",  GROUP1<" +"/replaceable>[,GROUP2,...[,GROUPN]]]" msgstr "" -"\n" -"struct\tfaillog {\n" -"\tshort fail_cnt;\n" -"\tshort fail_max;\n" -"\tchar fail_line[12];\n" -"\ttime_t fail_time;\n" -"\tlong fail_locktime;\n" -"};" +",  GROUP1<" +"/replaceable>[,GROUP2,...[,GROUPN]]]" -#. (itstool) path: listitem/para -#: faillog.5.xml.out:77 faillog.8.xml.out:225 -msgid "Failure logging file." -msgstr "Ficheiro de registo de falhas." - -#. (itstool) path: refnamediv/refpurpose -#: faillog.8.xml.out:41 -msgid "display faillog records or set login failure limits" -msgstr "mostra registos faillog ou define limites de falhas de login" - -#. (itstool) path: refsect1/para -#: faillog.8.xml.out:55 -#, fuzzy -#| msgid "" -#| "faillog displays the contents of the failure log " -#| "database (/var/log/faillog). It can also set the " -#| "failure counters and limits. When faillog is run " -#| "without arguments, it only displays the faillog records of the users who " -#| "had a login failure." +#: usermod.8.xml:215(para) msgid "" -"<_:command-1/> displays the contents of the failure log database (<_:" -"filename-2/>). It can also set the failure counters and limits. When <_:" -"command-3/> is run without arguments, it only displays the faillog records " -"of the users who had a login failure." +"A list of supplementary groups which the user is also a member of. Each group" +" is separated from the next by a comma, with no intervening whitespace. The" +" groups are subject to the same restrictions as the group given with the <" +"option>-g option." msgstr "" -"faillog mostra o conteúdo da base de dados de registo de " -"falhas (/var/log/faillog). Também pode definir os " -"contadores e limites de falhas. Quando o faillog é " -"corrido sem argumentos, apenas mostra os registos faillog dos utilizadores " -"que tiveram falhas no login." +"Uma lista de grupos suplementares a que o utilizador é também membro. Cada " +"grupo é separado do próximo por uma vírgula, sem nenhum espaço em branco " +"intermédio. Os grupos estão sujeitos às mesmas restrições que o grupo dado " +"com a opção ." -#. (itstool) path: term/option -#. (itstool) path: para/option -#: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:126 -#: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:153 -#: usermod.8.xml.out:78 usermod.8.xml.out:210 -#, fuzzy -#| msgid "-" -msgid "-a" -msgstr "-" - -#. (itstool) path: term/option -#: faillog.8.xml.out:72 passwd.1.xml.out:153 -msgid "--all" -msgstr "" - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:74 -#, fuzzy -#| msgid "" -#| "Display (or act on) faillog records for all users having an entry in the " -#| "faillog database." +#: usermod.8.xml:222(para) msgid "" -"Display (or act on) faillog records for all users having an entry in the <_:" -"filename-1/> database." +"If the user is currently a member of a group which is not listed, the user" +" will be removed from the group. This behaviour can be changed via the <" +"option>-a option, which appends the user to the current" +" supplementary group list." msgstr "" -"Mostra (ou actua em) registos faillog para todos os utilizadores que tenham " -"uma entrada na base de dados faillog." +"Se o utilizador é actualmente membro de um grupo que não está listado, o " +"utilizador será removido desse grupo. Este comportamento pode ser alterado " +"via opção , a qual acrescenta o utilizador à actual " +"lista de grupos suplementares." -#. (itstool) path: listitem/para -#: faillog.8.xml.out:78 -#, fuzzy -#| msgid "" -#| "The range of users can be restricted with the option." -msgid "The range of users can be restricted with the <_:option-1/> option." -msgstr "" -"A gama de utilizadores pode ser restringida com a opção ." - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:82 +#: usermod.8.xml:231(term) msgid "" -"In display mode, this is still restricted to existing users but forces the " -"display of the faillog entries even if they are empty." +",  NEW_LOGIN<" +"/replaceable>" msgstr "" -"Em modo de mostragem, isto está ainda restrito aos utilizadores existentes " -"mas força a mostragem de entradas faillog mesmo que estas estejam vazias." +",  NEW_LOGIN<" +"/replaceable>" -#. (itstool) path: para/option -#. (itstool) path: term/option -#: faillog.8.xml.out:89 faillog.8.xml.out:169 lastlog.8.xml.out:128 -#, fuzzy -#| msgid "-" -msgid "-t" -msgstr "-" - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:87 -#, fuzzy -#| msgid "" -#| "With the , , , " -#| " options, the users' records are changed, even if the " -#| "user does not exist on the system. This is useful to reset records of " -#| "users that have been deleted or to set a policy in advance for a range of " -#| "users." +#: usermod.8.xml:235(para) msgid "" -"With the <_:option-1/>, <_:option-2/>, <_:option-3/>, <_:option-4/> options, " -"the users' records are changed, even if the user does not exist on the " -"system. This is useful to reset records of users that have been deleted or " -"to set a policy in advance for a range of users." +"The name of the user will be changed from LOGIN to" +" NEW_LOGIN. Nothing else is changed. In" +" particular, the user's home directory or mail spool should probably be" +" renamed manually to reflect the new login name." msgstr "" -"Com as opções , , , " -", os registos dos utilizadores são alterados, mesmo se o " -"utilizador já não existir no sistema. Isto é útil para reiniciar registos de " -"utilizadores que foram apagados ou para definir antecipadamente uma política " -"para uma gama de utilizadores." +"O nome do utilizador será alterado de LOGIN para " +"NEW_LOGIN. Nada mais é alterado. Em particular, " +"o directório home do utilizador ou a pasta de mail devem provavelmente " +"ser renomeados manualmente para refletir o novo nome de login." -#. (itstool) path: term/option -#: faillog.8.xml.out:105 -msgid "--lock-secs" -msgstr "" +#: usermod.8.xml:245(term) +msgid ", " +msgstr ", " -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: faillog.8.xml.out:105 faillog.8.xml.out:109 -#, fuzzy -#| msgid "USE_TCB" -msgid "SEC" -msgstr "USE_TCB" - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:108 -#, fuzzy -#| msgid "" -#| "Lock account for SEC seconds after failed " -#| "login." -msgid "Lock account for <_:replaceable-1/> seconds after failed login." -msgstr "" -"Tranca a conta por SEC segundos após login " -"falhado." - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:112 faillog.8.xml.out:137 faillog.8.xml.out:149 -#, fuzzy -#| msgid "" -#| "Write access to /var/log/faillog is required for " -#| "this option." -msgid "Write access to <_:filename-1/> is required for this option." -msgstr "" -"É requerido acesso de escrita a /var/log/faillog para " -"esta opção." - -#. (itstool) path: term/option -#: faillog.8.xml.out:120 -msgid "--maximum" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: faillog.8.xml.out:120 faillog.8.xml.out:125 faillog.8.xml.out:129 -msgid "MAX" -msgstr "" - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:123 -#, fuzzy -#| msgid "" -#| "Set the maximum number of login failures after the account is disabled to " -#| "MAX." +#: usermod.8.xml:249(para) msgid "" -"Set the maximum number of login failures after the account is disabled to <_:" -"replaceable-1/>." +"Lock a user's password. This puts a '!' in front of the encrypted password," +" effectively disabling the password. You can't use this option with -p or ." msgstr "" -"Define o número máximo de falhas de login para MAX o que após isso desactiva a conta " +"Tranca a palavra passe do utilizador. Isto põe um '!' na frente da palavra " +"passe encriptada, efectivamente desactivando a palavra passe. Você não pode " +"usar esta opção com ou ." -#. (itstool) path: listitem/para -#: faillog.8.xml.out:127 -#, fuzzy -#| msgid "" -#| "Selecting a MAX value of 0 has the effect of " -#| "not placing a limit on the number of failed logins." +#: usermod.8.xml:255(para) msgid "" -"Selecting a <_:replaceable-1/> value of 0 has the effect of not placing a " -"limit on the number of failed logins." +"Note: if you wish to lock the account (not only access with a password), you" +" should also set the EXPIRE_DATE to 1." msgstr "" -"Selecionar um valor MAX de o tem o efeito de não " -"impor um limite ao número de logins falhados." +"Nota: Se deseja trancar uma conta (não apenas acesso com uma palavra passe), " +"você deve também definir EXPIRE_DATE para " +"1." -#. (itstool) path: para/emphasis -#: faillog.8.xml.out:134 groupmems.8.xml.out:160 porttime.5.xml.out:85 -msgid "root" +#: usermod.8.xml:264(term) +msgid ", " +msgstr ", " + +#: usermod.8.xml:268(para) +msgid "Move the content of the user's home directory to the new location." msgstr "" +"Move o conteúdo do directório home do utilizador para a nova localização." -#. (itstool) path: listitem/para -#: faillog.8.xml.out:132 -#, fuzzy -#| msgid "" -#| "The maximum failure count should always be 0 for root to prevent a denial of services attack against the system." +#: usermod.8.xml:272(para) msgid "" -"The maximum failure count should always be 0 for <_:emphasis-1/> to prevent " -"a denial of services attack against the system." +"This option is only valid in combination with the (or <" +"option>--home) option." msgstr "" -"O contador máximo de falhas deve ser sempre 0 para o root para prevenir um ataque de negação de serviços contra o sistema." +"Esta opção é apenas válida em combinação com a opção " +"(ou )." -#. (itstool) path: term/option -#: faillog.8.xml.out:144 -msgid "--reset" -msgstr "" - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:146 -msgid "Reset the counters of login failures." -msgstr "Reinicia os contadores das falhas de login." - -#. (itstool) path: term/option -#: faillog.8.xml.out:169 lastlog.8.xml.out:128 -msgid "--time" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: faillog.8.xml.out:169 faillog.8.xml.out:174 lastlog.8.xml.out:75 -#: lastlog.8.xml.out:79 lastlog.8.xml.out:128 lastlog.8.xml.out:133 -msgid "DAYS" -msgstr "" - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:172 -#, fuzzy -#| msgid "" -#| "Display faillog records more recent than DAYS." -msgid "Display faillog records more recent than <_:replaceable-1/>." -msgstr "" -"Mostra registos faillog mais recentes que DAYS." - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: faillog.8.xml.out:180 lastlog.8.xml.out:90 lastlog.8.xml.out:122 -#: lastlog.8.xml.out:139 vipw.8.xml.out:133 -#, fuzzy -#| msgid "user" -msgid "--user" -msgstr "user" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: faillog.8.xml.out:180 faillog.8.xml.out:190 faillog.8.xml.out:191 -#: lastlog.8.xml.out:139 lastlog.8.xml.out:147 lastlog.8.xml.out:148 -msgid "RANGE" -msgstr "" - -#. (itstool) path: varlistentry/term -#: faillog.8.xml.out:179 lastlog.8.xml.out:138 -#, fuzzy -#| msgid "" -#| ",  UID" -msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>|<_:replaceable-4/>" -msgstr "" -",  UID" - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:183 -#, fuzzy -#| msgid "" -#| "Display faillog record or maintains failure counters and limits (if used " -#| "with , or " -#| "options) only for the specified user(s)." +#: usermod.8.xml:276(para) msgid "" -"Display faillog record or maintains failure counters and limits (if used " -"with <_:option-1/>, <_:option-2/> or <_:option-3/> options) only for the " -"specified user(s)." +"usermod will try to adapt the ownership of the files and" +" to copy the modes, ACL and extended attributes, but manual changes might be" +" needed afterwards." msgstr "" -"Mostra o registo faillog ou mantém contadores e limites de falha (se usado " -"com as opções , ou , " +msgstr ", " -#. (itstool) path: para/replaceable -#: faillog.8.xml.out:194 lastlog.8.xml.out:150 -#, fuzzy -#| msgid "LASTLOG_UID_MAX" -msgid "-UID_MAX" -msgstr "LASTLOG_UID_MAX" - -#. (itstool) path: para/replaceable -#: faillog.8.xml.out:195 lastlog.8.xml.out:151 -msgid "UID_MIN-" -msgstr "" - -#. (itstool) path: listitem/para -#: faillog.8.xml.out:188 lastlog.8.xml.out:145 -#, fuzzy -#| msgid "" -#| "The users can be specified by a login name, a numerical user ID, or a " -#| "RANGE of users. This RANGE of users can be specified with a min and max values " -#| "(UID_MIN-UID_MAX), a max value (-" -#| "UID_MAX), or a min value (UID_MIN-)." +#: usermod.8.xml:288(para) msgid "" -"The users can be specified by a login name, a numerical user ID, or a <_:" -"replaceable-1/> of users. This <_:replaceable-2/> of users can be specified " -"with a min and max values (<_:replaceable-3/>), a max value (<_:" -"replaceable-4/>), or a min value (<_:replaceable-5/>)." +"When used with the option, this option allows to change" +" the user ID to a non-unique value." msgstr "" -"Os utilizadores podem ser especificados por um nome de login, um ID numérico " -"de utilizador, ou um RANGE de utilizadores. Este " -"RANGE de utilizadores pode ser especificado com " -"valores mínimo e máximo (UID_MIN-UID_MAX), um " -"valor máximo (-UID_MAX), ou um valor mínimo " -"(UID_MIN-)." +"Quando usada com a opção , esta opção permite alterar " +"o ID de utilizador para um valor não-único." -#. (itstool) path: refsect1/para -#: faillog.8.xml.out:201 -#, fuzzy -#| msgid "" -#| "When none of the , , or ,  PASSWORD<" +"/replaceable>" msgstr "" -"Quando nenhuma das opções , , ou " -" é usada, faillog mostra o registo " -"record dos utilizadores especificados." +",  PASSWORD<" +"/replaceable>" -#. (itstool) path: refsect1/para -#: faillog.8.xml.out:210 -#, fuzzy -#| msgid "" -#| "faillog only prints out users with no successful login " -#| "since the last failure. To print out a user who has had a successful " -#| "login since their last failure, you must explicitly request the user with " -#| "the flag, or print out all users with the , ou mostrar todos os " -"utilizadores com a bandeira ." +"A palavra passe encriptada, como retornada por <" +"refentrytitle>crypt3." -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: para/command -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: varlistentry/term -#: faillog.8.xml.out:235 limits.5.xml.out:125 limits.5.xml.out:185 -#: login.1.xml.out:66 login.1.xml.out:73 login.1.xml.out:79 login.1.xml.out:87 -#: login.1.xml.out:94 login.1.xml.out:103 login.1.xml.out:106 -#: login.1.xml.out:108 login.1.xml.out:112 login.1.xml.out:119 -#: login.1.xml.out:171 login.1.xml.out:177 login.1.xml.out:230 -#: login.1.xml.out:238 login.1.xml.out:247 login.1.xml.out:253 -#: login.1.xml.out:259 login.access.5.xml.out:112 login.defs.5.xml.out:356 -#: login.defs.5.xml.out:537 login.defs.5.xml.out:549 newgrp.1.xml.out:133 -#: nologin.8.xml.out:60 passwd.5.xml.out:125 passwd.5.xml.out:132 -#: passwd.5.xml.out:179 porttime.5.xml.out:121 shadow.5.xml.out:265 -#: sg.1.xml.out:122 su.1.xml.out:415 -msgid "login" -msgstr "login" - -#. (itstool) path: author/firstname -#: gpasswd.1.xml.out:22 -msgid "Rafal" -msgstr "Rafal" - -#. (itstool) path: author/surname -#: gpasswd.1.xml.out:23 -msgid "Maszkowski" -msgstr "Maszkowski" - -#. (itstool) path: author/contrib -#: gpasswd.1.xml.out:24 login.access.5.xml.out:18 pwconv.8.xml.out:23 -#: suauth.5.xml.out:17 -msgid "Creation, 1996" -msgstr "Criação, 1996" - -#. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:49 -#, fuzzy -#| msgid "administer " -msgid "administer <_:filename-1/>" -msgstr "administra " - -#. (itstool) path: refpurpose/phrase -#: gpasswd.1.xml.out:52 -#, fuzzy -#| msgid "administer and " -msgid "administer <_:filename-1/> and <_:filename-2/>" -msgstr "administra e " - -#. (itstool) path: arg/replaceable -#. (itstool) path: para/replaceable -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:66 gpasswd.1.xml.out:91 gpasswd.1.xml.out:131 -#: gpasswd.1.xml.out:144 gpasswd.1.xml.out:179 gpasswd.1.xml.out:183 -#: gpasswd.1.xml.out:195 gpasswd.1.xml.out:199 gpasswd.1.xml.out:294 -#: grpck.8.xml.out:49 grpck.8.xml.out:188 grpck.8.xml.out:280 -#: gshadow.5.xml.out:156 limits.5.xml.out:138 newgrp.1.xml.out:48 -#: newgrp.1.xml.out:145 pwck.8.xml.out:336 pwconv.8.xml.out:114 -#: pwconv.8.xml.out:120 sg.1.xml.out:134 vipw.8.xml.out:208 -msgid "group" -msgstr "group" - -#. (itstool) path: para/phrase -#: gpasswd.1.xml.out:75 -msgid ", and <_:filename-1/>" -msgstr "" - -#. (itstool) path: para/phrase -#: gpasswd.1.xml.out:78 -#, fuzzy -#| msgid "administrators" -msgid "administrators," -msgstr "administradores" - -#. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:73 +#: usermod.8.xml:304(para) useradd.8.xml:418(para) groupmod.8.xml:166(para) groupadd.8.xml:176(para) msgid "" -"The <_:command-1/> command is used to administer <_:filename-2/><_:phrase-3/" -">. Every group can have <_:phrase-4/> members and a password." -msgstr "" - -#. (itstool) path: para/option -#. (itstool) path: term/option -#: gpasswd.1.xml.out:82 gpasswd.1.xml.out:114 gpasswd.1.xml.out:207 -#, fuzzy -#| msgid "-" -msgid "-A" -msgstr "-" - -#. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:81 -#, fuzzy -#| msgid "" -#| "System administrators can use the option to define " -#| "group administrator(s) and the option to define " -#| "members. They have all rights of group administrators and members." -msgid "" -"System administrators can use the <_:option-1/> option to define group " -"administrator(s) and the <_:option-2/> option to define members. They have " -"all rights of group administrators and members." -msgstr "" -"Administradores do sistema pode usar a opção para " -"definir administradores do grupo e a opção para definir " -"membros. Eles têm todos os direitos de administradores de grupo e membros." - -#. (itstool) path: para/phrase -#: gpasswd.1.xml.out:88 -#, fuzzy -#| msgid "administrators" -msgid "a group administrator" -msgstr "administradores" - -#. (itstool) path: para/phrase -#: gpasswd.1.xml.out:89 -#, fuzzy -#| msgid "administrators" -msgid "a system administrator" -msgstr "administradores" - -#. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:86 -msgid "" -"<_:command-1/> called by <_:phrase-2/> <_:phrase-3/> with a group name only " -"prompts for the new password of the <_:replaceable-4/>." -msgstr "" - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: para/command -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#: gpasswd.1.xml.out:95 gpasswd.1.xml.out:182 gpasswd.1.xml.out:198 -#: gpasswd.1.xml.out:279 groups.1.xml.out:71 groups.1.xml.out:92 -#: gshadow.5.xml.out:76 gshadow.5.xml.out:165 newgrp.1.xml.out:34 -#: newgrp.1.xml.out:41 newgrp.1.xml.out:47 newgrp.1.xml.out:55 -#: newgrp.1.xml.out:63 newgrp.1.xml.out:66 sg.1.xml.out:60 sg.1.xml.out:64 -#: sg.1.xml.out:65 sg.1.xml.out:66 sg.1.xml.out:125 -msgid "newgrp" -msgstr "newgrp" - -#. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:93 -#, fuzzy -#| msgid "" -#| "If a password is set the members can still use " -#| "newgrp1 without a password, and non-members must supply " -#| "the password." -msgid "" -"If a password is set the members can still use <_:citerefentry-1/> without a " -"password, and non-members must supply the password." -msgstr "" -"Se uma palavra passe for definida os membros podem ainda usar " -"newgrp1 sem uma palavra passe, e os não-membros têm de fornecer a " -"palavra passe." - -#. (itstool) path: refsect2/title -#: gpasswd.1.xml.out:101 -msgid "Notes about group passwords" -msgstr "Notas acerca de palavras passe de grupo" - -#. (itstool) path: refsect2/para -#: gpasswd.1.xml.out:102 -msgid "" -"Group passwords are an inherent security problem since more than one person " -"is permitted to know the password. However, groups are a useful tool for " -"permitting co-operation between different users." -msgstr "" -"As palavras passe de grupo são um problema de segurança inerente pois é " -"permitido que mais do que uma pessoa saiba a palavra passe. No entanto, os " -"grupos são uma ferramenta útil para permitir co-operação entre diferentes " -"utilizadores." - -#. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:113 -#, fuzzy -#| msgid "" -#| "Except for the and options, the " -#| "options cannot be combined." -msgid "" -"Except for the <_:option-1/> and <_:option-2/> options, the options cannot " -"be combined." -msgstr "" -"Excepto para as opções e , as opções " -"não podem ser combinadas." - -#. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:117 -msgid "The options cannot be combined." -msgstr "As opções não podem ser combinadas." - -#. (itstool) path: term/option -#: gpasswd.1.xml.out:126 groupmems.8.xml.out:83 -msgid "--add" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#. (itstool) path: arg/replaceable -#: gpasswd.1.xml.out:126 gpasswd.1.xml.out:130 gpasswd.1.xml.out:139 -#: gpasswd.1.xml.out:143 gpasswd.1.xml.out:207 gpasswd.1.xml.out:219 -#: groups.1.xml.out:48 groups.1.xml.out:59 -msgid "user" -msgstr "user" - -#. (itstool) path: listitem/para -#: gpasswd.1.xml.out:129 -#, fuzzy -#| msgid "" -#| "Add the user to the named group." -msgid "Add the <_:replaceable-1/> to the named <_:replaceable-2/>." -msgstr "" -"Adiciona o user ao group nomeado." - -#. (itstool) path: term/option -#: gpasswd.1.xml.out:139 groupmems.8.xml.out:94 passwd.1.xml.out:164 -msgid "--delete" -msgstr "" - -#. (itstool) path: listitem/para -#: gpasswd.1.xml.out:142 -#, fuzzy -#| msgid "" -#| "Remove the user from the named " -#| "group." -msgid "Remove the <_:replaceable-1/> from the named <_:replaceable-2/>." -msgstr "" -"Remove o user do group " -"nomeado." - -#. (itstool) path: term/option -#: gpasswd.1.xml.out:160 -#, fuzzy -#| msgid "-" -msgid "-Q" -msgstr "-" - -#. (itstool) path: term/option -#: gpasswd.1.xml.out:175 -msgid "--remove-password" -msgstr "" - -#. (itstool) path: listitem/para -#: gpasswd.1.xml.out:178 -#, fuzzy -#| msgid "" -#| "Remove the password from the named group. The " -#| "group password will be empty. Only group members will be allowed to use " -#| "newgrp to join the named group." -msgid "" -"Remove the password from the named <_:replaceable-1/>. The group password " -"will be empty. Only group members will be allowed to use <_:command-2/> to " -"join the named <_:replaceable-3/>." -msgstr "" -"Remove a palavra passe do group nomeado. A " -"palavra passe de grupo ficará vazia. Apenas os membros do grupo terão " -"permissão de usar newgrp para se juntarem ao " -"group nomeado." - -#. (itstool) path: term/option -#: gpasswd.1.xml.out:191 -msgid "--restrict" -msgstr "" - -#. (itstool) path: listitem/para -#: gpasswd.1.xml.out:194 -#, fuzzy -#| msgid "" -#| "Restrict the access to the named group. The " -#| "group password is set to \"!\". Only group members with a password will " -#| "be allowed to use newgrp to join the named " -#| "group." -msgid "" -"Restrict the access to the named <_:replaceable-1/>. The group password is " -"set to \"!\". Only group members with a password will be allowed to use <_:" -"command-2/> to join the named <_:replaceable-3/>." -msgstr "" -"Restringe o acesso ao group nomeado A palavra " -"passe de grupo é definida para \"!\". Apenas os membros do grupo com uma " -"palavra passe terão permissão de usar newgrp para se " -"juntarem ao group nomeado." - -#. (itstool) path: term/option -#: gpasswd.1.xml.out:207 -#, fuzzy -#| msgid "administrators" -msgid "--administrators" -msgstr "administradores" - -#. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:206 gpasswd.1.xml.out:218 -msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>,..." -msgstr "" - -#. (itstool) path: listitem/para -#: gpasswd.1.xml.out:210 -msgid "Set the list of administrative users." -msgstr "Define a lista de utilizadores administrativos." - -#. (itstool) path: term/option -#: gpasswd.1.xml.out:219 -#, fuzzy -#| msgid "members" -msgid "--members" -msgstr "membros" - -#. (itstool) path: listitem/para -#: gpasswd.1.xml.out:222 -msgid "Set the list of group members." -msgstr "Define a lista de membros de grupos." - -#. (itstool) path: para/phrase -#: gpasswd.1.xml.out:234 -msgid "and <_:filename-1/> files." -msgstr "" - -#. (itstool) path: para/phrase -#: gpasswd.1.xml.out:236 -#, fuzzy -#| msgid "file" -msgid "file." -msgstr "file" - -#. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:232 -#, fuzzy -#| msgid "" -#| "This tool only operates on the /etc/group and /etc/gshadow files.file. Thus you cannot " -#| "change any NIS or LDAP group. This must be performed on the corresponding " -#| "server." -msgid "" -"This tool only operates on the <_:filename-1/> <_:phrase-2/> <_:phrase-3/> " -"Thus you cannot change any NIS or LDAP group. This must be performed on the " -"corresponding server." -msgstr "" -"Esta ferramenta apenas opera nos ficheiros /etc/group e /etc/gshadow. " -"ficheiro. Assim você não " -"pode alterar nenhum grupo NIS ou LDAP. Isto tem de ser feito no servidor " -"correspondente." - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:285 groupadd.8.xml.out:357 groupdel.8.xml.out:34 -#: groupdel.8.xml.out:41 groupdel.8.xml.out:47 groupdel.8.xml.out:57 -#: groupdel.8.xml.out:66 groupdel.8.xml.out:165 groupmems.8.xml.out:221 -#: groupmod.8.xml.out:341 login.defs.5.xml.out:312 useradd.8.xml.out:913 -#: userdel.8.xml.out:328 usermod.8.xml.out:640 -msgid "groupdel" -msgstr "groupdel" - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:288 groupadd.8.xml.out:360 groupdel.8.xml.out:220 -#: groupmod.8.xml.out:34 groupmod.8.xml.out:41 groupmod.8.xml.out:47 -#: groupmod.8.xml.out:58 groupmod.8.xml.out:67 groupmod.8.xml.out:256 -#: grpck.8.xml.out:107 grpck.8.xml.out:283 login.defs.5.xml.out:324 -#: useradd.8.xml.out:916 userdel.8.xml.out:331 usermod.8.xml.out:643 -msgid "groupmod" -msgstr "groupmod" - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#. (itstool) path: varlistentry/term -#: gpasswd.1.xml.out:291 grpck.8.xml.out:33 grpck.8.xml.out:40 -#: grpck.8.xml.out:46 grpck.8.xml.out:60 grpck.8.xml.out:116 -#: grpck.8.xml.out:128 grpck.8.xml.out:141 grpck.8.xml.out:184 -#: grpck.8.xml.out:234 gshadow.5.xml.out:159 login.defs.5.xml.out:331 -#: pwck.8.xml.out:339 pwconv.8.xml.out:198 pwconv.8.xml.out:242 -msgid "grpck" -msgstr "grpck" - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: para/filename -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: para/emphasis -#: gpasswd.1.xml.out:297 grpck.8.xml.out:95 grpck.8.xml.out:287 -#: gshadow.5.xml.out:22 gshadow.5.xml.out:29 newgrp.1.xml.out:148 -#: pwconv.8.xml.out:114 pwconv.8.xml.out:115 pwconv.8.xml.out:121 -#: pwconv.8.xml.out:122 sg.1.xml.out:137 vipw.8.xml.out:211 -msgid "gshadow" -msgstr "gshadow" - -#. (itstool) path: para/phrase -#: gpasswd.1.xml.out:295 newgrp.1.xml.out:146 sg.1.xml.out:135 -msgid ", <_:citerefentry-1/>" -msgstr "" - -#. (itstool) path: refsect1/para -#: gpasswd.1.xml.out:277 newgrp.1.xml.out:128 sg.1.xml.out:117 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." -msgstr "" - -#. (itstool) path: refnamediv/refpurpose -#: groupadd.8.xml.out:44 -msgid "create a new group" -msgstr "cria um novo grupo" - -#. (itstool) path: arg/replaceable -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:54 groupadd.8.xml.out:152 -#, fuzzy -#| msgid "GROUP" -msgid "NEWGROUP" -msgstr "GRUPO" - -#. (itstool) path: refsect1/para -#: groupadd.8.xml.out:61 -#, fuzzy -#| msgid "" -#| "The groupadd command creates a new group account using " -#| "the values specified on the command line plus the default values from the " -#| "system. The new group will be entered into the system files as needed." -msgid "" -"The <_:command-1/> command creates a new group account using the values " -"specified on the command line plus the default values from the system. The " -"new group will be entered into the system files as needed." -msgstr "" -"O comando groupadd cria uma conta de novo grupo usando os " -"valores especificados na linha de comandos mais os valores predefinidos do " -"sistema. O novo grupo será introduzido nos ficheiros do sistema como " -"necessário." - -#. (itstool) path: refsect1/para -#: groupadd.8.xml.out:66 -msgid "" -"Groupnames may contain only lower and upper case letters, digits, " -"underscores, or dashes. They can end with a dollar sign. Dashes are not " -"allowed at the beginning of the groupname. Fully numeric groupnames and " -"groupnames . or .. are also disallowed." -msgstr "" - -#. (itstool) path: refsect1/para -#: groupadd.8.xml.out:74 -#, fuzzy -#| msgid "Usernames may only be up to 32 characters long." -msgid "Groupnames may only be up to 32 characters long." -msgstr "Os nomes de utilizador só podem ir até 32 caracteres de comprimento." - -#. (itstool) path: para/option -#. (itstool) path: term/option -#: groupadd.8.xml.out:94 groupadd.8.xml.out:95 groupadd.8.xml.out:102 -#: groupadd.8.xml.out:236 groupmems.8.xml.out:110 groupmod.8.xml.out:82 -#: groupmod.8.xml.out:136 groupmod.8.xml.out:201 useradd.8.xml.out:96 -#: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:393 -#: useradd.8.xml.out:398 useradd.8.xml.out:559 useradd.8.xml.out:659 -#: usermod.8.xml.out:174 vipw.8.xml.out:90 -#, fuzzy -#| msgid "-" -msgid "-g" -msgstr "-" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:91 -#, fuzzy -#| msgid "" -#| "This option causes the command to simply exit with success status if the " -#| "specified group already exists. When used with , and " -#| "the specified GID already exists, another (unique) GID is chosen (i.e. " -#| " is turned off)." -msgid "" -"This option causes the command to simply exit with success status if the " -"specified group already exists. When used with <_:option-1/>, and the " -"specified GID already exists, another (unique) GID is chosen (i.e. <_:" -"option-2/> is turned off)." -msgstr "" -"Esta opção faz com que o comando simplesmente termine com estado de sucesso " -"se o grupo especificado já existir. Quando usado com , e " -"o GID especificado já existir, é escolhido outro GID (único) (isto é, " -" é desligado)." - -#. (itstool) path: term/option -#: groupadd.8.xml.out:102 groupmod.8.xml.out:82 useradd.8.xml.out:230 -#: useradd.8.xml.out:659 usermod.8.xml.out:174 -msgid "--gid" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#. (itstool) path: para/option -#: groupadd.8.xml.out:102 groupadd.8.xml.out:105 groupadd.8.xml.out:151 -#: groupmod.8.xml.out:73 groupmod.8.xml.out:82 groupmod.8.xml.out:87 -#: groupmod.8.xml.out:91 groupmod.8.xml.out:137 newusers.8.xml.out:302 -#: useradd.8.xml.out:471 -msgid "GID" -msgstr "" - -#. (itstool) path: para/option -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:108 groupadd.8.xml.out:134 groupadd.8.xml.out:138 -#: groupadd.8.xml.out:195 groupmod.8.xml.out:107 -msgid "GID_MIN" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:105 -#, fuzzy -#| msgid "" -#| "The numerical value of the group's ID. This value must be unique, unless " -#| "the option is used. The value must be non-negative. " -#| "The default is to use the smallest ID value greater than or equal to " -#| " and greater than every other group." -msgid "" -"The numerical value of the group's ID. <_:replaceable-1/> must be unique, " -"unless the <_:option-2/> option is used. The value must be non-negative. The " -"default is to use the smallest ID value greater than or equal to <_:option-3/" -"> and greater than every other group." -msgstr "" -"O valor numérico do ID de grupo. Este valor tem de ser único, a menos que a " -"opção seja usada. O valor tem de ser não-negativo. A " -"predefinição é usar menor valor de ID maior ou igual a option and the " -#| "description." -msgid "See also the <_:option-1/> option and the <_:option-2/> description." -msgstr "" -"Veja também a opção e a descrição de ,  UID" -msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>=<_:replaceable-4/>" -msgstr "" -",  UID" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:128 -#, fuzzy -#| msgid "" -#| "Overrides /etc/login.defs defaults (GID_MIN, GID_MAX " -#| "and others). Multiple options can be specified." -msgid "" -"Overrides <_:filename-1/> defaults (GID_MIN, GID_MAX and others). Multiple " -"<_:option-2/> options can be specified." -msgstr "" -"Sobrepõe as predefinições de /etc/login.defs (GID_MIN, " -"GID_MAX e outros). Podem ser especificadas opções " -"múltiplas vezes." - -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:134 useradd.8.xml.out:322 -#, fuzzy -#| msgid "10" -msgid "100" -msgstr "10" - -#. (itstool) path: para/replaceable -#: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:323 -msgid "499" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:133 -#, fuzzy -#| msgid "" -#| "Remove the user from the named " -#| "group." -msgid "" -"Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> <_:option-4/> " -"<_:replaceable-5/>=<_:replaceable-6/>" -msgstr "" -"Remove o user do group " -"nomeado." - -#. (itstool) path: para/replaceable -#. (itstool) path: term/replaceable -#: groupadd.8.xml.out:138 groupadd.8.xml.out:333 groupdel.8.xml.out:192 -#: groupmod.8.xml.out:295 useradd.8.xml.out:873 userdel.8.xml.out:265 -msgid "10" -msgstr "10" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:137 -#, fuzzy -#| msgid "" -#| "Note:  GID_MIN=10,GID_MAX=499 doesn't work yet." -msgid "" -"Note: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/>,<_:replaceable-4/" -">=<_:replaceable-5/> doesn't work yet." -msgstr "" -"Nota:  GID_MIN=10,GID_MAX=499 ainda não funciona." - -#. (itstool) path: term/option -#: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:407 -#: usermod.8.xml.out:271 -msgid "--non-unique" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:148 -msgid "" -"permits the creation of a group with an already used numerical ID. As a " -"result, for this <_:replaceable-1/>, the mapping towards group <_:" -"replaceable-2/> may not be unique." -msgstr "" - -#. (itstool) path: term/option -#. (itstool) path: group/arg -#. (itstool) path: cmdsynopsis/arg -#. (itstool) path: para/option -#: groupadd.8.xml.out:158 groupmems.8.xml.out:55 groupmems.8.xml.out:130 -#: groupmod.8.xml.out:143 login.1.xml.out:80 login.1.xml.out:88 -#: login.1.xml.out:95 login.1.xml.out:212 su.1.xml.out:207 -#: useradd.8.xml.out:427 usermod.8.xml.out:237 usermod.8.xml.out:290 -#: usermod.8.xml.out:411 vipw.8.xml.out:102 -msgid "-p" -msgstr "-p" - -#. (itstool) path: term/option -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 -#: usermod.8.xml.out:290 -#, fuzzy -#| msgid "passwd" -msgid "--password" -msgstr "passwd" - -#. (itstool) path: term/replaceable -#: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 -#: usermod.8.xml.out:290 -msgid "PASSWORD" -msgstr "" - -#. (itstool) path: citerefentry/refentrytitle -#: groupadd.8.xml.out:163 groupmod.8.xml.out:148 gshadow.5.xml.out:62 -#: gshadow.5.xml.out:68 passwd.5.xml.out:103 passwd.5.xml.out:109 -#: passwd.5.xml.out:170 shadow.5.xml.out:88 shadow.5.xml.out:94 -#: useradd.8.xml.out:432 useradd.8.xml.out:907 usermod.8.xml.out:295 -#: usermod.8.xml.out:631 -msgid "crypt" -msgstr "" - -#. (itstool) path: citerefentry/manvolnum -#. (itstool) path: term/replaceable -#. (itstool) path: refmeta/manvolnum -#: groupadd.8.xml.out:164 groupadd.8.xml.out:315 groupmod.8.xml.out:148 -#: groupmod.8.xml.out:271 groups.1.xml.out:68 groups.1.xml.out:104 -#: grpck.8.xml.out:255 gshadow.5.xml.out:63 gshadow.5.xml.out:69 -#: passwd.1.xml.out:465 passwd.5.xml.out:104 passwd.5.xml.out:110 -#: passwd.5.xml.out:170 passwd.5.xml.out:176 pwck.8.xml.out:305 -#: shadow.3.xml.out:34 shadow.3.xml.out:217 shadow.5.xml.out:89 -#: shadow.5.xml.out:95 useradd.8.xml.out:433 useradd.8.xml.out:849 -#: useradd.8.xml.out:907 usermod.8.xml.out:296 usermod.8.xml.out:631 -msgid "3" -msgstr "3" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:161 -msgid "" -"defines an initial password for the group account. PASSWORD is expected to " -"be encrypted, as returned by <_:citerefentry-1/>." -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:166 -msgid "" -"Without this option, the group account will be locked and with no password " -"defined, i.e. a single exclamation mark in the respective field of ths " -"system account file <_:filename-1/> or <_:filename-2/>." -msgstr "" - -#. (itstool) path: para/emphasis -#: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:446 -#: userdel.8.xml.out:93 usermod.8.xml.out:299 -msgid "Note:" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:172 groupmod.8.xml.out:151 -#, fuzzy -#| msgid "" -#| "Note: This option is not recommended " -#| "because the password (or encrypted password) will be visible by users " -#| "listing the processes." -msgid "" -"<_:emphasis-1/> This option is not recommended because the password (or " -"encrypted password) will be visible by users listing the processes." +"Note: This option is not recommended" +" because the password (or encrypted password) will be visible by users" +" listing the processes." msgstr "" "Nota: Esta opção não é recomendada porque " "a palavra passe (ou palavra passe encriptada) irá ser visível pelos " "utilizadores que listam os processos." -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:450 -#: usermod.8.xml.out:309 +#: usermod.8.xml:309(para) +msgid "" +"The password will be written in the local /etc/passwd or" +" /etc/shadow file. This might differ from the password" +" database configured in your PAM configuration." +msgstr "" +"A palavra passe será escrita no ficheiro local /etc/passwd ou /etc/shadow. Isto pode diferir da base " +"de dados de palavras passe configurada na sua configuração de PAM." + +#: usermod.8.xml:315(para) useradd.8.xml:423(para) groupmod.8.xml:171(para) groupadd.8.xml:181(para) msgid "" "You should make sure the password respects the system's password policy." msgstr "" "Você deve certificar que a palavra passe respeita a política de palavras " "passe do sistema." -#. (itstool) path: term/option -#: groupadd.8.xml.out:185 newusers.8.xml.out:289 useradd.8.xml.out:458 -msgid "--system" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:188 -msgid "Create a system group." -msgstr "Cria um grupo de sistema." - -#. (itstool) path: para/option -#: groupadd.8.xml.out:193 groupmod.8.xml.out:108 -msgid "SYS_GID_MIN" -msgstr "" - -#. (itstool) path: para/option -#: groupadd.8.xml.out:193 groupmod.8.xml.out:108 -#, fuzzy -#| msgid "LASTLOG_UID_MAX" -msgid "SYS_GID_MAX" -msgstr "LASTLOG_UID_MAX" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:191 -#, fuzzy -#| msgid "" -#| "The numeric identifiers of new system groups are chosen in the " -#| "- range, defined " -#| "in login.defs, instead of -" -#| "." +#: usermod.8.xml:334(term) userdel.8.xml:158(term) useradd.8.xml:469(term) groupmod.8.xml:190(term) groupdel.8.xml:113(term) groupadd.8.xml:216(term) msgid "" -"The numeric identifiers of new system groups are chosen in the <_:option-1/>-" -"<_:option-2/> range, defined in <_:filename-3/>, instead of <_:option-4/>-<_:" -"option-5/>." +",  PREFIX_DIR<" +"/replaceable>" msgstr "" -"Os identificadores numéricos de novos grupos de sistema são escolhidos " -"dentro da gama -, " -"definida em login.defs, em vez de ." +",  PREFIX_DIR<" +"/replaceable>" -#. (itstool) path: term/option -#. (itstool) path: para/option -#: groupadd.8.xml.out:229 groupadd.8.xml.out:237 groupmod.8.xml.out:194 -#: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:399 -#: useradd.8.xml.out:551 useradd.8.xml.out:560 usermod.8.xml.out:238 -#: usermod.8.xml.out:405 -#, fuzzy -#| msgid "-" -msgid "-U" -msgstr "-" - -#. (itstool) path: term/option -#: groupadd.8.xml.out:229 groupmod.8.xml.out:194 -#, fuzzy -#| msgid "user" -msgid "--users" -msgstr "user" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:232 groupmod.8.xml.out:197 -#, fuzzy -#| msgid "Administrators can change the password or the members of the group." -msgid "A list of usernames to add as members of the group." -msgstr "Os administradores podem mudar a palavra passe dos membros do grupo." - -#. (itstool) path: para/option -#. (itstool) path: term/option -#: groupadd.8.xml.out:237 groupmod.8.xml.out:202 useradd.8.xml.out:96 -#: useradd.8.xml.out:388 useradd.8.xml.out:399 useradd.8.xml.out:560 -#, fuzzy -#| msgid "-" -msgid "-N" -msgstr "-" - -#. (itstool) path: para/option -#. (itstool) path: para/phrase -#: groupadd.8.xml.out:238 groupmod.8.xml.out:203 login.defs.5.xml.out:467 -#: useradd.8.xml.out:97 useradd.8.xml.out:240 useradd.8.xml.out:400 -#: useradd.8.xml.out:561 userdel.8.xml.out:86 userdel.8.xml.out:296 -msgid "USERGROUPS_ENAB" -msgstr "" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:397 -#: useradd.8.xml.out:558 -#, fuzzy -#| msgid "" -#| "The default behavior (if the , , " -#| "and options are not specified) is defined by the " -#| " variable in /etc/login.defs." +#: usermod.8.xml:338(para) userdel.8.xml:162(para) useradd.8.xml:473(para) groupmod.8.xml:194(para) groupdel.8.xml:117(para) groupadd.8.xml:220(para) msgid "" -"The default behavior (if the <_:option-1/>, <_:option-2/>, and <_:option-3/> " -"options are not specified) is defined by the <_:option-4/> variable in <_:" -"filename-5/>." +"Apply changes in the PREFIX_DIR directory and use" +" the configuration files from the PREFIX_DIR" +" directory. This option does not chroot and is intended for preparing a" +" cross-compilation target. Some limitations: NIS and LDAP users/groups are" +" not verified. PAM authentication is using the host files. No SELINUX support." +msgstr "" +"Aplica alterações no directório PREFIX_DIR e usa " +"os ficheiro de configuração do directório PREFIX_DIR. Esta opção não faz chroot e destina-se à preparação de um " +"alvo de compilação cruzada. Algumas limitações: Os utilizadores/grupos " +"NIS e LDAP não são verificados. A autenticação PAM usa os ficheiros do " +"anfitrião. Não há suporte a SELINUX." + +#: usermod.8.xml:351(term) useradd.8.xml:486(term) useradd.8.xml:624(term) su.1.xml:186(term) chsh.1.xml:119(term) +msgid "" +",  SHELL<" +"/replaceable>" +msgstr "" +",  SHELL<" +"/replaceable>" + +#: usermod.8.xml:355(para) chsh.1.xml:123(para) +msgid "" +"The name of the user's new login shell. Setting this field to blank causes" +" the system to select the default login shell." +msgstr "" +"O nome da shell de login do novo utilizador. Definir este campo para vazio " +"faz com que o sistema selecione a shell de login predefinida." + +#: usermod.8.xml:362(term) useradd.8.xml:500(term) +msgid "" +",  UID<" +"/replaceable>" +msgstr "" +",  UID<" +"/replaceable>" + +#: usermod.8.xml:366(para) +msgid "The new numerical value of the user's ID." +msgstr "O novo valor numérico do ID do utilizador." + +#: usermod.8.xml:369(para) +msgid "" +"This value must be unique, unless the option is used. The" +" value must be non-negative." +msgstr "" +"Este valor tem de ser único, a menos que seja usada a opção , <" +"option>UID_MAX, , or SYS_UID_MAX from /etc/login.defs." +msgstr "" +"Nenhuma verificação será executada em relação a , <" +"option>UID_MAX, , ou SYS_UID_MAX a partir de /etc/login.defs." + +#: usermod.8.xml:392(term) +msgid ", " +msgstr ", " + +#: usermod.8.xml:396(para) +msgid "" +"Unlock a user's password. This removes the '!' in front of the encrypted" +" password. You can't use this option with or ." + +#: usermod.8.xml:401(para) +msgid "" +"Note: if you wish to unlock the account (not only access with a password)," +" you should also set the EXPIRE_DATE (for example" +" to 99999, or to the value" +" from /etc/default/useradd)." +msgstr "" +"Nota: Se deseja destrancar a conta (não apenas acesso com uma palavra passe), " +"você deve também definir EXPIRE_DATE (por exemplo " +"para 99999, ou o valor " +"de /etc/default/useradd)." + +#: usermod.8.xml:412(term) +msgid "" +",  FIRST<" +"/replaceable>-LAST" +msgstr "" +",  FIRST<" +"/replaceable>-LAST" + +#: usermod.8.xml:416(para) +msgid "Add a range of subordinate uids to the user's account." +msgstr "Adiciona um alcance de uids subordinados à conta do utilizador." + +#: usermod.8.xml:419(para) usermod.8.xml:457(para) +msgid "" +"This option may be specified multiple times to add multiple ranges to a users" +" account." +msgstr "" +"Esta opção pode ser especificada várias vezes para adicionar vários alcances " +"à conta de um utilizador." + +#: usermod.8.xml:422(para) usermod.8.xml:442(para) +msgid "" +"No checks will be performed with regard to , <" +"option>SUB_UID_MAX, or from" +" /etc/login.defs." +msgstr "" +"Nenhuma verificação será executada em relação a , " +", ou a partir de " +"/etc/login.defs." + +#: usermod.8.xml:430(term) +msgid "" +",  FIRST<" +"/replaceable>-LAST" +msgstr "" +",  FIRST<" +"/replaceable>-LAST" + +#: usermod.8.xml:434(para) +msgid "Remove a range of subordinate uids from the user's account." +msgstr "Remove um alcance de uids subordinados à conta do utilizador." + +#: usermod.8.xml:437(para) +msgid "" +"This option may be specified multiple times to remove multiple ranges to a" +" users account. When both and --add-subuids are specified, the removal of all subordinate uid" +" ranges happens before any subordinate uid range is added." +msgstr "" +"Esta opção pode ser especifica várias vezes para remover vários alcances " +"de uma conta de utilizador. Quando ambas e " +" são especificadas, a remoção de um alcance " +"de uid subordinado acontece antes de se adicionar o alcance de uid " +"subordinado." + +#: usermod.8.xml:450(term) +msgid "" +",  FIRST<" +"/replaceable>-LAST" +msgstr "" +",  FIRST<" +"/replaceable>-LAST" + +#: usermod.8.xml:454(para) +msgid "Add a range of subordinate gids to the user's account." +msgstr "Adiciona um alcance de gids subordinados à conta do utilizador." + +#: usermod.8.xml:460(para) usermod.8.xml:480(para) +msgid "" +"No checks will be performed with regard to , <" +"option>SUB_GID_MAX, or from" +" /etc/login.defs." +msgstr "" +"Nenhuma verificação será executada em relação a , " +", ou a partir de " +"/etc/login.defs." + +#: usermod.8.xml:468(term) +msgid "" +",  FIRST<" +"/replaceable>-LAST" +msgstr "" +",  FIRST<" +"/replaceable>-LAST" + +#: usermod.8.xml:472(para) +msgid "Remove a range of subordinate gids from the user's account." +msgstr "Remove um alcance de gids subordinados à conta do utilizador." + +#: usermod.8.xml:475(para) +msgid "" +"This option may be specified multiple times to remove multiple ranges to a" +" users account. When both and --add-subgids are specified, the removal of all subordinate gid" +" ranges happens before any subordinate gid range is added." +msgstr "" +"Esta opção pode ser especifica várias vezes para remover vários alcances " +"de uma conta de utilizador. Quando ambas ,  SEUSER" +msgstr "" +",  SEUSER" + +#: usermod.8.xml:492(para) +msgid "The new SELinux user for the user's login." +msgstr "O novo utilizador SELinux para o login do utilizador." + +#: usermod.8.xml:495(para) +msgid "" +"A blank SEUSER will remove the SELinux user" +" mapping for user LOGIN (if any)." +msgstr "" +"Um SEUSER vazio irá remover o mapeamento de " +"utilizador SELinux para i utilizador LOGIN " +"(se existir algum)." + +#: usermod.8.xml:506(title) userdel.8.xml:298(title) useradd.8.xml:652(title) su.1.xml:330(title) shadow.3.xml:218(title) passwd.1.xml:377(title) newusers.8.xml:363(title) login.1.xml:260(title) lastlog.8.xml:229(title) groupdel.8.xml:133(title) groupadd.8.xml:274(title) gpasswd.1.xml:252(title) faillog.8.xml:232(title) chpasswd.8.xml:231(title) chgpasswd.8.xml:186(title) +msgid "CAVEATS" +msgstr "RESSALVAS" + +#: usermod.8.xml:507(para) +msgid "" +"You must make certain that the named user is not executing any processes when" +" this command is being executed if the user's numerical user ID, the user's" +" name, or the user's home directory is being changed. usermod<" +"/command> checks this on Linux. On other platforms it only uses utmp to check" +" if the user is logged in." +msgstr "" +"Você tem de certifica que o utilizador nomeado não está a executar nenhum " +"processo quando este comando é executado, se o ID numérico do utilizador, o " +"nome de utilizador ou o directório home do utilizador está ser alterado. " +"O usermod verifica isto em Linux. Nas outras plataformas " +"apenas usa o utmp para verificar seu o utilizador tem sessão iniciada." + +#: usermod.8.xml:514(para) +msgid "" +"You must change the owner of any crontab files or at jobs manually." +msgstr "" +"Você tem de alterar a posse de quaisquer ficheiros crontab " +"ou tarefas at manualmente." + +#: usermod.8.xml:518(para) +msgid "You must make any changes involving NIS on the NIS server." +msgstr "Você tem fazer quaisquer alterações que envolvam NIS no servidor NIS." + +#: usermod.8.xml:33(term) useradd.8.xml:33(term) login.defs.5.xml:33(term) lastlog.8.xml:33(term) +msgid " (number)" +msgstr " (número)" + +#: usermod.8.xml:35(para) useradd.8.xml:35(para) login.defs.5.xml:35(para) lastlog.8.xml:35(para) +msgid "" +"Highest user ID number for which the lastlog entries should be updated. As" +" higher user IDs are usually tracked by remote user identity and" +" authentication services there is no need to create a huge sparse lastlog" +" file for them." +msgstr "" +"Número de ID de utilizador mais alto para o qual as entradas em lastlog devem " +"ser atualizadas. Como os IDs de utilizador altos são geralmente acompanhados " +"de identidade de utilizador remoto e serviços de autenticação, não há " +"necessidade de criar um ficheiro lastlog enorme e disperso para eles." + +#: usermod.8.xml:41(para) useradd.8.xml:41(para) login.defs.5.xml:41(para) lastlog.8.xml:41(para) +msgid "" +"No option present in the configuration means" +" that there is no user ID limit for writing lastlog entries." +msgstr "" +"Nenhuma opção presente na configuração " +"significa que não há nenhum limite de ID de utilizador para escrever entradas " +"no lastlog." + +#: usermod.8.xml:32(term) userdel.8.xml:32(term) useradd.8.xml:32(term) su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: usermod.8.xml:34(para) userdel.8.xml:34(para) useradd.8.xml:34(para) su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"The mail spool directory. This is needed to manipulate the mailbox when its" +" corresponding user account is modified or deleted. If not specified, a" +" compile-time default is used." +msgstr "" +"O directório de pasta de mail. Isto é preciso para manipular a caixa de " +"correio quando a sua conta de utilizador correspondente é modificada ou " +"apagada. Se não for especificado, é usado um tempo-de-compilação predefinido." + +#: usermod.8.xml:41(term) userdel.8.xml:41(term) useradd.8.xml:41(term) su.1.xml:41(term) login.defs.5.xml:41(term) login.1.xml:41(term) +msgid " (string)" +msgstr " (string)" + +#: usermod.8.xml:43(para) userdel.8.xml:43(para) useradd.8.xml:43(para) su.1.xml:43(para) login.defs.5.xml:43(para) login.1.xml:43(para) +msgid "" +"Defines the location of the users mail spool files relatively to their home" +" directory." +msgstr "" +"Defina a localização dos ficheiros de pasta de mail do utilizador " +"relativamente ao seu directório home." + +#. FIXME: MAIL_FILE not used in useradd +#: usermod.8.xml:50(para) userdel.8.xml:50(para) useradd.8.xml:50(para) su.1.xml:50(para) login.defs.5.xml:50(para) login.1.xml:50(para) +msgid "" +"The and variables are" +" used by useradd, usermod, and userdel to create, move, or delete the user's mail spool." +msgstr "" +"As variáveis e são " +"usadas por useradd, usermod, e " +"userdel para criar, mover, ou apagar a pasta de mail " +"do utilizador." + +#: usermod.8.xml:56(para) userdel.8.xml:56(para) useradd.8.xml:56(para) su.1.xml:56(para) login.defs.5.xml:56(para) login.1.xml:56(para) +msgid "" +"If is set to yes," +" they are also used to define the MAIL environment variable." +msgstr "" +"Se for definido para yes, são também usadas para definir a variável de ambiente " +"MAIL." + +#: usermod.8.xml:30(term) userdel.8.xml:30(term) useradd.8.xml:30(term) pwconv.8.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) grpck.8.xml:30(term) groupmod.8.xml:30(term) groupmems.8.xml:30(term) groupdel.8.xml:30(term) groupadd.8.xml:30(term) gpasswd.1.xml:30(term) chgpasswd.8.xml:30(term) +msgid " (number)" +msgstr " (número)" + +#: usermod.8.xml:32(para) userdel.8.xml:32(para) useradd.8.xml:32(para) pwconv.8.xml:32(para) newusers.8.xml:32(para) login.defs.5.xml:32(para) grpck.8.xml:32(para) groupmod.8.xml:32(para) groupmems.8.xml:32(para) groupdel.8.xml:32(para) groupadd.8.xml:32(para) gpasswd.1.xml:32(para) chgpasswd.8.xml:32(para) +msgid "" +"Maximum members per group entry. When the maximum is reached, a new group" +" entry (line) is started in /etc/group (with the same" +" name, same password, and same GID)." +msgstr "" +"Máximo de membros por entrada de grupo. Quando o máximo é atingido, é " +"começada um entrada (linha) para novo grupo em /etc/group (com o mesmo nome, mesma palavra passe, e mesmo GID)." + +#: usermod.8.xml:37(para) userdel.8.xml:37(para) useradd.8.xml:37(para) pwconv.8.xml:37(para) newusers.8.xml:37(para) login.defs.5.xml:37(para) grpck.8.xml:37(para) groupmod.8.xml:37(para) groupmems.8.xml:37(para) groupdel.8.xml:37(para) groupadd.8.xml:37(para) gpasswd.1.xml:37(para) chgpasswd.8.xml:37(para) +msgid "" +"The default value is 0, meaning that there are no limits in the number of" +" members in a group." +msgstr "" +"O valor predefinido é 0, que significa que não há limites no número de " +"membros de um grupo." + +#. Note: on HP, split groups have the same ID, but different +#. names. +#: usermod.8.xml:43(para) userdel.8.xml:43(para) useradd.8.xml:43(para) pwconv.8.xml:43(para) newusers.8.xml:43(para) login.defs.5.xml:43(para) grpck.8.xml:43(para) groupmod.8.xml:43(para) groupmems.8.xml:43(para) groupdel.8.xml:43(para) groupadd.8.xml:43(para) gpasswd.1.xml:43(para) chgpasswd.8.xml:43(para) +msgid "" +"This feature (split group) permits to limit the length of lines in the group" +" file. This is useful to make sure that lines for NIS groups are not larger" +" than 1024 characters." +msgstr "" +"esta funcionalidade (dividir grupo) permite limitar a quantidade de linhas " +"num ficheiro de grupo. Isto é útil para certificar que as linhas para grupos " +"NIS não são maiores que 1024 caracteres." + +#: usermod.8.xml:48(para) userdel.8.xml:48(para) useradd.8.xml:48(para) pwconv.8.xml:48(para) newusers.8.xml:48(para) login.defs.5.xml:48(para) grpck.8.xml:48(para) groupmod.8.xml:48(para) groupmems.8.xml:48(para) groupdel.8.xml:48(para) groupadd.8.xml:48(para) gpasswd.1.xml:48(para) chgpasswd.8.xml:48(para) +msgid "If you need to enforce such limit, you can use 25." +msgstr "Se você deseja impor tal limite, você pode usar 25." + +#: usermod.8.xml:51(para) userdel.8.xml:51(para) useradd.8.xml:51(para) pwconv.8.xml:51(para) newusers.8.xml:51(para) login.defs.5.xml:51(para) grpck.8.xml:51(para) groupmod.8.xml:51(para) groupmems.8.xml:51(para) groupdel.8.xml:51(para) groupadd.8.xml:51(para) gpasswd.1.xml:51(para) chgpasswd.8.xml:51(para) +msgid "" +"Note: split groups may not be supported by all tools (even in the Shadow" +" toolsuite). You should not use this variable unless you really need it." +msgstr "" +"Nota: a divisão de grupos pode não ser suportada por todas as ferramentas " +"(mesmo na suite de ferramentas do Shadow). Você não deve usar esta " +"variável a menos que realmente precise dela." + +#: usermod.8.xml:30(term) useradd.8.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) +msgid " (number)" +msgstr " (número)" + +#: usermod.8.xml:31(term) useradd.8.xml:31(term) newusers.8.xml:31(term) login.defs.5.xml:31(term) +msgid " (number)" +msgstr " (número)" + +#: usermod.8.xml:32(term) useradd.8.xml:32(term) newusers.8.xml:32(term) login.defs.5.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: usermod.8.xml:34(para) useradd.8.xml:34(para) newusers.8.xml:34(para) login.defs.5.xml:34(para) +msgid "" +"If /etc/subuid exists, the commands useradd<" +"/command> and newusers (unless the user already have" +" subordinate group IDs) allocate unused group" +" IDs from the range to file." +msgstr "" +"A pasta de mail é definida pela variável no " +"ficheiro login.defs." + +#: userdel.8.xml:175(term) +msgid ", " +msgstr ", " + +#: userdel.8.xml:179(para) +msgid "Remove any SELinux user mapping for the user's login." +msgstr "Remove qualquer utilizador SELinux mapeado para o login do utilizador." + +#: userdel.8.xml:33(term) login.defs.5.xml:33(term) +msgid " (string)" +msgstr " (string)" + +#: userdel.8.xml:35(para) login.defs.5.xml:35(para) +msgid "" +"If defined, this command is run when removing a user. It should remove any" +" at/cron/print jobs etc. owned by the user to be removed (passed as the first" +" argument)." +msgstr "" +"Se definido, este comando é corrido quando se remove um utilizador. Deverá " +"remover quaisquer tarefas at/cron/print etc. possuídas pelo utilizador a " +"ser removido (passado como primeiro argumento)." + +#: userdel.8.xml:40(para) login.defs.5.xml:40(para) +msgid "The return code of the script is not taken into account." +msgstr "O código de retorno do script não é tido em conta." + +#: userdel.8.xml:46(programlisting) login.defs.5.xml:46(programlisting) +#, no-wrap +msgid "" +"\n#! /bin/sh\n\n# Check for the required argument.\nif [ $# != 1 ];" +" then\n\techo \"Usage: $0 username\"\n\texit 1\nfi\n\n# Remove cron" +" jobs.\ncrontab -r -u $1\n\n# Remove at jobs.\n# Note that it will remove any" +" jobs owned by the same UID,\n# even if it was shared by a different" +" username.\nAT_SPOOL_DIR=/var/spool/cron/atjobs\nfind $AT_SPOOL_DIR -name" +" \"[^.]*\" -type f -user $1 -delete \\;\n\n# Remove print jobs.\nlprm $1\n\n#" +" All done.\nexit 0\n " +msgstr "" +"\n#! /bin/sh\n\n# Check for the required argument.\nif [ $# != 1 ];" +" then\n\techo \"Usage: $0 username\"\n\texit 1\nfi\n\n# Remove cron" +" jobs.\ncrontab -r -u $1\n\n# Remove at jobs.\n# Note that it will remove any" +" jobs owned by the same UID,\n# even if it was shared by a different" +" username.\nAT_SPOOL_DIR=/var/spool/cron/atjobs\nfind $AT_SPOOL_DIR -name" +" \"[^.]*\" -type f -user $1 -delete \\;\n\n# Remove print jobs.\nlprm $1\n\n#" +" All done.\nexit 0\n " + +#: userdel.8.xml:43(para) login.defs.5.xml:43(para) +msgid "" +"Here is an example script, which removes the user's cron, at and print jobs:" +" " +msgstr "" +"Aqui está um script de exemplo que remove as tarefas cron e de impressão " +"do utilizador: " + +#: userdel.8.xml:32(term) useradd.8.xml:32(term) su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (boolean)" +msgstr " (booleano)" + +#: userdel.8.xml:34(para) useradd.8.xml:34(para) su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"Enable setting of the umask group bits to be the same as owner bits" +" (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." +msgstr "" +"Activa a definição dos bits de grupo umask group bits para serem os mesmos " +"que os bits do dono (exemplos: 022 -> 002, 077 -> 007) para " +"utilizadores não-root, se o uid for o mesmo que o gid, e o nome de utilizador " +"o mesmo que o nome de grupo primário." + +#: userdel.8.xml:39(para) useradd.8.xml:39(para) su.1.xml:39(para) login.defs.5.xml:39(para) login.1.xml:39(para) +msgid "" +"If set to yes, userdel will" +" remove the user's group if it contains no more members, and useradd will create by default a group with the name of the user." +msgstr "" +"Se definido para yes, userdel " +"irá remover o grupo do utilizador se este não conter mais membros, e " +"useradd irá criar por predefinição um grupo com o " +"nome do utilizador." + +#: userdel.8.xml:247(title) useradd.8.xml:766(title) su.1.xml:390(title) pwck.8.xml:303(title) passwd.1.xml:443(title) grpck.8.xml:245(title) groupmod.8.xml:252(title) groupdel.8.xml:175(title) groupadd.8.xml:296(title) chage.1.xml:284(title) +msgid "EXIT VALUES" +msgstr "VALORES DE SAÍDA" + +#: userdel.8.xml:252(replaceable) useradd.8.xml:771(replaceable) su.1.xml:409(replaceable) pwck.8.xml:308(replaceable) passwd.1.xml:448(replaceable) grpck.8.xml:250(replaceable) groupmod.8.xml:257(replaceable) groupdel.8.xml:180(replaceable) groupadd.8.xml:301(replaceable) chage.1.xml:289(replaceable) +msgid "0" +msgstr "0" + +#: userdel.8.xml:254(para) useradd.8.xml:773(para) pwck.8.xml:310(para) passwd.1.xml:450(para) grpck.8.xml:252(para) groupdel.8.xml:182(para) groupadd.8.xml:303(para) chage.1.xml:291(para) +msgid "success" +msgstr "sucesso" + +#: userdel.8.xml:258(replaceable) useradd.8.xml:777(replaceable) su.1.xml:75(manvolnum) su.1.xml:415(replaceable) sg.1.xml:59(manvolnum) pwck.8.xml:314(replaceable) passwd.1.xml:65(manvolnum) passwd.1.xml:454(replaceable) newgrp.1.xml:59(manvolnum) login.1.xml:91(manvolnum) grpck.8.xml:256(replaceable) groups.1.xml:58(manvolnum) gpasswd.1.xml:63(manvolnum) expiry.1.xml:62(manvolnum) chsh.1.xml:61(manvolnum) chfn.1.xml:61(manvolnum) chage.1.xml:59(manvolnum) chage.1.xml:295(replaceable) +msgid "1" +msgstr "1" + +#: userdel.8.xml:260(para) useradd.8.xml:779(para) +msgid "can't update password file" +msgstr "incapaz de actualizar o ficheiro da palavra passe" + +#: userdel.8.xml:264(replaceable) useradd.8.xml:783(replaceable) pwck.8.xml:320(replaceable) passwd.1.xml:460(replaceable) grpck.8.xml:262(replaceable) groupmod.8.xml:263(replaceable) groupdel.8.xml:186(replaceable) groupadd.8.xml:307(replaceable) chage.1.xml:301(replaceable) +msgid "2" +msgstr "2" + +#: userdel.8.xml:266(para) useradd.8.xml:785(para) pwck.8.xml:316(para) grpck.8.xml:258(para) groupdel.8.xml:188(para) groupadd.8.xml:309(para) chage.1.xml:303(para) +msgid "invalid command syntax" +msgstr "sintaxe de comando inválida" + +#: userdel.8.xml:270(replaceable) useradd.8.xml:801(replaceable) pwck.8.xml:344(replaceable) passwd.1.xml:484(replaceable) groupmod.8.xml:281(replaceable) groupdel.8.xml:192(replaceable) +msgid "6" +msgstr "6" + +#: userdel.8.xml:272(para) +msgid "specified user doesn't exist" +msgstr "o utilizador especificado não existe" + +#: userdel.8.xml:278(para) +msgid "user currently logged in" +msgstr "utilizador actualmente com sessão activa" + +#: userdel.8.xml:282(replaceable) useradd.8.xml:813(replaceable) groupmod.8.xml:293(replaceable) groupdel.8.xml:204(replaceable) groupadd.8.xml:331(replaceable) +msgid "10" +msgstr "10" + +#: userdel.8.xml:284(para) useradd.8.xml:815(para) groupdel.8.xml:206(para) groupadd.8.xml:333(para) +msgid "can't update group file" +msgstr "incapaz de actualizar o ficheiro de grupo" + +#: userdel.8.xml:288(replaceable) useradd.8.xml:819(replaceable) groupmod.8.xml:305(replaceable) +msgid "12" +msgstr "12" + +#: userdel.8.xml:290(para) +msgid "can't remove home directory" +msgstr "incapaz de remover o directório home" + +#: userdel.8.xml:248(para) +msgid "" +"The userdel command exits with the following values: <" +"placeholder-1/>" +msgstr "" +"O comando userdel termina com os seguintes valores: " +"" + +#: userdel.8.xml:299(para) +msgid "" +"userdel will not allow you to remove an account if there" +" are running processes which belong to this account. In that case, you may" +" have to kill those processes or lock the user's password or account and" +" remove the account later. The option can force the" +" deletion of this account." +msgstr "" +"O userdel não irá permitir remover uma conta se existirem " +"processos a correr que pertençam a esta conta. Neste caso, você poderá " +"ter que matar esses processos, ou trancar a palavra passe do utilizador " +"ou a conta e remover a conta mais tarde. A opção pode " +"forçar o apagar desta conta." + +#: userdel.8.xml:306(para) +msgid "" +"You should manually check all file systems to ensure that no files remain" +" owned by this user." +msgstr "" +"Você deve verificar manualmente todos os sistemas para assegurar que não " +"restam ficheiros possuídos por este utilizador." + +#: userdel.8.xml:310(para) +msgid "" +"You may not remove any NIS attributes on a NIS client. This must be performed" +" on the NIS server." +msgstr "" +"Você não pode remover nenhum atributo NIS num cliente NIS client. Isto tem " +"de ser feito no servidor NIS." + +#: userdel.8.xml:313(para) +msgid "" +"If is defined to yes<" +"/emphasis> in /etc/login.defs, userdel will delete the group with the same name as the user. To avoid" +" inconsistencies in the passwd and group databases, userdel will check that this group is not used as a primary group for another user," +" and will just warn without deleting the group otherwise. The estiver definido para yes em /etc/login.defs, o " +"userdel irá apagar o grupo com o mesmo nome que o " +"utilizador. Para evitar inconsistências nas bases de dados de palavras passe " +"e grupos, o userdel irá verificar que este grupo não " +"é usado como grupo primário para outro utilizador, e caso contrário irá " +"apenas avisar sobre o apagar do grupo. A opção pode " +"forçar o apagar o apagar deste grupo." + +#: userdel.8.xml:326(para) +msgid "" +"chfn1<" +"/citerefentry>, chsh1, passwd<" +"/refentrytitle>1, <" +"refentrytitle>login.defs5<" +"/citerefentry>, gpasswd<" +"manvolnum>8, groupadd8, <" +"citerefentry>groupdel8<" +"/citerefentry>, groupmod<" +"manvolnum>8, <" +"citerefentry>subgid5<" +"/citerefentry>, subuid5, useradd<" +"/refentrytitle>8, <" +"refentrytitle>usermod8." +msgstr "" +"chfn1<" +"/citerefentry>, chsh1, passwd<" +"/refentrytitle>1, <" +"refentrytitle>login.defs5<" +"/citerefentry>, gpasswd<" +"manvolnum>8, groupadd8, <" +"citerefentry>groupdel8<" +"/citerefentry>, groupmod<" +"manvolnum>8, <" +"citerefentry>subgid5<" +"/citerefentry>, subuid5, useradd<" +"/refentrytitle>8, <" +"refentrytitle>usermod8." + +#: useradd.8.xml:76(refentrytitle) useradd.8.xml:83(refname) useradd.8.xml:88(command) useradd.8.xml:95(command) useradd.8.xml:99(command) login.defs.5.xml:482(term) +msgid "useradd" +msgstr "useradd" + +#: useradd.8.xml:84(refpurpose) +msgid "create a new user or update default new user information" +msgstr "" +"cria um novo utilizador ou actualiza a informação predefinida do utilizador" + +#: useradd.8.xml:96(arg) useradd.8.xml:100(arg) +msgid "-D" +msgstr "-D" + +#: useradd.8.xml:109(para) +msgid "" +"When invoked without the option, the useradd<" +"/command> command creates a new user account using the values specified on" +" the command line plus the default values from the system. Depending on" +" command line options, the useradd command will update" +" system files and may also create the new user's home directory and copy" +" initial files." +msgstr "" +"Quando invocado sem a opção , o comando useradd<" +"/command> cria uma nova conta de utilizador usando os valores especificados " +"na linha de comandos mais os valores predefinidos do sistema. Dependendo " +"das opções de linha de comandos, o comando useradd irá " +"actualizar ficheiros do sistema e pode também criar o directório home do " +"novo utilizador e copiar os ficheiros iniciais." + +#: useradd.8.xml:118(para) +msgid "" +"By default, a group will also be created for the new user (see , , and USERGROUPS_ENAB)." +msgstr "" +"Por predefinição, será também criado um grupo para o novo utilizador " +"(veja , , , e " +")." + +#: useradd.8.xml:127(para) +msgid "The options which apply to the useradd command are:" +msgstr "As opções que se aplicam ao comando useradd são:" + +#: useradd.8.xml:132(option) pwck.8.xml:187(option) newusers.8.xml:273(option) +msgid "--badname" +msgstr "--badname" + +#: useradd.8.xml:141(term) useradd.8.xml:559(term) +msgid "" +",  BASE_DIR<" +"/replaceable>" +msgstr "" +",  BASE_DIR<" +"/replaceable>" + +#: useradd.8.xml:145(para) +msgid "" +"The default base directory for the system if  <" +"replaceable>HOME_DIR is not specified. BASE_DIR<" +"/replaceable> is concatenated with the account name to define the home" +" directory. If the option is not used, BASE_DIR must exist." +msgstr "" +"O directório base predefinido para o sistema de  <" +"replaceable>HOME_DIR não for especificada. " +"BASE_DIR é concatenada com o nome da conta " +"para definir o directório home. Se a opção não for usada, " +"BASE_DIR tem de existir." + +#: useradd.8.xml:152(para) +msgid "" +"If this option is not specified, useradd will use the base" +" directory specified by the variable in /etc/default/useradd, or /home by default." +msgstr "" +"Se esta opção não for especificada, o useradd irá usar o " +"directório base especificado pela variável em /etc/default/useradd, ou /home por " +"predefinição." + +#: useradd.8.xml:166(para) +msgid "" +"Any text string. It is generally a short description of the login, and is" +" currently used as the field for the user's full name." +msgstr "" +"Qualquer string de texto. É geralmente uma descrição curta do login, e é " +"actualmente usado como o campo para o nome completo do utilizador." + +#: useradd.8.xml:174(term) +msgid "" +",  HOME_DIR<" +"/replaceable>" +msgstr "" +",  HOME_DIR<" +"/replaceable>" + +#: useradd.8.xml:178(para) +msgid "" +"The new user will be created using HOME_DIR as the" +" value for the user's login directory. The default is to append the <" +"replaceable>LOGIN name to BASE_DIR" +" and use that as the login directory name. The directory HOME_DIR does not have to exist but will not be created if it" +" is missing." +msgstr "" +"O novo utilizador será criado usando HOME_DIR " +"como o valor para o directório de login do utilizador. A predefinição é " +"acrescentar o nome de LOGIN a " +"BASE_DIR e usar isso como o nome do directório de " +"login. O directório HOME_DIR não tem de existir " +"mas não será criado se estiver em falta." + +#: useradd.8.xml:190(term) +msgid ", " +msgstr ", " + +#: useradd.8.xml:194(para) +msgid "See below, the subsection \"Changing the default values\"." +msgstr "Veja em baixo, a subsecção \"Alterar os valores predefinidos\"." + +#: useradd.8.xml:208(para) +msgid "" +"If not specified, useradd will use the default expiry date" +" specified by the variable in /etc/default/useradd, or an empty string (no expiry) by default." +msgstr "" +"Se não definido, o useradd irá usar a data de expiração " +"predefinida especificada pela variável em /etc/default/useradd, ou uma string vazia (não expira) por " +"predefinição." + +#: useradd.8.xml:221(para) +msgid "" +"The number of days after a password expires until the account is permanently" +" disabled. A value of 0 disables the account as soon as the password has" +" expired, and a value of -1 disables the feature." +msgstr "" +"O número de dias após a palavra passe expirar até que a conta permanentemente " +"desactivada. Um valor de 0 desactiva a conta assim que a palavra-passe " +"expirar, e um valor -1 desactiva esta funcionalidade." + +#: useradd.8.xml:227(para) +msgid "" +"If not specified, useradd will use the default inactivity" +" period specified by the variable in /etc/default/useradd, or -1 by default." +msgstr "" +"Se não definido, o useradd irá usar o período de " +"inatividade predefinido especificado pela variável " +"em /etc/default/useradd, ou -1 por predefinição." + +#: useradd.8.xml:240(para) +msgid "" +"The group name or number of the user's initial login group. The group name" +" must exist. A group number must refer to an already existing group." +msgstr "" +"O nome do grupo ou o número do grupo de login inicial do utilizador. O nome " +"do grupo tem de existir. Um número de grupo tem de se referir a um grupo " +"já existente." + +#: useradd.8.xml:245(para) +msgid "" +"If not specified, the behavior of useradd will depend on" +" the variable in /etc/login.defs<" +"/filename>. If this variable is set to yes (or <" +"option>-U/--user-group is specified on the command line), a group" +" will be created for the user, with the same name as her loginname. If the" +" variable is set to no (or -N/--no-user-group is specified on the command line), useradd will" +" set the primary group of the new user to the value specified by the GROUP variable in /etc/default/useradd, or 100" +" by default." +msgstr "" +"Se não especificado, o comportamento do useradd irá " +"depender da variável em " +"/etc/login.defs. Se esta variável for definida para " +"yes (ou for " +"definida na linha de comandos), será criado um grupo para o utilizador, com " +"o mesmo nome que o nome de login. Se a variável for definida para " +"no (ou se " +"for especificada na linha de comandos), o useradd irá definir o grupo " +"primário do novo utilizador para o valor especificado pela variável " +" em /etc/default/useradd, or 100 " +"por predefinição." + +#: useradd.8.xml:267(para) +msgid "" +"A list of supplementary groups which the user is also a member of. Each group" +" is separated from the next by a comma, with no intervening whitespace. The" +" groups are subject to the same restrictions as the group given with the <" +"option>-g option. The default is for the user to belong only to the" +" initial group." +msgstr "" +"Uma lista de grupos suplementares a que o utilizador é também membro. Cada " +"grupo é separado do próximo por uma vírgula, sem nenhum espaço em branco " +"intermédio. Os grupos estão sujeitos às mesmas restrições que o grupo dado " +"com a opção . A predefinição é o utilizador pertencer " +"apenas ao grupo inicial." + +#: useradd.8.xml:284(term) +msgid "" +",  SKEL_DIR<" +"/replaceable>" +msgstr "" +",  SKEL_DIR<" +"/replaceable>" + +#: useradd.8.xml:288(para) +msgid "" +"The skeleton directory, which contains files and directories to be copied in" +" the user's home directory, when the home directory is created by useradd." +msgstr "" +"O directório esqueleto, que contem ficheiros e directórios a serem copiados " +"para o directório home do utilizador, quando o directório home é criado pelo " +"useradd." + +#: useradd.8.xml:293(para) +msgid "" +"This option is only valid if the (or --create-home) option is specified." +msgstr "" +"Esta opção apenas é válida se a opção (ou " +") for especificada." + +#: useradd.8.xml:297(para) +msgid "" +"If this option is not set, the skeleton directory is defined by the SKEL variable in /etc/default/useradd or, by" +" default, /etc/skel." +msgstr "" +"Se esta opção não for definida, o directório esqueleto é definido pela " +"variável em /etc/default/useradd ou, por predefinição, /etc/skel." + +#: useradd.8.xml:303(para) +msgid "If possible, the ACLs and extended attributes are copied." +msgstr "Se possível, os atributos ACL e estendidos são copiados." + +#: useradd.8.xml:309(term) groupadd.8.xml:137(term) +msgid "" +",  KEY<" +"/replaceable>=VALUE" +msgstr "" +",  KEY<" +"/replaceable>=VALUE" + +#: useradd.8.xml:313(para) +msgid "" +"Overrides /etc/login.defs defaults (, , PASS_MAX_DAYS and others). Example: options can be specified, e.g.:  <" +"replaceable>UID_MIN=100 -K UID_MAX=499<" +"/replaceable>" +msgstr "" +"Sobrepõe as predefinições de /etc/login.defs " +"(, , , " +" e outras). Exemplo: pode ser " +"usado  PASS_MAX_DAYS=<" +"replaceable>-1 quando se cria uma conta de sistema para " +"desligar o envelhecimento da palavra passe, mesmo que a conta de sistema não " +"tenha nenhuma palavra passe. Podem ser especificadas varias opções -K, ex. :  UID_MIN=100  <" +"replaceable>UID_MAX=499" + +#: useradd.8.xml:334(term) +msgid ", " +msgstr ", " + +#: useradd.8.xml:336(para) +msgid "Do not add the user to the lastlog and faillog databases." +msgstr "Não adiciona o utilizador às bases de dados lastlog e faillog." + +#: useradd.8.xml:339(para) +msgid "" +"By default, the user's entries in the lastlog and faillog databases are reset" +" to avoid reusing the entry from a previously deleted user." +msgstr "" +"Por predefinição, as entradas do utilizador nas bases de dados lastlog e " +"faillog são reiniciadas para evitar reutilizar uma entrada de um utilizador " +"anteriormente apagado." + +#: useradd.8.xml:347(term) +msgid ", " +msgstr ", " + +#: useradd.8.xml:351(para) +msgid "" +"Create the user's home directory if it does not exist. The files and" +" directories contained in the skeleton directory (which can be defined with" +" the option) will be copied to the home directory." +msgstr "" +"Cria o directório home do utilizador se este não existir. Os ficheiros e " +"directórios contidos no directório esqueleto (o qual pode ser definido " +"com a opção ) serão copiados para o directório home." + +#: useradd.8.xml:357(para) +msgid "" +"By default, if this option is not specified and " +" is not enabled, no home directories are created." +msgstr "" +"Por predefinição, se esta opção não for especificada e , " +msgstr ", " + +#: useradd.8.xml:369(para) +msgid "" +"Do no create the user's home directory, even if the system wide setting from" +" /etc/login.defs () is set" +" to yes." +msgstr "" +"Não cria o directório home do utilizador, mesmo que a definição geral do " +"o sistema de /etc/login.defs (, " +msgstr ", " + +#: useradd.8.xml:382(para) +msgid "" +"Do not create a group with the same name as the user, but add the user to the" +" group specified by the option or by the ou pela " +"variável em /etc/default/useradd." + +#: useradd.8.xml:388(para) useradd.8.xml:526(para) +msgid "" +"The default behavior (if the , , and <" +"option>-U options are not specified) is defined by the USERGROUPS_ENAB variable in /etc/login.defs." msgstr "" "O comportamento predefinido (as as opções , não forem especificadas) é definido pela " "variável em /etc/login.defs." -#. (itstool) path: refsect1/para -#: groupadd.8.xml.out:286 -msgid "" -"You may not add a NIS or LDAP group. This must be performed on the " -"corresponding server." +#: useradd.8.xml:401(para) +msgid "Allow the creation of a user account with a duplicate (non-unique) UID." msgstr "" -"Você não pode adicionar um grupo NIS ou LDAP. Isto tem de ser feito no " -"servidor correspondente." +"Permite a criação de uma conta de utilizador com um UID duplicado (não único)." -#. (itstool) path: refsect1/para -#: groupadd.8.xml.out:290 -#, fuzzy -#| msgid "" -#| "If the groupname already exists in an external group database such as NIS " -#| "or LDAP, groupadd will deny the group creation request." +#: useradd.8.xml:402(para) msgid "" -"If the groupname already exists in an external group database such as NIS or " -"LDAP, <_:command-1/> will deny the group creation request." +"This option is only valid in combination with the option." msgstr "" -"Se o nome de grupo já existir numa base de dados de grupos externa como NIS " -"ou LDAP, o groupadd irá negar o pedido de criação de " -"grupo." +"Esta opção é apenas válida em combinação com a opção ." -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:317 passwd.1.xml.out:485 useradd.8.xml.out:851 +#: useradd.8.xml:413(para) groupadd.8.xml:171(para) +msgid "" +"The encrypted password, as returned by crypt<" +"/refentrytitle>3. The default is to" +" disable the password." +msgstr "" +"A palavra passe encriptada, como retornada por <" +"refentrytitle>crypt3. " +"A predefinição é desactivar a palavra passe." + +#: useradd.8.xml:430(term) newusers.8.xml:302(term) groupadd.8.xml:188(term) +msgid ", " +msgstr ", " + +#: useradd.8.xml:434(para) newusers.8.xml:306(para) +msgid "Create a system account." +msgstr "Cria uma conta de sistema." + +#: useradd.8.xml:437(para) +msgid "" +"System users will be created with no aging information in /etc/shadow, and their numeric identifiers are chosen in the <" +"option>SYS_UID_MIN- range, defined in <" +"filename>/etc/login.defs, instead of -<" +"option>UID_MAX (and their counterparts for the" +" creation of groups)." +msgstr "" +"Os utilizadores de sistema serão criados sem nenhuma informação de " +"envelhecimento em /etc/shadow, e os seus identificadores " +"numéricos são escolhidos dentro do alcance " +"-, definido em /etc/login.defs, em vez de - (e " +"os seus homólogos para a criação de grupos)." + +#: useradd.8.xml:446(para) +msgid "" +"Note that useradd will not create a home directory for" +" such a user, regardless of the default setting in /etc/login.defs<" +"/filename> (). You have to specify the -m options if you want a home directory for a system account to be" +" created." +msgstr "" +"Note que useradd não irá criar um directório home para " +"tal utilizador, independentemente da definição predefinida em " +"/etc/login.defs (). Você " +"tem de especificar a opção se quer que seja criado um " +"directório home para uma conta de sistema." + +#: useradd.8.xml:490(para) +msgid "" +"The name of the user's login shell. The default is to leave this field blank," +" which causes the system to select the default login shell specified by the <" +"option>SHELL variable in /etc/default/useradd," +" or an empty string by default." +msgstr "" +"O nome da shell de login do utilizador. A predefinição é deixar este campo " +"vazio, o que faz com que o sistema selecione a shell de login predefinida " +"especificada pela variável em " +"/etc/default/useradd, ou uma string vazia por " +"predefinição." + +#: useradd.8.xml:504(para) +msgid "" +"The numerical value of the user's ID. This value must be unique, unless the <" +"option>-o option is used. The value must be non-negative. The" +" default is to use the smallest ID value greater than or equal to UID_MIN and greater than every other user." +msgstr "" +"O valor numérico do ID de utilizador. Este valor tem de ser único, a menos " +"que a opção seja usada. O valor tem de ser não-negativo. " +"A predefinição é usar menor valor de ID maior ou igual a option and the " +" description." +msgstr "" +"Veja também a opção e a descrição de " +"." + +#: useradd.8.xml:518(term) +msgid ", " +msgstr ", " + +#: useradd.8.xml:522(para) +msgid "" +"Create a group with the same name as the user, and add the user to this group." +msgstr "" +"Cria um grupo com o mesmo nome que o utilizador, e adiciona o utilizador a " +"este grupo." + +#: useradd.8.xml:539(para) +msgid "" +"The SELinux user for the user's login. The default is to leave this field" +" blank, which causes the system to select the default SELinux user." +msgstr "" +"O utilizador SELinux para o login de utilizador. A predefinição é deixar " +"este campo vazio, o que faz com que o sistema selecione o utilizador " +"SELinux predefinido." + +#: useradd.8.xml:549(title) +msgid "Changing the default values" +msgstr "Alterar os valores predefinidos" + +#: useradd.8.xml:550(para) +msgid "" +"When invoked with only the option, useradd<" +"/command> will display the current default values. When invoked with -D plus other options, useradd will update the" +" default values for the specified options. Valid default-changing options are:" +msgstr "" +"Quando invocado apenas com a opção , o useradd<" +"/command> irá mostrar os valores predefinidos actuais. Quando invocado com " +" mais outras opções, o useradd irá " +"actualizar os valores predefinidos para as opções especificadas. As opções " +"de alteração de predefinições válidas são:" + +#: useradd.8.xml:563(para) +msgid "" +"The path prefix for a new user's home directory. The user's name will be" +" affixed to the end of BASE_DIR to form the new" +" user's home directory name, if the option is not used" +" when creating a new account." +msgstr "" +"O prefixo de caminho para o directório home de novo utilizador. O nome " +"do utilizador será afixado no final de BASE_DIR " +"para formar o nome do directório home do novo utilizador, se a opção " +" não for usada quando se cria uma nova conta." + +#: useradd.8.xml:570(para) +msgid "" +"This option sets the variable in /etc/default/useradd." +msgstr "" +"Esta opção define a variável em " +"/etc/default/useradd." + +#: useradd.8.xml:581(para) +msgid "The date on which the user account is disabled." +msgstr "A data em que a conta do utilizador é desactivada." + +#: useradd.8.xml:582(para) +msgid "" +"This option sets the variable in /etc/default/useradd." +msgstr "" +"Esta opção define a variável em " +"/etc/default/useradd." + +#: useradd.8.xml:593(para) +msgid "" +"The number of days after a password has expired before the account will be" +" disabled." +msgstr "" +"O número de dias após a palavra passe ter expirado e antes da conta ser " +"desactivada." + +#: useradd.8.xml:597(para) +msgid "" +"This option sets the variable in /etc/default/useradd." +msgstr "" +"Esta opção define a variável em " +"/etc/default/useradd." + +#: useradd.8.xml:608(para) +msgid "" +"The group name or ID for a new user's initial group (when the -N/--no-user-group is used or when the ) is 1000 (resp. 60000)." +msgstr "" +"O valor predefinido para (resp. " +") é 1000 (resp. 60000)." + +#: useradd.8.xml:32(term) newusers.8.xml:32(term) login.defs.5.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:34(para) newusers.8.xml:34(para) login.defs.5.xml:34(para) +msgid "" +"The mode for new home directories. If not specified, the para criar o modo." + +#: useradd.8.xml:38(para) newusers.8.xml:38(para) login.defs.5.xml:38(para) +msgid "" +"useradd and newusers use this to set" +" the mode of the home directory they create." +msgstr "" +"useradd e newusers usam isto para " +"definir o modo do directório home que criam." + +#: useradd.8.xml:32(term) pwconv.8.xml:32(term) pwck.8.xml:32(term) newusers.8.xml:32(term) login.defs.5.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:34(para) pwconv.8.xml:34(para) pwck.8.xml:34(para) newusers.8.xml:34(para) login.defs.5.xml:34(para) +msgid "" +"The maximum number of days a password may be used. If the password is older" +" than this, a password change will be forced. If not specified, -1 will be" +" assumed (which disables the restriction)." +msgstr "" +"O número máximo de dias que uma palavra passe pode ser usada. Se a palavra " +"passe for mais antiga que isto, é forçada a alteração da palavra passe. " +"Se não especificado, será assumido -1 (que desactiva a restrição)." + +#: useradd.8.xml:32(term) pwconv.8.xml:32(term) pwck.8.xml:32(term) newusers.8.xml:32(term) login.defs.5.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:34(para) pwconv.8.xml:34(para) pwck.8.xml:34(para) newusers.8.xml:34(para) login.defs.5.xml:34(para) +msgid "" +"The minimum number of days allowed between password changes. Any password" +" changes attempted sooner than this will be rejected. If not specified, -1" +" will be assumed (which disables the restriction)." +msgstr "" +"O número mínimo de dias permitidos entre alterações de palavra passe. " +"Quaisquer tentativas de mudança de palavra passe mais cedo que isto serão " +"rejeitadas. Se não especificado, será assumido -1 (o que desactiva a " +"restrição)." + +#: useradd.8.xml:32(term) pwconv.8.xml:32(term) pwck.8.xml:32(term) newusers.8.xml:32(term) login.defs.5.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:34(para) pwconv.8.xml:34(para) pwck.8.xml:34(para) newusers.8.xml:34(para) login.defs.5.xml:34(para) +msgid "" +"The number of days warning given before a password expires. A zero means" +" warning is given only upon the day of expiration, a negative value means no" +" warning is given. If not specified, no warning will be provided." +msgstr "" +"O número de dias de avisos antes da palavra passe expirar. Um zero significa " +"que o aviso só é dado apenas no dia de expiração, um valor negativo significa " +"que nenhum aviso será dado. Se não especificado, nenhum aviso será dado." + +#: useradd.8.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) groupadd.8.xml:30(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:31(term) newusers.8.xml:31(term) login.defs.5.xml:31(term) groupadd.8.xml:31(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:33(para) newusers.8.xml:33(para) login.defs.5.xml:33(para) groupadd.8.xml:33(para) +msgid "" +"Range of group IDs used for the creation of system groups by useradd, groupadd, or newusers<" +"/command>." +msgstr "" +"Alcance de IDs de grupo usados para a criação de grupos do sistema por " +"useradd, groupadd, ou " +"newusers." + +#: useradd.8.xml:38(para) newusers.8.xml:38(para) login.defs.5.xml:38(para) groupadd.8.xml:38(para) +msgid "" +"The default value for (resp. SYS_GID_MAX) is 101 (resp. -1)." +msgstr "" +"O valor predefinido para (resp. SYS_GID_MAX) é 101 (resp. -1)." + +#: useradd.8.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:31(term) newusers.8.xml:31(term) login.defs.5.xml:31(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:33(para) newusers.8.xml:33(para) login.defs.5.xml:33(para) +msgid "" +"Range of user IDs used for the creation of system users by useradd<" +"/command> or newusers." +msgstr "" +"Alcance de IDs de utilizador usados para a criação de utilizadores do sistema " +"por useradd, ou newusers." + +#: useradd.8.xml:37(para) newusers.8.xml:37(para) login.defs.5.xml:37(para) +msgid "" +"The default value for (resp. SYS_UID_MAX) is 101 (resp. -1)." +msgstr "" +"O valor predefinido para (resp. SYS_UID_MAX) é 101 (resp. -1)." + +#: useradd.8.xml:30(term) pwck.8.xml:30(term) login.defs.5.xml:30(term) +msgid " (boolean)" +msgstr " (booleano)" + +#: useradd.8.xml:32(para) pwck.8.xml:32(para) login.defs.5.xml:32(para) +msgid "" +"If yes, newly created tcb shadow files will be" +" group owned by the auth group." +msgstr "" +"Se yes, os ficheiros sombra tcb criados novos " +"irão ser do grupo possuído pelo grupo auth." + +#: useradd.8.xml:32(term) newusers.8.xml:32(term) login.defs.5.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:33(term) newusers.8.xml:33(term) login.defs.5.xml:33(term) +msgid " (number)" +msgstr " (número)" + +#: useradd.8.xml:35(para) newusers.8.xml:35(para) login.defs.5.xml:35(para) +msgid "" +"Range of user IDs used for the creation of regular users by useradd<" +"/command> or newusers." +msgstr "" +"Alcance de IDs de utilizador usados para a criação de utilizadores regulares " +"por useradd, ou newusers." + +#: useradd.8.xml:39(para) newusers.8.xml:39(para) login.defs.5.xml:39(para) +msgid "" +"The default value for (resp. ) is 1000 (resp. 60000)." +msgstr "" +"O valor predefinido para (resp. (number)" +msgstr " (número)" + +#: useradd.8.xml:34(para) newusers.8.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"The file mode creation mask is initialized to this value. If not specified," +" the mask will be initialized to 022." +msgstr "" +"A máscara de criação de modo de ficheiro é inicializada para este valor. Se " +"não especificado, a máscara será inicializada para 022." + +#: useradd.8.xml:38(para) newusers.8.xml:38(para) login.defs.5.xml:38(para) login.1.xml:38(para) +msgid "" +"useradd and newusers use this mask to" +" set the mode of the home directory they create if " +" is not set." +msgstr "" +"useradd e newusers usam esta máscara " +"para definir o modo do directório home que criam se " +" não estiver definido." + +#: useradd.8.xml:43(para) newusers.8.xml:43(para) login.defs.5.xml:43(para) login.1.xml:43(para) +msgid "" +"It is also used by login to define users' initial umask." +" Note that this mask can be overridden by the user's GECOS line (if QUOTAS_ENAB is set) or by the specification of a limit with the <" +"emphasis>K identifier in limits<" +"/refentrytitle>5." +msgstr "" +"É também usado por login para definir a umask inicial " +"do utilizador. Note que esta máscara pode ser sobreposta pela linha GECOS " +"do utilizador (se estiver definida) ou pela " +"especificação de um limite com o identificador K em " +"limits5." + +#: useradd.8.xml:51(para) newusers.8.xml:51(para) login.defs.5.xml:51(para) login.1.xml:51(para) +msgid "" +"It is also used by pam_umask as the default umask value." +msgstr "" +"É também usado pelo pam_umask como o valor umask " +"predefinido." + +#: useradd.8.xml:733(filename) +msgid "/etc/default/useradd" +msgstr "/etc/default/useradd" + +#: useradd.8.xml:735(para) +msgid "Default values for account creation." +msgstr "Valores predefinidos para criação de conta." + +#: useradd.8.xml:739(filename) +msgid "/etc/skel/" +msgstr "/etc/skel/" + +#: useradd.8.xml:741(para) +msgid "Directory containing default files." +msgstr "Directório que contém ficheiros predefinidos." + +#: useradd.8.xml:789(replaceable) shadow.3.xml:58(manvolnum) pwck.8.xml:326(replaceable) passwd.1.xml:466(replaceable) grpck.8.xml:268(replaceable) groupmod.8.xml:269(replaceable) groupadd.8.xml:313(replaceable) +msgid "3" +msgstr "3" + +#: useradd.8.xml:791(para) passwd.1.xml:486(para) groupadd.8.xml:315(para) msgid "invalid argument to option" msgstr "Argumento inválido para opção" -#. (itstool) path: term/replaceable -#: groupadd.8.xml.out:321 groupmod.8.xml.out:277 grpck.8.xml.out:261 -#: passwd.1.xml.out:471 pwck.8.xml.out:311 useradd.8.xml.out:855 +#: useradd.8.xml:795(replaceable) pwck.8.xml:332(replaceable) passwd.1.xml:472(replaceable) grpck.8.xml:274(replaceable) groupmod.8.xml:275(replaceable) groupadd.8.xml:319(replaceable) msgid "4" msgstr "4" -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:323 -#, fuzzy -#| msgid "UID already in use (and no )" -msgid "GID is already used (when called without <_:option-1/>)" +#: useradd.8.xml:797(para) +msgid "UID already in use (and no )" msgstr "UID já em uso (e nenhum )" -#. (itstool) path: term/replaceable -#: groupadd.8.xml.out:327 groupmod.8.xml.out:289 useradd.8.xml.out:867 -msgid "9" -msgstr "9" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:329 -#, fuzzy -#| msgid "username already in use" -msgid "group name is already used" -msgstr "nome de utilizador já em uso" - -#. (itstool) path: listitem/para -#: groupadd.8.xml.out:335 groupdel.8.xml.out:194 useradd.8.xml.out:875 -#: userdel.8.xml.out:267 -msgid "can't update group file" -msgstr "incapaz de actualizar o ficheiro de grupo" - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: varlistentry/term -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: groupadd.8.xml.out:369 groupdel.8.xml.out:226 groupmems.8.xml.out:227 -#: groupmod.8.xml.out:350 login.defs.5.xml.out:499 useradd.8.xml.out:933 -#: userdel.8.xml.out:39 userdel.8.xml.out:46 userdel.8.xml.out:51 -#: userdel.8.xml.out:62 userdel.8.xml.out:71 userdel.8.xml.out:82 -#: userdel.8.xml.out:211 userdel.8.xml.out:232 userdel.8.xml.out:283 -#: userdel.8.xml.out:298 userdel.8.xml.out:300 usermod.8.xml.out:660 -msgid "userdel" -msgstr "userdel" - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: varlistentry/term -#. (itstool) path: para/command -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#: groupadd.8.xml.out:372 groupdel.8.xml.out:229 groupmems.8.xml.out:230 -#: groupmod.8.xml.out:353 login.defs.5.xml.out:509 passwd.1.xml.out:513 -#: pwck.8.xml.out:140 pwck.8.xml.out:348 useradd.8.xml.out:936 -#: userdel.8.xml.out:345 usermod.8.xml.out:40 usermod.8.xml.out:47 -#: usermod.8.xml.out:53 usermod.8.xml.out:64 usermod.8.xml.out:72 -#: usermod.8.xml.out:263 usermod.8.xml.out:539 -msgid "usermod" -msgstr "usermod" - -#. (itstool) path: refsect1/para -#: groupadd.8.xml.out:344 groupmod.8.xml.out:324 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:" -"citerefentry-10/>." -msgstr "" - -#. (itstool) path: refnamediv/refpurpose -#: groupdel.8.xml.out:42 -msgid "delete a group" -msgstr "apaga um grupo" - -#. (itstool) path: arg/replaceable -#. (itstool) path: para/replaceable -#. (itstool) path: para/emphasis -#. (itstool) path: term/replaceable -#. (itstool) path: para/option -#: groupdel.8.xml.out:51 groupdel.8.xml.out:59 groupmod.8.xml.out:51 -#: groupmod.8.xml.out:59 groupmod.8.xml.out:86 groupmod.8.xml.out:102 -#: groupmod.8.xml.out:125 suauth.5.xml.out:85 suauth.5.xml.out:87 -#: useradd.8.xml.out:230 useradd.8.xml.out:249 useradd.8.xml.out:394 -#: useradd.8.xml.out:659 useradd.8.xml.out:668 usermod.8.xml.out:174 -msgid "GROUP" -msgstr "GRUPO" - -#. (itstool) path: refsect1/para -#: groupdel.8.xml.out:57 -#, fuzzy -#| msgid "" -#| "The groupdel command modifies the system account " -#| "files, deleting all entries that refer to GROUP. The named group must exist." -msgid "" -"The <_:command-1/> command modifies the system account files, deleting all " -"entries that refer to <_:replaceable-2/>. The named group must exist." -msgstr "" -"O comando groupdel modifica os ficheiros de contas do " -"sistema, apagando todas as entradas que se referem a GROUP. O grupo nomeado tem de existir." - -#. (itstool) path: listitem/para -#: groupdel.8.xml.out:75 -msgid "" -"This option forces the removal of the group, even if there's some user " -"having the group as the primary one." -msgstr "" - -#. (itstool) path: listitem/para -#: groupdel.8.xml.out:105 groupmod.8.xml.out:180 userdel.8.xml.out:139 -#, fuzzy -#| msgid "" -#| "Apply changes in the PREFIX_DIR directory and " -#| "use the configuration files from the PREFIX_DIR directory. This option does not chroot and is intended for " -#| "preparing a cross-compilation target. Some limitations: NIS and LDAP " -#| "users/groups are not verified. PAM authentication is using the host " -#| "files. No SELINUX support." -msgid "" -"Apply changes in the <_:replaceable-1/> directory and use the configuration " -"files from the <_:replaceable-2/> directory. This option does not chroot and " -"is intended for preparing a cross-compilation target. Some limitations: NIS " -"and LDAP users/groups are not verified. PAM authentication is using the host " -"files. No SELINUX support." -msgstr "" -"Aplica alterações no directório PREFIX_DIR e usa " -"os ficheiro de configuração do directório PREFIX_DIR. Esta opção não faz chroot e destina-se à preparação de um alvo " -"de compilação cruzada. Algumas limitações: Os utilizadores/grupos NIS e LDAP " -"não são verificados. A autenticação PAM usa os ficheiros do anfitrião. Não " -"há suporte a SELINUX." - -#. (itstool) path: refsect1/para -#: groupdel.8.xml.out:122 -msgid "" -"You may not remove the primary group of any existing user. You must remove " -"the user before you remove the group." -msgstr "" -"Você não pode remover o grupo primário de um utilizador existente. Você tem " -"de remover o utilizador antes de remover o grupo." - -#. (itstool) path: refsect1/para -#: groupdel.8.xml.out:126 -msgid "" -"You should manually check all file systems to ensure that no files remain " -"owned by this group." -msgstr "" -"Você deve verificar manualmente todos os sistemas para assegurar que não " -"restam ficheiros possuídos por este grupo." - -#. (itstool) path: term/replaceable -#: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:483 -#: pwck.8.xml.out:323 useradd.8.xml.out:861 userdel.8.xml.out:253 -msgid "6" -msgstr "6" - -#. (itstool) path: listitem/para -#: groupdel.8.xml.out:182 useradd.8.xml.out:863 +#: useradd.8.xml:803(para) groupdel.8.xml:194(para) msgid "specified group doesn't exist" msgstr "grupos especificado não existe" -#. (itstool) path: listitem/para -#: groupdel.8.xml.out:188 -msgid "can't remove user's primary group" -msgstr "incapaz de remover o grupo primário do utilizador" +#: useradd.8.xml:807(replaceable) groupmod.8.xml:287(replaceable) groupadd.8.xml:325(replaceable) +msgid "9" +msgstr "9" -#. (itstool) path: refsect1/para -#: groupdel.8.xml.out:203 login.1.xml.out:375 shadow.5.xml.out:260 +#: useradd.8.xml:809(para) +msgid "username already in use" +msgstr "nome de utilizador já em uso" + +#: useradd.8.xml:821(para) +msgid "can't create home directory" +msgstr "incapaz de criar o directório home" + +#: useradd.8.xml:825(replaceable) +msgid "14" +msgstr "14" + +#: useradd.8.xml:827(para) +msgid "can't update SELinux user mapping" +msgstr "incapaz de actualizar mapeamento de utilizador SELinux" + +#: useradd.8.xml:767(para) msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>." +"The useradd command exits with the following values: <" +"placeholder-1/>" msgstr "" +"O comando useradd termina com os seguintes valores: " +"" -#. (itstool) path: author/firstname -#: groupmems.8.xml.out:18 -msgid "George" -msgstr "George" - -#. (itstool) path: author/surname -#: groupmems.8.xml.out:19 -msgid "Kraft" -msgstr "Kraft" - -#. (itstool) path: author/lineage -#: groupmems.8.xml.out:20 -msgid "IV" -msgstr "IV" - -#. (itstool) path: author/contrib -#: groupmems.8.xml.out:21 -msgid "Creation, 2000" -msgstr "Criação, 2000" - -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#. (itstool) path: varlistentry/term -#: groupmems.8.xml.out:37 groupmems.8.xml.out:44 groupmems.8.xml.out:50 -#: groupmems.8.xml.out:63 groupmems.8.xml.out:65 groupmems.8.xml.out:71 -#: groupmems.8.xml.out:78 groupmems.8.xml.out:159 groupmems.8.xml.out:163 -#: login.defs.5.xml.out:318 -msgid "groupmems" -msgstr "groupmems" - -#. (itstool) path: refnamediv/refpurpose -#: groupmems.8.xml.out:45 -msgid "administer members of a user's primary group" -msgstr "membros administrativos de um grupo primário de utilizador." - -#. (itstool) path: group/arg -#: groupmems.8.xml.out:52 -#, fuzzy -#| msgid "-a " -msgid "-a <_:replaceable-1/>" -msgstr "-a " - -#. (itstool) path: group/arg -#: groupmems.8.xml.out:53 -#, fuzzy -#| msgid "-d " -msgid "-d <_:replaceable-1/>" -msgstr "-d " - -#. (itstool) path: group/arg -#: groupmems.8.xml.out:54 -#, fuzzy -#| msgid "-g " -msgid "-g <_:replaceable-1/>" -msgstr "-g " - -#. (itstool) path: refsect1/para -#: groupmems.8.xml.out:62 -#, fuzzy -#| msgid "" -#| "The groupmems command allows a user to administer " -#| "their own group membership list without the requirement of superuser " -#| "privileges. The groupmems utility is for systems that " -#| "configure its users to be in their own name sake primary group (i.e., " -#| "guest / guest)." +#: useradd.8.xml:836(para) msgid "" -"The <_:command-1/> command allows a user to administer their own group " -"membership list without the requirement of superuser privileges. The <_:" -"command-2/> utility is for systems that configure its users to be in their " -"own name sake primary group (i.e., guest / guest)." +"chfn1<" +"/citerefentry>, chsh1, passwd<" +"/refentrytitle>1, <" +"refentrytitle>crypt3, <" +"citerefentry>groupadd8<" +"/citerefentry>, groupdel<" +"manvolnum>8, groupmod8, <" +"citerefentry>login.defs5, newusers<" +"manvolnum>8, <" +"citerefentry>subgid5<" +"/citerefentry>, subuid5, userdel<" +"/refentrytitle>8, <" +"refentrytitle>usermod8." msgstr "" -"O comando groupmems permite a um utilizador administrar a " -"lista de membros do seu próprio grupo sem os requerimentos dos privilégios " -"do super-utilizador. O utilitário groupmems serve para " -"sistemas que configuram os seus utilizadores para terem o seu nome próprio e " -"para pertencerem ao seu próprio grupo primário (isto é, guest / guest)." +"chfn1<" +"/citerefentry>, chsh1, passwd<" +"/refentrytitle>1, <" +"refentrytitle>crypt3, <" +"citerefentry>groupadd8<" +"/citerefentry>, groupdel<" +"manvolnum>8, groupmod8, <" +"citerefentry>login.defs5, newusers<" +"manvolnum>8, <" +"citerefentry>subgid5<" +"/citerefentry>, subuid5, userdel<" +"/refentrytitle>8, <" +"refentrytitle>usermod8." -#. (itstool) path: refsect1/para -#: groupmems.8.xml.out:70 -#, fuzzy -#| msgid "" -#| "Only the superuser, as administrator, can use groupmems to alter the memberships of other groups." +#: suauth.5.xml:41(contrib) pwconv.8.xml:47(contrib) login.access.5.xml:42(contrib) gpasswd.1.xml:46(contrib) +msgid "Creation, 1996" +msgstr "Criação, 1996" + +#: suauth.5.xml:57(refentrytitle) suauth.5.xml:64(refname) +msgid "suauth" +msgstr "suauth" + +#: suauth.5.xml:58(manvolnum) shadow.5.xml:58(manvolnum) pwck.8.xml:338(replaceable) porttime.5.xml:58(manvolnum) passwd.5.xml:58(manvolnum) passwd.1.xml:478(replaceable) login.defs.5.xml:125(manvolnum) login.access.5.xml:59(manvolnum) limits.5.xml:60(manvolnum) gshadow.5.xml:47(manvolnum) grpck.8.xml:280(replaceable) faillog.5.xml:58(manvolnum) +msgid "5" +msgstr "5" + +#: suauth.5.xml:59(refmiscinfo) shadow.5.xml:59(refmiscinfo) porttime.5.xml:59(refmiscinfo) passwd.5.xml:59(refmiscinfo) login.defs.5.xml:126(refmiscinfo) login.access.5.xml:60(refmiscinfo) limits.5.xml:61(refmiscinfo) gshadow.5.xml:48(refmiscinfo) faillog.5.xml:59(refmiscinfo) +msgid "File Formats and Conversions" +msgstr "Formatos de Ficheiros e Conversões" + +#: suauth.5.xml:65(refpurpose) +msgid "detailed su control file" +msgstr "ficheiro de controle su detalhado" + +#: suauth.5.xml:70(command) suauth.5.xml:196(filename) +msgid "/etc/suauth" +msgstr "/etc/suauth" + +#: suauth.5.xml:76(para) msgid "" -"Only the superuser, as administrator, can use <_:command-1/> to alter the " -"memberships of other groups." +"The file /etc/suauth is referenced whenever the su" +" command is called. It can change the behaviour of the su command, based upon:" msgstr "" -"Apenas o super-utilizador, como administrador, pode usar groupmems par alterar a lista de membros dos outros grupos." +"O ficheiro /etc/suauth é referenciado sempre que o " +"comando su é chamado. Ele pode mudar o comportamento do comando su, com " +"base em:" -#. (itstool) path: listitem/para -#: groupmems.8.xml.out:85 -msgid "Add a user to the group membership list." -msgstr "Adiciona um utilizador à lista de membros do grupo." +#. .RS +#: suauth.5.xml:83(literallayout) +#, no-wrap +msgid "\n 1) the user su is targeting\n " +msgstr "\n 1) no utilizador que o su está a apontar\n " -#. (itstool) path: listitem/para -#: groupmems.8.xml.out:86 groupmems.8.xml.out:102 groupmems.8.xml.out:133 -#, fuzzy -#| msgid "" -#| "If the /etc/gshadow file exist, and the group has no " -#| "entry in the /etc/gshadow file, a new entry will be " -#| "created." +#. .fi +#: suauth.5.xml:87(para) msgid "" -"If the <_:filename-1/> file exist, and the group has no entry in the <_:" -"filename-2/> file, a new entry will be created." +"2) the user executing the su command (or any groups he might be a member of)" msgstr "" -"Se o ficheiro /etc/gshadow existir, e o grupo não tiver " -"uma entrada no ficheiro /etc/gshadow, será criada uma " -"nova entrada." +"2) no utilizador que executa o comando su (ou quaisquer grupos de que ele " +"possa ser membro)" -#. (itstool) path: listitem/para -#: groupmems.8.xml.out:96 -msgid "Delete a user from the group membership list." -msgstr "Apaga um utilizador da lista de membros de grupo." - -#. (itstool) path: listitem/para -#: groupmems.8.xml.out:97 -#, fuzzy -#| msgid "" -#| "If the /etc/gshadow file exist, the user will be " -#| "removed from the list of members and administrators of the group." +#: suauth.5.xml:92(para) msgid "" -"If the <_:filename-1/> file exist, the user will be removed from the list of " -"members and administrators of the group." +"The file is formatted like this, with lines starting with a # being treated" +" as comment lines and ignored;" msgstr "" -"Se o ficheiro /etc/gshadow existir, o utilizador será " -"removido da lista de membros e administradores do grupo." +"O ficheiro é formatado como isto, com as linhas começadas com # a serem " +"tratadas como comentários e ignoradas." -#. (itstool) path: term/option -#: groupmems.8.xml.out:110 vipw.8.xml.out:90 -#, fuzzy -#| msgid "group" -msgid "--group" -msgstr "group" +#: suauth.5.xml:97(literallayout) +#, no-wrap +msgid "\n to-id:from-id:ACTION\n " +msgstr "\n to-id:from-id:ACTION\n " -#. (itstool) path: listitem/para -#: groupmems.8.xml.out:112 -msgid "The superuser can specify which group membership list to modify." -msgstr "" -"O super-utilizador pode especificar a lista de membros de grupo a modificar." - -#. (itstool) path: listitem/para -#: groupmems.8.xml.out:126 -msgid "List the group membership list." -msgstr "Lista a lista de membros do grupo." - -#. (itstool) path: term/option -#: groupmems.8.xml.out:130 -msgid "--purge" -msgstr "" - -#. (itstool) path: listitem/para -#: groupmems.8.xml.out:132 -msgid "Purge all users from the group membership list." -msgstr "Purga todos os utilizadores da lista de membros de grupo." - -#. (itstool) path: refsect1/title -#: groupmems.8.xml.out:157 -msgid "SETUP" -msgstr "CONFIGURAÇÃO" - -#. (itstool) path: para/literal -#: groupmems.8.xml.out:160 -msgid "2710" -msgstr "" - -#. (itstool) path: para/emphasis -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: groupmems.8.xml.out:161 groupmems.8.xml.out:162 groups.1.xml.out:33 -#: groups.1.xml.out:40 groups.1.xml.out:46 groups.1.xml.out:56 -msgid "groups" -msgstr "groups" - -#. (itstool) path: refsect1/para -#: groupmems.8.xml.out:158 -#, fuzzy -#| msgid "" -#| "The groupmems executable should be in mode " -#| "2710 as user root and in group " -#| "groups. The system administrator can add users to " -#| "group groups to allow or disallow them using the " -#| "groupmems utility to manage their own group membership " -#| "list." +#: suauth.5.xml:101(para) msgid "" -"The <_:command-1/> executable should be in mode <_:literal-2/> as user <_:" -"emphasis-3/> and in group <_:emphasis-4/>. The system administrator can add " -"users to group <_:emphasis-5/> to allow or disallow them using the <_:" -"command-6/> utility to manage their own group membership list." +"Where to-id is either the word ALL, a list of usernames" +" delimited by \",\" or the words ALL EXCEPT followed by" +" a list of usernames delimited by \",\"." msgstr "" -"O executável groupmems deve estar em modo 2710 como utilizador root e no grupo " -"groups. O administrador do sistema pode adicionar " -"utilizadores ao grupo groups para permitir ou retirar a " -"permissão destes usarem o utilitário groupmems para gerir " -"a sua própria lista de membros do grupo." +"Onde to-id é ou a palavra ALL, uma lista de nomes de " +"utilizadores delimitados por \",\" ou as palavras ALL EXCEPT seguida por uma lista de nomes de utilizadores delimitados por" +" \",\"." -#. (itstool) path: refsect1/programlisting -#: groupmems.8.xml.out:167 -#, fuzzy -#| msgid "" -#| "\n" -#| "\t$ groupadd -r groups\n" -#| "\t$ chmod 2710 groupmems\n" -#| "\t$ chown root.groups groupmems\n" -#| "\t$ groupmems -g groups -a gk4\n" -#| " " +#: suauth.5.xml:107(para) msgid "" -"$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ " -"groupmems -g groups -a gk4" +"from-id is formatted the same as to-id except the extra word GROUP<" +"/emphasis> is recognized. ALL EXCEPT GROUP is perfectly" +" valid too. Following GROUP appears one or more group" +" names, delimited by \",\". It is not sufficient to have primary group id of" +" the relevant group, an entry in /etc/group<" +"/refentrytitle>5 is necessary." msgstr "" -"\n" -"\t$ groupadd -r groups\n" -"\t$ chmod 2710 groupmems\n" -"\t$ chown root.groups groupmems\n" -"\t$ groupmems -g groups -a gk4\n" -" " +"from-id é formatado igual a to-id excepto que é reconhecida a palavra extra " +"GROUP. ALL EXCEPT GROUP é também " +"perfeitamente válida. A seguir a GROUP aparece um ou " +"mais nomes de grupos, delimitados por \",\". Não é suficiente ter o id de" +" grupo " +"primário do grupo relevante, é necessário uma entrada em <" +"refentrytitle>/etc/group5." -#. (itstool) path: listitem/para -#: groupmems.8.xml.out:199 -msgid "secure group account information" -msgstr "informação de conta de grupo segura" +#: suauth.5.xml:118(para) +msgid "Action can be one only of the following currently supported options." +msgstr "" +"Action pode ser uma apenas das seguintes opções suportadas actualmente." -#. (itstool) path: refsect1/para -#: groupmems.8.xml.out:207 +#: suauth.5.xml:124(emphasis) +msgid "DENY" +msgstr "DENY" + +#: suauth.5.xml:127(para) +msgid "The attempt to su is stopped before a password is even asked for." +msgstr "A tentativa de su é parada antes de ser pedida uma palavra passe." + +#: suauth.5.xml:134(emphasis) +msgid "NOPASS" +msgstr "NOPASS" + +#: suauth.5.xml:137(para) msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>." +"The attempt to su is automatically successful; no password is asked for." msgstr "" +"A tentativa de su tem sucesso automático; nenhuma palavra passe é pedida." -#. (itstool) path: refnamediv/refpurpose -#: groupmod.8.xml.out:42 -msgid "modify a group definition on the system" -msgstr "modifica a definição de um grupo no sistema" +#: suauth.5.xml:145(emphasis) +msgid "OWNPASS" +msgstr "OWNPASS" -#. (itstool) path: refsect1/para -#: groupmod.8.xml.out:57 -#, fuzzy -#| msgid "" -#| "The groupmod command modifies the definition of the " -#| "specified GROUP by modifying the appropriate " -#| "entry in the group database." +#: suauth.5.xml:148(para) msgid "" -"The <_:command-1/> command modifies the definition of the specified <_:" -"replaceable-2/> by modifying the appropriate entry in the group database." +"For the su command to be successful, the user must enter his or her own" +" password. They are told this." msgstr "" -"O comando groupmod modifica a definição do " -"GROUP especificado ao modificar a entrada " -"apropriada na base de dados do grupo." +"Para o comando su ter sucesso, o utilizador tem de inserir a sua própria " +"palavra passe. Eles são informados disso." -#. (itstool) path: term/option -#: groupmod.8.xml.out:73 usermod.8.xml.out:78 -msgid "--append" -msgstr "" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:76 +#: suauth.5.xml:156(para) msgid "" -"If group members are specified with -U, append them to the existing member " -"list, rather than replacing it." +"Note there are three separate fields delimited by a colon. No whitespace must" +" surround this colon. Also note that the file is examined sequentially line" +" by line, and the first applicable rule is used without examining the file" +" further. This makes it possible for a system administrator to exercise as" +" fine control as he or she wishes." msgstr "" +"Note que existem três campos separados delimitados por dois pontos (:). Não " +"podem existir espaços em branco juntos aos dois ponto. Note também que o " +"ficheiro é examinado sequencialmente linha a linha, e a primeira regra " +"aplicável é usada sem examinar o resto do ficheiro. Isto torna possível para " +"um administrador de sistema executar as afinações que desejar." -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:85 -#, fuzzy -#| msgid "" -#| "The group ID of the given GROUP will be " -#| "changed to GID." +#: suauth.5.xml:166(title) +msgid "EXAMPLE" +msgstr "EXEMPLO" + +#: suauth.5.xml:167(literallayout) +#, no-wrap msgid "" -"The group ID of the given <_:replaceable-1/> will be changed to <_:" -"replaceable-2/>." +"\n # sample /etc/suauth file\n #\n # A couple of privileged" +" usernames may\n # su to root with their own password.\n #\n " +" root:chris,birddog:OWNPASS\n #\n # Anyone else may not su to root" +" unless in\n # group wheel. This is how BSD does things.\n #\n " +" root:ALL EXCEPT GROUP wheel:DENY\n #\n # Perhaps terry and birddog" +" are accounts\n # owned by the same person.\n # Access can be" +" arranged between them\n # with no password.\n #\n " +" terry:birddog:NOPASS\n birddog:terry:NOPASS\n #\n " msgstr "" -"I ID de grupo do GROUP fornecido será mudado para " -"GID." +"\n # sample /etc/suauth file\n #\n # A couple of privileged" +" usernames may\n # su to root with their own password.\n #\n " +" root:chris,birddog:OWNPASS\n #\n # Anyone else may not su to root" +" unless in\n # group wheel. This is how BSD does things.\n #\n " +" root:ALL EXCEPT GROUP wheel:DENY\n #\n # Perhaps terry and birddog" +" are accounts\n # owned by the same person.\n # Access can be" +" arranged between them\n # with no password.\n #\n " +" terry:birddog:NOPASS\n birddog:terry:NOPASS\n #\n " -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:89 -#, fuzzy -#| msgid "" -#| "The value of GID must be a non-negative " -#| "decimal integer. This value must be unique, unless the ." +"Pode haver muita coisa escondida. O analisador de ficheiro é particularmente " +"imperdoável com erros de sintaxe, espera nenhum espaço em branco falso " +"(aparte do princípio e final das linhas), e um símbolo específico delimitando " +"as diferentes coisas." -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:95 +#: suauth.5.xml:213(title) shadow.3.xml:208(title) +msgid "DIAGNOSTICS" +msgstr "DIAGNÓSTICOS" + +#: suauth.5.xml:214(para) msgid "" -"Users who use the group as primary group will be updated to keep the group " -"as their primary group." +"An error parsing the file is reported using syslogd8 as level ERR" +" on facility AUTH." msgstr "" -"Os utilizadores que usam o grupo como grupo primário serão actualizados para " -"manterem o grupo como u seu grupo primário." +"Um erro ao analisar o ficheiro é reportado usando syslogd8 como nível " +"ERR em instalação AUTH." -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:99 -#, fuzzy -#| msgid "" -#| "Any files that have the old group ID and must continue to belong to " -#| "GROUP, must have their group ID changed " -#| "manually." +#: suauth.5.xml:223(para) msgid "" -"Any files that have the old group ID and must continue to belong to <_:" -"replaceable-1/>, must have their group ID changed manually." +"su1<" +"/citerefentry>." msgstr "" -"Quaisquer ficheiros que têm o ID de grupo antigo e devem continuar a " -"pertencer ao GROUP, precisam de ter o seu ID de " -"grupo mudado manualmente." +"su1<" +"/citerefentry>." -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:105 usermod.8.xml.out:395 -#, fuzzy -#| msgid "" -#| "No checks will be performed with regard to the , " -#| ", , or " -#| " from /etc/login.defs." -msgid "" -"No checks will be performed with regard to the <_:option-1/>, <_:option-2/>, " -"<_:option-3/>, or <_:option-4/> from <_:filename-5/>." -msgstr "" -"Nenhuma verificação será executada em relação a , " -", , ou " -" a partir de /etc/login.defs." - -#. (itstool) path: term/option -#: groupmod.8.xml.out:121 passwd.1.xml.out:242 -#, fuzzy -#| msgid "-" -msgid "-n" -msgstr "-" - -#. (itstool) path: term/option -#: groupmod.8.xml.out:121 -#, fuzzy -#| msgid "--badname" -msgid "--new-name" -msgstr "--badname" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: groupmod.8.xml.out:121 groupmod.8.xml.out:126 -#, fuzzy -#| msgid "GROUP" -msgid "NEW_GROUP" -msgstr "GRUPO" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:124 -#, fuzzy -#| msgid "" -#| "The name of the group will be changed from GROUP to NEW_GROUP name." -msgid "" -"The name of the group will be changed from <_:replaceable-1/> to <_:" -"replaceable-2/> name." -msgstr "" -"O nome do grupo será alterado de GROUP para " -"NEW_GROUP." - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:135 -#, fuzzy -#| msgid "" -#| "When used with the option, allow to change the group " -#| "GID to a non-unique value." -msgid "" -"When used with the <_:option-1/> option, allow to change the group <_:" -"replaceable-2/> to a non-unique value." -msgstr "" -"Quando usado com a opção , permite mudar o " -"GID do grupo para um valor não-único." - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:146 -msgid "The encrypted password, as returned by <_:citerefentry-1/>." -msgstr "" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:261 -msgid "E_SUCCESS: success" -msgstr "E_SUCCESS: sucesso" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:267 -msgid "E_USAGE: invalid command syntax" -msgstr "E_USAGE: sintaxe inválida de comando" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:273 -msgid "E_BAD_ARG: invalid argument to option" -msgstr "E_BAD_ARG: argumento inválido para a opção" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:279 -#, fuzzy -#| msgid "E_NAME_IN_USE: group name already in use" -msgid "E_GID_IN_USE: group id already in use" -msgstr "E_NAME_IN_USE: nome de grupo já em uso" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:285 -msgid "E_NOTFOUND: specified group doesn't exist" -msgstr "E_NOTFOUND: grupo especificado não existe" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:291 -msgid "E_NAME_IN_USE: group name already in use" -msgstr "E_NAME_IN_USE: nome de grupo já em uso" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:297 -msgid "E_GRP_UPDATE: can't update group file" -msgstr "E_GRP_UPDATE: incapaz de actualizar ficheiro de grupo" - -#. (itstool) path: term/replaceable -#: groupmod.8.xml.out:301 -msgid "11" -msgstr "11" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:303 -msgid "E_CLEANUP_SERVICE: can't setup cleanup service" -msgstr "E_CLEANUP_SERVICE: incapaz de configurar o serviço de limpeza" - -#. (itstool) path: term/replaceable -#: groupmod.8.xml.out:307 useradd.8.xml.out:879 userdel.8.xml.out:271 -msgid "12" -msgstr "12" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:309 -msgid "E_PAM_USERNAME: can't determine your username for use with pam" -msgstr "" -"E_PAM_USERNAME: incapaz de determinar o seu nome de utilizador par usar com " -"o pam" - -#. (itstool) path: term/replaceable -#: groupmod.8.xml.out:313 -msgid "13" -msgstr "13" - -#. (itstool) path: listitem/para -#: groupmod.8.xml.out:315 -msgid "" -"E_PAM_ERROR: pam returned an error, see syslog facility id groupmod for the " -"PAM error message" -msgstr "" -"E_PAM_ERROR: pam retornou um erro, veja a funcionalidade id groupmod no " -"syslog para a mensagem de erro do PAM" - -#. (itstool) path: refnamediv/refpurpose -#: groups.1.xml.out:41 -msgid "display current group names" -msgstr "mostra nomes de grupo actuais" - -#. (itstool) path: refsect1/para -#: groups.1.xml.out:55 -#, fuzzy -#| msgid "" -#| "The groups command displays the current group names or " -#| "ID values. If the value does not have a corresponding entry in /" -#| "etc/group, the value will be displayed as the numerical group " -#| "value. The optional user parameter will " -#| "display the groups for the named user." -msgid "" -"The <_:command-1/> command displays the current group names or ID values. If " -"the value does not have a corresponding entry in <_:filename-2/>, the value " -"will be displayed as the numerical group value. The optional <_:" -"replaceable-3/> parameter will display the groups for the named user." -msgstr "" -"O comando The groups mostra os nomes de grupos actuais ou " -"os valores ID. Se o valor não possuir uma entrada correspondente em " -"/etc/group, o valor será mostrado como um valor " -"numérico de grupo. O parâmetro opcional user irá mostrar os grupos para o user " -"nomeado." - -#. (itstool) path: citerefentry/refentrytitle -#: groups.1.xml.out:68 groups.1.xml.out:104 -#, fuzzy -#| msgid "groups" -msgid "initgroups" -msgstr "groups" - -#. (itstool) path: para/command -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#: groups.1.xml.out:71 newgrp.1.xml.out:139 sg.1.xml.out:34 sg.1.xml.out:41 -#: sg.1.xml.out:47 sg.1.xml.out:59 sg.1.xml.out:62 sg.1.xml.out:64 -#: sg.1.xml.out:67 sg.1.xml.out:68 su.1.xml.out:421 -msgid "sg" -msgstr "sg" - -#. (itstool) path: refsect1/para -#: groups.1.xml.out:66 -#, fuzzy -#| msgid "" -#| "Systems which do not support concurrent group sets will have the " -#| "information from /etc/group reported. The user must " -#| "use newgrp or sg to change his " -#| "current real and effective group ID." -msgid "" -"Systems which do not support supplementary groups (see <_:citerefentry-1/>) " -"will have the information from <_:filename-2/> reported. The user must use " -"<_:command-3/> or <_:command-4/> to change his current real and effective " -"group ID." -msgstr "" -"Os sistemas que não suportam conjuntos de grupos concorrentes irão reportar " -"a informação de /etc/group. O utilizador tem de usar " -"newgrp ou sg para mudar o seu ID de " -"grupo efectivo e real actual." - -#. (itstool) path: citerefentry/refentrytitle -#: groups.1.xml.out:95 -msgid "getgid" -msgstr "" - -#. (itstool) path: citerefentry/refentrytitle -#: groups.1.xml.out:98 -#, fuzzy -#| msgid "groups" -msgid "getgroups" -msgstr "groups" - -#. (itstool) path: citerefentry/refentrytitle -#: groups.1.xml.out:101 -msgid "getuid" -msgstr "" - -#. (itstool) path: refsect1/para -#: groups.1.xml.out:90 gshadow.5.xml.out:151 pwck.8.xml.out:334 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>." -msgstr "" - -#. (itstool) path: author/contrib -#: grpck.8.xml.out:17 lastlog.8.xml.out:19 pwck.8.xml.out:24 -msgid "Creation, 1992" -msgstr "Criação, 1992" - -#. (itstool) path: refnamediv/refpurpose -#: grpck.8.xml.out:41 -msgid "verify integrity of group files" -msgstr "verifica a integridade de ficheiros de grupo" - -#. (itstool) path: para/phrase -#: grpck.8.xml.out:62 grpck.8.xml.out:165 grpck.8.xml.out:185 -msgid "and <_:filename-1/>" -msgstr "" - -#. (itstool) path: refsect1/para -#: grpck.8.xml.out:59 -#, fuzzy -#| msgid "" -#| "The grpck command verifies the integrity of the groups " -#| "information. It checks that all entries in /etc/groupand /etc/gshadow have the proper format and contain valid data. The " -#| "user is prompted to delete entries that are improperly formatted or which " -#| "have other uncorrectable errors." -msgid "" -"The <_:command-1/> command verifies the integrity of the groups information. " -"It checks that all entries in <_:filename-2/> <_:phrase-3/> have the proper " -"format and contain valid data. The user is prompted to delete entries that " -"are improperly formatted or which have other uncorrectable errors." -msgstr "" -"O comando grpck verifica a integridade da informação de " -"grupos. Verifica se todas as entradas em /etc/group e /etc/gshadowtêm o formato apropriado e contêm dados válidos. Ao utilizador é " -"pedido para apagar as entradas que não têm formato apropriado ou que têm " -"outros erros incorrigíveis." - -#. (itstool) path: refsect1/para -#: grpck.8.xml.out:69 pwck.8.xml.out:82 -msgid "Checks are made to verify that each entry has:" -msgstr "São feitos testes para verificar que cada entrada tem:" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:73 pwck.8.xml.out:85 -msgid "the correct number of fields" -msgstr "o número correcto de campos" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:76 -msgid "a unique and valid group name" -msgstr "um nome de grupo único e válido" - -#. (itstool) path: para/phrase -#: grpck.8.xml.out:81 -msgid "(<_:filename-1/> only)" -msgstr "" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:79 -#, fuzzy -#| msgid "a valid user and group identifier" -msgid "a valid group identifier <_:phrase-1/>" -msgstr "um identificador de utilizador e grupo válido" - -#. (itstool) path: para/phrase -#: grpck.8.xml.out:88 -#, fuzzy -#| msgid "administrators" -msgid "and administrators" -msgstr "administradores" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:86 -msgid "a valid list of members <_:phrase-1/>" -msgstr "" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:92 -#, fuzzy -#| msgid "" -#| "a corresponding entry in the /etc/gshadow file " -#| "(respectively /etc/group for the gshadow checks)" -msgid "" -"a corresponding entry in the <_:filename-1/> file (respectively <_:" -"filename-2/> for the <_:filename-3/> checks)" -msgstr "" -"uma entrada correspondente no ficheiro /etc/gshadow " -"(respetivamente /etc/group para as verificações de " -"gshadow)" - -#. (itstool) path: refsect1/para -#: grpck.8.xml.out:100 -#, fuzzy -#| msgid "" -#| "The checks for correct number of fields and unique group name are fatal. " -#| "If an entry has the wrong number of fields, the user will be prompted to " -#| "delete the entire line. If the user does not answer affirmatively, all " -#| "further checks are bypassed. An entry with a duplicated group name is " -#| "prompted for deletion, but the remaining checks will still be made. All " -#| "other errors are warnings and the user is encouraged to run the " -#| "groupmod command to correct the error." -msgid "" -"The checks for correct number of fields and unique group name are fatal. If " -"an entry has the wrong number of fields, the user will be prompted to delete " -"the entire line. If the user does not answer affirmatively, all further " -"checks are bypassed. An entry with a duplicated group name is prompted for " -"deletion, but the remaining checks will still be made. All other errors are " -"warnings and the user is encouraged to run the <_:command-1/> command to " -"correct the error." -msgstr "" -"As verificações para o correcto número de campos e nome de grupo único são " -"fatais. Se a entrada tiver o número errado de campos, será pedido ao " -"utilizador para apagar a linha inteira. Se o utilizador não responder " -"afirmativamente, todos os testes posteriores são saltados. Uma entrada com " -"um nome de grupo duplicado é avisada para remoção, mas os restantes testes " -"continuarão a ser feitos. Todos os outros erros produzem avisos e o " -"utilizador é encorajado a correr o comando groupmod para " -"corrigir o erro." - -#. (itstool) path: para/phrase -#. (itstool) path: arg/replaceable -#. (itstool) path: para/replaceable -#: grpck.8.xml.out:113 newusers.8.xml.out:69 newusers.8.xml.out:77 -msgid "file" -msgstr "file" - -#. (itstool) path: para/phrase -#: grpck.8.xml.out:114 -msgid "and <_:filename-1/> files" -msgstr "" - -#. (itstool) path: refsect1/para -#: grpck.8.xml.out:111 -#, fuzzy -#| msgid "" -#| "The commands which operate on the /etc/passwd file " -#| "are not able to alter corrupted or duplicated entries. pwck should be used in those circumstances to remove the offending " -#| "entry." -msgid "" -"The commands which operate on the <_:filename-1/> <_:phrase-2/><_:phrase-3/> " -"are not able to alter corrupted or duplicated entries. <_:command-4/> should " -"be used in those circumstances to remove the offending entries." -msgstr "" -"Os comandos que operam no ficheiro /etc/passwd não são " -"capazes de alterar entradas corruptas ou duplicadas. Deve ser usado o " -"pwck nestas circunstâncias para remover a entrada " -"ofensiva." - -#. (itstool) path: refsect1/para -#: grpck.8.xml.out:123 pwck.8.xml.out:154 -#, fuzzy -#| msgid "" -#| "The and options cannot be " -#| "combined." -msgid "The <_:option-1/> and <_:option-2/> options cannot be combined." -msgstr "" -"As opções e não podem ser combinadas." - -#. (itstool) path: term/option -#: grpck.8.xml.out:138 pwck.8.xml.out:188 -msgid "--read-only" -msgstr "" - -#. (itstool) path: para/emphasis -#. (itstool) path: para/replaceable -#: grpck.8.xml.out:143 login.defs.5.xml.out:136 login.defs.5.xml.out:138 -#: useradd.8.xml.out:246 -msgid "no" -msgstr "" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:140 -#, fuzzy -#| msgid "" -#| "Execute the grpck command in read-only mode. This " -#| "causes all questions regarding changes to be answered no without user intervention." -msgid "" -"Execute the <_:command-1/> command in read-only mode. This causes all " -"questions regarding changes to be answered <_:emphasis-2/> without user " -"intervention." -msgstr "" -"Executa o comando grpck em modo só-leitura. Isto faz com " -"que todas as perguntas sobre alterações sejam respondidas com não sem a intervenção do utilizador." - -#. (itstool) path: term/option -#: grpck.8.xml.out:161 pwck.8.xml.out:209 -msgid "--sort" -msgstr "" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:163 -msgid "Sort entries in <_:filename-1/> <_:phrase-2/> by GID." -msgstr "" - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:157 -#: passwd.1.xml.out:302 -#, fuzzy -#| msgid "-" -msgid "-S" -msgstr "-" - -#. (itstool) path: term/option -#: grpck.8.xml.out:172 -msgid "--silence-warnings" -msgstr "" - -#. (itstool) path: para/filename -#: grpck.8.xml.out:178 -#, fuzzy -#| msgid "/etc/gshadow" -msgid "/etc/ghadow" -msgstr "/etc/gshadow" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:174 -msgid "" -"Suppress more controversial warnings, in particular warnings about " -"inconsistency between group members listed in <_:filename-1/> and <_:" -"filename-2/>." -msgstr "" - -#. (itstool) path: para/phrase -#: grpck.8.xml.out:189 -msgid "parameter." -msgstr "" - -#. (itstool) path: para/phrase -#: grpck.8.xml.out:190 -msgid "and <_:emphasis-1/> parameters." -msgstr "" - -#. (itstool) path: refsect1/para -#: grpck.8.xml.out:183 -msgid "" -"By default, <_:command-1/> operates on <_:filename-2/> <_:phrase-3/>. The " -"user may select alternate files with the <_:emphasis-4/> <_:phrase-5/> <_:" -"phrase-6/>" -msgstr "" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:251 -msgid "one or more bad group entries" -msgstr "uma ou mais entradas de grupo más" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:257 -msgid "can't open group files" -msgstr "incapaz de abrir ficheiros de grupo" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:263 -msgid "can't lock group files" -msgstr "incapaz de trancar ficheiros de grupo" - -#. (itstool) path: listitem/para -#: grpck.8.xml.out:269 -msgid "can't update group files" -msgstr "incapaz de actualizar ficheiros de grupo" - -#. (itstool) path: phrase/citerefentry -#: grpck.8.xml.out:286 -msgid "<_:refentrytitle-1/><_:manvolnum-2/>," -msgstr "" - -#. (itstool) path: refsect1/para -#: grpck.8.xml.out:278 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>, " -"<_:citerefentry-5/>, <_:citerefentry-6/>." -msgstr "" - -#. (itstool) path: author/contrib -#: gshadow.5.xml.out:17 -msgid "Creation, 2005" -msgstr "Criação, 2005" - -#. (itstool) path: refnamediv/refpurpose -#: gshadow.5.xml.out:30 -msgid "shadowed group file" -msgstr "ficheiro de grupo ensombrado" - -#. (itstool) path: refsect1/para -#: gshadow.5.xml.out:35 -#, fuzzy -#| msgid "" -#| "/etc/gshadow contains the shadowed information for " -#| "group accounts." -msgid "<_:filename-1/> contains the shadowed information for group accounts." -msgstr "" -"/etc/gshadow contém informação ensombrada para contas " -"de grupos." - -#. (itstool) path: refsect1/para -#: gshadow.5.xml.out:40 shadow.5.xml.out:52 -msgid "" -"This file must not be readable by regular users if password security is to " -"be maintained." -msgstr "" -"Este ficheiro não deve poder ser lido por utilizadores regulares se a " -"segurança das palavras passe deve ser mantida." - -#. (itstool) path: refsect1/para -#: gshadow.5.xml.out:45 -msgid "Each line of this file contains the following colon-separated fields:" -msgstr "" -"Cada linha deste ficheiro contém os seguintes campos separados por dois " -"pontos:" - -#. (itstool) path: term/emphasis -#: gshadow.5.xml.out:51 -msgid "group name" -msgstr "nome de grupo" - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:53 -msgid "It must be a valid group name, which exist on the system." -msgstr "Tem de ser um nome de grupo válido, que existe no sistema." - -#. (itstool) path: term/emphasis -#: gshadow.5.xml.out:59 shadow.5.xml.out:72 -msgid "encrypted password" -msgstr "palavra passe encriptada" - -#. (itstool) path: listitem/para -#. (itstool) path: refsect1/para -#: gshadow.5.xml.out:61 passwd.5.xml.out:102 shadow.5.xml.out:87 -#, fuzzy -#| msgid "" -#| "Refer to crypt3 for details on how this string is interpreted." -msgid "" -"Refer to <_:citerefentry-1/> for details on how this string is interpreted." -msgstr "" -"Consulte crypt3 para detalhes em como esta string é interpretada." - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:66 -#, fuzzy -#| msgid "" -#| "If the password field contains some string that is not a valid result of " -#| "crypt3, for instance ! or *, users will not be able to " -#| "use a unix password to access the group (but group members do not need " -#| "the password)." -msgid "" -"If the password field contains some string that is not a valid result of <_:" -"citerefentry-1/>, for instance ! or *, users will not be able to use a unix " -"password to access the group (but group members do not need the password)." -msgstr "" -"Se o campo da palavra passe conter alguma string que não é um resultado " -"válido de crypt3, por exemplo ! ou *, os utilizadores não serão " -"capazes de usar uma palavra passe de unix para aceder ao grupo (mas os " -"membros do grupo não precisam da palavra passe)." - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:73 -#, fuzzy -#| msgid "" -#| "The password is used when a user who is not a member of the group wants " -#| "to gain the permissions of this group (see " -#| "newgrp1)." -msgid "" -"The password is used when a user who is not a member of the group wants to " -"gain the permissions of this group (see <_:citerefentry-1/>)." -msgstr "" -"A palavra passe é usada quando um utilizador que não é membro do grupo quer " -"ganhar permissões desse grupo (veja newgrp1)." - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:79 -msgid "" -"This field may be empty, in which case only the group members can gain the " -"group permissions." -msgstr "" -"Este campo pode estar vazio, o que nesse caso apenas os membros do grupo " -"podem ganhar as permissões do grupo." - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:83 shadow.5.xml.out:81 -msgid "" -"A password field which starts with an exclamation mark means that the " -"password is locked. The remaining characters on the line represent the " -"password field before the password was locked." -msgstr "" -"Um campo de palavra passe que comece com um ponto de exclamação significa " -"que a palavra passe está trancada. Os restantes caracteres da linha " -"representam o campo da palavra passe antes da palavra passe ser trancada." - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:89 -#, fuzzy -#| msgid "" -#| "This password supersedes any password specified in /etc/group." -msgid "This password supersedes any password specified in <_:filename-1/>." -msgstr "" -"Esta palavra passe sobrepõe-se a qualquer palavra passe especificada em " -"/etc/group." - -#. (itstool) path: term/emphasis -#: gshadow.5.xml.out:97 -msgid "administrators" -msgstr "administradores" - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:99 gshadow.5.xml.out:115 -msgid "It must be a comma-separated list of user names." -msgstr "Tem de ser uma lista de nomes de utilizadores separados por vírgulas." - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:102 -msgid "Administrators can change the password or the members of the group." -msgstr "Os administradores podem mudar a palavra passe dos membros do grupo." - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:106 -msgid "" -"Administrators also have the same permissions as the members (see below)." -msgstr "" -"Os administradores também têm as mesmas permissões que os membros (veja em " -"baixo)." - -#. (itstool) path: term/emphasis -#: gshadow.5.xml.out:113 -msgid "members" -msgstr "membros" - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:118 -msgid "Members can access the group without being prompted for a password." -msgstr "" -"Os membros podem aceder ao grupo sem lhes ser pedida uma palavra passe." - -#. (itstool) path: listitem/para -#: gshadow.5.xml.out:122 -#, fuzzy -#| msgid "" -#| "You should use the same list of users as in /etc/group." -msgid "You should use the same list of users as in <_:filename-1/>." -msgstr "" -"Você deve usar a mesma lista de utilizadores que em /etc/group." - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: varlistentry/term -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: gshadow.5.xml.out:162 login.defs.5.xml.out:337 pwconv.8.xml.out:48 -#: pwconv.8.xml.out:67 pwconv.8.xml.out:113 pwconv.8.xml.out:134 -#: pwconv.8.xml.out:166 pwconv.8.xml.out:208 -msgid "grpconv" -msgstr "grpconv" - -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#. (itstool) path: para/filename -#. (itstool) path: varlistentry/term -#: lastlog.8.xml.out:35 lastlog.8.xml.out:42 lastlog.8.xml.out:48 -#: lastlog.8.xml.out:58 lastlog.8.xml.out:70 lastlog.8.xml.out:172 -#: login.defs.5.xml.out:350 -msgid "lastlog" -msgstr "lastlog" - -#. (itstool) path: refnamediv/refpurpose -#: lastlog.8.xml.out:43 -msgid "reports the most recent login of all users or of a given user" -msgstr "" -"reporta o login mais recente de todos os utilizadores ou de um dado " -"utilizador." - -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: lastlog.8.xml.out:59 lastlog.8.xml.out:197 lastlog.8.xml.out:214 -msgid "/var/log/lastlog" -msgstr "/var/log/lastlog" - -#. (itstool) path: para/emphasis -#: lastlog.8.xml.out:60 -#, fuzzy -#| msgid "login name" -msgid "login-name" -msgstr "nome de login" - -#. (itstool) path: para/emphasis -#: lastlog.8.xml.out:60 -#, fuzzy -#| msgid "porttime" -msgid "port" -msgstr "porttime" - -#. (itstool) path: para/emphasis -#: lastlog.8.xml.out:61 -#, fuzzy -#| msgid "login name" -msgid "last login time" -msgstr "nome de login" - -#. (itstool) path: refsect1/para -#: lastlog.8.xml.out:57 -#, fuzzy -#| msgid "" -#| "lastlog formats and prints the contents of the last " -#| "login log /var/log/lastlog file. The login-" -#| "name, port, and last login " -#| "time will be printed. The default (no flags) causes lastlog " -#| "entries to be printed, sorted by their order in /etc/passwd." -msgid "" -"<_:command-1/> formats and prints the contents of the last login log <_:" -"filename-2/> file. The <_:emphasis-3/>, <_:emphasis-4/>, and <_:emphasis-5/> " -"will be printed. The default (no flags) causes lastlog entries to be " -"printed, sorted by their order in <_:filename-6/>." -msgstr "" -"lastlog formata e escreve o conteúdo do ficheiro de " -"relatório do último login /var/log/lastlog. Serão " -"escritos os login-name, port, e " -"last login time. A predefinição (sem bandeiras) faz com " -"que as entradas do lastlog sejam escritas, ordenadas pela ordem em " -"/etc/passwd." - -#. (itstool) path: term/option -#: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:612 -#: usermod.8.xml.out:89 -#, fuzzy -#| msgid "-" -msgid "-b" -msgstr "-" - -#. (itstool) path: term/option -#: lastlog.8.xml.out:75 -msgid "--before" -msgstr "" - -#. (itstool) path: listitem/para -#: lastlog.8.xml.out:78 -#, fuzzy -#| msgid "" -#| "Print only lastlog records older than DAYS." -msgid "Print only lastlog records older than <_:replaceable-1/>." -msgstr "" -"Escreve apenas registos do lastlog mais antigos que DAYS." - -#. (itstool) path: term/option -#: lastlog.8.xml.out:85 -#, fuzzy -#| msgid "-" -msgid "-C" -msgstr "-" - -#. (itstool) path: term/option -#: lastlog.8.xml.out:85 -msgid "--clear" -msgstr "" - -#. (itstool) path: listitem/para -#: lastlog.8.xml.out:88 -#, fuzzy -#| msgid "" -#| "Clear lastlog record of a user. This option can be used only together " -#| "with ())." -msgid "" -"Clear lastlog record of a user. This option can be used only together with " -"<_:option-1/> (<_:option-2/>))." -msgstr "" -"Limpa o registo do lastlog de um utilizador. Esta opção só pode ser usada " -"juntamente com ()." - -#. (itstool) path: term/option -#: lastlog.8.xml.out:117 -msgid "--set" -msgstr "" - -#. (itstool) path: listitem/para -#: lastlog.8.xml.out:120 -#, fuzzy -#| msgid "" -#| "Set lastlog record of a user to the current time. This option can be used " -#| "only together with ())." -msgid "" -"Set lastlog record of a user to the current time. This option can be used " -"only together with <_:option-1/> (<_:option-2/>))." -msgstr "" -"Define o registo de lastlog de um utilizador par a a hora actual. Esta opção " -"só pode ser usada juntamente com ( argument to stop option parsing. The " +" option is special: it is also recognized after , but has" +" to be placed before ." msgstr "" -"Para desactivar um limite para um utilizador, pode ser usado um único traço " -"\"-\" em vez do valor numérico para este limite." +"As opções são reconhecidas em qualquer sítio na lista de argumentos. Você " +"pode usar o argumento para parar a análise de opções. A " +"opção é especial: é também reconhecida após " +", mas tem de ser colocada antes de definitions in /etc/login.defs." msgstr "" -"O programa login é usado para estabelecer uma nova sessão " -"com o sistema. É normalmente invocado automaticamente quando se responde ao " -"pedido login: no terminal do utilizador. " -"login pode ser especial para a shell e pode não ser " -"invocado como um sub-processo. Quando chamado a partir da shell, " -"login deve ser executado como exec " -"login o que irá fazer com que o utilizador saia da shell actual " -"(e assim previne-se que o novo utilizador acabado de iniciar sessão retorne " -"à sessão do chamador). Tentar executar login a partir de " -"qualquer shell que não seja a shell de login irá produzir uma mensagem de " -"erro." +"O ambiente actual é passado para a nova shell. O valor de $PATH é reiniciado para /bin:/usr/bin para utilizadores " +"normais, ou /sbin:/bin:/usr/sbin:/usr/bin para o super-" +"utilizador. Isto pode ser alterado com as definições em /etc/login.defs." -#. (itstool) path: refsect1/para -#: login.1.xml.out:116 -#, fuzzy -#| msgid "" -#| "The user is then prompted for a password, where appropriate. Echoing is " -#| "disabled to prevent revealing the password. Only a small number of " -#| "password failures are permitted before login exits and " -#| "the communications link is severed." +#: su.1.xml:136(para) login.1.xml:188(para) msgid "" -"The user is then prompted for a password, where appropriate. Echoing is " -"disabled to prevent revealing the password. Only a small number of password " -"failures are permitted before <_:command-1/> exits and the communications " -"link is severed." -msgstr "" -"Ao utilizador é então pedida uma palavra passe, onde apropriado. O eco é " -"desactivado para impedir a revelação da palavra passe. Apenas um pequeno " -"número de falhas de palavra passe é permitido antes de login terminar e a ligação de comunicação ser interrompida." - -#. (itstool) path: refsect1/para -#: login.1.xml.out:123 -#, fuzzy -#| msgid "" -#| "If password aging has been enabled for your account, you may be prompted " -#| "for a new password before proceeding. You will be forced to provide your " -#| "old password and the new password before continuing. Please refer to " -#| "passwd1 for more information." -msgid "" -"If password aging has been enabled for your account, you may be prompted for " -"a new password before proceeding. You will be forced to provide your old " -"password and the new password before continuing. Please refer to <_:" -"citerefentry-1/> for more information." -msgstr "" -"Se o envelhecimento de palavra passe foi activado para a sua conta, poderá " -"ser-lhe pedida uma nova palavra passe antes de prosseguir. Você irá ser " -"obrigado a fornecer a palavra passe antiga e a nova palavra passe antes de " -"continuar. Por favor consulte passwd1 para mais informação." - -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: login.1.xml.out:135 login.1.xml.out:341 -msgid "/etc/motd" -msgstr "/etc/motd" - -#. (itstool) path: para/filename -#: login.1.xml.out:136 -#, fuzzy -#| msgid "$HOME/.hushlogin" -msgid ".hushlogin" -msgstr "$HOME/.hushlogin" - -#. (itstool) path: para/emphasis -#: login.1.xml.out:137 -msgid "You have new mail." -msgstr "" - -#. (itstool) path: para/emphasis -#: login.1.xml.out:138 -msgid "You have mail." -msgstr "" - -#. (itstool) path: para/emphasis -#: login.1.xml.out:139 -msgid "No Mail." -msgstr "" - -#. (itstool) path: refsect1/para -#: login.1.xml.out:132 -#, fuzzy -#| msgid "" -#| "After a successful login, you will be informed of any system messages and " -#| "the presence of mail. You may turn off the printing of the system message " -#| "file, /etc/motd, by creating a zero-length file " -#| ".hushlogin in your login directory. The mail message " -#| "will be one of \"You have new mail.\", " -#| "\"You have mail.\", or \"No Mail.\" according to the condition of your mailbox." -msgid "" -"After a successful login, you will be informed of any system messages and " -"the presence of mail. You may turn off the printing of the system message " -"file, <_:filename-1/>, by creating a zero-length file <_:filename-2/> in " -"your login directory. The mail message will be one of \"<_:emphasis-3/>\", " -"\"<_:emphasis-4/>\", or \"<_:emphasis-5/>\" according to the condition of " -"your mailbox." -msgstr "" -"Após um login com sucesso, você será informado de quaisquer mensagens do " -"sistema e da presença de mail. Você pode desligar o escrever no ficheiro de " -"mensagens de sistema, /etc/motd, ao criar um ficheiro " -"de tamanho-zero .hushlogin no seu directório de login. " -"A mensagem de mail será uma de \"You have new mail.\", " -"\"You have mail.\", ou \"No Mail.\" de acordo coma condição da caixa de mail." - -#. (itstool) path: para/envar -#: login.1.xml.out:146 passwd.5.xml.out:126 su.1.xml.out:247 -msgid "$HOME" -msgstr "" - -#. (itstool) path: para/envar -#: login.1.xml.out:146 passwd.5.xml.out:133 su.1.xml.out:179 su.1.xml.out:199 -#: su.1.xml.out:247 -msgid "$SHELL" -msgstr "" - -#. (itstool) path: para/envar -#. (itstool) path: term/envar -#: login.1.xml.out:146 su.1.xml.out:105 su.1.xml.out:215 su.1.xml.out:249 -msgid "$PATH" -msgstr "$PATH" - -#. (itstool) path: para/envar -#: login.1.xml.out:147 su.1.xml.out:248 -msgid "$LOGNAME" -msgstr "" - -#. (itstool) path: para/envar -#: login.1.xml.out:147 su.1.xml.out:275 -msgid "$MAIL" -msgstr "" - -#. (itstool) path: refsect1/para -#: login.1.xml.out:143 -#, fuzzy -#| msgid "" -#| "Your user and group ID will be set according to their values in the " -#| "/etc/passwd file. The value for $HOME, $SHELL, $PATH, $LOGNAME, and $MAIL are set according to the appropriate " -#| "fields in the password entry. Ulimit, umask and nice values may also be " -#| "set according to entries in the GECOS field." -msgid "" -"Your user and group ID will be set according to their values in the <_:" -"filename-1/> file. The value for <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, " -"<_:envar-5/>, and <_:envar-6/> are set according to the appropriate fields " -"in the password entry. Ulimit, umask and nice values may also be set " -"according to entries in the GECOS field." -msgstr "" -"O seu ID de utilizador e grupo irão ser definidos de acordo com os seus " -"valores no ficheiro /etc/passwd. O valor para " -"$HOME, $SHELL, $PATH, " -"$LOGNAME, e $MAIL são definidos de acordo com " -"os campos apropriados na entrada password. Os valores ulimit, umask e nice " -"podem também ser definidos de acordo com as entradas no campo GECOS." - -#. (itstool) path: para/envar -#: login.1.xml.out:154 su.1.xml.out:264 -msgid "$TERM" -msgstr "" - -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: login.1.xml.out:155 login.1.xml.out:353 -msgid "/etc/ttytype" -msgstr "/etc/ttytype" - -#. (itstool) path: refsect1/para -#: login.1.xml.out:152 -#, fuzzy -#| msgid "" -#| "On some installations, the environmental variable $TERM " -#| "will be initialized to the terminal type on your tty line, as specified " -#| "in /etc/ttytype." -msgid "" -"On some installations, the environmental variable <_:envar-1/> will be " -"initialized to the terminal type on your tty line, as specified in <_:" -"filename-2/>." -msgstr "" -"Em algumas instalações, a variável de ambiente $TERM será " -"inicializada para o tipo de terminal na sua linha tty, como especificado em " -"/etc/ttytype." - -#. (itstool) path: refsect1/para -#: login.1.xml.out:158 -msgid "" -"An initialization script for your command interpreter may also be executed. " -"Please see the appropriate manual section for more information on this " -"function." -msgstr "" -"Também pode ser executado um script de inicialização para o seu " -"interpretador de comandos. Por favor veja a secção de manual apropriada para " -"mais informação sobre esta função." - -#. (itstool) path: refsect1/para -#: login.1.xml.out:164 su.1.xml.out:112 -msgid "" -"A subsystem login is indicated by the presence of a \"*\" as the first " -"character of the login shell. The given home directory will be used as the " -"root of a new file system which the user is actually logged into." +"A subsystem login is indicated by the presence of a \"*\" as the first" +" character of the login shell. The given home directory will be used as the" +" root of a new file system which the user is actually logged into." msgstr "" "Um login de sub-sistema é indicado com a presença de um \"*\" no primeiro " "caractere da shell de login. O directório home dado será usado como a raiz " "do novo sistema de ficheiros no qual o utilizador tem agora sessão aberta." -#. (itstool) path: citerefentry/refentrytitle -#: login.1.xml.out:173 login.1.xml.out:249 login.1.xml.out:401 -msgid "getty" -msgstr "" +#: su.1.xml:145(para) +msgid "The options which apply to the su command are:" +msgstr "As opções que se aplicam ao comando su são:" -#. (itstool) path: citerefentry/refentrytitle -#: login.1.xml.out:175 login.1.xml.out:251 -msgid "init" -msgstr "" - -#. (itstool) path: para/command -#: login.1.xml.out:178 login.1.xml.out:254 -msgid "exec" -msgstr "" - -#. (itstool) path: refsect1/para -#: login.1.xml.out:170 login.1.xml.out:246 -#, fuzzy -#| msgid "" -#| "The login program is NOT responsible for removing " -#| "users from the utmp file. It is the responsibility of " -#| "getty8 and init8 to clean up " -#| "apparent ownership of a terminal session. If you use login from the shell prompt without exec, the user " -#| "you use will continue to appear to be logged in even after you log out of " -#| "the \"subsession\"." +#: su.1.xml:149(term) msgid "" -"The <_:command-1/> program is NOT responsible for removing users from the " -"utmp file. It is the responsibility of <_:citerefentry-2/> and <_:" -"citerefentry-3/> to clean up apparent ownership of a terminal session. If " -"you use <_:command-4/> from the shell prompt without <_:command-5/>, the " -"user you use will continue to appear to be logged in even after you log out " -"of the \"subsession\"." +",  COMMAND<" +"/replaceable>" msgstr "" -"O programa login NÃO é responsável por remover " -"utilizadores do ficheiro utmp. É da responsabilidade do " -"getty8 e init8 limpar a posse " -"aparente de uma sessão de terminal. Se você usar login a " -"partir do aviso de shell sem exec, o utilizador que você " -"usa irá continuar a parecer ter uma sessão activa mesmo após você terminar a " -"\"sub-sessão\"." +",  COMMAND<" +"/replaceable>" -#. (itstool) path: listitem/para -#: login.1.xml.out:193 -msgid "Do not perform authentication, user is preauthenticated." -msgstr "Não executa a autenticação, o utilizador é pré-autenticado." - -#. (itstool) path: listitem/para -#: login.1.xml.out:196 -#, fuzzy -#| msgid "" -#| "Note: In that case, username is mandatory." -msgid "Note: In that case, <_:replaceable-1/> is mandatory." -msgstr "Nota: Neste caso, username é obrigatório." - -#. (itstool) path: listitem/para -#: login.1.xml.out:207 -msgid "Name of the remote host for this login." -msgstr "Nome da máquina remota para este login." - -#. (itstool) path: listitem/para -#: login.1.xml.out:215 -msgid "Preserve environment." -msgstr "Preservar o ambiente." - -#. (itstool) path: listitem/para -#: login.1.xml.out:223 -msgid "Perform autologin protocol for rlogin." -msgstr "Executa protocolo de autologin para rlogin." - -#. (itstool) path: refsect1/para -#: login.1.xml.out:228 -#, fuzzy -#| msgid "" -#| "The , and " -#| "options are only used when login is invoked by root." +#: su.1.xml:153(para) msgid "" -"The <_:option-1/>, <_:option-2/> and <_:option-3/> options are only used " -"when <_:command-4/> is invoked by root." +"Specify a command that will be invoked by the shell using its , e são " -"apenas usadas quando login é invocado pelo root." +"Especifica um comando que será invocado pela shell usando a sua , , " +msgstr ", , " + +#: su.1.xml:171(para) +msgid "" +"Provide an environment similar to what the user would expect had the user" +" logged in directly." +msgstr "" +"Fornece um ambiente semelhante ao que o utilizador esperaria se tivesse " +"feito login diretamente." + +#: su.1.xml:175(para) +msgid "" +"When is used, it must be specified before any username. For portability it is recommended to use it as last" +" option, before any . The other forms () do not have this restriction." +msgstr "" +"Quando é usado , tem de ser especificado antes de qualquer " +". Para portabilidade é recomendado usá-lo como " +"última opção, antes de qualquer . As outras formas " +"( e ) não têm esta restrição." + +#: su.1.xml:190(para) +msgid "The shell that will be invoked." +msgstr "A shell que será invocada," + +#: su.1.xml:198(para) +msgid "The shell specified with --shell." +msgstr "A shell especificada com --shell." + +#: su.1.xml:201(para) +msgid "" +"If is used, the shell specified by" +" the $SHELL environment variable." +msgstr "" +"Se for usado , a shell é especificada " +"pela variável de ambiente $SHELL." + +#: su.1.xml:208(para) +msgid "" +"The shell indicated in the /etc/passwd entry for the" +" target user." +msgstr "" +"A shell indicada na entrada /etc/passwdpara o utilizador " +"apontado." + +#: su.1.xml:214(para) +msgid "" +"/bin/sh if a shell could not be found by any above" +" method." +msgstr "" +"/bin/sh se uma shell não puder ser encontrada por " +"nenhum dos métodos de cima." + +#: su.1.xml:191(para) +msgid "" +"The invoked shell is chosen from (highest priority first): " +msgstr "" +"A shell invocada é escolhida a partir de (de maior prioridade em primeiro): " +"" + +#: su.1.xml:219(para) +msgid "" +"If the target user has a restricted shell (i.e. the shell field of this" +" user's entry in /etc/passwd is not listed in /etc/shells), then the option or the <" +"envar>$SHELL environment variable won't be taken into account, unless" +" su is called by root." +msgstr "" +"Se o utilizador apontado tem uma shell restrita (isto é, o campo shell da " +"entrada deste utilizador em /etc/passwd não está " +"listado em /etc/shells), então a opção , , , , or (see below);" +msgstr "" +"reinicia de acordo com as opções ou " +" em /etc/login.defs " +"(veja abaixo);" + +#: su.1.xml:250(envar) +msgid "$IFS" +msgstr "$IFS" + +#: su.1.xml:252(para) +msgid "" +"reset to <space><tab><newline>, if it was" +" set." +msgstr "" +"reinicia para <space><tab><newline>, " +"se estava definida." + +#: su.1.xml:235(para) +msgid "Preserve the current environment, except for: " +msgstr "Preserva o ambiente actual, excepto para: " + +#: su.1.xml:261(para) +msgid "" +"If the target user has a restricted shell, this option has no effect (unless" +" su is called by root)." +msgstr "" +"Se o utilizador apontado tiver uma shell restrita, esta opção não tem efeito " +"(a menos que su seja chamado pelo root)." + +#: su.1.xml:270(para) +msgid "" +"The $HOME, $SHELL, $USER, $LOGNAME, $PATH, and $IFS environment" +" variables are reset." +msgstr "" +"As variáveis de ambiente $HOME, $SHELL, " +"$USER, $LOGNAME, $PATH, e " +"$IFS são reiniciadas." + +#: su.1.xml:279(para) +msgid "" +"If is not used, the environment is copied, except" +" for the variables above." +msgstr "" +"Se não for usado , o ambiente é copiado, excepto " +"para as variáveis em cima." + +#: su.1.xml:286(para) +msgid "" +"If is used, the $TERM, $COLORTERM, $DISPLAY, and $XAUTHORITY" +" environment variables are copied if they were set." +msgstr "" +"Se for usado, as variáveis de ambiente " +"$TERM, $COLORTERM, $DISPLAY, " +"e $XAUTHORITY são copiadas se estiverem definidas." + +#: su.1.xml:296(para) +msgid "" +"If is used, the $TZ, $HZ<" +"/envar>, and $MAIL environment variables are set according to" +" the /etc/login.defs options , <" +"option>ENV_HZ, , and for usado, as variáveis de ambiente " +"$TZ, $HZ, e $MAIL são definidas " +"de acordo com as opções , , " +", e de " +"/etc/login.defs (veja em baixo)." + +#: su.1.xml:309(para) +msgid "" +"If is used, other environment variables might be set" +" by the file (see below)." +msgstr "" +"Se for usado, outras variáveis de ambiente podem " +"ser definidas pelo ficheiro (veja em baixo)." + +#: su.1.xml:317(para) +msgid "Other environments might be set by PAM modules." +msgstr "Outros ambientes podem ser definidos por módulos do PAM." + +#: su.1.xml:265(para) +msgid "" +"Note that the default behavior for the environment is the following: <" +"placeholder-1/>" +msgstr "" +"Note que o comportamento predefinido para o ambiente é o seguinte: <" +"placeholder-1/>" + +#: su.1.xml:331(para) +msgid "" +"This version of su has many compilation options, only some" +" of which may be in use at any particular site." msgstr "" "Esta versão do su tem muitas opções de compilação, apenas " "algumas delas podem estar em uso em qualquer sítio particular." -#. (itstool) path: refsect1/para -#: login.1.xml.out:242 -msgid "" -"The location of files is subject to differences in system configuration." -msgstr "" -"A localização de ficheiros está sujeita a diferenças na configuração do " -"sistema." - -#. (itstool) path: refsect1/para -#: login.1.xml.out:258 -#, fuzzy -#| msgid "" -#| "As with any program, login's appearance can be faked. " -#| "If non-trusted users have physical access to a machine, an attacker could " -#| "use this to obtain the password of the next person coming to sit in front " -#| "of the machine. Under Linux, the SAK mechanism can be used by users to " -#| "initiate a trusted path and prevent this kind of attack." -msgid "" -"As with any program, <_:command-1/>'s appearance can be faked. If non-" -"trusted users have physical access to a machine, an attacker could use this " -"to obtain the password of the next person coming to sit in front of the " -"machine. Under Linux, the SAK mechanism can be used by users to initiate a " -"trusted path and prevent this kind of attack." -msgstr "" -"Como qualquer outro programa, a aparência do login pode " -"ser falsificada. Se utilizadores não-de-confiança tiverem acesso físico à " -"máquina, um atacante pode usar isto para obter a palavra passe da próxima " -"pessoa que se sente em frente da máquina. Sob Linux, o mecanismo SAK pode " -"ser usado pelos utilizadores para iniciar um caminho de confiança e prevenir " -"este tipo de ataque." - -#. (itstool) path: term/filename -#. (itstool) path: para/filename -#: login.1.xml.out:317 logoutd.8.xml.out:56 logoutd.8.xml.out:74 -msgid "/var/run/utmp" -msgstr "/var/run/utmp" - -#. (itstool) path: listitem/para -#: login.1.xml.out:319 logoutd.8.xml.out:76 -msgid "List of current login sessions." -msgstr "Lista das sessões de login actuais." - -#. (itstool) path: term/filename -#: login.1.xml.out:323 -msgid "/var/log/wtmp" -msgstr "/var/log/wtmp" - -#. (itstool) path: listitem/para -#: login.1.xml.out:325 -msgid "List of previous login sessions." -msgstr "Lista das sessões de login anteriores." - -#. (itstool) path: listitem/para -#: login.1.xml.out:343 -msgid "System message of the day file." -msgstr "Ficheiro de mensagem do dia ao sistema." - -#. (itstool) path: term/filename -#: login.1.xml.out:347 -msgid "/etc/nologin" -msgstr "/etc/nologin" - -#. (itstool) path: listitem/para -#: login.1.xml.out:349 -msgid "Prevent non-root users from logging in." -msgstr "Previne utilizadores não-root de fazerem login." - -#. (itstool) path: listitem/para -#: login.1.xml.out:355 -msgid "List of terminal types." -msgstr "Lista de tipos de terminais." - -#. (itstool) path: term/filename -#: login.1.xml.out:359 -msgid "$HOME/.hushlogin" -msgstr "$HOME/.hushlogin" - -#. (itstool) path: listitem/para -#: login.1.xml.out:361 -msgid "Suppress printing of system messages." -msgstr "Suprime o escreve de mensagens do sistema" - -#. (itstool) path: citerefentry/refentrytitle -#: login.1.xml.out:377 -msgid "mail" -msgstr "" - -#. (itstool) path: citerefentry/refentrytitle -#: login.1.xml.out:383 su.1.xml.out:424 -#, fuzzy -#| msgid "chsh" -msgid "sh" -msgstr "chsh" - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: varlistentry/term -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: login.1.xml.out:386 login.defs.5.xml.out:455 login.defs.5.xml.out:539 -#: login.defs.5.xml.out:555 newgrp.1.xml.out:136 passwd.5.xml.out:197 -#: shadow.5.xml.out:283 sg.1.xml.out:128 su.1.xml.out:50 su.1.xml.out:57 -#: su.1.xml.out:62 su.1.xml.out:81 su.1.xml.out:83 su.1.xml.out:121 -#: su.1.xml.out:201 su.1.xml.out:239 su.1.xml.out:308 su.1.xml.out:368 -#: su.1.xml.out:372 su.1.xml.out:377 su.1.xml.out:381 suauth.5.xml.out:201 -msgid "su" -msgstr "su" - -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: login.1.xml.out:392 nologin.8.xml.out:22 nologin.8.xml.out:29 -#: nologin.8.xml.out:35 nologin.8.xml.out:42 nologin.8.xml.out:48 -#: nologin.8.xml.out:63 nologin.8.xml.out:71 -msgid "nologin" -msgstr "nologin" - -#. (itstool) path: citerefentry/refentrytitle -#: login.1.xml.out:398 -msgid "securetty" -msgstr "" - -#. (itstool) path: author/firstname -#: login.access.5.xml.out:16 pwconv.8.xml.out:21 suauth.5.xml.out:15 -#: vipw.8.xml.out:17 -msgid "Marek" -msgstr "Marek" - -#. (itstool) path: author/surname -#: login.access.5.xml.out:17 pwconv.8.xml.out:22 suauth.5.xml.out:16 -#: vipw.8.xml.out:18 -msgid "Michałkiewicz" -msgstr "Michałkiewicz" - -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: para/emphasis -#: login.access.5.xml.out:34 login.access.5.xml.out:41 -#: login.access.5.xml.out:48 login.access.5.xml.out:54 -msgid "login.access" -msgstr "login.access" - -#. (itstool) path: refnamediv/refpurpose -#: login.access.5.xml.out:42 -msgid "login access control table" -msgstr "tabela de controle de acessos de login" - -#. (itstool) path: refsect1/para -#: login.access.5.xml.out:47 -#, fuzzy -#| msgid "" -#| "The login.access file specifies (user, " -#| "host) combinations and/or (user, tty) combinations for which a login will " -#| "be either accepted or refused." -msgid "" -"The <_:emphasis-1/> file specifies (user, host) combinations and/or (user, " -"tty) combinations for which a login will be either accepted or refused." -msgstr "" -"O ficheiro login.accessespecifica " -"combinações (utilizador, máquina) e/ou combinações (utilizador, tty) para os " -"quais um login será aceite ou recusado." - -#. (itstool) path: refsect1/para -#: login.access.5.xml.out:53 -#, fuzzy -#| msgid "" -#| "When someone logs in, the login.access " -#| "is scanned for the first entry that matches the (user, host) combination, " -#| "or, in case of non-networked logins, the first entry that matches the " -#| "(user, tty) combination. The permissions field of that table entry " -#| "determines whether the login will be accepted or refused." -msgid "" -"When someone logs in, the <_:emphasis-1/> is scanned for the first entry " -"that matches the (user, host) combination, or, in case of non-networked " -"logins, the first entry that matches the (user, tty) combination. The " -"permissions field of that table entry determines whether the login will be " -"accepted or refused." -msgstr "" -"Quando alguém faz login, o ficheiro login.access é sondado pela primeira entrada que corresponda à combinação " -"(utilizador, máquina), ou, no caso de logins não-rede, a primeira entrada " -"que corresponda à combinação (utilizador, tty). O campo de permissões dessa " -"entrada de tabela determina se o login será aceite ou recusado." - -#. (itstool) path: refsect1/para -#: login.access.5.xml.out:61 -msgid "" -"Each line of the login access control table has three fields separated by a " -"\":\" character:" -msgstr "" -"Cada linha da tabela de controle de acesso de login tem três campos " -"separados por um caractere \":\":" - -#. (itstool) path: para/emphasis -#: login.access.5.xml.out:67 -#, fuzzy -#| msgid "permission denied" -msgid "permission" -msgstr "permissão negada" - -#. (itstool) path: para/emphasis -#: login.access.5.xml.out:67 -#, fuzzy -#| msgid "user" -msgid "users" -msgstr "user" - -#. (itstool) path: para/emphasis -#: login.access.5.xml.out:67 -msgid "origins" -msgstr "" - -#. (itstool) path: refsect1/para -#: login.access.5.xml.out:66 -msgid "<_:emphasis-1/>:<_:emphasis-2/>:<_:emphasis-3/>" -msgstr "" - -#. (itstool) path: para/emphasis -#: login.access.5.xml.out:71 -msgid "+" -msgstr "" - -#. (itstool) path: para/emphasis -#: login.access.5.xml.out:74 login.access.5.xml.out:78 suauth.5.xml.out:78 -msgid "ALL" -msgstr "" - -#. (itstool) path: para/literal -#: login.access.5.xml.out:76 login.access.5.xml.out:77 -#: login.access.5.xml.out:80 -msgid "." -msgstr "" - -#. (itstool) path: para/emphasis -#: login.access.5.xml.out:79 -msgid "LOCAL" -msgstr "" - -#. (itstool) path: refsect1/para -#: login.access.5.xml.out:70 -#, fuzzy -#| msgid "" -#| "The first field should be a \"+\" (access granted) " -#| "or \"-\" (access denied) character. The second field " -#| "should be a list of one or more login names, group names, or " -#| "ALL (always matches). The third field should be a " -#| "list of one or more tty names (for non-networked logins), host names, " -#| "domain names (begin with \".\"), host addresses, " -#| "internet network numbers (end with \".\"), " -#| "ALL (always matches) or LOCAL " -#| "(matches any string that does not contain a \".\" " -#| "character). If you run NIS you can use @netgroupname in host or user " -#| "patterns." -msgid "" -"The first field should be a \"<_:emphasis-1/>\" (access granted) or \"<_:" -"emphasis-2/>\" (access denied) character. The second field should be a list " -"of one or more login names, group names, or <_:emphasis-3/> (always " -"matches). The third field should be a list of one or more tty names (for non-" -"networked logins), host names, domain names (begin with \"<_:literal-4/>\"), " -"host addresses, internet network numbers (end with \"<_:literal-5/>\"), <_:" -"emphasis-6/> (always matches) or <_:emphasis-7/> (matches any string that " -"does not contain a \"<_:literal-8/>\" character). If you run NIS you can use " -"@netgroupname in host or user patterns." -msgstr "" -"O primeiro campo deve ser um caractere \"+\" (acesso " -"garantido) ou \"-\" (acesso negado). O segundo campo " -"deve ser uma lista de um ou mais nomes de login, nomes de grupos, ou " -"ALL (corresponde sempre). O terceiro campo deve ser uma " -"lista de um ou mais nomes tty (para logins não-rede), nomes de máquinas, " -"nomes de domínio (começam com \".\"), endereços de " -"máquinas, números de rede de internet (acabam com \".\"), " -"ALL (corresponde sempre) ou LOCAL " -"(corresponde a qualquer string que não contém um caractere \".\"). Se você corre o NIS você pode usar @netgroupname em padrões de " -"máquina ou utilizador." - -#. (itstool) path: para/emphasis -#: login.access.5.xml.out:85 -msgid "EXCEPT" -msgstr "" - -#. (itstool) path: refsect1/para -#: login.access.5.xml.out:84 -#, fuzzy -#| msgid "" -#| "The EXCEPT operator makes it possible to write very " -#| "compact rules." -msgid "" -"The <_:emphasis-1/> operator makes it possible to write very compact rules." -msgstr "" -"O operador EXCEPT torna possível escrever regras muito " -"compactas." - -#. (itstool) path: refsect1/para -#: login.access.5.xml.out:89 -msgid "" -"The group file is searched only when a name does not match that of the " -"logged-in user. Only groups are matched in which users are explicitly " -"listed: the program does not look at a user's primary group id value." -msgstr "" -"O ficheiro de grupo é sondado apenas quando um nome não corresponde ao do " -"utilizador que fez login. Apenas são correspondidos grupos nos quais os " -"utilizadores são explicitamente listados: o programa não procura um valor de " -"id de grupo primário de utilizador." - -#. (itstool) path: refsect1/para -#: login.access.5.xml.out:110 porttime.5.xml.out:119 suauth.5.xml.out:199 -msgid "<_:citerefentry-1/>." -msgstr "" - -#. (itstool) path: refnamediv/refpurpose -#: login.defs.5.xml.out:112 -msgid "shadow password suite configuration" -msgstr "configuração da suite de palavra passe sombra" - -#. (itstool) path: refsect1/para -#: login.defs.5.xml.out:117 -#, fuzzy -#| msgid "" -#| "The /etc/login.defs file defines the site-specific " -#| "configuration for the shadow password suite. This file is required. " -#| "Absence of this file will not prevent system operation, but will probably " -#| "result in undesirable operation." -msgid "" -"The <_:filename-1/> file defines the site-specific configuration for the " -"shadow password suite. This file is required. Absence of this file will not " -"prevent system operation, but will probably result in undesirable operation." -msgstr "" -"O ficheiro /etc/login.defs define a configuração " -"específica de sítio para a suite de palavras passe sombra. Este ficheiro é " -"necessário. A ausência deste ficheiro não irá impedir a operação do sistema, " -"mas irá provavelmente resultar em operação não desejável." - -#. (itstool) path: refsect1/para -#: login.defs.5.xml.out:124 -msgid "" -"This file is a readable text file, each line of the file describing one " -"configuration parameter. The lines consist of a configuration name and " -"value, separated by whitespace. Blank lines and comment lines are ignored. " -"Comments are introduced with a \"#\" pound sign and the pound sign must be " -"the first non-white character of the line." -msgstr "" -"Este ficheiro é um ficheiro de texto legível, e cada linha do ficheiro " -"descreve um parâmetro de configuração. As linhas consistem de um nome de " -"configuração e um valor, separados por espaço em branco. As linhas vazias e " -"os comentários são ignorados. Os comentários são introduzidos com um " -"cardinal \"#\" e este cardinal tem de ser o primeiro caractere não branco da " -"linha." - -#. (itstool) path: para/replaceable -#. (itstool) path: para/emphasis -#: login.defs.5.xml.out:135 useradd.8.xml.out:242 useradd.8.xml.out:382 -#: userdel.8.xml.out:87 userdel.8.xml.out:297 -msgid "yes" -msgstr "" - -#. (itstool) path: para/replaceable -#: login.defs.5.xml.out:142 -#, fuzzy -#| msgid "0" -msgid "0x" -msgstr "0" - -#. (itstool) path: refsect1/para -#: login.defs.5.xml.out:132 -#, fuzzy -#| msgid "" -#| "Parameter values may be of four types: strings, booleans, numbers, and " -#| "long numbers. A string is comprised of any printable characters. A " -#| "boolean should be either the value yes or " -#| "no. An undefined boolean parameter or one with " -#| "a value other than these will be given a no " -#| "value. Numbers (both regular and long) may be either decimal values, " -#| "octal values (precede the value with 0) or " -#| "hexadecimal values (precede the value with 0x). The maximum value of the regular and long numeric " -#| "parameters is machine-dependent." -msgid "" -"Parameter values may be of four types: strings, booleans, numbers, and long " -"numbers. A string is comprised of any printable characters. A boolean should " -"be either the value <_:replaceable-1/> or <_:replaceable-2/>. An undefined " -"boolean parameter or one with a value other than these will be given a <_:" -"replaceable-3/> value. Numbers (both regular and long) may be either decimal " -"values, octal values (precede the value with <_:replaceable-4/>) or " -"hexadecimal values (precede the value with <_:replaceable-5/>). The maximum " -"value of the regular and long numeric parameters is machine-dependent." -msgstr "" -"Os valores do parâmetros podem ser de quatro tipos: strings, booleanos, " -"números e números longos. Uma string é composta por quaisquer caracteres de " -"escrita. Um booleano deve ser ou o valor yes ou " -"no. Um parâmetro booleano não definido ou um com " -"o valor diferente destes receberá o valor no. " -"Números (ambos regulares e longos) podem ser ou valores decimais, valores em " -"octal (precedendo o valor com 0) ou valores em " -"hexadecimal (precedendo o valor com 0x). O valor " -"máximo dos parâmetros numéricos regulares e longos é dependente da máquina." - -#. (itstool) path: refsect1/para -#: login.defs.5.xml.out:147 -msgid "The following configuration items are provided:" -msgstr "Os seguintes itens de configuração são fornecidos:" - -#. (itstool) path: para/option -#. (itstool) path: para/emphasis -#. (itstool) path: para/replaceable -#: login.defs.5.xml.out:196 pwconv.8.xml.out:146 useradd.8.xml.out:311 -#: useradd.8.xml.out:316 -msgid "PASS_MAX_DAYS" -msgstr "" - -#. (itstool) path: para/option -#. (itstool) path: para/emphasis -#: login.defs.5.xml.out:196 pwconv.8.xml.out:145 -msgid "PASS_MIN_DAYS" -msgstr "" - -#. (itstool) path: para/option -#. (itstool) path: para/emphasis -#: login.defs.5.xml.out:197 pwconv.8.xml.out:147 -msgid "PASS_WARN_AGE" -msgstr "" - -#. (itstool) path: variablelist/para -#: login.defs.5.xml.out:195 -#, fuzzy -#| msgid "" -#| ", and " -#| " are only used at the time of account " -#| "creation. Any changes to these settings won't affect existing accounts." -msgid "" -"<_:option-1/>, <_:option-2/> and <_:option-3/> are only used at the time of " -"account creation. Any changes to these settings won't affect existing " -"accounts." -msgstr "" -", e " -" são apenas usadas na altura da criação da " -"conta. Quaisquer alterações nestas definições não afectam contas existentes." - -#. (itstool) path: refsect1/title -#: login.defs.5.xml.out:229 -msgid "CROSS REFERENCES" -msgstr "REFERÊNCIAS CRUZADAS" - -#. (itstool) path: refsect1/para -#: login.defs.5.xml.out:230 -msgid "" -"The following cross references show which programs in the shadow password " -"suite use which parameters." -msgstr "" -"As seguintes referências cruzadas mostram quais programas na suite de " -"palavras passe sombra usam quais parâmetros." - -#. (itstool) path: listitem/para -#. (itstool) path: para/phrase -#. (itstool) path: phrase/option -#. (itstool) path: para/option -#: login.defs.5.xml.out:239 login.defs.5.xml.out:442 login.defs.5.xml.out:450 -#: login.defs.5.xml.out:522 pwck.8.xml.out:75 pwck.8.xml.out:216 -#: pwck.8.xml.out:232 pwconv.8.xml.out:89 pwconv.8.xml.out:91 -#: pwconv.8.xml.out:94 pwconv.8.xml.out:105 pwconv.8.xml.out:107 -msgid "USE_TCB" -msgstr "USE_TCB" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:246 -msgid "CHFN_AUTH" -msgstr "" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:248 login.defs.5.xml.out:372 -#, fuzzy -#| msgid "CHSH_AUTH LOGIN_STRING" -msgid "LOGIN_STRING" -msgstr "CHSH_AUTH LOGIN_STRING" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:245 -msgid "<_:phrase-1/> CHFN_RESTRICT <_:phrase-2/>" -msgstr "" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:256 login.defs.5.xml.out:269 login.defs.5.xml.out:293 -#: login.defs.5.xml.out:396 login.defs.5.xml.out:418 -#, fuzzy -#| msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" -msgid "BCRYPT_MAX_ROUNDS BCRYPT_MIN_ROUNDS" -msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:259 login.defs.5.xml.out:273 login.defs.5.xml.out:296 -#: login.defs.5.xml.out:403 login.defs.5.xml.out:422 -msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" -msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:261 login.defs.5.xml.out:275 login.defs.5.xml.out:298 -#: login.defs.5.xml.out:409 login.defs.5.xml.out:424 -msgid "YESCRYPT_COST_FACTOR" -msgstr "" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:255 login.defs.5.xml.out:292 -#, fuzzy -#| msgid "" -#| "ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" -msgid "" -"<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:" -"phrase-2/> <_:phrase-3/>" -msgstr "" -"ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:271 -msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" -msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:282 -msgid "CHSH_AUTH LOGIN_STRING" -msgstr "CHSH_AUTH LOGIN_STRING" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:305 -msgid "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" -msgstr "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:314 login.defs.5.xml.out:320 login.defs.5.xml.out:326 -#: login.defs.5.xml.out:333 login.defs.5.xml.out:339 login.defs.5.xml.out:345 -msgid "MAX_MEMBERS_PER_GROUP" -msgstr "MAX_MEMBERS_PER_GROUP" - -#. (itstool) path: varlistentry/term -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: login.defs.5.xml.out:343 pwconv.8.xml.out:49 pwconv.8.xml.out:73 -#: pwconv.8.xml.out:119 pwconv.8.xml.out:153 pwconv.8.xml.out:167 -#: pwconv.8.xml.out:208 -msgid "grpunconv" -msgstr "grpunconv" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:352 -msgid "LASTLOG_UID_MAX" -msgstr "LASTLOG_UID_MAX" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:359 login.defs.5.xml.out:458 -msgid "CONSOLE" -msgstr "" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:361 -msgid "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE" -msgstr "" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:364 -#, fuzzy -#| msgid "SYSLOG_SG_ENAB" -msgid "FAILLOG_ENAB" -msgstr "SYSLOG_SG_ENAB" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:366 -#, fuzzy -#| msgid "FILE" -msgid "FTMP_FILE" -msgstr "FICHEIRO" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:368 -msgid "ISSUE_FILE" -msgstr "" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:370 -#, fuzzy -#| msgid "LASTLOG_UID_MAX" -msgid "LASTLOG_ENAB LASTLOG_UID_MAX" -msgstr "LASTLOG_UID_MAX" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:374 -msgid "" -"MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE " -"PORTTIME_CHECKS_ENAB QUOTAS_ENAB" -msgstr "" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:378 -msgid "ULIMIT UMASK" -msgstr "" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:358 -msgid "" -"<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY " -"<_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR " -"<_:phrase-6/> LOGIN_RETRIES <_:phrase-7/> LOGIN_TIMEOUT LOG_OK_LOGINS " -"LOG_UNKFAIL_ENAB <_:phrase-8/> TTYGROUP TTYPERM TTYTYPE_FILE <_:phrase-9/> " -"USERGROUPS_ENAB" -msgstr "" - -#. (itstool) path: varlistentry/term -#: login.defs.5.xml.out:385 -msgid "newgrp / sg" -msgstr "newgrp / sg" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:387 -msgid "SYSLOG_SG_ENAB" -msgstr "SYSLOG_SG_ENAB" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:395 -#, fuzzy -#| msgid "" -#| "ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " -#| "HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " -#| "SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX " -#| "UID_MIN UMASK" -msgid "" -"<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP " -"MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:" -"phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " -"SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " -"UMASK <_:phrase-3/>" -msgstr "" -"ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB " -"HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:417 -#, fuzzy -#| msgid "" -#| "ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " -#| "PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" -msgid "" -"<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB " -"PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> " -"<_:phrase-3/>" -msgstr "" -"ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN " -"PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:433 -msgid "TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" -msgstr "" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:431 login.defs.5.xml.out:440 -#, fuzzy -#| msgid "" -#| "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE USE_TCB" -msgid "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-1/>" -msgstr "" -"PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE USE_TCB" - -#. (itstool) path: varlistentry/term -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: login.defs.5.xml.out:438 passwd.5.xml.out:188 pwconv.8.xml.out:39 -#: pwconv.8.xml.out:46 pwconv.8.xml.out:55 pwconv.8.xml.out:83 -#: pwconv.8.xml.out:88 pwconv.8.xml.out:90 pwconv.8.xml.out:134 -#: pwconv.8.xml.out:144 pwconv.8.xml.out:165 pwconv.8.xml.out:216 -#: shadow.5.xml.out:277 -msgid "pwconv" -msgstr "pwconv" - -#. (itstool) path: varlistentry/term -#. (itstool) path: citerefentry/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: login.defs.5.xml.out:447 passwd.5.xml.out:191 pwconv.8.xml.out:47 -#: pwconv.8.xml.out:61 pwconv.8.xml.out:98 pwconv.8.xml.out:104 -#: pwconv.8.xml.out:109 pwconv.8.xml.out:153 pwconv.8.xml.out:157 -#: pwconv.8.xml.out:166 shadow.5.xml.out:280 -msgid "pwunconv" -msgstr "pwunconv" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:460 -msgid "ENV_HZ ENVIRON_FILE" -msgstr "" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:462 -msgid "ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB" -msgstr "" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:465 -msgid "SU_WHEEL_ONLY" -msgstr "" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:457 -msgid "" -"<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH " -"<_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" -msgstr "" - -#. (itstool) path: varlistentry/term -#. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:472 passwd.5.xml.out:200 shadow.5.xml.out:286 -msgid "sulogin" -msgstr "sulogin" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:474 -msgid "ENV_HZ ENV_TZ" -msgstr "" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:494 -msgid "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" -msgstr "" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:483 -#, fuzzy -#| msgid "" -#| "CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR " -#| "MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE " -#| "SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " -#| "SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX " -#| "UID_MIN UMASK TCB_AUTH_GROUP TCB_SYMLINK " -#| "USE_TCB" -msgid "" -"CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR " -"MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <_:" -"phrase-1/>" -msgstr "" -"CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR " -"MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK " -"TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" - -#. (itstool) path: para/phrase -#: login.defs.5.xml.out:504 login.defs.5.xml.out:514 -msgid "TCB_SYMLINKS USE_TCB" -msgstr "" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:501 -#, fuzzy -#| msgid "" -#| "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB " -#| "TCB_SYMLINKS USE_TCB" -msgid "" -"MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:" -"phrase-1/>" -msgstr "" -"MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB TCB_SYMLINKS USE_TCB" - -#. (itstool) path: listitem/para -#: login.defs.5.xml.out:511 -#, fuzzy -#| msgid "" -#| "LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP TCB_SYMLINKS USE_TCB" -msgid "LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP <_:phrase-1/>" -msgstr "" -"LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP TCB_SYMLINKS USE_TCB" - -#. (itstool) path: varlistentry/term -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: login.defs.5.xml.out:519 vipw.8.xml.out:35 vipw.8.xml.out:42 -#: vipw.8.xml.out:51 vipw.8.xml.out:67 vipw.8.xml.out:85 -msgid "vipw" -msgstr "vipw" - -#. (itstool) path: refsect1/title -#: login.defs.5.xml.out:530 pwconv.8.xml.out:193 suauth.5.xml.out:179 -msgid "BUGS" -msgstr "BUGS" - -#. (itstool) path: refsect1/para -#: login.defs.5.xml.out:531 -#, fuzzy -#| msgid "" -#| "Much of the functionality that used to be provided by the shadow password " -#| "suite is now handled by PAM. Thus, /etc/login.defs " -#| "is no longer used by passwd1, or less used by " -#| "login1, and su1. Please refer to " -#| "the corresponding PAM configuration files instead." -msgid "" -"Much of the functionality that used to be provided by the shadow password " -"suite is now handled by PAM. Thus, <_:filename-1/> is no longer used by <_:" -"citerefentry-2/>, or less used by <_:citerefentry-3/>, and <_:citerefentry-4/" -">. Please refer to the corresponding PAM configuration files instead." -msgstr "" -"Muitas das funcionalidades que eram fornecidas pela suite de palavras passe " -"sombra são agora lidadas pelo PAM. Assim, /etc/login.defs não é mais usado pelo passwd1, ou menos menos usado " -"pelo login1, e su1. Por favor consulte os " -"ficheiros de configuração do PAM em vez destes." - -#. (itstool) path: citerefentry/refentrytitle -#: login.defs.5.xml.out:564 -#, fuzzy -#| msgid "pw_name" -msgid "pam" -msgstr "pw_name" - -#. (itstool) path: refsect1/para -#: login.defs.5.xml.out:547 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." -msgstr "" - -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/command -#: logoutd.8.xml.out:33 logoutd.8.xml.out:40 logoutd.8.xml.out:46 -#: logoutd.8.xml.out:53 logoutd.8.xml.out:55 -msgid "logoutd" -msgstr "logoutd" - -#. (itstool) path: refnamediv/refpurpose -#: logoutd.8.xml.out:41 -msgid "enforce login time restrictions" -msgstr "força restrições de hora de login" - -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: logoutd.8.xml.out:54 logoutd.8.xml.out:60 logoutd.8.xml.out:68 -#: porttime.5.xml.out:87 porttime.5.xml.out:109 -msgid "/etc/porttime" -msgstr "/etc/porttime" - -#. (itstool) path: para/filename -#: logoutd.8.xml.out:56 -#, fuzzy -#| msgid "/etc/group" -msgid "/etc/rc" -msgstr "/etc/group" - -#. (itstool) path: refsect1/para -#: logoutd.8.xml.out:52 -#, fuzzy -#| msgid "" -#| "logoutd enforces the login time and port restrictions " -#| "specified in /etc/porttime. logoutd should be started from /etc/rc. The " -#| "/var/run/utmp file is scanned periodically and each " -#| "user name is checked to see if the named user is permitted on the named " -#| "port at the current time. Any login session which is violating the " -#| "restrictions in /etc/porttime is terminated." -msgid "" -"<_:command-1/> enforces the login time and port restrictions specified in <_:" -"filename-2/>. <_:command-3/> should be started from <_:filename-4/>. The <_:" -"filename-5/> file is scanned periodically and each user name is checked to " -"see if the named user is permitted on the named port at the current time. " -"Any login session which is violating the restrictions in <_:filename-6/> is " -"terminated." -msgstr "" -"logoutd reforça a hora de login e as restrições de porto " -"especificadas em /etc/porttime. O logoutd deve ser arrancado a partir de /etc/rc. O " -"ficheiro /var/run/utmp é sondado periodicamente e cada " -"nome de utilizador é verificado para se ver se o utilizador nomeado é " -"permitido no porto nomeado na hora actual. Qualquer sessão de login que " -"viole as restrições em /etc/porttime é terminada." - -#. (itstool) path: listitem/para -#: logoutd.8.xml.out:70 porttime.5.xml.out:111 -msgid "File containing port access." -msgstr "Ficheiro que contem acesso a porto." - -#. (itstool) path: refnamediv/refpurpose -#: newgrp.1.xml.out:42 -msgid "log in to a new group" -msgstr "login para um novo grupo" - -#. (itstool) path: refsect1/para -#: newgrp.1.xml.out:54 -#, fuzzy -#| msgid "" -#| "The newgrp command is used to change the current group " -#| "ID during a login session. If the optional flag is " -#| "given, the user's environment will be reinitialized as though the user " -#| "had logged in, otherwise the current environment, including current " -#| "working directory, remains unchanged." -msgid "" -"The <_:command-1/> command is used to change the current group ID during a " -"login session. If the optional <_:option-2/> flag is given, the user's " -"environment will be reinitialized as though the user had logged in, " -"otherwise the current environment, including current working directory, " -"remains unchanged." -msgstr "" -"O comando newgrp é usado para alterar o ID de grupo " -"actual durante um login de sessão. Se for dada a bandeira opcional , o ambiente do utilizador será reiniciado como se o utilizador " -"tivesse feito login, caso contrário, o ambiente actual, incluindo o " -"directório de trabalho actual, permanece não alterado." - -#. (itstool) path: refsect1/para -#: newgrp.1.xml.out:62 -#, fuzzy -#| msgid "" -#| "newgrp changes the current real group ID to the named " -#| "group, or to the default group listed in /etc/passwd " -#| "if no group name is given. newgrp also tries to add " -#| "the group to the user groupset. If not root, the user will be prompted " -#| "for a password if she does not have a password (in /etc/shadow if this user has an entry in the shadowed password file, or in " -#| "/etc/passwd otherwise) and the group does, or if the " -#| "user is not listed as a member and the group has a password. The user " -#| "will be denied access if the group password is empty and the user is not " -#| "listed as a member." -msgid "" -"<_:command-1/> changes the current real group ID to the named group, or to " -"the default group listed in <_:filename-2/> if no group name is given. <_:" -"command-3/> also tries to add the group to the user groupset. If not root, " -"the user will be prompted for a password if she does not have a password (in " -"<_:filename-4/> if this user has an entry in the shadowed password file, or " -"in <_:filename-5/> otherwise) and the group does, or if the user is not " -"listed as a member and the group has a password. The user will be denied " -"access if the group password is empty and the user is not listed as a member." -msgstr "" -"newgrp muda o ID de grupo real actual para o grupo " -"nomeado, ou para o grupo predefinido listado em /etc/passwd se não for dado um nome de grupo. newgrp também " -"tenta adicionar o grupo ao conjunto de grupos do utilizador. Se não for " -"root, será pedido ao utilizador uma palavra passe se este não tiver uma " -"palavra passe (em /etc/shadow se este utilizador tiver " -"uma entrada no ficheiro de palavras passe sombra, ou caso contrário em " -"/etc/passwd) e o grupo tiver, ou se o utilizador não " -"estiver listado como membro e o grupo possuir uma palavra passe. Será negado " -"acesso ao utilizador se a palavra passe do grupo estiver vazia e o " -"utilizador não estiver listado como membro." - -#. (itstool) path: refsect1/para -#: newgrp.1.xml.out:76 -#, fuzzy -#| msgid "" -#| "If there is an entry for this group in /etc/gshadow, " -#| "then the list of members and the password of this group will be taken " -#| "from this file, otherwise, the entry in /etc/group " -#| "is considered." -msgid "" -"If there is an entry for this group in <_:filename-1/>, then the list of " -"members and the password of this group will be taken from this file, " -"otherwise, the entry in <_:filename-2/> is considered." -msgstr "" -"Se existir uma entrada para este grupo em /etc/gshadow, " -"então a lista de membros e a palavra passe deste grupo serão obtidas a " -"partir deste ficheiro, caso contrário, será considerada a entrada em " -"/etc/group." - -#. (itstool) path: citerefentry/refentrytitle -#: newgrp.1.xml.out:130 sg.1.xml.out:119 -msgid "id" -msgstr "" - -#. (itstool) path: refnamediv/refpurpose -#: newusers.8.xml.out:59 -msgid "update and create new users in batch" -msgstr "actualiza e cria novos utilizadores em lote" - -#. (itstool) path: refsect1/para -#: newusers.8.xml.out:76 -#, fuzzy -#| msgid "" -#| "The newusers command reads a file (or the standard input by default) and uses this information " -#| "to update a set of existing users or to create new users. Each line is in " -#| "the same format as the standard password file (see " -#| "passwd5) with the exceptions explained below:" -msgid "" -"The <_:command-1/> command reads a <_:replaceable-2/> (or the standard input " -"by default) and uses this information to update a set of existing users or " -"to create new users. Each line is in the same format as the standard " -"password file (see <_:citerefentry-3/>) with the exceptions explained below:" -msgstr "" -"O comando newusers lê um ficheiro (ou a entrada standard por predefinição) e usa esta informação " -"para actualizar um conjunto de utilizadores existentes ou para criar novos " -"utilizadores. Cada linha está no mesmo formato que um ficheiro de palavras " -"passe standard (veja passwd5) com as excepções " -"explicadas em baixo:" - -#. (itstool) path: refsect1/para -#: newusers.8.xml.out:84 -msgid "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" -msgstr "pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell" - -#. (itstool) path: term/emphasis -#: newusers.8.xml.out:89 -msgid "pw_name" -msgstr "pw_name" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:92 -msgid "This is the name of the user." -msgstr "Isto é o nome do utilizador." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:95 -#, fuzzy -#| msgid "" -#| "It can be the name of a new user or the name of an existing user (or a " -#| "user created before by newusers). In case of an " -#| "existing user, the user's information will be changed, otherwise a new " -#| "user will be created." -msgid "" -"It can be the name of a new user or the name of an existing user (or a user " -"created before by <_:command-1/>). In case of an existing user, the user's " -"information will be changed, otherwise a new user will be created." -msgstr "" -"Pode ser o nome do novo utilizador ou o nome de um utilizador existente (ou " -"um utilizador criado antes pelo newusers). No caso de um " -"utilizador existente, a informação do utilizador será alterada, caso " -"contrário, será criado um novo utilizador." - -#. (itstool) path: term/emphasis -#: newusers.8.xml.out:106 -msgid "pw_passwd" -msgstr "pw_passwd" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:109 -msgid "" -"This field will be encrypted and used as the new value of the encrypted " -"password." -msgstr "" -"Este campo será encriptado e usado como o novo valor da palavra passe " -"encriptada." - -#. (itstool) path: term/emphasis -#: newusers.8.xml.out:117 -msgid "pw_uid" -msgstr "pw_uid" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:120 -msgid "This field is used to define the UID of the user." -msgstr "Este campo é usado para definir o UID do utilizador." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:123 -#, fuzzy -#| msgid "" -#| "If the field is empty, a new (unused) UID will be defined automatically " -#| "by newusers." -msgid "" -"If the field is empty, a new (unused) UID will be defined automatically by " -"<_:command-1/>." -msgstr "" -"Se o campo estiver vazio, um novo (não usado) UID será definido " -"automaticamente pelo newusers." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:127 -msgid "If this field contains a number, this number will be used as the UID." -msgstr "Se este campo conter um número, esse número será usado como o UID." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:131 -#, fuzzy -#| msgid "" -#| "If this field contains the name of an existing user (or the name of a " -#| "user created before by newusers), the UID of the " -#| "specified user will be used." -msgid "" -"If this field contains the name of an existing user (or the name of a user " -"created before by <_:command-1/>), the UID of the specified user will be " -"used." -msgstr "" -"Se este campo conter o nome de um utilizador existente (ou o nome de um " -"utilizador criado antes pelo newusers), será usado o UID " -"do utilizador especificado." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:137 -msgid "" -"If the UID of an existing user is changed, the files ownership of the user's " -"file should be fixed manually." -msgstr "" -"Se o UID de um utilizador existente é alterado, hanged, a posse dos " -"ficheiros do utilizador deve ser corrigida manualmente." - -#. (itstool) path: term/emphasis -#: newusers.8.xml.out:145 -msgid "pw_gid" -msgstr "pw_gid" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:148 -msgid "This field is used to define the primary group ID for the user." -msgstr "" -"Este campo é usado para definir o ID de grupo primário para o utilizador." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:151 -#, fuzzy -#| msgid "" -#| "If this field contains the name of an existing group (or a group created " -#| "before by newusers), the GID of this group will be " -#| "used as the primary group ID for the user." -msgid "" -"If this field contains the name of an existing group (or a group created " -"before by <_:command-1/>), the GID of this group will be used as the primary " -"group ID for the user." -msgstr "" -"Se este campo conter o nome de um grupo existente (ou um grupo criado antes " -"pelo newusers), o GID deste grupo será usado como o ID de " -"grupo primário para o utilizador." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:157 -msgid "" -"If this field is a number, this number will be used as the primary group ID " -"of the user. If no groups exist with this GID, a new group will be created " -"with this GID, and the name of the user." -msgstr "" -"Se este campo for um número, este número será usado como o ID de grupo " -"primário do utilizador. Se não existirem grupos como este GID, será criado " -"um novo grupo com este GID, e o nome do utilizador." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:163 -#, fuzzy -#| msgid "" -#| "If this field is empty, a new group will be created with the name of the " -#| "user and a GID will be automatically defined by newusers to be used as the primary group ID for the user and as the GID " -#| "for the new group." -msgid "" -"If this field is empty, a new group will be created with the name of the " -"user and a GID will be automatically defined by <_:command-1/> to be used as " -"the primary group ID for the user and as the GID for the new group." -msgstr "" -"Se este campo estiver vazio, será criado um novo grupo com o nome do " -"utilizador e um GID será definido automaticamente pelo newusers para ser usado como ID de grupo primário para o utilizador e como o " -"GID para o novo grupo." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:169 -#, fuzzy -#| msgid "" -#| "If this field contains the name of a group which does not exist (and was " -#| "not created before by newusers), a new group will be " -#| "created with the specified name and a GID will be automatically defined " -#| "by newusers to be used as the primary group ID for the " -#| "user and GID for the new group." -msgid "" -"If this field contains the name of a group which does not exist (and was not " -"created before by <_:command-1/>), a new group will be created with the " -"specified name and a GID will be automatically defined by <_:command-2/> to " -"be used as the primary group ID for the user and GID for the new group." -msgstr "" -"Se este campo conter um nome de um grupo que não existe (e nem foi criado " -"antes pelo newusers), será criado um novo grupo com o " -"nome especificado e um GID será definido automaticamente pelo " -"newusers para ser usado como ID de grupo primário para o " -"utilizador e como GID para o novo grupo." - -#. (itstool) path: term/emphasis -#: newusers.8.xml.out:181 -msgid "pw_gecos" -msgstr "pw_gecos" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:184 -msgid "This field is copied in the GECOS field of the user." -msgstr "Este campo é copiado para o campo GECOS do utilizador." - -#. (itstool) path: term/emphasis -#: newusers.8.xml.out:191 -msgid "pw_dir" -msgstr "pw_dir" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:194 -msgid "This field is used to define the home directory of the user." -msgstr "Este campo é usado para definir o directório home do utilizador." - -#. (itstool) path: para/emphasis -#: newusers.8.xml.out:201 -msgid "newusers does not create parent directories" -msgstr "" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:197 -msgid "" -"If this field does not specify an existing directory, the specified " -"directory is created, with ownership set to the user being created or " -"updated and its primary group. Note that <_:emphasis-1/> of the new user's " -"home directory. The newusers command will fail to create the home directory " -"if the parent directories do not exist, and will send a message to stderr " -"informing the user of the failure. The newusers command will not halt or " -"return a failure to the calling shell if it fails to create the home " -"directory, it will continue to process the batch of new users specified." -msgstr "" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:210 -#, fuzzy -#| msgid "" -#| "If the home directory of an existing user is changed, newusers does not move or copy the content of the old directory to the " -#| "new location. This should be done manually." -msgid "" -"If the home directory of an existing user is changed, <_:command-1/> does " -"not move or copy the content of the old directory to the new location. This " -"should be done manually." -msgstr "" -"Se o directório home de um utilizador existente for mudado, o " -"newusers não move nem copia o conteúdo do directório " -"antigo para a nova localização. Isto deve ser feito manualmente." - -#. (itstool) path: term/emphasis -#: newusers.8.xml.out:220 -msgid "pw_shell" -msgstr "pw_shell" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:223 -msgid "" -"This field defines the shell of the user. No checks are performed on this " -"field." -msgstr "" -"Este campo define a shell do utilizador. Nenhuma verificação é feita neste " -"campo." +#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" -#. (itstool) path: refsect1/para -#: newusers.8.xml.out:231 -#, fuzzy -#| msgid "" -#| "newusers first tries to create or change all the " -#| "specified users, and then write these changes to the user or group " -#| "databases. If an error occurs (except in the final writes to the " -#| "databases), no changes are committed to the databases." +#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) msgid "" -"<_:command-1/> first tries to create or change all the specified users, and " -"then write these changes to the user or group databases. If an error occurs " -"(except in the final writes to the databases), no changes are committed to " -"the databases." +"If defined, either full pathname of a file containing device names (one per" +" line) or a \":\" delimited list of device names. Root logins will be allowed" +" only upon these devices." msgstr "" -"O newusers primeiro tenta criar ou alterar todos os " -"utilizadores especificados, e depois escreve estas alterações nas bases de " -"dados de utilizadores e grupos. Se ocorrer um erro (excepto se na fase final " -"de escrever nas bases de dados), as alterações não são cometidas para as " -"bases de dados." +"Se definido, ou é um nome de caminho completo de um ficheiro que contem " +"nomes de dispositivos (um por linha)m ou uma lista delimitada por \":\" de " +"nomes de dispositivos. Os logins de root serão permitidos apenas sobre " +"estes dispositivos." -#. (itstool) path: refsect1/para -#: newusers.8.xml.out:237 -msgid "" -"During this first pass, users are created with a locked password (and " -"passwords are not changed for the users which are not created). A second " -"pass is used to update the passwords using PAM. Failures to update a " -"password are reported, but will not stop the other password updates." -msgstr "" -"Durante este primeiro passo, os utilizadores são criados com uma palavra " -"passe trancada (e as palavras passe não são alteradas para os utilizadores " -"que não são criados). Um segundo passo é usado para actualizar as palavras " -"passe usando o PAM. As falhas ao actualizar uma palavra passe são " -"reportadas, mas não fazem parar as outras actualizações de palavras passe." - -#. (itstool) path: refsect1/para -#: newusers.8.xml.out:245 -msgid "" -"This command is intended to be used in a large system environment where many " -"accounts are updated at a single time." -msgstr "" -"Este comando destina-se a ser usado num ambiente de sistema grande onde " -"muitas contas são actualizadas de uma só vez." +#: su.1.xml:39(para) login.defs.5.xml:39(para) login.1.xml:39(para) +msgid "If not defined, root will be allowed on any device." +msgstr "Se não definido, o root será permitido em qualquer dispositivo." -#. (itstool) path: term/option -#: newusers.8.xml.out:259 pwck.8.xml.out:164 useradd.8.xml.out:108 -#: usermod.8.xml.out:89 -msgid "--badname" -msgstr "--badname" +#: su.1.xml:42(para) login.defs.5.xml:42(para) login.1.xml:42(para) +msgid "The device should be specified without the /dev/ prefix." +msgstr "O dispositivo deve ser especificado sem o prefixo /dev/." -#. (itstool) path: listitem/para -#: newusers.8.xml.out:262 pwck.8.xml.out:167 useradd.8.xml.out:111 -#: usermod.8.xml.out:92 -msgid "Allow names that do not conform to standards." -msgstr "Permite nomes que não estão em conformidade com standards." +#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" -#. (itstool) path: listitem/para -#: newusers.8.xml.out:273 +#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) msgid "" -"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " -"support these methods." -msgstr "" -"Os métodos disponíveis são DES, MD5, NONE, e SHA256 ou SHA512 se a sua libc " -"suportar estes métodos." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:292 useradd.8.xml.out:461 -msgid "Create a system account." -msgstr "Cria uma conta de sistema." - -#. (itstool) path: para/option -#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 -msgid "SYS_UID_MIN" -msgstr "" - -#. (itstool) path: para/option -#: newusers.8.xml.out:299 useradd.8.xml.out:468 usermod.8.xml.out:398 -#, fuzzy -#| msgid "LASTLOG_UID_MAX" -msgid "SYS_UID_MAX" -msgstr "LASTLOG_UID_MAX" - -#. (itstool) path: para/option -#. (itstool) path: para/replaceable -#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:321 -#: useradd.8.xml.out:470 useradd.8.xml.out:540 usermod.8.xml.out:397 -msgid "UID_MIN" +"List of groups to add to the user's supplementary groups set when logging in" +" on the console (as determined by the CONSOLE setting). Default is none. <" +"placeholder-1/> Use with caution - it is possible for users to gain permanent" +" access to these groups, even when not logged in on the console." msgstr "" +"Lista de grupos a adicionar ao conjunto de grupos suplementares do utilizador " +"quando se faz login na consola (como determinado pela definição CONSOLE). " +"A predefinição é nenhum. Use com cuidado - É possível " +"os utilizadores ganharem acesso permanente a estes grupos, mesmo quando " +"não fazem login na consola." -#. (itstool) path: para/option -#. (itstool) path: para/replaceable -#: newusers.8.xml.out:301 useradd.8.xml.out:310 useradd.8.xml.out:323 -#: useradd.8.xml.out:470 useradd.8.xml.out:545 usermod.8.xml.out:397 -#, fuzzy -#| msgid "LASTLOG_UID_MAX" -msgid "UID_MAX" -msgstr "LASTLOG_UID_MAX" +#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (boolean)" +msgstr " (booleano)" -#. (itstool) path: listitem/para -#: newusers.8.xml.out:295 useradd.8.xml.out:464 -#, fuzzy -#| msgid "" -#| "System users will be created with no aging information in /etc/" -#| "shadow, and their numeric identifiers are chosen in the " -#| "- range, defined " -#| "in login.defs, instead of -" -#| " (and their counterparts for " -#| "the creation of groups)." +#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) msgid "" -"System users will be created with no aging information in <_:filename-1/>, " -"and their numeric identifiers are chosen in the <_:option-2/>-<_:option-3/> " -"range, defined in <_:filename-4/>, instead of <_:option-5/>-<_:option-6/> " -"(and their <_:option-7/> counterparts for the creation of groups)." +"Indicate if login is allowed if we can't cd to the home directory. Default is" +" no." msgstr "" -"Os utilizadores de sistema serão criados sem nenhuma informação de " -"envelhecimento em /etc/shadow, e os seus " -"identificadores numéricos são escolhidos dentro do alcance " -" -, definido em " -"login.defs, em vez de -" -" (e os seus homólogos para a " -"criação de grupos)." +"Indica se é permitido o login se não pudermos fazer cd para o directório " +"home. A predefinição é \"não\"." -#. (itstool) path: listitem/para -#: newusers.8.xml.out:342 -#, fuzzy -#| msgid "" -#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " -#| "enforced." +#: su.1.xml:38(para) login.defs.5.xml:38(para) login.1.xml:38(para) msgid "" -"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " -"The default is 13." -msgstr "Será forçado um valor mínimo de 1000 e um valor máximo de 999,999,999." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:351 -#, fuzzy -#| msgid "" -#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " -#| "enforced." -msgid "" -"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " -"for SHA256 and SHA512. The default is 5000." -msgstr "Será forçado um valor mínimo de 1000 e um valor máximo de 999,999,999." - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:359 -#, fuzzy -#| msgid "" -#| "A minimal value of 1000 and a maximal value of 999,999,999 will be " -#| "enforced." -msgid "" -"A minimal value of 1 and a maximal value of 11 will be enforced for " -"YESCRYPT. The default is 5." -msgstr "Será forçado um valor mínimo de 1000 e um valor máximo de 999,999,999." - -#. (itstool) path: refsect1/para -#: newusers.8.xml.out:370 -msgid "" -"The input file must be protected since it contains unencrypted passwords." -msgstr "" -"O ficheiro de entrada deve ser protegido pois contém palavras passe não " -"encriptadas." - -#. (itstool) path: term/filename -#: newusers.8.xml.out:450 -msgid "/etc/pam.d/newusers" -msgstr "/etc/pam.d/newusers" - -#. (itstool) path: term/filename -#. (itstool) path: para/filename -#: newusers.8.xml.out:456 useradd.8.xml.out:222 useradd.8.xml.out:483 -#: useradd.8.xml.out:805 userdel.8.xml.out:215 usermod.8.xml.out:604 -msgid "/etc/subgid" -msgstr "/etc/subgid" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:458 useradd.8.xml.out:807 userdel.8.xml.out:217 -msgid "Per user subordinate group IDs." -msgstr "IDs de grupo subordinado por utilizador." - -#. (itstool) path: term/filename -#. (itstool) path: para/filename -#: newusers.8.xml.out:462 useradd.8.xml.out:222 useradd.8.xml.out:482 -#: useradd.8.xml.out:811 userdel.8.xml.out:221 usermod.8.xml.out:610 -msgid "/etc/subuid" -msgstr "/etc/subuid" - -#. (itstool) path: listitem/para -#: newusers.8.xml.out:464 useradd.8.xml.out:813 userdel.8.xml.out:223 -msgid "Per user subordinate user IDs." -msgstr "IDs de utilizador subordinado por utilizador." - -#. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:481 useradd.8.xml.out:926 userdel.8.xml.out:335 -#: usermod.8.xml.out:650 -#, fuzzy -#| msgid "/etc/subgid" -msgid "subgid" -msgstr "/etc/subgid" - -#. (itstool) path: citerefentry/refentrytitle -#: newusers.8.xml.out:484 useradd.8.xml.out:929 userdel.8.xml.out:338 -#: usermod.8.xml.out:653 -#, fuzzy -#| msgid "/etc/subuid" -msgid "subuid" -msgstr "/etc/subuid" - -#. (itstool) path: para/phrase -#: newusers.8.xml.out:479 useradd.8.xml.out:924 userdel.8.xml.out:333 -#: usermod.8.xml.out:648 -msgid "<_:citerefentry-1/>, <_:citerefentry-2/>," +"If set to yes, the user will login in the root (<" +"filename>/) directory if it is not possible to cd to her home" +" directory." msgstr "" +"Se definido para yes, o utilizador irá fazer " +"login no directório raiz (/) se não for possível fazer " +"cd para o seu directório home." -#. (itstool) path: refnamediv/refpurpose -#: nologin.8.xml.out:30 -msgid "politely refuse a login" -msgstr "recusa educadamente um login" +#. XXX: When compiled with PAM support, only sulogin uses ENV_HZ +#: su.1.xml:33(term) login.defs.5.xml:33(term) login.1.xml:33(term) +msgid " (string)" +msgstr " (string)" -#. (itstool) path: refsect1/para -#: nologin.8.xml.out:41 -#, fuzzy -#| msgid "" -#| "The nologin command displays a message that an account " -#| "is not available and exits non-zero. It is intended as a replacement " -#| "shell field for accounts that have been disabled." +#: su.1.xml:35(para) login.defs.5.xml:35(para) login.1.xml:35(para) msgid "" -"The <_:command-1/> command displays a message that an account is not " -"available and exits non-zero. It is intended as a replacement shell field " -"for accounts that have been disabled." -msgstr "" -"O comando nologin mostra uma mensagem de que a conta não " -"está disponível e termina com não-zero. Destina-se a ser uma substituição de " -"campo shell para as contas que foram desactivadas." - -#. (itstool) path: refsect1/para -#: nologin.8.xml.out:46 -msgid "To disable all logins, investigate <_:citerefentry-1/>." -msgstr "" - -#. (itstool) path: para/command -#: nologin.8.xml.out:52 -msgid "SSH_ORIGINAL_COMMAND" -msgstr "" - -#. (itstool) path: refsect1/para -#: nologin.8.xml.out:51 -#, fuzzy -#| msgid "" -#| "If SSH_ORIGINAL_COMMAND is populated it will be logged." -msgid "If <_:command-1/> is populated it will be logged." +"If set, it will be used to define the HZ environment variable when a user" +" login. The value must be preceded by HZ=. A" +" common value on Linux is HZ=100." msgstr "" -"Se SSH_ORIGINAL_COMMAND for preenchido será registado em " -"relatório." +"Se definido, irá ser usado para definir a variável de ambiente HZ quando um " +"utilizador faz login. O valor tem de ser precedido de HZ=. Um valor comum em Linux é HZ=100." -#. (itstool) path: refsect1/title -#: nologin.8.xml.out:69 -msgid "HISTORY" -msgstr "HISTORIA" - -#. (itstool) path: refsect1/para -#: nologin.8.xml.out:70 -#, fuzzy -#| msgid "The nologin command appeared in BSD 4.4." -msgid "The <_:command-1/> command appeared in BSD 4.4." -msgstr "O comando nologin apareceu no BSD 4.4." - -#. (itstool) path: refnamediv/refpurpose -#: passwd.1.xml.out:50 -msgid "change user password" -msgstr "muda a palavra passe do utilizador" - -#. (itstool) path: refsect1/para -#: passwd.1.xml.out:67 -#, fuzzy -#| msgid "" -#| "The passwd command changes passwords for user " -#| "accounts. A normal user may only change the password for their own " -#| "account, while the superuser may change the password for any account. " -#| "passwd also changes the account or associated password " -#| "validity period." +#: su.1.xml:41(para) login.defs.5.xml:41(para) login.1.xml:41(para) msgid "" -"The <_:command-1/> command changes passwords for user accounts. A normal " -"user may only change the password for their own account, while the superuser " -"may change the password for any account. <_:command-2/> also changes the " -"account or associated password validity period." +"The HZ environment variable is only set when the user (the" +" superuser) logs in with sulogin." msgstr "" -"O comando passwd muda palavras passe para contas de " -"utilizadores. Um utilizador normal só pode mudar a palavra passe da sua " -"própria conta, enquanto que o super-utilizador pode mudar a palavra passe de " -"qualquer conta. O passwd também muda a conta ou o período " -"de validade da palavra passe associada." +"A variável de ambiente HZ é apenas definida quando o " +"utilizador (o super-utilizador) inicia sessão com sulogin." -#. (itstool) path: refsect2/title -#: passwd.1.xml.out:76 -msgid "Password Changes" -msgstr "Mudanças de Palavras Passe" +#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:77 +#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) msgid "" -"The user is first prompted for their old password, if one is present. This " -"password is then encrypted and compared against the stored password. The " -"user has only one chance to enter the correct password. The superuser is " -"permitted to bypass this step so that forgotten passwords may be changed." +"If this file exists and is readable, login environment will be read from it." +" Every line should be in the form name=value." msgstr "" -"Ao utilizador é primeiro pedida a sua antiga palavra passe, se esta existir. " -"Esta palavra passe é então encriptada e comparada com a palavra passe " -"guardada. O utilizador tem apenas uma hipótese de inserir a palavra passe " -"correta. Ao super-utilizador é permitido saltar este passo para que as " -"palavras passe esquecidas possam ser mudadas." +"Se este ficheiro existir e for legível, a ambiente de login será lido de " +"ele. Cada linha deve estar no formato nome=valor." -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:85 -#, fuzzy -#| msgid "" -#| "After the password has been entered, password aging information is " -#| "checked to see if the user is permitted to change the password at this " -#| "time. If not, passwd refuses to change the password " -#| "and exits." -msgid "" -"After the password has been entered, password aging information is checked " -"to see if the user is permitted to change the password at this time. If not, " -"<_:command-1/> refuses to change the password and exits." -msgstr "" -"Após a palavra passe ser inserida, é verificada informação de envelhecimento " -"da palavra passe para se ver se é permitido ao utilizador mudar a palavra " -"passe nesta altura. Se não, o passwd recusa a mudança da " -"palavra passe e termina." +#: su.1.xml:38(para) login.defs.5.xml:38(para) login.1.xml:38(para) +msgid "Lines starting with a # are treated as comment lines and ignored." +msgstr "As linhas começadas com # são tratadas como comentários e ignoradas." -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:92 -msgid "" -"The user is then prompted twice for a replacement password. The second entry " -"is compared against the first and both are required to match in order for " -"the password to be changed." -msgstr "" -"Ao utilizador é então pedido duas vezes uma palavra passe de substituição. A " -"segunda entrada é comparada com a primeira e é requerido que ambas " -"correspondam para que a palavra passe seja mudada." +#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:98 +#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) msgid "" -"Then, the password is tested for complexity. <_:command-1/> will reject any " -"password which is not suitably complex. Care must be taken not to include " -"the system default erase or kill characters." +"If set, it will be used to define the PATH environment variable when a" +" regular user login. The value is a colon separated list of paths (for" +" example /bin:/usr/bin) and can be preceded by <" +"replaceable>PATH=. The default value is PATH=/bin:/usr/bin." msgstr "" +"Se definido, irá ser usado para definir a variável de ambiente PATH quando um " +"utilizador regular faz login. O valor é uma lista separada por dois pontos" +"de caminhos (por exemplo /bin:/usr/bin) e pode ser " +"precedido por PATH=. O valor predefinido é " +"PATH=/bin:/usr/bin." -#. (itstool) path: refsect2/title -#: passwd.1.xml.out:108 -msgid "Hints for user passwords" -msgstr "Dicas para palavra passe de utilizador" +#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" -#. (itstool) path: para/emphasis -#: passwd.1.xml.out:112 -msgid "UNIX" -msgstr "" - -#. (itstool) path: refsect2/para -#: passwd.1.xml.out:109 -#, fuzzy -#| msgid "" -#| "The security of a password depends upon the strength of the encryption " -#| "algorithm and the size of the key space. The legacy UNIX System encryption method is based on the NBS DES algorithm. " -#| "More recent methods are now recommended (see searches from the current position in the file" +" for an entry matching name." +msgstr "" +"getspent, getspname, fgetspent, e sgetspent cada um retorna um " +"apontador para um struct spwd. getspent retorna a próxima entrada a partir do ficheiro, e " +"fgetspentretorna a próxima entrada a partir do fluxo " +"dado, o que é assumido ser um ficheiro do formato do formato apropriado. " +"sgetspent retorna um apontador para um " +"struct spwd usando a string fornecida como entrada. " +"getspnam procura a partir da posição actual no ficheiro " +"por uma entrada que corresponda a name." + +#: shadow.3.xml:188(para) +msgid "" +"setspent and endspent may be used" +" to begin and end, respectively, access to the shadow password file." +msgstr "" +"setspent e endspent podem ser " +"usados para iniciar e terminar, respetivamente, o acesso ao ficheiro de " +"palavras passe sombra." + +#: shadow.3.xml:194(para) +msgid "" +"The lckpwdf and ulckpwdf routines" +" should be used to insure exclusive access to the /etc/shadow<" +"/filename> file. lckpwdf attempts to acquire a lock" +" using pw_lock for up to 15 seconds. It continues by" +" attempting to acquire a second lock using spw_lock for" +" the remainder of the initial 15 seconds. Should either attempt fail after a" +" total of 15 seconds, lckpwdf returns -1. When both" +" locks are acquired 0 is returned." +msgstr "" +"As rotinas lckpwdf e ulckpwdf " +"devem ser usadas para assegurar acesso exclusivo ao ficheiro " +"/etc/shadow. lckpwdf tenta adquirir " +"uma tranca usando pw_lock até aos 15 segundos. Continua " +"ao tentar adquirir uma segunda tranca usando spw_lock " +"no restante dos 15 segundos iniciais. Se qualquer uma das tentativas falhar " +"após o total de 15 segundos, lckpwdf retorna -1. " +"Quando ambas trancas são adquiridas é retornado 0." + +#: shadow.3.xml:209(para) +msgid "" +"Routines return NULL if no more entries are available or if an error occurs" +" during processing. Routines which have int as the" +" return value return 0 for success and -1 for failure." +msgstr "" +"As rotinas retornam NULL se não estiverem disponíveis mais entradas ou se " +"ocorrer um erro durante o processamento. As rotinas que têm int como o valor de retorno retornam 0 para sucesso e -1 para falha." + +#: shadow.3.xml:219(para) +msgid "" +"These routines may only be used by the superuser as access to the shadow" +" password file is restricted." +msgstr "" +"Estas rotinas só podem ser usadas pelo super-utilizador pois o acesso ao " +"ficheiro da palavras passe sombra é restrito." + +#: shadow.3.xml:239(para) +msgid "" +"getpwent3, shadow<" +"manvolnum>5." +msgstr "" +"getpwent3, shadow<" +"manvolnum>5." + +#: pwconv.8.xml:63(refentrytitle) pwconv.8.xml:70(refname) pwconv.8.xml:79(command) login.defs.5.xml:439(term) +msgid "pwconv" +msgstr "pwconv" + +#: pwconv.8.xml:71(refname) pwconv.8.xml:85(command) login.defs.5.xml:448(term) +msgid "pwunconv" +msgstr "pwunconv" + +#: pwconv.8.xml:72(refname) pwconv.8.xml:91(command) login.defs.5.xml:344(term) +msgid "grpconv" +msgstr "grpconv" + +#: pwconv.8.xml:73(refname) pwconv.8.xml:97(command) login.defs.5.xml:350(term) +msgid "grpunconv" +msgstr "grpunconv" + +#: pwconv.8.xml:74(refpurpose) +msgid "convert to and from shadow passwords and groups" +msgstr "converte para e de palavras passe e grupos sombra" + +#: pwconv.8.xml:106(para) +msgid "" +"The pwconv command creates shadow<" +"/emphasis> from passwd and an optionally" +" existing shadow." +msgstr "" +"O comando pwconv cria shadow a partir de passwd e de um " +"shadow de existência opcional." + +#: pwconv.8.xml:111(para) +msgid "" +"pwconv does not work with " +" enabled. To convert to tcb passwords, you should first use pwconv<" +"/command> to convert to shadowed passwords by disabling " +" in login.defs.)" +msgstr "" +"pwconv não funciona com activo. " +"Para converter para palavras passe tcb, você deve primeiro usar " +"pwconv para converter para palavras passe sombreadas ao " +"desactivar em login.defs e " +"depois converter para palavras passe tcb usando tcb_convert (e re-activar em login.defs.)" + +#: pwconv.8.xml:121(para) +msgid "" +"The pwunconv command creates passwd<" +"/emphasis> from passwd and shadow and then removes shadow<" +"/emphasis>." +msgstr "" +"O comando pwunconv cria >emphasis remap=\"I\">passwd<" +"/emphasis> a partir de passwd e shadow e depois remove shadow<" +"/emphasis>." + +#: pwconv.8.xml:127(para) +msgid "" +"pwunconv does not work with " +" enabled. You should first switch back from tcb to shadowed passwords using <" +"command>tcb_unconvert, and then disable in" +" login.defs before using pwunconv." +msgstr "" +"pwunconv não funciona com activo. " +"Você deve primeiro comutar de volta de tcb para palavras passe sombreadas " +"usando tcb_unconvert, e depois desactivar " +" em login.defs antes de usar " +"pwunconv." + +#: pwconv.8.xml:136(para) +msgid "" +"The grpconv command creates gshadow<" +"/emphasis> from group and an optionally" +" existing gshadow." +msgstr "" +"O comando grpconv cria gshadow<" +"/emphasis> a partir de group e de um " +"gshadow de existência opcional." + +#: pwconv.8.xml:142(para) +msgid "" +"The grpunconv command creates group<" +"/emphasis> from group and gshadow and then removes gshadow." +msgstr "" +"O comando grpunconv cria group<" +"/emphasis> a partir de group e gshadow e depois remove gshadow." + +#: pwconv.8.xml:149(para) +msgid "" +"These four programs all operate on the normal and shadow password and group" +" files: /etc/passwd, /etc/group, <" +"filename>/etc/shadow, and /etc/gshadow." +msgstr "" +"Estes quatro programas todos operam nos ficheiros de palavras passe e grupos " +"normais e sombreadas: /etc/passwd, " +"/etc/group, /etc/shadow, e " +"/etc/gshadow." + +#: pwconv.8.xml:156(para) +msgid "" +"Each program acquires the necessary locks before conversion. pwconv<" +"/command> and grpconv are similar. First, entries in the" +" shadowed file which don't exist in the main file are removed. Then, shadowed" +" entries which don't have `x' as the password in the main file are updated." +" Any missing shadowed entries are added. Finally, passwords in the main file" +" are replaced with `x'. These programs can be used for initial conversion as" +" well to update the shadowed file if the main file is edited by hand." +msgstr "" +"Cada programa adquire as trancas necessárias antes de conversão. " +"pwconv e grpconv são semelhantes. " +"Primeiro, as entradas no ficheiro ensombrado que não existem no ficheiro " +"principal são removidas. Depois, as entradas ensombradas que não têm `x' " +"como palavra passe no ficheiro principal são atualizadas. Quaisquer entradas " +"ensombradas em falta são adicionadas. Finalmente, as palavras passe no " +"ficheiro principal são substituídas por `x'. Estes programas podem ser usados " +"para conversão inicial assim como para actualizar o ficheiro ensombrado " +"se o ficheiro principal for editado manualmente." + +#: pwconv.8.xml:167(para) +msgid "" +"pwconv will use the values of PASS_MIN_DAYS, PASS_MAX_DAYS," +" and PASS_WARN_AGE from /etc/login.defs when adding new entries to /etc/shadow<" +"/filename>." +msgstr "" +"pwconv irá usar os valores de PASS_MIN_DAYS, PASS_MAX_DAYS," +" e PASS_WARN_AGE a partir de /etc/login.defs quando adiciona novas entradas em " +"/etc/shadow." + +#: pwconv.8.xml:176(para) +msgid "" +"Likewise pwunconv and grpunconv are" +" similar. Passwords in the main file are updated from the shadowed file." +" Entries which exist in the main file but not in the shadowed file are left" +" alone. Finally, the shadowed file is removed. Some password aging" +" information is lost by pwunconv. It will convert what it" +" can." +msgstr "" +"Do mesmo modo pwunconv e grpunconv " +"são semelhantes. As palavras passe no ficheiro principal são actualizadas a " +"partir do ficheiro ensombrado. As entradas que existem no ficheiro principal " +"mas não no ficheiro ensombrado são deixadas como tal. Finalmente, o ficheiro " +"ensombrado é removido. Qualquer informação de envelhecimento de palavra " +"passe é perdida pelo pwunconv. Ele irá converter o que " +"consegue." + +#: pwconv.8.xml:188(para) +msgid "" +"The options which apply to the pwconv, pwunconv<" +"/command>, grpconv, and grpunconv" +" commands are:" +msgstr "" +"As opções que se aplicam aos comandos pwconv, " +"pwunconv, grpconv, e " +"grpunconv são:" + +#: pwconv.8.xml:217(para) +msgid "" +"Errors in the password or group files (such as invalid or duplicate entries)" +" may cause these programs to loop forever or fail in other strange ways." +" Please run pwck and grpck to correct" +" any such errors before converting to or from shadow passwords or groups." +msgstr "" +"Erros nos ficheiros de grupos ou palavras passe (tais como entradas inválidas " +"ou duplicadas( podem fazer com que estes programas entrem em ciclo infinito " +"ou falhem em maneiras estranhas. Por favor corra pwck e " +"grpck para corrigir tais erros antes de converter para ou " +"de palavras passe ou grupos ensombrados." + +#: pwconv.8.xml:228(para) +msgid "" +"The following configuration variable in /etc/login.defs" +" changes the behavior of grpconv and grpunconv<" +"/command>:" +msgstr "" +"As seguintes variáveis de configuração em /etc/login.defs mudam o comportamento de grpconv e de " +"grpunconv:" + +#: pwconv.8.xml:236(para) +msgid "" +"The following configuration variables in /etc/login.defs" +" change the behavior of pwconv:" +msgstr "" +"As seguintes variáveis de configuração em /etc/login.defs mudam o comportamento de pwconv:" + +#: pwconv.8.xml:263(para) +msgid "" +"grpck8<" +"/citerefentry>, login.defs<" +"manvolnum>5, pwck<" +"/refentrytitle>8, tcb_convert8, tcb_unconvert8." +msgstr "" +"grpck8<" +"/citerefentry>, login.defs<" +"manvolnum>5, pwck<" +"/refentrytitle>8, tcb_convert8, tcb_unconvert8." + +#: pwck.8.xml:47(contrib) lastlog.8.xml:43(contrib) grpck.8.xml:42(contrib) +msgid "Creation, 1992" +msgstr "Criação, 1992" + +#: pwck.8.xml:63(refentrytitle) pwck.8.xml:70(refname) pwck.8.xml:76(command) login.defs.5.xml:430(term) +msgid "pwck" +msgstr "pwck" + +#: pwck.8.xml:71(refpurpose) +msgid "verify integrity of password files" +msgstr "verifica a integridade de ficheiros de palavras passe" + +#: pwck.8.xml:80(replaceable) passwd.5.xml:57(refentrytitle) passwd.5.xml:64(refname) passwd.1.xml:64(refentrytitle) passwd.1.xml:71(refname) passwd.1.xml:77(command) login.defs.5.xml:419(term) +msgid "passwd" +msgstr "passwd" + +#: pwck.8.xml:93(para) +msgid "" +"The pwck command verifies the integrity of the users and" +" authentication information. It checks that all entries in /etc/passwd and /etc/shadow(or the files in /etc/tcb, when <" +"option>USE_TCB is enabled) have the proper format and" +" contain valid data. The user is prompted to delete entries that are" +" improperly formatted or which have other uncorrectable errors." +msgstr "" +"O comando pwck verifica a integridade da informação " +"do utilizador e autenticação. Verifica que todas as entradas em /etc/passwd e /etc/shadow(ou os ficheiros em /etc/tcb, quando <" +"option>USE_TCB está activo) têm o formato correcto e " +"contêm dados válidos. O é chamado a apagar entradas que estão formatadas " +"de modo incorreto ou que têm outros erros incorrigíveis ." + +#: pwck.8.xml:105(para) grpck.8.xml:94(para) +msgid "Checks are made to verify that each entry has:" +msgstr "São feitos testes para verificar que cada entrada tem:" + +#: pwck.8.xml:108(para) grpck.8.xml:98(para) +msgid "the correct number of fields" +msgstr "o número correcto de campos" + +#: pwck.8.xml:111(para) +msgid "a unique and valid user name" +msgstr "um nome de utilizador único e válido" + +#: pwck.8.xml:114(para) +msgid "a valid user and group identifier" +msgstr "um identificador de utilizador e grupo válido" + +#: pwck.8.xml:117(para) +msgid "a valid primary group" +msgstr "um grupo primário válido" + +#: pwck.8.xml:120(para) +msgid "a valid home directory" +msgstr "um directório home válido" + +#: pwck.8.xml:123(para) +msgid "a valid login shell" +msgstr "uma shell de login válida" + +#: pwck.8.xml:127(para) +msgid "" +"shadow checks are enabled when a second file parameter" +" is specified or when /etc/shadow exists on the system." +msgstr "" +"As verificações shadow são activadas quando é " +"especificado um parâmetro de segundo ficheiro ou quando " +"/etc/shadow existe no sistema." + +#: pwck.8.xml:132(para) +msgid "These checks are the following:" +msgstr "Estas verificações são o seguinte:" + +#: pwck.8.xml:137(para) +msgid "" +"every passwd entry has a matching shadow entry, and every shadow entry has a" +" matching passwd entry" +msgstr "" +"cada entrada passwd tem uma entrada shadow correspondente, e cada entrada " +"shadow tem uma entrada passwd correspondente." + +#: pwck.8.xml:143(para) +msgid "passwords are specified in the shadowed file" +msgstr "as palavras passe são especificadas no ficheiro ensombrado" + +#: pwck.8.xml:146(para) +msgid "shadow entries have the correct number of fields" +msgstr "entradas sombra têm o número actual de campos" + +#: pwck.8.xml:149(para) +msgid "shadow entries are unique in shadow" +msgstr "entradas sombra são únicas em shadow" + +#: pwck.8.xml:152(para) +msgid "the last password changes are not in the future" +msgstr "as últimas alterações de palavra passe não estão no futuro" + +#: pwck.8.xml:156(para) +msgid "" +"The checks for correct number of fields and unique user name are fatal. If" +" the entry has the wrong number of fields, the user will be prompted to" +" delete the entire line. If the user does not answer affirmatively, all" +" further checks are bypassed. An entry with a duplicated user name is" +" prompted for deletion, but the remaining checks will still be made. All" +" other errors are warning and the user is encouraged to run the usermod command to correct the error." +msgstr "" +"As verificações para o correcto número de campos e nome de utilizador " +"único são fatais. Se a entrada tiver o número errado de campos, será pedido " +"ao utilizador para apagar a linha inteira. Se o utilizador não responder " +"afirmativamente, todos os testes posteriores são saltados. Uma entrada com " +"um nome de utilizador duplicado é avisada para remoção, mas os restantes " +"testes continuarão a ser feitos. Todos os outros erros produzem avisos e o " +"utilizador é encorajado a correr o comando usermod " +"para corrigir o erro." + +#: pwck.8.xml:167(para) +msgid "" +"The commands which operate on the /etc/passwd file are" +" not able to alter corrupted or duplicated entries. pwck" +" should be used in those circumstances to remove the offending entry." +msgstr "" +"Os comandos que operam no ficheiro /etc/passwd não são " +"capazes de alterar entradas corruptas ou duplicadas. Deve ser usado o " +"pwck nestas circunstâncias para remover a entrada " +"ofensiva." + +#: pwck.8.xml:177(para) grpck.8.xml:148(para) +msgid "" +"The and options cannot be combined." +msgstr "" +"As opções e não podem ser combinadas." + +#: pwck.8.xml:181(para) +msgid "The options which apply to the pwck command are:" +msgstr "As opções que se aplicam ao comando pwck são:" + +#: pwck.8.xml:204(para) +msgid "" +"Report errors only. The warnings which do not require any action from the" +" user won't be displayed." +msgstr "" +"Apenas reporta erros. Os avisos que não requerem nenhuma acção do utilizador " +"não serão mostrados." + +#: pwck.8.xml:211(term) grpck.8.xml:163(term) +msgid ", " +msgstr ", " + +#: pwck.8.xml:213(para) +msgid "Execute the pwck command in read-only mode." +msgstr "Executa o comando pwck em modo de só-leitura." + +#: pwck.8.xml:231(term) grpck.8.xml:185(term) +msgid ", " +msgstr ", " + +#: pwck.8.xml:233(para) +msgid "" +"Sort entries in /etc/passwd and /etc/shadow<" +"/filename> by UID." +msgstr "" +"Ordena as entradas em /etc/passwd e " +"/etc/shadow pelo UID." + +#: pwck.8.xml:237(para) +msgid "This option has no effect when is enabled." +msgstr "Esta opção não tem efeito quando está activo." + +#: pwck.8.xml:244(para) +msgid "" +"By default, pwck operates on the files /etc/passwd and /etc/shadow (or the files in /etc/tcb)." +" The user may select alternate files with the passwd<" +"/replaceable> and shadow parameters." +msgstr "" +"Por predefinição, pwck opera nos ficheiros /etc/passwd e /etc/shadow (ou nos ficheiros em /etc/tcb). O utilizador pode selecionar ficheiros alternativos com os " +"parâmetros passwd e shadow." + +#: pwck.8.xml:253(para) +msgid "" +"Note that when is enabled, you cannot specify an" +" alternative shadow file. In future releases, this" +" parameter could be replaced by an alternate TCB directory." +msgstr "" +"Note que quando está activo, você não pode " +"especificar um ficheiro shadow alternativo. Em " +"lançamentos futuros, este parâmetro pode ser substituído por um directório " +"TCB alternativo." + +#: pwck.8.xml:322(para) +msgid "one or more bad password entries" +msgstr "uma ou mais entradas de má palavra passe" + +#: pwck.8.xml:328(para) +msgid "can't open password files" +msgstr "incapaz de abrir ficheiros de palavra passe" + +#: pwck.8.xml:334(para) +msgid "can't lock password files" +msgstr "incapaz de trancar ficheiros de palavra passe" + +#: pwck.8.xml:340(para) +msgid "can't update password files" +msgstr "incapaz de actualizar ficheiros de palavra passe" + +#: pwck.8.xml:346(para) +msgid "can't sort password files" +msgstr "incapaz de ordenar ficheiros de palavra passe" + +#: pwck.8.xml:304(para) +msgid "" +"The pwck command exits with the following values: <" +"placeholder-1/>" +msgstr "" +"O comando pwck termina com os seguintes valores: " +"" + +#: pwck.8.xml:355(para) +msgid "" +"group5<" +"/citerefentry>, grpck8, passwd<" +"/refentrytitle>5, <" +"refentrytitle>shadow5," +" usermod8." +msgstr "" +"group5<" +"/citerefentry>, grpck8, passwd<" +"/refentrytitle>5, <" +"refentrytitle>shadow5," +" usermod8." + +#: porttime.5.xml:57(refentrytitle) porttime.5.xml:64(refname) msgid "porttime" msgstr "porttime" -#. (itstool) path: refnamediv/refpurpose -#: porttime.5.xml.out:41 +#: porttime.5.xml:65(refpurpose) msgid "port access time file" msgstr "ficheiro de tempo de acesso ao porto" -#. (itstool) path: refsect1/para -#: porttime.5.xml.out:46 -#, fuzzy -#| msgid "" -#| "porttime contains a list of tty devices, " -#| "user names, and permitted login times." +#: porttime.5.xml:70(para) msgid "" -"<_:emphasis-1/> contains a list of tty devices, user names, and permitted " -"login times." +"porttime contains a list of tty devices," +" user names, and permitted login times." msgstr "" "porttime contém uma lista de dispositivos " "tty, nomes de utilizadores, e tempos de login permitidos." -#. (itstool) path: refsect1/para -#: porttime.5.xml.out:51 +#: porttime.5.xml:75(para) msgid "" -"Each entry consists of three colon separated fields. The first field is a " -"comma separated list of tty devices, or an asterisk to indicate that all tty " -"devices are matched by this entry. The second field is a comma separated " -"list of user names, or an asterisk to indicated that all user names are " -"matched by this entry. The third field is a comma separated list of " -"permitted access times." +"Each entry consists of three colon separated fields. The first field is a" +" comma separated list of tty devices, or an asterisk to indicate that all tty" +" devices are matched by this entry. The second field is a comma separated" +" list of user names, or an asterisk to indicated that all user names are" +" matched by this entry. The third field is a comma separated list of" +" permitted access times." msgstr "" "Cada entrada consiste de três campos separados por dois pontos. O primeiro " -"campo é uma lista de dispositivos tty separados por virgulas, ou um " -"asterisco para indicar que todos os dispositivos correspondem a esta " -"entrada. O segundo campo é uma lista de nomes de utilizadores separados por " -"vírgulas, ou um asterisco para indicar que todos os nomes de utilizadores " -"correspondem a esta entrada. O terceiro campo é uma lista de tempos de " -"acesso permitidos separados por virgulas." +"campo é uma lista de dispositivos tty separados por virgulas, ou um asterisco " +"para indicar que todos os dispositivos correspondem a esta entrada. O segundo " +"campo é uma lista de nomes de utilizadores separados por vírgulas, ou um " +"asterisco para indicar que todos os nomes de utilizadores correspondem a " +"esta entrada. O terceiro campo é uma lista de tempos de acesso permitidos " +"separados por virgulas." -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:62 -msgid "Su" -msgstr "" - -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:62 -msgid "Mo" -msgstr "" - -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:63 -msgid "Tu" -msgstr "" - -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:63 -msgid "We" -msgstr "" - -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:64 -msgid "Th" -msgstr "" - -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:64 -msgid "Fr" -msgstr "" - -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:65 -msgid "Sa" -msgstr "" - -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:66 -msgid "Wk" -msgstr "" - -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:67 porttime.5.xml.out:68 -msgid "Al" -msgstr "" - -#. (itstool) path: refsect1/para -#: porttime.5.xml.out:60 -#, fuzzy -#| msgid "" -#| "Each access time entry consists of zero or more days of the week, " -#| "abbreviated Su, Mo, " -#| "Tu, We, Th, Fr, and Sa, followed " -#| "by a pair of times separated by a hyphen. The abbreviation Wk may be used to represent Monday thru Friday, and Al may be used to indicate every day. If no days are given, " -#| "Al is assumed." +#: porttime.5.xml:84(para) msgid "" -"Each access time entry consists of zero or more days of the week, " -"abbreviated <_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/>, <_:emphasis-4/" -">, <_:emphasis-5/>, <_:emphasis-6/>, and <_:emphasis-7/>, followed by a pair " -"of times separated by a hyphen. The abbreviation <_:emphasis-8/> may be used " -"to represent Monday thru Friday, and <_:emphasis-9/> may be used to indicate " -"every day. If no days are given, <_:emphasis-10/> is assumed." +"Each access time entry consists of zero or more days of the week, abbreviated" +" Su, Mo, Tu, <" +"emphasis>We, Th, Fr, and" +" Sa, followed by a pair of times separated by a hyphen." +" The abbreviation Wk may be used to represent Monday" +" thru Friday, and Al may be used to indicate every day." +" If no days are given, Al is assumed." msgstr "" "Cada entrada de tempo de acesso consiste de zero ou mais dias da semana, " "abreviados Su, Mo, Tu para indicar todos os dias. Se não forem dados dias, é assumido " "Al." -#. (itstool) path: refsect1/title -#: porttime.5.xml.out:74 +#: porttime.5.xml:98(title) msgid "EXAMPLES" msgstr "EXEMPLOS" -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:77 -msgid "jfh" -msgstr "" - -#. (itstool) path: refsect1/para -#: porttime.5.xml.out:75 -#, fuzzy -#| msgid "" -#| "The following entry allows access to user jfh on every port during weekdays from 9am to 5pm." +#: porttime.5.xml:99(para) msgid "" -"The following entry allows access to user <_:emphasis-1/> on every port " -"during weekdays from 9am to 5pm." +"The following entry allows access to user jfh on every port during weekdays from 9am to 5pm." msgstr "" "A seguinte entrada permite acesso ao utilizador jfh em todos os portos durante dias da semana das 09 até às 17 horas." -#. (itstool) path: refsect1/para -#: porttime.5.xml.out:81 +#: porttime.5.xml:105(para) msgid "*:jfh:Wk0900-1700" msgstr "*:jfh:Wk0900-1700" -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:85 -msgid "oper" -msgstr "" - -#. (itstool) path: para/filename -#: porttime.5.xml.out:86 -msgid "/dev/console" -msgstr "" - -#. (itstool) path: refsect1/para -#: porttime.5.xml.out:83 -#, fuzzy -#| msgid "" -#| "The following entries allow access only to the users root and oper on /dev/console at any time. This illustrates how the /etc/porttime file is an ordered list of access times. Any other user would " -#| "match the second entry which does not permit access at any time." +#: porttime.5.xml:107(para) msgid "" -"The following entries allow access only to the users <_:emphasis-1/> and <_:" -"emphasis-2/> on <_:filename-3/> at any time. This illustrates how the <_:" -"filename-4/> file is an ordered list of access times. Any other user would " -"match the second entry which does not permit access at any time." +"The following entries allow access only to the users root and oper on /dev/console at any" +" time. This illustrates how the /etc/porttime file is an" +" ordered list of access times. Any other user would match the second entry" +" which does not permit access at any time." msgstr "" -"As seguintes entradas permitem acesso apenas aos utilizadores " -"root e oper a /dev/" -"console a qualquer hora. Isto ilustra como o ficheiro /" -"etc/porttime é uma lista ordenada de tempos de acesso. Qualquer " -"outro utilizador iria corresponder à segunda entrada que não permite acesso " -"a qualquer hora." +"As seguintes entradas permitem acesso apenas aos utilizadores root e oper a /dev/console " +"a qualquer hora. Isto ilustra como o ficheiro /etc/porttime é uma lista ordenada de tempos de acesso. Qualquer outro utilizador " +"iria corresponder à segunda entrada que não permite acesso a qualquer hora." -#. (itstool) path: refsect1/programlisting -#: porttime.5.xml.out:92 -#, fuzzy -#| msgid "" -#| "\n" -#| " console:root,oper:Al0000-2400\n" -#| " console:*:\n" -#| " " -msgid "console:root,oper:Al0000-2400 console:*:" -msgstr "" -"\n" -" console:root,oper:Al0000-2400\n" -" console:*:\n" -" " +#: porttime.5.xml:116(programlisting) +#, no-wrap +msgid "\n console:root,oper:Al0000-2400\n console:*:\n " +msgstr "\n console:root,oper:Al0000-2400\n console:*:\n " -#. (itstool) path: para/emphasis -#: porttime.5.xml.out:99 -msgid "games" -msgstr "" - -#. (itstool) path: refsect1/para -#: porttime.5.xml.out:97 -#, fuzzy -#| msgid "" -#| "The following entry allows access for the user games " -#| "on any port during non-working hours." +#: porttime.5.xml:121(para) msgid "" -"The following entry allows access for the user <_:emphasis-1/> on any port " -"during non-working hours." +"The following entry allows access for the user games on" +" any port during non-working hours." msgstr "" "A seguinte entrada permite acesso ao utilizador games a " "qualquer porto durante horas de não-trabalho." -#. (itstool) path: refsect1/para -#: porttime.5.xml.out:102 +#: porttime.5.xml:126(para) msgid "*:games:Wk1700-0900,SaSu0000-2400" msgstr "*:games:Wk1700-0900,SaSu0000-2400" -#. (itstool) path: refnamediv/refpurpose -#: pwck.8.xml.out:48 -#, fuzzy -#| msgid "verify integrity of password files" -msgid "verify the integrity of password files" -msgstr "verifica a integridade de ficheiros de palavras passe" +#: porttime.5.xml:133(filename) logoutd.8.xml:92(filename) +msgid "/etc/porttime" +msgstr "/etc/porttime" -#. (itstool) path: arg/replaceable -#: pwck.8.xml.out:57 -msgid "PASSWORDFILE" -msgstr "" - -#. (itstool) path: arg/replaceable -#. (itstool) path: para/replaceable -#: pwck.8.xml.out:61 pwck.8.xml.out:106 -msgid "SHADOWFILE" -msgstr "" - -#. (itstool) path: phrase/filename -#: pwck.8.xml.out:75 pwck.8.xml.out:226 -#, fuzzy -#| msgid "/etc/motd" -msgid "/etc/tcb" -msgstr "/etc/motd" - -#. (itstool) path: para/phrase -#: pwck.8.xml.out:74 -msgid "(or the files in <_:filename-1/>, when <_:option-2/> is enabled)" -msgstr "" +#: porttime.5.xml:135(para) logoutd.8.xml:94(para) +msgid "File containing port access." +msgstr "Ficheiro que contem acesso a porto." -#. (itstool) path: refsect1/para -#: pwck.8.xml.out:70 -#, fuzzy -#| msgid "" -#| "The grpck command verifies the integrity of the groups " -#| "information. It checks that all entries in /etc/groupand /etc/gshadow have the proper format and contain valid data. The " -#| "user is prompted to delete entries that are improperly formatted or which " -#| "have other uncorrectable errors." +#: porttime.5.xml:143(para) login.access.5.xml:134(para) msgid "" -"The <_:command-1/> command verifies the integrity of the users and " -"authentication information. It checks that all entries in <_:filename-2/> " -"and <_:filename-3/> <_:phrase-4/> have the proper format and contain valid " -"data. The user is prompted to delete entries that are improperly formatted " -"or which have other uncorrectable errors." +"login1<" +"/citerefentry>." msgstr "" -"O comando grpck verifica a integridade da informação de " -"grupos. Verifica se todas as entradas em /etc/group e /etc/gshadowtêm o formato apropriado e contêm dados válidos. Ao utilizador é " -"pedido para apagar as entradas que não têm formato apropriado ou que têm " -"outros erros incorrigíveis." +"login1<" +"/citerefentry>." -#. (itstool) path: listitem/para -#: pwck.8.xml.out:88 -msgid "a unique and valid user name" -msgstr "um nome de utilizador único e válido" +#: passwd.5.xml:65(refpurpose) +msgid "the password file" +msgstr "o ficheiro da palavra passe" -#. (itstool) path: listitem/para -#: pwck.8.xml.out:91 -msgid "a valid user and group identifier" -msgstr "um identificador de utilizador e grupo válido" - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:94 -msgid "a valid primary group" -msgstr "um grupo primário válido" - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:97 -msgid "a valid home directory" -msgstr "um directório home válido" - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:100 -msgid "a valid login shell" -msgstr "uma shell de login válida" - -#. (itstool) path: refsect1/para -#: pwck.8.xml.out:104 -#, fuzzy -#| msgid "" -#| "shadow checks are enabled when a second file " -#| "parameter is specified or when /etc/shadow exists on " -#| "the system." +#: passwd.5.xml:70(para) msgid "" -"Checks for shadowed password information are enabled when the second file " -"parameter <_:replaceable-1/> is specified or when <_:filename-2/> exists on " -"the system." +"/etc/passwd contains one line for each user account," +" with seven fields delimited by colons (:). These fields are:" msgstr "" -"As verificações shadow são activadas quando é " -"especificado um parâmetro de segundo ficheiro ou quando /etc/" -"shadow existe no sistema." +"/etc/passwd contém uma linha para cada conta de " +"utilizador, com sete campos delimitados por dois pontos (:). " +"Estes campos são:" -#. (itstool) path: refsect1/para -#: pwck.8.xml.out:109 -msgid "These checks are the following:" -msgstr "Estas verificações são o seguinte:" +#: passwd.5.xml:81(para) +msgid "optional encrypted password" +msgstr "palavra passe encriptada opcional" -#. (itstool) path: listitem/para -#: pwck.8.xml.out:114 -msgid "" -"every passwd entry has a matching shadow entry, and every shadow entry has a " -"matching passwd entry" -msgstr "" -"cada entrada passwd tem uma entrada shadow correspondente, e cada entrada " -"shadow tem uma entrada passwd correspondente." +#: passwd.5.xml:84(para) +msgid "numerical user ID" +msgstr "ID numérico do utilizador" -#. (itstool) path: listitem/para -#: pwck.8.xml.out:120 -msgid "passwords are specified in the shadowed file" -msgstr "as palavras passe são especificadas no ficheiro ensombrado" +#: passwd.5.xml:87(para) +msgid "numerical group ID" +msgstr "ID numérico do grupo" -#. (itstool) path: listitem/para -#: pwck.8.xml.out:123 -msgid "shadow entries have the correct number of fields" -msgstr "entradas sombra têm o número actual de campos" +#: passwd.5.xml:90(para) +msgid "user name or comment field" +msgstr "nome de utilizador ou campo de comentário" -#. (itstool) path: listitem/para -#: pwck.8.xml.out:126 -msgid "shadow entries are unique in shadow" -msgstr "entradas sombra são únicas em shadow" +#: passwd.5.xml:93(para) +msgid "user home directory" +msgstr "directório home do utilizador" -#. (itstool) path: listitem/para -#: pwck.8.xml.out:129 -msgid "the last password changes are not in the future" -msgstr "as últimas alterações de palavra passe não estão no futuro" +#: passwd.5.xml:96(para) +msgid "optional user command interpreter" +msgstr "interpretador de comandos opcional do utilizador" -#. (itstool) path: refsect1/para -#: pwck.8.xml.out:133 -#, fuzzy -#| msgid "" -#| "The checks for correct number of fields and unique user name are fatal. " -#| "If the entry has the wrong number of fields, the user will be prompted to " -#| "delete the entire line. If the user does not answer affirmatively, all " -#| "further checks are bypassed. An entry with a duplicated user name is " -#| "prompted for deletion, but the remaining checks will still be made. All " -#| "other errors are warning and the user is encouraged to run the " -#| "usermod command to correct the error." +#: passwd.5.xml:100(para) msgid "" -"The checks for correct number of fields and unique user name are fatal. If " -"the entry has the wrong number of fields, the user will be prompted to " -"delete the entire line. If the user does not answer affirmatively, all " -"further checks are bypassed. An entry with a duplicated user name is " -"prompted for deletion, but the remaining checks will still be made. All " -"other errors are warnings and the user is encouraged to run the <_:command-1/" -"> command to correct the error." +"If the password field is a lower-case x," +" then the encrypted password is actually stored in the <" +"refentrytitle>shadow5" +" file instead; there must be a corresponding line in the" +" /etc/shadow file, or else the user account is invalid." msgstr "" -"As verificações para o correcto número de campos e nome de utilizador único " -"são fatais. Se a entrada tiver o número errado de campos, será pedido ao " -"utilizador para apagar a linha inteira. Se o utilizador não responder " -"afirmativamente, todos os testes posteriores são saltados. Uma entrada com " -"um nome de utilizador duplicado é avisada para remoção, mas os restantes " -"testes continuarão a ser feitos. Todos os outros erros produzem avisos e o " -"utilizador é encorajado a correr o comando usermod para " -"corrigir o erro." +"Se o campo password for um x minúsculo, " +"então a palavra passe encriptada está realmente guardada no ficheiro " +"shadow5; tem de existir uma linha correspondente " +"no ficheiro /etc/shadow, ou a conta do utilizador fica " +"inválida." -#. (itstool) path: refsect1/para -#: pwck.8.xml.out:144 -#, fuzzy -#| msgid "" -#| "The commands which operate on the /etc/passwd file " -#| "are not able to alter corrupted or duplicated entries. pwck should be used in those circumstances to remove the offending " -#| "entry." +#: passwd.5.xml:109(para) msgid "" -"The commands which operate on the <_:filename-1/> file are not able to alter " -"corrupted or duplicated entries. <_:command-2/> should be used in those " -"circumstances to remove the offending entry." +"The encrypted password field may be empty, in which case" +" no password is required to authenticate as the specified login name." +" However, some applications which read the /etc/passwd" +" file may decide not to permit any access at all if the" +" password field is blank." msgstr "" -"Os comandos que operam no ficheiro /etc/passwd não são " -"capazes de alterar entradas corruptas ou duplicadas. Deve ser usado o " -"pwck nestas circunstâncias para remover a entrada " -"ofensiva." - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:181 -msgid "" -"Report errors only. The warnings which do not require any action from the " -"user won't be displayed." -msgstr "" -"Apenas reporta erros. Os avisos que não requerem nenhuma acção do utilizador " -"não serão mostrados." - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:190 -#, fuzzy -#| msgid "Execute the pwck command in read-only mode." -msgid "Execute the <_:command-1/> command in read-only mode." -msgstr "Executa o comando pwck em modo de só-leitura." - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:211 -#, fuzzy -#| msgid "" -#| "Sort entries in /etc/passwd and /etc/" -#| "shadow by UID." -msgid "Sort entries in <_:filename-1/> and <_:filename-2/> by UID." -msgstr "" -"Ordena as entradas em /etc/passwd e /etc/" -"shadow pelo UID." - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:215 -#, fuzzy -#| msgid "This option has no effect when is enabled." -msgid "This option has no effect when <_:option-1/> is enabled." -msgstr "Esta opção não tem efeito quando está activo." - -#. (itstool) path: para/phrase -#: pwck.8.xml.out:225 -msgid "(or the files in <_:filename-1/>)" -msgstr "" - -#. (itstool) path: refsect1/para -#: pwck.8.xml.out:222 -#, fuzzy -#| msgid "" -#| "By default, pwck operates on the files /etc/" -#| "passwd and /etc/shadow (or the files in /etc/tcb). The user may select alternate files with the " -#| "passwd and shadow " -#| "parameters." -msgid "" -"By default, <_:command-1/> operates on the files <_:filename-2/> and <_:" -"filename-3/><_:phrase-4/>. The user may select alternate files with the <_:" -"replaceable-5/> and <_:replaceable-6/> parameters." -msgstr "" -"Por predefinição, pwck opera nos ficheiros /etc/" -"passwd e /etc/shadow (ou nos ficheiros em /etc/tcb). O utilizador pode selecionar ficheiros alternativos com os " -"parâmetros passwd e shadow." - -#. (itstool) path: refsect1/para -#: pwck.8.xml.out:231 -#, fuzzy -#| msgid "" -#| "Note that when is enabled, you cannot specify an " -#| "alternative shadow file. In future releases, " -#| "this parameter could be replaced by an alternate TCB directory." -msgid "" -"Note that when <_:option-1/> is enabled, you cannot specify an alternative " -"<_:replaceable-2/> file. In future releases, this parameter could be " -"replaced by an alternate TCB directory." -msgstr "" -"Note que quando está activo, você não pode " -"especificar um ficheiro shadow alternativo. Em " -"lançamentos futuros, este parâmetro pode ser substituído por um directório " -"TCB alternativo." - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:301 -msgid "one or more bad password entries" -msgstr "uma ou mais entradas de má palavra passe" - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:307 -msgid "can't open password files" -msgstr "incapaz de abrir ficheiros de palavra passe" - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:313 -msgid "can't lock password files" -msgstr "incapaz de trancar ficheiros de palavra passe" - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:319 -msgid "can't update password files" -msgstr "incapaz de actualizar ficheiros de palavra passe" - -#. (itstool) path: listitem/para -#: pwck.8.xml.out:325 -msgid "can't sort password files" -msgstr "incapaz de ordenar ficheiros de palavra passe" - -#. (itstool) path: refnamediv/refpurpose -#: pwconv.8.xml.out:50 -msgid "convert to and from shadow passwords and groups" -msgstr "converte para e de palavras passe e grupos sombra" - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:82 pwconv.8.xml.out:112 -#, fuzzy -#| msgid "" -#| "The pwconv command creates shadow from passwd and an optionally existing shadow." -msgid "" -"The <_:command-1/> command creates <_:emphasis-2/> from <_:emphasis-3/> and " -"an optionally existing <_:emphasis-4/>." -msgstr "" -"O comando pwconv cria shadow a partir de passwd e de um " -"shadow de existência opcional." - -#. (itstool) path: para/command -#. (itstool) path: citerefentry/refentrytitle -#: pwconv.8.xml.out:93 pwconv.8.xml.out:251 -msgid "tcb_convert" -msgstr "" - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:87 -#, fuzzy -#| msgid "" -#| "pwconv does not work with " -#| "enabled. To convert to tcb passwords, you should first use " -#| "pwconv to convert to shadowed passwords by disabling " -#| " in login.defs and then " -#| "convert to tcb password using tcb_convert (and re-" -#| "enable in login.defs.)" -msgid "" -"<_:command-1/> does not work with <_:option-2/> enabled. To convert to tcb " -"passwords, you should first use <_:command-3/> to convert to shadowed " -"passwords by disabling <_:option-4/> in <_:filename-5/> and then convert to " -"tcb password using <_:command-6/> (and re-enable <_:option-7/> in <_:" -"filename-8/>.)" -msgstr "" -"pwconv não funciona com activo. " -"Para converter para palavras passe tcb, você deve primeiro usar " -"pwconv para converter para palavras passe sombreadas ao " -"desactivar em login.defs e " -"depois converter para palavras passe tcb usando tcb_convert (e re-activar em login.defs.)" - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:97 pwconv.8.xml.out:118 -msgid "" -"The <_:command-1/> command creates <_:emphasis-2/> from <_:emphasis-3/> and " -"<_:emphasis-4/> and then removes <_:emphasis-5/>." -msgstr "" - -#. (itstool) path: para/command -#. (itstool) path: citerefentry/refentrytitle -#: pwconv.8.xml.out:106 pwconv.8.xml.out:254 -msgid "tcb_unconvert" -msgstr "" - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:103 -#, fuzzy -#| msgid "" -#| "pwunconv does not work with " -#| "enabled. You should first switch back from tcb to shadowed passwords " -#| "using tcb_unconvert, and then disable " -"activo. Você deve primeiro comutar de volta de tcb para palavras passe " -"sombreadas usando tcb_unconvert, e depois desactivar " -" em login.defs antes de usar " -"pwunconv." - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:125 -#, fuzzy -#| msgid "" -#| "These four programs all operate on the normal and shadow password and " -#| "group files: /etc/passwd, /etc/group, /etc/shadow, and /etc/gshadow." -msgid "" -"These four programs all operate on the normal and shadow password and group " -"files: <_:filename-1/>, <_:filename-2/>, <_:filename-3/>, and <_:filename-4/" -">." -msgstr "" -"Estes quatro programas todos operam nos ficheiros de palavras passe e grupos " -"normais e sombreadas: /etc/passwd, /etc/" -"group, /etc/shadow, e /etc/" -"gshadow." - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:132 -#, fuzzy -#| msgid "" -#| "Each program acquires the necessary locks before conversion. " -#| "pwconv and grpconv are similar. " -#| "First, entries in the shadowed file which don't exist in the main file " -#| "are removed. Then, shadowed entries which don't have `x' as the password " -#| "in the main file are updated. Any missing shadowed entries are added. " -#| "Finally, passwords in the main file are replaced with `x'. These programs " -#| "can be used for initial conversion as well to update the shadowed file if " -#| "the main file is edited by hand." -msgid "" -"Each program acquires the necessary locks before conversion. <_:command-1/> " -"and <_:command-2/> are similar. First, entries in the shadowed file which " -"don't exist in the main file are removed. Then, shadowed entries which don't " -"have `x' as the password in the main file are updated. Any missing shadowed " -"entries are added. Finally, passwords in the main file are replaced with " -"`x'. These programs can be used for initial conversion as well to update the " -"shadowed file if the main file is edited by hand." -msgstr "" -"Cada programa adquire as trancas necessárias antes de conversão. " -"pwconv e grpconv são semelhantes. " -"Primeiro, as entradas no ficheiro ensombrado que não existem no ficheiro " -"principal são removidas. Depois, as entradas ensombradas que não têm `x' " -"como palavra passe no ficheiro principal são atualizadas. Quaisquer entradas " -"ensombradas em falta são adicionadas. Finalmente, as palavras passe no " -"ficheiro principal são substituídas por `x'. Estes programas podem ser " -"usados para conversão inicial assim como para actualizar o ficheiro " -"ensombrado se o ficheiro principal for editado manualmente." - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:143 -msgid "" -"<_:command-1/> will use the values of <_:emphasis-2/>, <_:emphasis-3/>, and " -"<_:emphasis-4/> from <_:filename-5/> when adding new entries to <_:" -"filename-6/>." -msgstr "" - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:152 -#, fuzzy -#| msgid "" -#| "Likewise pwunconv and grpunconv are " -#| "similar. Passwords in the main file are updated from the shadowed file. " -#| "Entries which exist in the main file but not in the shadowed file are " -#| "left alone. Finally, the shadowed file is removed. Some password aging " -#| "information is lost by pwunconv. It will convert what " -#| "it can." -msgid "" -"Likewise <_:command-1/> and <_:command-2/> are similar. Passwords in the " -"main file are updated from the shadowed file. Entries which exist in the " -"main file but not in the shadowed file are left alone. Finally, the shadowed " -"file is removed. Some password aging information is lost by <_:command-3/>. " -"It will convert what it can." -msgstr "" -"Do mesmo modo pwunconv e grpunconv são " -"semelhantes. As palavras passe no ficheiro principal são actualizadas a " -"partir do ficheiro ensombrado. As entradas que existem no ficheiro principal " -"mas não no ficheiro ensombrado são deixadas como tal. Finalmente, o ficheiro " -"ensombrado é removido. Qualquer informação de envelhecimento de palavra " -"passe é perdida pelo pwunconv. Ele irá converter o que " -"consegue." - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:164 -#, fuzzy -#| msgid "" -#| "The options which apply to the vipw and vigr commands are:" -msgid "" -"The options which apply to the <_:command-1/>, <_:command-2/>, <_:command-3/" -">, and <_:command-4/> commands are:" -msgstr "" -"As opções que se aplicam aos comandos vipw e " -"vigr são:" - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:194 -#, fuzzy -#| msgid "" -#| "Errors in the password or group files (such as invalid or duplicate " -#| "entries) may cause these programs to loop forever or fail in other " -#| "strange ways. Please run pwck and grpck to correct any such errors before converting to or from shadow " -#| "passwords or groups." -msgid "" -"Errors in the password or group files (such as invalid or duplicate entries) " -"may cause these programs to loop forever or fail in other strange ways. " -"Please run <_:command-1/> and <_:command-2/> to correct any such errors " -"before converting to or from shadow passwords or groups." -msgstr "" -"Erros nos ficheiros de grupos ou palavras passe (tais como entradas " -"inválidas ou duplicadas( podem fazer com que estes programas entrem em ciclo " -"infinito ou falhem em maneiras estranhas. Por favor corra pwck e grpck para corrigir tais erros antes de " -"converter para ou de palavras passe ou grupos ensombrados." - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:205 -#, fuzzy -#| msgid "" -#| "The following configuration variables in /etc/login.defs change the behavior of pwconv:" -msgid "" -"The following configuration variable in <_:filename-1/> changes the behavior " -"of <_:command-2/> and <_:command-3/>:" -msgstr "" -"As seguintes variáveis de configuração em /etc/login.defs mudam o comportamento de pwconv:" - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:213 -#, fuzzy -#| msgid "" -#| "The following configuration variables in /etc/login.defs change the behavior of pwconv:" -msgid "" -"The following configuration variables in <_:filename-1/> change the behavior " -"of <_:command-2/>:" -msgstr "" -"As seguintes variáveis de configuração em /etc/login.defs mudam o comportamento de pwconv:" - -#. (itstool) path: para/phrase -#: pwconv.8.xml.out:249 -msgid ", <_:citerefentry-1/>, <_:citerefentry-2/>" -msgstr "" - -#. (itstool) path: refsect1/para -#: pwconv.8.xml.out:240 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/><_:phrase-4/>." -msgstr "" - -#. (itstool) path: refmeta/refmiscinfo -#: shadow.3.xml.out:35 -msgid "Library Calls" -msgstr "Chamadas a Biblioteca" - -#. (itstool) path: refnamediv/refname -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:41 shadow.3.xml.out:160 -msgid "getspnam" -msgstr "getspnam" - -#. (itstool) path: refnamediv/refpurpose -#: shadow.3.xml.out:42 -msgid "encrypted password file routines" -msgstr "rotinas de ficheiro de palavra passe encriptada" - -#. (itstool) path: refsect1/title -#: shadow.3.xml.out:46 -msgid "SYNTAX" -msgstr "SINTAXE" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:48 -msgid "#include <shadow.h>" -msgstr "#include <shadow.h>" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:52 -msgid "struct spwd *getspent();" -msgstr "struct spwd *getspent();" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:56 -msgid "struct spwd *getspnam(char" -msgstr "struct spwd *getspnam(char" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:57 -msgid "*name" -msgstr "*name" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:57 shadow.3.xml.out:70 shadow.3.xml.out:75 -#: shadow.3.xml.out:81 -msgid ");" -msgstr ");" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:61 -msgid "void setspent();" -msgstr "void setspent();" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:65 -msgid "void endspent();" -msgstr "void endspent();" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:69 -msgid "struct spwd *fgetspent(FILE" -msgstr "struct spwd *fgetspent(FILE" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:70 shadow.3.xml.out:81 -msgid "*fp" -msgstr "*fp" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:74 -msgid "struct spwd *sgetspent(char" -msgstr "struct spwd *sgetspent(char" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:75 -msgid "*cp" -msgstr "*cp" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:79 -msgid "int putspent(struct spwd" -msgstr "int putspent(struct spwd" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:80 -msgid "*p," -msgstr "*p," - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:80 -msgid "FILE" -msgstr "FICHEIRO" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:85 -msgid "int lckpwdf();" -msgstr "int lckpwdf();" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:89 -msgid "int ulckpwdf();" -msgstr "int ulckpwdf();" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:98 -msgid "#include" -msgstr "" - -#. (itstool) path: refsect1/para -#: shadow.3.xml.out:95 -#, fuzzy -#| msgid "" -#| "shadow manipulates the contents of the " -#| "shadow password file, /etc/shadow. The structure in " -#| "the #include file is:" -msgid "" -"<_:emphasis-1/> manipulates the contents of the shadow password file, <_:" -"filename-2/>. The structure in the <_:emphasis-3/> file is:" -msgstr "" -"shadow manipula o conteúdo do ficheiro de " -"palavras passe sombra, /etc/shadow. A estrutura no " -"ficheiros #include é:" - -#. (itstool) path: refsect1/programlisting -#: shadow.3.xml.out:100 -#, fuzzy -#| msgid "" -#| "struct spwd {\n" -#| " char\t\t*sp_namp; /* user login name */\n" -#| " char\t\t*sp_pwdp; /* encrypted password */\n" -#| " long int\t\tsp_lstchg; /* last password change */\n" -#| " long int\t\tsp_min; /* days until change allowed. */\n" -#| " long int\t\tsp_max; /* days before change required */\n" -#| " long int\t\tsp_warn; /* days warning for expiration */\n" -#| " long int\t\tsp_inact; /* days before account inactive */\n" -#| " long int\t\tsp_expire; /* date when account expires */\n" -#| " unsigned long int\tsp_flag; /* reserved for future use */\n" -#| "}\n" -#| " " -msgid "" -"struct spwd { char *sp_namp; /* user login name */ char *sp_pwdp; /* " -"encrypted password */ long int sp_lstchg; /* last password change */ long " -"int sp_min; /* days until change allowed. */ long int sp_max; /* days before " -"change required */ long int sp_warn; /* days warning for expiration */ long " -"int sp_inact; /* days before account inactive */ long int sp_expire; /* date " -"when account expires */ unsigned long int sp_flag; /* reserved for future " -"use */ }" -msgstr "" -"struct spwd {\n" -" char\t\t*sp_namp; /* user login name */\n" -" char\t\t*sp_pwdp; /* encrypted password */\n" -" long int\t\tsp_lstchg; /* last password change */\n" -" long int\t\tsp_min; /* days until change allowed. */\n" -" long int\t\tsp_max; /* days before change required */\n" -" long int\t\tsp_warn; /* days warning for expiration */\n" -" long int\t\tsp_inact; /* days before account inactive */\n" -" long int\t\tsp_expire; /* date when account expires */\n" -" unsigned long int\tsp_flag; /* reserved for future use */\n" -"}\n" -" " - -#. (itstool) path: refsect1/para -#: shadow.3.xml.out:112 -msgid "The meanings of each field are:" -msgstr "Os significados de cada campo são:" - -#. (itstool) path: listitem/para -#: shadow.3.xml.out:115 -msgid "sp_namp - pointer to null-terminated user name" -msgstr "sp_namp - apontador para nome de utilizador nulo-terminado" - -#. (itstool) path: listitem/para -#: shadow.3.xml.out:118 -msgid "sp_pwdp - pointer to null-terminated password" -msgstr "sp_pwdp - apontador para palavra passe nula-terminada" - -#. (itstool) path: listitem/para -#: shadow.3.xml.out:121 -msgid "sp_lstchg - days since Jan 1, 1970 password was last changed" -msgstr "" -"sp_lstchg - dias desde 1 Jan 1970 que a palavra passe foi última vez mudada" - -#. (itstool) path: listitem/para -#: shadow.3.xml.out:124 -msgid "sp_min - days before which password may not be changed" -msgstr "sp_min - dias antes dos quais a palavra passe não pode ser mudada" - -#. (itstool) path: listitem/para -#: shadow.3.xml.out:127 -msgid "sp_max - days after which password must be changed" -msgstr "sp_max - dias após os quais a palavra passe tem de ser mudada" - -#. (itstool) path: listitem/para -#: shadow.3.xml.out:130 -msgid "" -"sp_warn - days before password is to expire that user is warned of pending " -"password expiration" -msgstr "" -"sp_warn - dias antes da palavra passe expirar em que o utilizador é avisado " -"da expiração pendente da palavra passe" - -#. (itstool) path: listitem/para -#: shadow.3.xml.out:135 -msgid "" -"sp_inact - days after password expires that account is considered inactive " -"and disabled" -msgstr "" -"sp_inact - dias após a palavra passe expirar e que a conta é considerada " -"inativa e desactivada" - -#. (itstool) path: listitem/para -#: shadow.3.xml.out:140 -msgid "sp_expire - days since Jan 1, 1970 when account will be disabled" -msgstr "sp_expire - dias desde 1 Jan 1970 em que a conta será desactivada" - -#. (itstool) path: listitem/para -#: shadow.3.xml.out:143 -msgid "sp_flag - reserved for future use" -msgstr "sp_flag - reservado para uso futuro" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:152 shadow.3.xml.out:155 -#, fuzzy -#| msgid "getspnam" -msgid "getspent" -msgstr "getspnam" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:152 -#, fuzzy -#| msgid "getspnam" -msgid "getspname" -msgstr "getspnam" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:153 shadow.3.xml.out:156 -#, fuzzy -#| msgid "getspnam" -msgid "fgetspent" -msgstr "getspnam" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:153 shadow.3.xml.out:158 -#, fuzzy -#| msgid "getspnam" -msgid "sgetspent" -msgstr "getspnam" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:154 shadow.3.xml.out:158 -#, fuzzy -#| msgid "struct spwd *getspent();" -msgid "struct spwd" -msgstr "struct spwd *getspent();" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:161 -#, fuzzy -#| msgid "*name" -msgid "name" -msgstr "*name" - -#. (itstool) path: refsect1/para -#: shadow.3.xml.out:151 -#, fuzzy -#| msgid "" -#| "getspent, getspname, " -#| "fgetspent, and sgetspent each " -#| "return a pointer to a struct spwd. " -#| "getspent returns the next entry from the file, and " -#| "fgetspent returns the next entry from the given " -#| "stream, which is assumed to be a file of the proper format. " -#| "sgetspent returns a pointer to a struct " -#| "spwd using the provided string as input. getspnam searches from the current position in the file for an entry " -#| "matching name." -msgid "" -"<_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/>, and <_:emphasis-4/> each " -"return a pointer to a <_:emphasis-5/>. <_:emphasis-6/> returns the next " -"entry from the file, and <_:emphasis-7/> returns the next entry from the " -"given stream, which is assumed to be a file of the proper format. <_:" -"emphasis-8/> returns a pointer to a <_:emphasis-9/> using the provided " -"string as input. <_:emphasis-10/> searches from the current position in the " -"file for an entry matching <_:emphasis-11/>." -msgstr "" -"getspent, getspname, " -"fgetspent, e sgetspent cada um " -"retorna um apontador para um struct spwd. " -"getspent retorna a próxima entrada a partir do " -"ficheiro, e fgetspentretorna a próxima entrada a partir " -"do fluxo dado, o que é assumido ser um ficheiro do formato do formato " -"apropriado. sgetspent retorna um apontador para um " -"struct spwd usando a string fornecida como entrada. " -"getspnam procura a partir da posição actual no ficheiro " -"por uma entrada que corresponda a name." - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:165 -#, fuzzy -#| msgid "void setspent();" -msgid "setspent" -msgstr "void setspent();" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:165 -#, fuzzy -#| msgid "void endspent();" -msgid "endspent" -msgstr "void endspent();" - -#. (itstool) path: refsect1/para -#: shadow.3.xml.out:164 -#, fuzzy -#| msgid "" -#| "setspent and endspent may be " -#| "used to begin and end, respectively, access to the shadow password file." -msgid "" -"<_:emphasis-1/> and <_:emphasis-2/> may be used to begin and end, " -"respectively, access to the shadow password file." -msgstr "" -"setspent e endspent podem ser " -"usados para iniciar e terminar, respetivamente, o acesso ao ficheiro de " -"palavras passe sombra." - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:171 shadow.3.xml.out:173 shadow.3.xml.out:178 -#, fuzzy -#| msgid "int lckpwdf();" -msgid "lckpwdf" -msgstr "int lckpwdf();" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:171 -#, fuzzy -#| msgid "int ulckpwdf();" -msgid "ulckpwdf" -msgstr "int ulckpwdf();" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:174 -msgid "pw_lock" -msgstr "" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:176 -msgid "spw_lock" -msgstr "" - -#. (itstool) path: refsect1/para -#: shadow.3.xml.out:170 -#, fuzzy -#| msgid "" -#| "The lckpwdf and ulckpwdf " -#| "routines should be used to insure exclusive access to the /etc/" -#| "shadow file. lckpwdf attempts to acquire " -#| "a lock using pw_lock for up to 15 seconds. It " -#| "continues by attempting to acquire a second lock using " -#| "spw_lock for the remainder of the initial 15 " -#| "seconds. Should either attempt fail after a total of 15 seconds, " -#| "lckpwdf returns -1. When both locks are acquired 0 " -#| "is returned." -msgid "" -"The <_:emphasis-1/> and <_:emphasis-2/> routines should be used to insure " -"exclusive access to the <_:filename-3/> file. <_:emphasis-4/> attempts to " -"acquire a lock using <_:emphasis-5/> for up to 15 seconds. It continues by " -"attempting to acquire a second lock using <_:emphasis-6/> for the remainder " -"of the initial 15 seconds. Should either attempt fail after a total of 15 " -"seconds, <_:emphasis-7/> returns -1. When both locks are acquired 0 is " -"returned." -msgstr "" -"As rotinas lckpwdf e ulckpwdf " -"devem ser usadas para assegurar acesso exclusivo ao ficheiro /etc/" -"shadow. lckpwdf tenta adquirir uma tranca " -"usando pw_lock até aos 15 segundos. Continua ao tentar " -"adquirir uma segunda tranca usando spw_lock no restante " -"dos 15 segundos iniciais. Se qualquer uma das tentativas falhar após o total " -"de 15 segundos, lckpwdf retorna -1. Quando ambas " -"trancas são adquiridas é retornado 0." - -#. (itstool) path: refsect1/title -#: shadow.3.xml.out:184 suauth.5.xml.out:189 -msgid "DIAGNOSTICS" -msgstr "DIAGNÓSTICOS" - -#. (itstool) path: para/emphasis -#: shadow.3.xml.out:187 -msgid "int" -msgstr "" - -#. (itstool) path: refsect1/para -#: shadow.3.xml.out:185 -#, fuzzy -#| msgid "" -#| "Routines return NULL if no more entries are available or if an error " -#| "occurs during processing. Routines which have int as " -#| "the return value return 0 for success and -1 for failure." -msgid "" -"Routines return NULL if no more entries are available or if an error occurs " -"during processing. Routines which have <_:emphasis-1/> as the return value " -"return 0 for success and -1 for failure." -msgstr "" -"As rotinas retornam NULL se não estiverem disponíveis mais entradas ou se " -"ocorrer um erro durante o processamento. As rotinas que têm int como o valor de retorno retornam 0 para sucesso e -1 para falha." - -#. (itstool) path: refsect1/para -#: shadow.3.xml.out:195 -msgid "" -"These routines may only be used by the superuser as access to the shadow " -"password file is restricted." -msgstr "" -"Estas rotinas só podem ser usadas pelo super-utilizador pois o acesso ao " -"ficheiro da palavras passe sombra é restrito." - -#. (itstool) path: citerefentry/refentrytitle -#: shadow.3.xml.out:217 -msgid "getpwent" -msgstr "" - -#. (itstool) path: refnamediv/refpurpose -#: shadow.5.xml.out:41 -msgid "shadowed password file" -msgstr "ficheiro de palavra passe ensombrada" - -#. (itstool) path: refsect1/para -#: shadow.5.xml.out:46 -#, fuzzy -#| msgid "" -#| "shadow is a file which contains the password " -#| "information for the system's accounts and optional aging information." -msgid "" -"<_:filename-1/> is a file which contains the password information for the " -"system's accounts and optional aging information." -msgstr "" -"shadow é um ficheiro que contém a informação de palavra " -"passe para as contas do sistema e informação opcional de envelhecimento." - -#. (itstool) path: refsect1/para -#: shadow.5.xml.out:57 -#, fuzzy -#| msgid "" -#| "Each line of this file contains 9 fields, separated by colons (:), in the following order:" -msgid "" -"Each line of this file contains 9 fields, separated by colons (<_:quote-1/" -">), in the following order:" -msgstr "" -"Cada linha deste ficheiro contém 9 campos, separados por dois pontos " -"(:), na seguinte ordem:" - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:66 -msgid "It must be a valid account name, which exist on the system." -msgstr "Tem de ser um nome de conta válido, o qual existe no sistema." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:74 -#, fuzzy -#| msgid "" -#| "This field may be empty, in which case no passwords are required to " -#| "authenticate as the specified login name. However, some applications " -#| "which read the /etc/shadow file may decide not to " -#| "permit any access at all if the password field is empty." -msgid "" -"This field may be empty, in which case no passwords are required to " -"authenticate as the specified login name. However, some applications which " -"read the <_:filename-1/> file may decide not to permit any access at all if " -"the password field is empty." -msgstr "" -"Este campo pode estar vazio, que neste caso não são requeridas palavras " -"passe para autenticação com o nome de login especificado. No entanto, " -"algumas aplicações que leem o ficheiro /etc/shadow " -"podem decidir não permitir nenhum acesso a nada se o campo de palavra passe " -"estiver vazio." - -#. (itstool) path: term/emphasis -#: shadow.5.xml.out:103 -msgid "date of last password change" -msgstr "data da última alteração da palavra passe" - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:106 -#, fuzzy -#| msgid "" -#| "The date of the last password change, expressed as the number of days " -#| "since Jan 1, 1970." -msgid "" -"The date of the last password change, expressed as the number of days since " -"Jan 1, 1970 00:00 UTC." -msgstr "" -"A data da última mudança de palavra passe, expressada como número de dias " -"desde 1 de Janeiro de 1970." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:110 -msgid "" -"The value 0 has a special meaning, which is that the user should change her " -"password the next time she will log in the system." -msgstr "" -"O valor 0 tem um significado especial, o qual é que o utilizador deve mudar " -"a sua palavra passe na próxima vez que entrar no sistema." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:115 -msgid "An empty field means that password aging features are disabled." -msgstr "" -"Um campo vazio significa que as funcionalidades de envelhecimento de palavra " -"passe estão desactivadas." - -#. (itstool) path: term/emphasis -#: shadow.5.xml.out:122 -msgid "minimum password age" -msgstr "idade mínima da palavra passe" - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:124 -msgid "" -"The minimum password age is the number of days the user will have to wait " -"before she will be allowed to change her password again." -msgstr "" -"A idade mínima da palavra passe é o número de dias que o utilizador terá de " -"esperar antes de lhe ser permitido mudar outra vez a palavra passe." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:129 -#, fuzzy -#| msgid "" -#| "An empty field and value 0 mean that there are no minimum password age." -msgid "An empty field and value 0 mean that there is no minimum password age." -msgstr "" -"Um campo vazio e o valor 0 significam que não há idade mínima de palavra " -"passe." - -#. (itstool) path: term/emphasis -#: shadow.5.xml.out:136 -msgid "maximum password age" -msgstr "idade máxima da palavra passe" - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:138 -msgid "" -"The maximum password age is the number of days after which the user will " -"have to change her password." -msgstr "" -"A idade máxima da palavra passe é o número de dias após os quais o " -"utilizador terá que mudar a sua palavra passe." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:142 -msgid "" -"After this number of days is elapsed, the password may still be valid. The " -"user should be asked to change her password the next time she will log in." -msgstr "" -"Após este número de dias ter passado, a palavra passe pode ainda estar " -"válida. Ao utilizador deve ser pedido para mudar a sua palavra passe na " -"próxima vez que faça login." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:147 -msgid "" -"An empty field means that there are no maximum password age, no password " -"warning period, and no password inactivity period (see below)." -msgstr "" -"Um campo vazio significa que não existe idade máxima de palavra passe, " -"nenhum período de aviso de palavra passe, e nenhum período de inatividade da " -"palavra passe (veja em baixo)." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:152 -msgid "" -"If the maximum password age is lower than the minimum password age, the user " -"cannot change her password." -msgstr "" -"Se a idade máxima de palavra passe for inferior À idade mínima da palavra " -"passe, o utilizador não pode mudar a sua palavra passe." - -#. (itstool) path: term/emphasis -#: shadow.5.xml.out:160 -msgid "password warning period" -msgstr "período de aviso da palavra passe" - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:163 -msgid "" -"The number of days before a password is going to expire (see the maximum " -"password age above) during which the user should be warned." -msgstr "" -"O número de dias antes da palavra passe expirar (veja a idade máxima da " -"palavra passe em cima) durante o qual o utilizador deve ser avisado." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:168 -msgid "" -"An empty field and value 0 mean that there are no password warning period." -msgstr "" -"Um campo vazio e o valor 0 significam que não existe período de aviso da " -"palavra passe." - -#. (itstool) path: term/emphasis -#: shadow.5.xml.out:176 -msgid "password inactivity period" -msgstr "período de inatividade da palavra passe" - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:179 -msgid "" -"The number of days after a password has expired (see the maximum password " -"age above) during which the password should still be accepted (and the user " -"should update her password during the next login)." -msgstr "" -"O número de dias após a palavra passe ter expirado (veja a idade máxima da " -"palavra passe em cima) durante os quais a palavra passe ainda deve ser " -"aceite (e o utilizador deve actualizar a sua palavra passe no próximo login)." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:185 -#, fuzzy -#| msgid "" -#| "After expiration of the password and this expiration period is elapsed, " -#| "no login is possible using the current user's password. The user should " -#| "contact her administrator." -msgid "" -"After expiration of the password and this expiration period is elapsed, no " -"login is possible for the user. The user should contact her administrator." -msgstr "" -"Após a expiração da palavra passe e este período ter acabado, não será " -"possível fazer login com a actual palavra passe do utilizador. O utilizador " -"deve contactar o administrador." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:190 -msgid "" -"An empty field means that there are no enforcement of an inactivity period." -msgstr "" -"Um campo vazio significa que não há nenhum cumprimento de um período de " -"inatividade." - -#. (itstool) path: term/emphasis -#: shadow.5.xml.out:198 -msgid "account expiration date" -msgstr "data de expiração da conta" - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:201 -#, fuzzy -#| msgid "" -#| "The date of expiration of the account, expressed as the number of days " -#| "since Jan 1, 1970." -msgid "" -"The date of expiration of the account, expressed as the number of days since " -"Jan 1, 1970 00:00 UTC." -msgstr "" -"A data de expiração da conta, expressa no número de dias desde 1 de Janeiro " -"de 1970." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:205 -msgid "" -"Note that an account expiration differs from a password expiration. In case " -"of an account expiration, the user shall not be allowed to login. In case of " -"a password expiration, the user is not allowed to login using her password." -msgstr "" -"Note que o expirar de uma conta é diferente de expirar uma palavra passe. No " -"caso de expiração da conta, o utilizador não tem permissão de login. No caso " -"de expiração da palavra passe, o utilizador não tem permissão de login " -"usando a sua palavra passe." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:211 -msgid "An empty field means that the account will never expire." -msgstr "Um campo vazio significa que a conta nunca irá expirar." - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:214 -msgid "" -"The value 0 should not be used as it is interpreted as either an account " -"with no expiration, or as an expiration on Jan 1, 1970." -msgstr "" -"O valor 0 não deve ser usado pois é interpretado de duas maneiras, ou como " -"uma conta sem expiração, ou com uma expiração a 1 de Janeiro de 1970." - -#. (itstool) path: term/emphasis -#: shadow.5.xml.out:222 -msgid "reserved field" -msgstr "campo reservado" - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:224 -msgid "This field is reserved for future use." -msgstr "Este campo está reservado para uso futuro." - -#. (itstool) path: term/filename -#: shadow.5.xml.out:246 -msgid "/etc/shadow-" -msgstr "/etc/shadow-" - -#. (itstool) path: listitem/para -#: shadow.5.xml.out:248 -msgid "Backup file for /etc/shadow." -msgstr "Ficheiro cópia de salvaguarda de /etc/shadow." - -#. (itstool) path: refnamediv/refpurpose -#: sg.1.xml.out:42 -msgid "execute command as different group ID" -msgstr "executa comando como ID de grupo diferente" - -#. (itstool) path: cmdsynopsis/arg -#: sg.1.xml.out:49 -#, fuzzy -#| msgid "group command" -msgid "group <_:arg-1/> command" -msgstr "grupo comando" - -#. (itstool) path: refsect1/para -#: sg.1.xml.out:58 -#, fuzzy -#| msgid "" -#| "The sg command works similar to newgrp but accepts a command. The command will be executed with the " -#| "/bin/sh shell. With most shells you may run " -#| "sg from, you need to enclose multi-word commands in " -#| "quotes. Another difference between newgrp and " -#| "sg is that some shells treat newgrp " -#| "specially, replacing themselves with a new instance of a shell that " -#| "newgrp creates. This doesn't happen with sg, so upon exit from a sg command you are " -#| "returned to your previous group ID." -msgid "" -"The <_:command-1/> command works similar to <_:command-2/> but accepts a " -"command. The command will be executed with the <_:filename-3/> shell. With " -"most shells you may run <_:command-4/> from, you need to enclose multi-word " -"commands in quotes. Another difference between <_:command-5/> and <_:" -"command-6/> is that some shells treat <_:command-7/> specially, replacing " -"themselves with a new instance of a shell that <_:command-8/> creates. This " -"doesn't happen with <_:command-9/>, so upon exit from a <_:command-10/> " -"command you are returned to your previous group ID." -msgstr "" -"O comando sg funciona de modo semelhante ao " -"newgrp mas aceita um comando. O comando será executado " -"com a shell /bin/sh. Você pode correr o sg a partir da maioria das shells, você precisa de enclausurar " -"comandos de multi-palavras entre aspas. Outra diferença entre " -"newgrp e sg é que algumas shells " -"tratam o newgrp de maneira especial, substituindo-se a " -"elas próprias com uma nova instância de shell que o newgrp cria. Isto não acontece com o sg, assim após " -"sair de um comando sg você retorna ao seu ID de grupo " -"anterior." - -#. (itstool) path: refnamediv/refpurpose -#: su.1.xml.out:58 -msgid "change user ID or become superuser" -msgstr "mudar o ID de utilizador ou tornar-se super-utilizador" - -#. (itstool) path: arg/replaceable -#: su.1.xml.out:72 -msgid "args" -msgstr "argumentos" - -#. (itstool) path: refsect1/para -#: su.1.xml.out:80 -#, fuzzy -#| msgid "" -#| "The su command is used to become another user during a " -#| "login session. Invoked without a , su defaults to becoming the superuser. The " -#| "option may be used to provide an environment similar to what the user " -#| "would expect had the user logged in directly. The " -#| "option may be used to treat the next argument as a command by most shells." -msgid "" -"The <_:command-1/> command is used to become another user during a login " -"session. Invoked without a <_:option-2/>, <_:command-3/> defaults to " -"becoming the superuser. The <_:option-4/> option may be used to provide an " -"environment similar to what the user would expect had the user logged in " -"directly. The <_:option-5/> option may be used to treat the next argument as " -"a command by most shells." -msgstr "" -"O comando su é usado para se tornar noutro utilizador " -"durante uma sessão de login: Invocado sem um , " -"su por predefinição torna-se no super-utilizador. A opção " -" pode ser usada para fornecer um ambiente semelhante " -"àquele que o utilizador iria esperar como se tivesse feito o login " -"diretamente. A opção pode ser usada para tratar o " -"próximo argumento como um comando na maioria das shells." - -#. (itstool) path: para/option -#: su.1.xml.out:92 su.1.xml.out:94 -#, fuzzy -#| msgid "-" -msgid "--" -msgstr "-" - -#. (itstool) path: refsect1/para -#: su.1.xml.out:90 -#, fuzzy -#| msgid "" -#| "Options are recognized everywhere in the argument list. You can use the " -#| " argument to stop option parsing. The ." -msgid "" -"Options are recognized everywhere in the argument list. You can use the <_:" -"option-1/> argument to stop option parsing. The <_:option-2/> option is " -"special: it is also recognized after <_:option-3/>, but has to be placed " -"before <_:option-4/>." -msgstr "" -"As opções são reconhecidas em qualquer sítio na lista de argumentos. Você " -"pode usar o argumento para parar a análise de opções. A " -"opção é especial: é também reconhecida após ." - -#. (itstool) path: refsect1/para -#: su.1.xml.out:98 -msgid "" -"The user will be prompted for a password, if appropriate. Invalid passwords " -"will produce an error message. All attempts, both valid and invalid, are " -"logged to detect abuse of the system." -msgstr "" -"Ao utilizador será pedida uma palavra passe, se apropriado. Palavras passe " -"inválidas irão produzir uma mensagem de erro. Todas as tentativas, ambas " -"válidas e inválidas, são registadas para detectar abusos do sistema." - -#. (itstool) path: para/filename -#: su.1.xml.out:105 -msgid "/bin:/usr/bin" -msgstr "" - -#. (itstool) path: para/filename -#: su.1.xml.out:106 -msgid "/sbin:/bin:/usr/sbin:/usr/bin" -msgstr "" - -#. (itstool) path: para/option -#: su.1.xml.out:108 su.1.xml.out:220 -#, fuzzy -#| msgid "$PATH" -msgid "ENV_PATH" -msgstr "$PATH" - -#. (itstool) path: para/option -#: su.1.xml.out:108 su.1.xml.out:221 -msgid "ENV_SUPATH" -msgstr "" - -#. (itstool) path: refsect1/para -#: su.1.xml.out:103 -#, fuzzy -#| msgid "" -#| "The current environment is passed to the new shell. The value of " -#| "$PATH is reset to /bin:/usr/bin for " -#| "normal users, or /sbin:/bin:/usr/sbin:/usr/bin for " -#| "the superuser. This may be changed with the and " -#| " definitions in /etc/login.defs." -msgid "" -"The current environment is passed to the new shell. The value of <_:envar-1/" -"> is reset to <_:filename-2/> for normal users, or <_:filename-3/> for the " -"superuser. This may be changed with the <_:option-4/> and <_:option-5/> " -"definitions in <_:filename-6/>." -msgstr "" -"O ambiente actual é passado para a nova shell. O valor de $PATH é reiniciado para /bin:/usr/bin para " -"utilizadores normais, ou /sbin:/bin:/usr/sbin:/usr/bin " -"para o super-utilizador. Isto pode ser alterado com as definições " -" e em /etc/" -"login.defs." - -#. (itstool) path: term/option -#: su.1.xml.out:126 -msgid "--command" -msgstr "" - -#. (itstool) path: term/replaceable -#: su.1.xml.out:126 -msgid "COMMAND" -msgstr "" - -#. (itstool) path: listitem/para -#: su.1.xml.out:129 -#, fuzzy -#| msgid "" -#| "Specify a command that will be invoked by the shell using its , " -msgid "<_:option-1/>, <_:option-2/>, <_:option-3/>" -msgstr ", " - -#. (itstool) path: listitem/para -#: su.1.xml.out:147 -msgid "" -"Provide an environment similar to what the user would expect had the user " -"logged in directly." -msgstr "" -"Fornece um ambiente semelhante ao que o utilizador esperaria se tivesse " -"feito login diretamente." - -#. (itstool) path: listitem/para -#: su.1.xml.out:151 -#, fuzzy -#| msgid "" -#| "When is used, it must be specified before any " -#| ". For portability it is recommended to use it as " -#| "last option, before any . The other forms " -#| "( and ) do not have this " -#| "restriction." -msgid "" -"When <_:option-1/> is used, it must be specified before any <_:option-2/>. " -"For portability it is recommended to use it as last option, before any <_:" -"option-3/>. The other forms (<_:option-4/> and <_:option-5/>) do not have " -"this restriction." -msgstr "" -"Quando é usado , tem de ser especificado antes de qualquer " -". Para portabilidade é recomendado usá-lo como " -"última opção, antes de qualquer . As outras formas " -"( e ) não têm esta restrição." - -#. (itstool) path: listitem/para -#: su.1.xml.out:166 -msgid "The shell that will be invoked." -msgstr "A shell que será invocada," - -#. (itstool) path: listitem/para -#: su.1.xml.out:174 -msgid "The shell specified with --shell." -msgstr "A shell especificada com --shell." - -#. (itstool) path: para/option -#. (itstool) path: term/option -#: su.1.xml.out:178 su.1.xml.out:208 -#, fuzzy -#| msgid "Preserve environment." -msgid "--preserve-environment" -msgstr "Preservar o ambiente." - -#. (itstool) path: listitem/para -#: su.1.xml.out:177 -#, fuzzy -#| msgid "" -#| "If is used, the shell specified " -#| "by the $SHELL environment variable." -msgid "" -"If <_:option-1/> is used, the shell specified by the <_:envar-2/> " -"environment variable." -msgstr "" -"Se for usado , a shell é especificada " -"pela variável de ambiente $SHELL." - -#. (itstool) path: listitem/para -#: su.1.xml.out:184 -#, fuzzy -#| msgid "" -#| "The shell indicated in the /etc/passwd entry for the " -#| "target user." -msgid "The shell indicated in the <_:filename-1/> entry for the target user." -msgstr "" -"A shell indicada na entrada /etc/passwdpara o " -"utilizador apontado." - -#. (itstool) path: listitem/para -#: su.1.xml.out:190 -#, fuzzy -#| msgid "" -#| "/bin/sh if a shell could not be found by any above " -#| "method." -msgid "<_:filename-1/> if a shell could not be found by any above method." -msgstr "" -"/bin/sh se uma shell não puder ser encontrada por " -"nenhum dos métodos de cima." - -#. (itstool) path: listitem/para -#: su.1.xml.out:167 -#, fuzzy -#| msgid "" -#| "The invoked shell is chosen from (highest priority first): " -msgid "" -"The invoked shell is chosen from (highest priority first): <_:variablelist-1/" -">" -msgstr "" -"A shell invocada é escolhida a partir de (de maior prioridade em primeiro): " -"" - -#. (itstool) path: listitem/para -#: su.1.xml.out:195 -#, fuzzy -#| msgid "" -#| "If the target user has a restricted shell (i.e. the shell field of this " -#| "user's entry in /etc/passwd is not listed in " -#| "/etc/shells), then the " -#| "option or the $SHELL environment variable won't be taken " -#| "into account, unless su is called by root." -msgid "" -"If the target user has a restricted shell (i.e. the shell field of this " -"user's entry in <_:filename-1/> is not listed in <_:filename-2/>), then the " -"<_:option-3/> option or the <_:envar-4/> environment variable won't be taken " -"into account, unless <_:command-5/> is called by root." -msgstr "" -"Se o utilizador apontado tem uma shell restrita (isto é, o campo shell da " -"entrada deste utilizador em /etc/passwd não está " -"listado em /etc/shells), então a opção or (see below);" -msgid "" -"reset according to the <_:filename-1/> options <_:option-2/> or <_:option-3/" -"> (see below);" -msgstr "" -"reinicia de acordo com as opções ou " -" em /etc/login.defs (veja " -"abaixo);" - -#. (itstool) path: term/envar -#. (itstool) path: para/envar -#: su.1.xml.out:226 su.1.xml.out:249 -msgid "$IFS" -msgstr "$IFS" - -#. (itstool) path: para/quote -#: su.1.xml.out:230 -#, fuzzy -#| msgid "" -#| "reset to <space><tab><newline>, if it " -#| "was set." -msgid "<space><tab><newline>" -msgstr "" -"reinicia para <space><tab><newline>, se " -"estava definida." - -#. (itstool) path: listitem/para -#: su.1.xml.out:228 -msgid "reset to <_:quote-1/>, if it was set." -msgstr "" - -#. (itstool) path: listitem/para -#: su.1.xml.out:211 -#, fuzzy -#| msgid "Preserve the current environment, except for: " -msgid "Preserve the current environment, except for: <_:variablelist-1/>" -msgstr "Preserva o ambiente actual, excepto para: " - -#. (itstool) path: listitem/para -#: su.1.xml.out:237 -#, fuzzy -#| msgid "" -#| "If the target user has a restricted shell, this option has no effect " -#| "(unless su is called by root)." -msgid "" -"If the target user has a restricted shell, this option has no effect (unless " -"<_:command-1/> is called by root)." -msgstr "" -"Se o utilizador apontado tiver uma shell restrita, esta opção não tem efeito " -"(a menos que su seja chamado pelo root)." - -#. (itstool) path: para/envar -#: su.1.xml.out:248 -msgid "$USER" -msgstr "" - -#. (itstool) path: listitem/para -#: su.1.xml.out:246 -#, fuzzy -#| msgid "" -#| "The $HOME, $SHELL, $USER, " -#| "$LOGNAME, $PATH, and $IFS " -#| "environment variables are reset." -msgid "" -"The <_:envar-1/>, <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, <_:envar-5/>, " -"and <_:envar-6/> environment variables are reset." -msgstr "" -"As variáveis de ambiente $HOME, $SHELL, " -"$USER, $LOGNAME, $PATH, e " -"$IFS são reiniciadas." - -#. (itstool) path: listitem/para -#: su.1.xml.out:255 -#, fuzzy -#| msgid "" -#| "If is not used, the environment is copied, " -#| "except for the variables above." -msgid "" -"If <_:option-1/> is not used, the environment is copied, except for the " -"variables above." -msgstr "" -"Se não for usado , o ambiente é copiado, excepto " -"para as variáveis em cima." - -#. (itstool) path: para/envar -#: su.1.xml.out:264 -msgid "$COLORTERM" -msgstr "" - -#. (itstool) path: para/envar -#: su.1.xml.out:265 -msgid "$DISPLAY" -msgstr "" - -#. (itstool) path: para/envar -#: su.1.xml.out:266 -msgid "$XAUTHORITY" -msgstr "" - -#. (itstool) path: listitem/para -#: su.1.xml.out:262 -#, fuzzy -#| msgid "" -#| "If is used, the $TERM, " -#| "$COLORTERM, $DISPLAY, and " -#| "$XAUTHORITY environment variables are copied if they were " -#| "set." -msgid "" -"If <_:option-1/> is used, the <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, and " -"<_:envar-5/> environment variables are copied if they were set." -msgstr "" -"Se for usado, as variáveis de ambiente " -"$TERM, $COLORTERM, $DISPLAY, e " -"$XAUTHORITY são copiadas se estiverem definidas." - -#. (itstool) path: para/envar -#: su.1.xml.out:274 -msgid "$TZ" -msgstr "" - -#. (itstool) path: para/envar -#: su.1.xml.out:274 -msgid "$HZ" -msgstr "" - -#. (itstool) path: para/option -#: su.1.xml.out:278 -msgid "ENV_TZ" -msgstr "" - -#. (itstool) path: para/option -#: su.1.xml.out:279 -msgid "ENV_HZ" -msgstr "" - -#. (itstool) path: para/option -#: su.1.xml.out:279 userdel.8.xml.out:116 -msgid "MAIL_DIR" -msgstr "" - -#. (itstool) path: para/option -#: su.1.xml.out:280 -#, fuzzy -#| msgid "FILE" -msgid "MAIL_FILE" -msgstr "FICHEIRO" - -#. (itstool) path: listitem/para -#: su.1.xml.out:272 -#, fuzzy -#| msgid "" -#| "If is used, the $TZ, $HZ, and $MAIL environment variables are set according " -#| "to the /etc/login.defs options , , and " -#| " (see below)." -msgid "" -"If <_:option-1/> is used, the <_:envar-2/>, <_:envar-3/>, and <_:envar-4/> " -"environment variables are set according to the <_:filename-5/> options <_:" -"option-6/>, <_:option-7/>, <_:option-8/>, and <_:option-9/> (see below)." -msgstr "" -"Se for usado, as variáveis de ambiente $TZ, $HZ, e $MAIL são definidas de acordo " -"com as opções , , " -", e de /etc/" -"login.defs (veja em baixo)." - -#. (itstool) path: para/option -#: su.1.xml.out:288 -#, fuzzy -#| msgid "ENVIRONMENT" -msgid "ENVIRON_FILE" -msgstr "AMBIENTE" - -#. (itstool) path: listitem/para -#: su.1.xml.out:285 -#, fuzzy -#| msgid "" -#| "If is used, other environment variables might be " -#| "set by the file (see below)." -msgid "" -"If <_:option-1/> is used, other environment variables might be set by the <_:" -"option-2/> file (see below)." -msgstr "" -"Se for usado, outras variáveis de ambiente podem " -"ser definidas pelo ficheiro (veja em baixo)." - -#. (itstool) path: listitem/para -#: su.1.xml.out:293 -msgid "Other environments might be set by PAM modules." -msgstr "Outros ambientes podem ser definidos por módulos do PAM." - -#. (itstool) path: listitem/para -#: su.1.xml.out:241 -#, fuzzy -#| msgid "" -#| "Note that the default behavior for the environment is the following: " -#| "" -msgid "" -"Note that the default behavior for the environment is the following: <_:" -"variablelist-1/>" -msgstr "" -"Note que o comportamento predefinido para o ambiente é o seguinte: " -"" - -#. (itstool) path: refsect1/para -#: su.1.xml.out:367 -#, fuzzy -#| msgid "" -#| "On success, su returns the exit value of the command " -#| "it executed." -msgid "" -"On success, <_:command-1/> returns the exit value of the command it executed." -msgstr "" -"Quando em sucesso, su retorna o valor de saída do comando " -"que executou." - -#. (itstool) path: refsect1/para -#: su.1.xml.out:371 -#, fuzzy -#| msgid "" -#| "If this command was terminated by a signal, su returns " -#| "the number of this signal plus 128." -msgid "" -"If this command was terminated by a signal, <_:command-1/> returns the " -"number of this signal plus 128." -msgstr "" -"Se este comando foi terminado por um sinal, o su retorna " -"o número deste sinal mais 128." - -#. (itstool) path: refsect1/para -#: su.1.xml.out:375 -#, fuzzy -#| msgid "" -#| "If su has to kill the command (because it was asked to terminate, and the " -#| "command did not terminate in time), su returns 255." -msgid "" -"If su has to kill the command (because it was asked to terminate, and the " -"command did not terminate in time), <_:command-1/> returns 255." -msgstr "" -"Se o su tiver que matar o comando (porque foi-lhe pedido para terminar, e o " -"comando não terminou dentro do tempo), o su retorna 255." - -#. (itstool) path: listitem/para -#: su.1.xml.out:387 -#, fuzzy -#| msgid "success ( only)" -msgid "success (<_:option-1/> only)" -msgstr "sucesso (apenas )" - -#. (itstool) path: listitem/para -#: su.1.xml.out:393 -msgid "System or authentication failure" -msgstr "Falha do sistema ou de autenticação" - -#. (itstool) path: term/replaceable -#: su.1.xml.out:397 -msgid "126" -msgstr "126" - -#. (itstool) path: listitem/para -#: su.1.xml.out:399 -msgid "The requested command was not found" -msgstr "O comando requisitado não foi encontrado" - -#. (itstool) path: term/replaceable -#: su.1.xml.out:403 -msgid "127" -msgstr "127" - -#. (itstool) path: listitem/para -#: su.1.xml.out:405 -msgid "The requested command could not be executed" -msgstr "O comando requisitado não pode ser executado" +"O campo password encriptado pode estar vazio, que neste " +"caso nenhuma palavra passe é requerida para se autenticar com o nome de login " +"especificado. No entanto, algumas aplicações que leem o ficheiro " +"/etc/passwdpode decidir não permitir nenhum acesso a nada de o campo password estiver " +"vazio." -#. (itstool) path: refsect1/para -#: su.1.xml.out:380 -#, fuzzy -#| msgid "" -#| "Some exit values from su are independent from the " -#| "executed command: " +#: passwd.5.xml:118(para) msgid "" -"Some exit values from <_:command-1/> are independent from the executed " -"command: <_:variablelist-2/>" +"A password field which starts with an exclamation mark" +" means that the password is locked. The remaining characters on the line" +" represent the password field before the password was" +" locked." msgstr "" -"Alguns valores de saída do su são independentes do " -"comando executado: " +"Um campo password começado com um ponto de exclamação " +"significa que a palavra passe está trancada. Os restantes caracteres da linha " +"representam o campo password antes da palavra passe " +"ser trancada." -#. (itstool) path: refsect1/para -#: su.1.xml.out:414 -#, fuzzy -#| msgid "" -#| "su1." +#: passwd.5.xml:138(para) msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>." +"The comment field is used by various system utilities, such as finger1." msgstr "" -"su1finger1." -#. (itstool) path: refmeta/refentrytitle -#. (itstool) path: refnamediv/refname -#: suauth.5.xml.out:33 suauth.5.xml.out:40 -msgid "suauth" -msgstr "suauth" - -#. (itstool) path: refnamediv/refpurpose -#: suauth.5.xml.out:41 -msgid "detailed su control file" -msgstr "ficheiro de controle su detalhado" - -#. (itstool) path: cmdsynopsis/command -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: suauth.5.xml.out:46 suauth.5.xml.out:53 suauth.5.xml.out:172 -msgid "/etc/suauth" -msgstr "/etc/suauth" - -#. (itstool) path: refsect1/para -#: suauth.5.xml.out:52 -#, fuzzy -#| msgid "" -#| "The file /etc/suauth is referenced whenever the su " -#| "command is called. It can change the behaviour of the su command, based " -#| "upon:" -msgid "" -"The file <_:filename-1/> is referenced whenever the su command is called. It " -"can change the behaviour of the su command, based upon:" -msgstr "" -"O ficheiro /etc/suauth é referenciado sempre que o " -"comando su é chamado. Ele pode mudar o comportamento do comando su, com base " -"em:" - -#. (itstool) path: refsect1/literallayout -#: suauth.5.xml.out:59 -#, fuzzy -#| msgid "" -#| "\n" -#| " 1) the user su is targeting\n" -#| " " -msgid "1) the user su is targeting" -msgstr "" -"\n" -" 1) no utilizador que o su está a apontar\n" -" " - -#. (itstool) path: refsect1/para -#: suauth.5.xml.out:63 -msgid "" -"2) the user executing the su command (or any groups he might be a member of)" -msgstr "" -"2) no utilizador que executa o comando su (ou quaisquer grupos de que ele " -"possa ser membro)" - -#. (itstool) path: refsect1/para -#: suauth.5.xml.out:68 -msgid "" -"The file is formatted like this, with lines starting with a # being treated " -"as comment lines and ignored;" -msgstr "" -"O ficheiro é formatado como isto, com as linhas começadas com # a serem " -"tratadas como comentários e ignoradas." - -#. (itstool) path: refsect1/literallayout -#: suauth.5.xml.out:73 -#, fuzzy -#| msgid "" -#| "\n" -#| " to-id:from-id:ACTION\n" -#| " " -msgid "to-id:from-id:ACTION" -msgstr "" -"\n" -" to-id:from-id:ACTION\n" -" " - -#. (itstool) path: para/emphasis -#: suauth.5.xml.out:79 -msgid "ALL EXCEPT" -msgstr "" - -#. (itstool) path: refsect1/para -#: suauth.5.xml.out:77 -#, fuzzy -#| msgid "" -#| "Where to-id is either the word ALL, a list of " -#| "usernames delimited by \",\" or the words ALL EXCEPT " -#| "followed by a list of usernames delimited by \",\"." -msgid "" -"Where to-id is either the word <_:emphasis-1/>, a list of usernames " -"delimited by \",\" or the words <_:emphasis-2/> followed by a list of " -"usernames delimited by \",\"." -msgstr "" -"Onde to-id é ou a palavra ALL, uma lista de nomes de " -"utilizadores delimitados por \",\" ou as palavras ALL EXCEPT seguida por uma lista de nomes de utilizadores delimitados por \"," -"\"." - -#. (itstool) path: para/emphasis -#: suauth.5.xml.out:85 -msgid "ALL EXCEPT GROUP" -msgstr "" - -#. (itstool) path: refsect1/para -#: suauth.5.xml.out:83 -#, fuzzy -#| msgid "" -#| "from-id is formatted the same as to-id except the extra word " -#| "GROUP is recognized. ALL EXCEPT GROUP is perfectly valid too. Following GROUP " -#| "appears one or more group names, delimited by \",\". It is not sufficient " -#| "to have primary group id of the relevant group, an entry in " -#| "/etc/group5 is necessary." -msgid "" -"from-id is formatted the same as to-id except the extra word <_:emphasis-1/> " -"is recognized. <_:emphasis-2/> is perfectly valid too. Following <_:" -"emphasis-3/> appears one or more group names, delimited by \",\". It is not " -"sufficient to have primary group id of the relevant group, an entry in <_:" -"citerefentry-4/> is necessary." -msgstr "" -"from-id é formatado igual a to-id excepto que é reconhecida a palavra extra " -"GROUP. ALL EXCEPT GROUP é também " -"perfeitamente válida. A seguir a GROUP aparece um ou " -"mais nomes de grupos, delimitados por \",\". Não é suficiente ter o id de " -"grupo primário do grupo relevante, é necessário uma entrada em " -"/etc/group5." - -#. (itstool) path: refsect1/para -#: suauth.5.xml.out:94 -msgid "Action can be one only of the following currently supported options." -msgstr "" -"Action pode ser uma apenas das seguintes opções suportadas actualmente." - -#. (itstool) path: term/emphasis -#: suauth.5.xml.out:100 -msgid "DENY" -msgstr "DENY" - -#. (itstool) path: listitem/para -#: suauth.5.xml.out:103 -msgid "The attempt to su is stopped before a password is even asked for." -msgstr "A tentativa de su é parada antes de ser pedida uma palavra passe." - -#. (itstool) path: term/emphasis -#: suauth.5.xml.out:110 -msgid "NOPASS" -msgstr "NOPASS" - -#. (itstool) path: listitem/para -#: suauth.5.xml.out:113 -msgid "" -"The attempt to su is automatically successful; no password is asked for." -msgstr "" -"A tentativa de su tem sucesso automático; nenhuma palavra passe é pedida." - -#. (itstool) path: term/emphasis -#: suauth.5.xml.out:121 -msgid "OWNPASS" -msgstr "OWNPASS" - -#. (itstool) path: listitem/para -#: suauth.5.xml.out:124 -msgid "" -"For the su command to be successful, the user must enter his or her own " -"password. They are told this." -msgstr "" -"Para o comando su ter sucesso, o utilizador tem de inserir a sua própria " -"palavra passe. Eles são informados disso." - -#. (itstool) path: refsect1/para -#: suauth.5.xml.out:132 -msgid "" -"Note there are three separate fields delimited by a colon. No whitespace " -"must surround this colon. Also note that the file is examined sequentially " -"line by line, and the first applicable rule is used without examining the " -"file further. This makes it possible for a system administrator to exercise " -"as fine control as he or she wishes." -msgstr "" -"Note que existem três campos separados delimitados por dois pontos (:). Não " -"podem existir espaços em branco juntos aos dois ponto. Note também que o " -"ficheiro é examinado sequencialmente linha a linha, e a primeira regra " -"aplicável é usada sem examinar o resto do ficheiro. Isto torna possível para " -"um administrador de sistema executar as afinações que desejar." - -#. (itstool) path: refsect1/title -#: suauth.5.xml.out:142 -msgid "EXAMPLE" -msgstr "EXEMPLO" - -#. (itstool) path: refsect1/literallayout -#: suauth.5.xml.out:143 -#, fuzzy -#| msgid "" -#| "\n" -#| " # sample /etc/suauth file\n" -#| " #\n" -#| " # A couple of privileged usernames may\n" -#| " # su to root with their own password.\n" -#| " #\n" -#| " root:chris,birddog:OWNPASS\n" -#| " #\n" -#| " # Anyone else may not su to root unless in\n" -#| " # group wheel. This is how BSD does things.\n" -#| " #\n" -#| " root:ALL EXCEPT GROUP wheel:DENY\n" -#| " #\n" -#| " # Perhaps terry and birddog are accounts\n" -#| " # owned by the same person.\n" -#| " # Access can be arranged between them\n" -#| " # with no password.\n" -#| " #\n" -#| " terry:birddog:NOPASS\n" -#| " birddog:terry:NOPASS\n" -#| " #\n" -#| " " -msgid "" -"# sample /etc/suauth file # # A couple of privileged usernames may # su to " -"root with their own password. # root:chris,birddog:OWNPASS # # Anyone else " -"may not su to root unless in # group wheel. This is how BSD does things. # " -"root:ALL EXCEPT GROUP wheel:DENY # # Perhaps terry and birddog are accounts " -"# owned by the same person. # Access can be arranged between them # with no " -"password. # terry:birddog:NOPASS birddog:terry:NOPASS #" -msgstr "" -"\n" -" # sample /etc/suauth file\n" -" #\n" -" # A couple of privileged usernames may\n" -" # su to root with their own password.\n" -" #\n" -" root:chris,birddog:OWNPASS\n" -" #\n" -" # Anyone else may not su to root unless in\n" -" # group wheel. This is how BSD does things.\n" -" #\n" -" root:ALL EXCEPT GROUP wheel:DENY\n" -" #\n" -" # Perhaps terry and birddog are accounts\n" -" # owned by the same person.\n" -" # Access can be arranged between them\n" -" # with no password.\n" -" #\n" -" terry:birddog:NOPASS\n" -" birddog:terry:NOPASS\n" -" #\n" -" " - -#. (itstool) path: refsect1/para -#: suauth.5.xml.out:180 -msgid "" -"There could be plenty lurking. The file parser is particularly unforgiving " -"about syntax errors, expecting no spurious whitespace (apart from beginning " -"and end of lines), and a specific token delimiting different things." -msgstr "" -"Pode haver muita coisa escondida. O analisador de ficheiro é particularmente " -"imperdoável com erros de sintaxe, espera nenhum espaço em branco falso " -"(aparte do princípio e final das linhas), e um símbolo específico " -"delimitando as diferentes coisas." - -#. (itstool) path: citerefentry/refentrytitle -#: suauth.5.xml.out:192 -msgid "syslogd" -msgstr "" - -#. (itstool) path: refsect1/para -#: suauth.5.xml.out:190 -#, fuzzy -#| msgid "" -#| "An error parsing the file is reported using " -#| "syslogd8 as level ERR on facility AUTH." -msgid "" -"An error parsing the file is reported using <_:citerefentry-1/> as level ERR " -"on facility AUTH." -msgstr "" -"Um erro ao analisar o ficheiro é reportado usando " -"syslogd8 como nível ERR em instalação AUTH." - -#. (itstool) path: refnamediv/refpurpose -#: useradd.8.xml.out:60 -msgid "create a new user or update default new user information" -msgstr "" -"cria um novo utilizador ou actualiza a informação predefinida do utilizador" - -#. (itstool) path: cmdsynopsis/arg -#. (itstool) path: para/option -#. (itstool) path: term/option -#: useradd.8.xml.out:72 useradd.8.xml.out:76 useradd.8.xml.out:86 -#: useradd.8.xml.out:169 useradd.8.xml.out:603 useradd.8.xml.out:605 -msgid "-D" -msgstr "-D" - -#. (itstool) path: refsect1/para -#: useradd.8.xml.out:85 -#, fuzzy -#| msgid "" -#| "When invoked without the option, the " -#| "useradd command creates a new user account using the " -#| "values specified on the command line plus the default values from the " -#| "system. Depending on command line options, the useradd " -#| "command will update system files and may also create the new user's home " -#| "directory and copy initial files." -msgid "" -"When invoked without the <_:option-1/> option, the <_:command-2/> command " -"creates a new user account using the values specified on the command line " -"plus the default values from the system. Depending on command line options, " -"the <_:command-3/> command will update system files and may also create the " -"new user's home directory and copy initial files." -msgstr "" -"Quando invocado sem a opção , o comando useradd cria uma nova conta de utilizador usando os valores especificados " -"na linha de comandos mais os valores predefinidos do sistema. Dependendo das " -"opções de linha de comandos, o comando useradd irá " -"actualizar ficheiros do sistema e pode também criar o directório home do " -"novo utilizador e copiar os ficheiros iniciais." - -#. (itstool) path: refsect1/para -#: useradd.8.xml.out:94 -#, fuzzy -#| msgid "" -#| "By default, a group will also be created for the new user (see , , , and " -#| ")." -msgid "" -"By default, a group will also be created for the new user (see <_:option-1/" -">, <_:option-2/>, <_:option-3/>, and <_:option-4/>)." -msgstr "" -"Por predefinição, será também criado um grupo para o novo utilizador (veja " -", , , e " -")." - -#. (itstool) path: term/option -#: useradd.8.xml.out:118 useradd.8.xml.out:612 -msgid "--base-dir" -msgstr "" - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: useradd.8.xml.out:118 useradd.8.xml.out:124 useradd.8.xml.out:159 -#: useradd.8.xml.out:612 useradd.8.xml.out:618 -msgid "BASE_DIR" -msgstr "" - -#. (itstool) path: para/replaceable -#. (itstool) path: term/replaceable -#: useradd.8.xml.out:123 useradd.8.xml.out:151 useradd.8.xml.out:156 -#: useradd.8.xml.out:161 usermod.8.xml.out:112 -msgid "HOME_DIR" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:121 -#, fuzzy -#| msgid "" -#| "The default base directory for the system if  " -#| "HOME_DIR is not specified. " -#| "BASE_DIR is concatenated with the account name " -#| "to define the home directory. If the option is not " -#| "used, BASE_DIR must exist." -msgid "" -"The default base directory for the system if <_:option-1/> <_:replaceable-2/" -"> is not specified. <_:replaceable-3/> is concatenated with the account name " -"to define the home directory." -msgstr "" -"O directório base predefinido para o sistema de  " -"HOME_DIR não for especificada. " -"BASE_DIR é concatenada com o nome da conta para " -"definir o directório home. Se a opção não for usada, " -"BASE_DIR tem de existir." - -#. (itstool) path: para/option -#: useradd.8.xml.out:131 useradd.8.xml.out:623 -msgid "HOME" -msgstr "" - -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: useradd.8.xml.out:132 useradd.8.xml.out:189 useradd.8.xml.out:212 -#: useradd.8.xml.out:250 useradd.8.xml.out:267 useradd.8.xml.out:295 -#: useradd.8.xml.out:345 useradd.8.xml.out:395 useradd.8.xml.out:525 -#: useradd.8.xml.out:624 useradd.8.xml.out:636 useradd.8.xml.out:653 -#: useradd.8.xml.out:669 useradd.8.xml.out:683 useradd.8.xml.out:697 -#: useradd.8.xml.out:787 usermod.8.xml.out:419 -msgid "/etc/default/useradd" -msgstr "/etc/default/useradd" - -#. (itstool) path: para/filename -#: useradd.8.xml.out:133 -msgid "/home" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:128 -#, fuzzy -#| msgid "" -#| "If this option is not specified, useradd will use the " -#| "base directory specified by the variable in " -#| "/etc/default/useradd, or /home " -#| "by default." -msgid "" -"If this option is not specified, <_:command-1/> will use the base directory " -"specified by the <_:option-2/> variable in <_:filename-3/>, or <_:filename-4/" -"> by default." -msgstr "" -"Se esta opção não for especificada, o useradd irá usar o " -"directório base especificado pela variável em " -"/etc/default/useradd, ou /home por " -"predefinição." - -#. (itstool) path: term/option -#: useradd.8.xml.out:139 usermod.8.xml.out:99 -msgid "--comment" -msgstr "" - -#. (itstool) path: term/replaceable -#: useradd.8.xml.out:139 usermod.8.xml.out:99 -msgid "COMMENT" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:142 -#, fuzzy -#| msgid "" -#| "Any text string. It is generally a short description of the login, and is " -#| "currently used as the field for the user's full name." -msgid "" -"Any text string. It is generally a short description of the account, and is " -"currently used as the field for the user's full name." -msgstr "" -"Qualquer string de texto. É geralmente uma descrição curta do login, e é " -"actualmente usado como o campo para o nome completo do utilizador." - -#. (itstool) path: term/option -#: useradd.8.xml.out:151 -msgid "--home-dir" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:154 -#, fuzzy -#| msgid "" -#| "The new user will be created using HOME_DIR as " -#| "the value for the user's login directory. The default is to append the " -#| "LOGIN name to BASE_DIR and use that as the login directory name. The directory " -#| "HOME_DIR does not have to exist but will not " -#| "be created if it is missing." -msgid "" -"The new user will be created using <_:replaceable-1/> as the value for the " -"user's login directory. The default is to append the <_:replaceable-2/> name " -"to <_:replaceable-3/> and use that as the login directory name. If the " -"directory <_:replaceable-4/> does not exist, then it will be created unless " -"the <_:option-5/> option is specified." -msgstr "" -"O novo utilizador será criado usando HOME_DIR " -"como o valor para o directório de login do utilizador. A predefinição é " -"acrescentar o nome de LOGIN a " -"BASE_DIR e usar isso como o nome do directório de " -"login. O directório HOME_DIR não tem de existir " -"mas não será criado se estiver em falta." - -#. (itstool) path: term/option -#: useradd.8.xml.out:169 -msgid "--defaults" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:172 -msgid "See below, the subsection \"Changing the default values\"." -msgstr "Veja em baixo, a subsecção \"Alterar os valores predefinidos\"." - -#. (itstool) path: para/emphasis -#: useradd.8.xml.out:184 usermod.8.xml.out:135 -msgid "YYYY-MM-DD" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:182 -#, fuzzy -#| msgid "" -#| "The date on which the user account will be disabled. The date is " -#| "specified in the format YYYY-MM-DD." -msgid "" -"The date on which the user account will be disabled. The date is specified " -"in the format <_:emphasis-1/>." -msgstr "" -"A data na qual a conta do utilizador será desactivada. A data é especificada " -"no formato AAAA-MM-DD." - -#. (itstool) path: para/option -#: useradd.8.xml.out:188 useradd.8.xml.out:635 usermod.8.xml.out:418 -msgid "EXPIRE" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:186 -#, fuzzy -#| msgid "" -#| "If not specified, useradd will use the default expiry " -#| "date specified by the variable in /etc/" -#| "default/useradd, or an empty string (no expiry) by default." -msgid "" -"If not specified, <_:command-1/> will use the default expiry date specified " -"by the <_:option-2/> variable in <_:filename-3/>, or an empty string (no " -"expiry) by default." -msgstr "" -"Se não definido, o useradd irá usar a data de expiração " -"predefinida especificada pela variável em /" -"etc/default/useradd, ou uma string vazia (não expira) por " -"predefinição." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:199 -msgid "" -"defines the number of days after the password exceeded its maximum age where " -"the user is expected to replace this password. The value is stored in the " -"shadow password file. An input of 0 will disable an expired password with no " -"delay. An input of -1 will blank the respective field in the shadow password " -"file. See <_:citerefentry-1/>for more information." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:208 -#, fuzzy -#| msgid "" -#| "If not specified, useradd will use the default " -#| "inactivity period specified by the variable in " -#| "/etc/default/useradd, or -1 by default." -msgid "" -"If not specified, <_:command-1/> will use the default inactivity period " -"specified by the <_:option-2/> variable in <_:filename-3/>, or -1 by default." -msgstr "" -"Se não definido, o useradd irá usar o período de " -"inatividade predefinido especificado pela variável " -"em /etc/default/useradd, ou -1 por predefinição." - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: useradd.8.xml.out:218 useradd.8.xml.out:484 -#, fuzzy -#| msgid "-" -msgid "-F" -msgstr "-" - -#. (itstool) path: term/option -#: useradd.8.xml.out:218 -msgid "--add-subids-for-system" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:221 -msgid "" -"Update <_:filename-1/> and <_:filename-2/> even when creating a system " -"account with <_:option-3/> option." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:233 -#, fuzzy -#| msgid "" -#| "The group name or number of the user's initial login group. The group " -#| "name must exist. A group number must refer to an already existing group." -msgid "" -"The name or the number of the user's primary group. The group name must " -"exist. A group number must refer to an already existing group." -msgstr "" -"O nome do grupo ou o número do grupo de login inicial do utilizador. O nome " -"do grupo tem de existir. Um número de grupo tem de se referir a um grupo já " -"existente." - -#. (itstool) path: para/option -#: useradd.8.xml.out:243 -msgid "-U/--user-group" -msgstr "" - -#. (itstool) path: para/option -#: useradd.8.xml.out:247 -msgid "-N/--no-user-group" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:238 -#, fuzzy -#| msgid "" -#| "If not specified, the behavior of useradd will depend " -#| "on the variable in /etc/login." -#| "defs. If this variable is set to yes (or is specified on the " -#| "command line), a group will be created for the user, with the same name " -#| "as her loginname. If the variable is set to no " -#| "(or is specified on the command " -#| "line), useradd will set the primary group of the new user to the value " -#| "specified by the variable in /etc/" -#| "default/useradd, or 100 by default." -msgid "" -"If not specified, the behavior of <_:command-1/> will depend on the <_:" -"option-2/> variable in <_:filename-3/>. If this variable is set to <_:" -"replaceable-4/> (or <_:option-5/> is specified on the command line), a group " -"will be created for the user, with the same name as her loginname. If the " -"variable is set to <_:replaceable-6/> (or <_:option-7/> is specified on the " -"command line), useradd will set the primary group of the new user to the " -"value specified by the <_:option-8/> variable in <_:filename-9/>, or 1000 by " -"default." -msgstr "" -"Se não especificado, o comportamento do useradd irá " -"depender da variável em /etc/" -"login.defs. Se esta variável for definida para yes (ou for definida na linha de " -"comandos), será criado um grupo para o utilizador, com o mesmo nome que o " -"nome de login. Se a variável for definida para no " -"(ou se for especificada na linha de " -"comandos), o useradd irá definir o grupo primário do novo utilizador para o " -"valor especificado pela variável em /etc/" -"default/useradd, or 100 por predefinição." - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: useradd.8.xml.out:257 usermod.8.xml.out:83 usermod.8.xml.out:199 -#: usermod.8.xml.out:322 -#, fuzzy -#| msgid "-" -msgid "-G" -msgstr "-" - -#. (itstool) path: term/option -#: useradd.8.xml.out:257 usermod.8.xml.out:199 -#, fuzzy -#| msgid "groups" -msgid "--groups" -msgstr "groups" - -#. (itstool) path: term/replaceable -#: useradd.8.xml.out:257 usermod.8.xml.out:199 -#, fuzzy -#| msgid "GROUP" -msgid "GROUP1" -msgstr "GRUPO" - -#. (itstool) path: term/emphasis -#: useradd.8.xml.out:257 usermod.8.xml.out:199 -#, fuzzy -#| msgid "GROUP" -msgid ",GROUP2,..." -msgstr "GRUPO" - -#. (itstool) path: term/emphasis -#: useradd.8.xml.out:257 usermod.8.xml.out:199 -#, fuzzy -#| msgid "GROUP" -msgid ",GROUPN" -msgstr "GRUPO" - -#. (itstool) path: varlistentry/term -#: useradd.8.xml.out:256 usermod.8.xml.out:198 -msgid "" -"<_:option-1/>, <_:option-2/> <_:replaceable-3/>[<_:emphasis-4/>[<_:" -"emphasis-5/>]]]" -msgstr "" - -#. (itstool) path: para/option -#: useradd.8.xml.out:267 -#, fuzzy -#| msgid "GROUP" -msgid "GROUPS" -msgstr "GRUPO" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:260 -#, fuzzy -#| msgid "" -#| "A list of supplementary groups which the user is also a member of. Each " -#| "group is separated from the next by a comma, with no intervening " -#| "whitespace. The groups are subject to the same restrictions as the group " -#| "given with the option. The default is for the user to " -#| "belong only to the initial group." -msgid "" -"A list of supplementary groups which the user is also a member of. Each " -"group is separated from the next by a comma, with no intervening whitespace. " -"The groups are subject to the same restrictions as the group given with the " -"<_:option-1/> option. The default is for the user to belong only to the " -"initial group. In addition to passing in the -G flag, you can add the option " -"<_:option-2/> to the file <_:filename-3/> which in turn will add all users " -"to those supplementary groups." -msgstr "" -"Uma lista de grupos suplementares a que o utilizador é também membro. Cada " -"grupo é separado do próximo por uma vírgula, sem nenhum espaço em branco " -"intermédio. Os grupos estão sujeitos às mesmas restrições que o grupo dado " -"com a opção . A predefinição é o utilizador pertencer " -"apenas ao grupo inicial." - -#. (itstool) path: term/option -#: useradd.8.xml.out:280 -msgid "--skel" -msgstr "" - -#. (itstool) path: term/replaceable -#: useradd.8.xml.out:280 -msgid "SKEL_DIR" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:283 -#, fuzzy -#| msgid "" -#| "The skeleton directory, which contains files and directories to be copied " -#| "in the user's home directory, when the home directory is created by " -#| "useradd." -msgid "" -"The skeleton directory, which contains files and directories to be copied in " -"the user's home directory, when the home directory is created by <_:" -"command-1/>." -msgstr "" -"O directório esqueleto, que contem ficheiros e directórios a serem copiados " -"para o directório home do utilizador, quando o directório home é criado pelo " -"useradd." - -#. (itstool) path: para/option -#. (itstool) path: term/option -#: useradd.8.xml.out:290 useradd.8.xml.out:352 -msgid "--create-home" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:288 useradd.8.xml.out:592 usermod.8.xml.out:524 -#, fuzzy -#| msgid "" -#| "This option is only valid if the (or ) option is specified." -msgid "" -"This option is only valid if the <_:option-1/> (or <_:option-2/>) option is " -"specified." -msgstr "" -"Esta opção apenas é válida se a opção (ou ) for especificada." - -#. (itstool) path: para/option -#: useradd.8.xml.out:294 -msgid "SKEL" -msgstr "" - -#. (itstool) path: para/filename -#: useradd.8.xml.out:296 -#, fuzzy -#| msgid "/etc/skel/" -msgid "/etc/skel" -msgstr "/etc/skel/" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:292 -#, fuzzy -#| msgid "" -#| "If this option is not set, the skeleton directory is defined by the " -#| " variable in /etc/default/useradd or, by default, /etc/skel." -msgid "" -"If this option is not set, the skeleton directory is defined by the <_:" -"option-1/> variable in <_:filename-2/> or, by default, <_:filename-3/>." -msgstr "" -"Se esta opção não for definida, o directório esqueleto é definido pela " -"variável em /etc/default/useradd " -"ou, por predefinição, /etc/skel." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:298 -msgid "If possible, the ACLs and extended attributes are copied." -msgstr "Se possível, os atributos ACL e estendidos são copiados." - -#. (itstool) path: para/option -#: useradd.8.xml.out:311 -msgid "UMASK" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:308 -msgid "" -"Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:" -"option-4/>, <_:option-5/> and others)." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:314 -msgid "" -"Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used " -"when creating an account to turn off password aging. Multiple <_:option-4/> " -"options can be specified, e.g.: <_:option-5/> <_:replaceable-6/> =<_:" -"replaceable-7/> <_:option-8/> <_:replaceable-9/>=<_:replaceable-10/>" -msgstr "" - -#. (itstool) path: term/option -#: useradd.8.xml.out:332 -msgid "--no-log-init" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:334 -msgid "Do not add the user to the lastlog and faillog databases." -msgstr "Não adiciona o utilizador às bases de dados lastlog e faillog." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:337 -msgid "" -"By default, the user's entries in the lastlog and faillog databases are " -"reset to avoid reusing the entry from a previously deleted user." -msgstr "" -"Por predefinição, as entradas do utilizador nas bases de dados lastlog e " -"faillog são reiniciadas para evitar reutilizar uma entrada de um utilizador " -"anteriormente apagado." - -#. (itstool) path: para/option -#: useradd.8.xml.out:344 -msgid "LOG_INIT" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:342 -msgid "" -"If this option is not specified, <_:command-1/> will also consult the " -"variable <_:option-2/> in the <_:filename-3/> if set to no the user will not " -"be added to the lastlog and faillog databases." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:355 -#, fuzzy -#| msgid "" -#| "Create the user's home directory if it does not exist. The files and " -#| "directories contained in the skeleton directory (which can be defined " -#| "with the option) will be copied to the home directory." -msgid "" -"Create the user's home directory if it does not exist. The files and " -"directories contained in the skeleton directory (which can be defined with " -"the <_:option-1/> option) will be copied to the home directory." -msgstr "" -"Cria o directório home do utilizador se este não existir. Os ficheiros e " -"directórios contidos no directório esqueleto (o qual pode ser definido com a " -"opção ) serão copiados para o directório home." - -#. (itstool) path: para/option -#: useradd.8.xml.out:363 useradd.8.xml.out:381 useradd.8.xml.out:477 -msgid "CREATE_HOME" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:361 -#, fuzzy -#| msgid "" -#| "By default, if this option is not specified and ) " -#| "is set to yes." -msgid "" -"Do not create the user's home directory, even if the system wide setting " -"from <_:filename-1/> (<_:option-2/>) is set to <_:replaceable-3/>." -msgstr "" -"Não cria o directório home do utilizador, mesmo que a definição geral do o " -"sistema de /etc/login.defs ( option or by the " -#| " variable in /etc/default/useradd." -msgid "" -"Do not create a group with the same name as the user, but add the user to " -"the group specified by the <_:option-1/> option or by the <_:option-2/> " -"variable in <_:filename-3/>." -msgstr "" -"Não cria um grupo com o mesmo nome que o utilizador, mas adiciona o " -"utilizador ao grupo especificado pela opção ou pela " -"variável em /etc/default/useradd." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:410 -#, fuzzy -#| msgid "" -#| "Allow the creation of a user account with a duplicate (non-unique) UID." -msgid "allows the creation of an account with an already existing UID." -msgstr "" -"Permite a criação de uma conta de utilizador com um UID duplicado (não " -"único)." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:414 usermod.8.xml.out:277 -msgid "" -"This option is only valid in combination with the <_:option-1/> option. As a " -"user identity serves as key to map between users on one hand and " -"permissions, file ownerships and other aspects that determine the system's " -"behavior on the other hand, more than one login name will access the account " -"of the given UID." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:430 -msgid "" -"defines an initial password for the account. PASSWORD is expected to be " -"encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this " -"option allows to create efficiently batches of users." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:437 -msgid "" -"Without this option, the new account will be locked and with no password " -"defined, i.e. a single exclamation mark in the respective field of <_:" -"filename-1/>. This is a state where the user won't be able to access the " -"account or to define a password himself." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:445 -#, fuzzy -#| msgid "" -#| "Note: This option is not recommended " -#| "because the password (or encrypted password) will be visible by users " -#| "listing the processes." -msgid "" -"<_:emphasis-1/>Avoid this option on the command line because the password " -"(or encrypted password) will be visible by users listing the processes." -msgstr "" -"Nota: Esta opção não é recomendada porque " -"a palavra passe (ou palavra passe encriptada) irá ser visível pelos " -"utilizadores que listam os processos." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:473 -#, fuzzy -#| msgid "" -#| "Note that useradd will not create a home directory for " -#| "such a user, regardless of the default setting in /etc/login." -#| "defs (). You have to specify the " -#| " options if you want a home directory for a system " -#| "account to be created." -msgid "" -"Note that <_:command-1/> will not create a home directory for such a user, " -"regardless of the default setting in <_:filename-2/> (<_:option-3/>). You " -"have to specify the <_:option-4/> options if you want a home directory for a " -"system account to be created." -msgstr "" -"Note que useradd não irá criar um directório home para " -"tal utilizador, independentemente da definição predefinida em /etc/" -"login.defs (). Você tem de " -"especificar a opção se quer que seja criado um " -"directório home para uma conta de sistema." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:481 -#, fuzzy -#| msgid "" -#| "Note that useradd will not create a home directory for " -#| "such a user, regardless of the default setting in /etc/login." -#| "defs (). You have to specify the " -#| " options if you want a home directory for a system " -#| "account to be created." -msgid "" -"Note that this option will not update <_:filename-1/> and <_:filename-2/>. " -"You have to specify the <_:option-3/> options if you want to update the " -"files for a system account to be created." -msgstr "" -"Note que useradd não irá criar um directório home para " -"tal utilizador, independentemente da definição predefinida em /etc/" -"login.defs (). Você tem de " -"especificar a opção se quer que seja criado um " -"directório home para uma conta de sistema." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:522 -msgid "" -"sets the path to the user's login shell. Without this option, the system " -"will use the <_:option-1/> variable specified in <_:filename-2/>, or, if " -"that is as well not set, the field for the login shell in <_:filename-3/> " -"remains empty." -msgstr "" - -#. (itstool) path: term/option -#: useradd.8.xml.out:533 usermod.8.xml.out:369 -msgid "--uid" -msgstr "" - -#. (itstool) path: term/replaceable -#: useradd.8.xml.out:533 usermod.8.xml.out:369 -msgid "UID" -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:536 -#, fuzzy -#| msgid "" -#| "The numerical value of the user's ID. This value must be unique, unless " -#| "the option is used. The value must be non-negative. " -#| "The default is to use the smallest ID value greater than or equal to " -#| " and greater than every other user." -msgid "" -"The numerical value of the user's ID. This value must be unique, unless the " -"<_:option-1/> option is used. The value must be non-negative. The default is " -"to use the smallest ID value greater than or equal to <_:option-2/> and " -"greater than every other user." -msgstr "" -"O valor numérico do ID de utilizador. Este valor tem de ser único, a menos " -"que a opção seja usada. O valor tem de ser não-negativo. " -"A predefinição é usar menor valor de ID maior ou igual a option, useradd will display the current default values. When invoked with " -#| " plus other options, useradd will " -#| "update the default values for the specified options. Valid default-" -#| "changing options are:" -msgid "" -"When invoked with only the <_:option-1/> option, <_:command-2/> will display " -"the current default values. When invoked with <_:option-3/> plus other " -"options, <_:command-4/> will update the default values for the specified " -"options. Valid default-changing options are:" -msgstr "" -"Quando invocado apenas com a opção , o useradd irá mostrar os valores predefinidos actuais. Quando invocado com " -" mais outras opções, o useradd irá " -"actualizar os valores predefinidos para as opções especificadas. As opções " -"de alteração de predefinições válidas são:" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:615 -#, fuzzy -#| msgid "" -#| "The path prefix for a new user's home directory. The user's name will be " -#| "affixed to the end of BASE_DIR to form the new " -#| "user's home directory name, if the option is not used " -#| "when creating a new account." -msgid "" -"sets the path prefix for a new user's home directory. The user's name will " -"be affixed to the end of <_:replaceable-1/> to form the new user's home " -"directory name, if the <_:option-2/> option is not used when creating a new " -"account." -msgstr "" -"O prefixo de caminho para o directório home de novo utilizador. O nome do " -"utilizador será afixado no final de BASE_DIR para " -"formar o nome do directório home do novo utilizador, se a opção variable in /etc/" -#| "default/useradd." -msgid "This option sets the <_:option-1/> variable in <_:filename-2/>." -msgstr "" -"Esta opção define a variável em /etc/default/" -"useradd." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:633 -#, fuzzy -#| msgid "The date on which the user account is disabled." -msgid "sets the date on which newly created user accounts are disabled." -msgstr "A data em que a conta do utilizador é desactivada." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:645 -msgid "" -"defines the number of days after the password exceeded its maximum age where " -"the user is expected to replace this password. See <_:citerefentry-1/>for " -"more information." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:662 -msgid "" -"sets the default primary group for newly created users, accepting group " -"names or a numerical group ID. The named group must exist, and the GID must " -"have an existing entry." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:678 -msgid "defines the default login shell for new users." -msgstr "" - -#. (itstool) path: refsect1/title -#: useradd.8.xml.out:693 -msgid "NOTES" -msgstr "NOTAS" - -#. (itstool) path: para/filename -#. (itstool) path: term/filename -#: useradd.8.xml.out:695 useradd.8.xml.out:799 -msgid "/etc/skel/" -msgstr "/etc/skel/" - -#. (itstool) path: refsect1/para -#: useradd.8.xml.out:694 -#, fuzzy -#| msgid "" -#| "The system administrator is responsible for placing the default user " -#| "files in the /etc/skel/ directory (or any other " -#| "skeleton directory specified in /etc/default/useradd " -#| "or on the command line)." -msgid "" -"The system administrator is responsible for placing the default user files " -"in the <_:filename-1/> directory (or any other skeleton directory specified " -"in <_:filename-2/> or on the command line)." -msgstr "" -"O administrador do sistema é responsável por colocar os ficheiros " -"predefinidos de utilizador no directório /etc/skel/ (ou " -"noutro directório esqueleto especificado em /etc/default/useradd ou na linha de comandos." - -#. (itstool) path: refsect1/para -#: useradd.8.xml.out:703 -msgid "" -"You may not add a user to a NIS or LDAP group. This must be performed on the " -"corresponding server." -msgstr "" -"Você não pode adicionar um utilizador a um grupo NIS ou LDAP. Isto tem de " -"ser feito no servidor correspondente." - -#. (itstool) path: refsect1/para -#: useradd.8.xml.out:708 -#, fuzzy -#| msgid "" -#| "Similarly, if the username already exists in an external user database " -#| "such as NIS or LDAP, useradd will deny the user " -#| "account creation request." -msgid "" -"Similarly, if the username already exists in an external user database such " -"as NIS or LDAP, <_:command-1/> will deny the user account creation request." -msgstr "" -"De modo semelhante, se o nome de utilizador já existir numa base de dados " -"externa de utilizadores como em NIS ou LDAP, o useradd " -"irá negar o pedido de criação da conta de utilizador." - -#. (itstool) path: para/command -#: useradd.8.xml.out:722 -msgid "ls" -msgstr "" - -#. (itstool) path: refsect1/para -#: useradd.8.xml.out:714 -msgid "" -"Usernames may contain only lower and upper case letters, digits, " -"underscores, or dashes. They can end with a dollar sign. Dashes are not " -"allowed at the beginning of the username. Fully numeric usernames and " -"usernames . or .. are also disallowed. It is not recommended to use " -"usernames beginning with . character as their home directories will be " -"hidden in the <_:command-1/> output." -msgstr "" - -#. (itstool) path: refsect1/para -#: useradd.8.xml.out:724 -#, fuzzy -#| msgid "Usernames may only be up to 32 characters long." -msgid "Usernames may only be up to 256 characters long." -msgstr "Os nomes de utilizador só podem ir até 32 caracteres de comprimento." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:789 -msgid "Default values for account creation." -msgstr "Valores predefinidos para criação de conta." - -#. (itstool) path: term/filename -#: useradd.8.xml.out:793 -#, fuzzy -#| msgid "/etc/default/useradd" -msgid "/etc/shadow-maint/useradd-pre.d/*" -msgstr "/etc/default/useradd" - -#. (itstool) path: term/filename -#: useradd.8.xml.out:793 -msgid "/etc/shadow-maint/useradd-post.d/*" -msgstr "" - -#. (itstool) path: varlistentry/term -#: useradd.8.xml.out:793 userdel.8.xml.out:209 -msgid "<_:filename-1/>, <_:filename-2/>" -msgstr "" - -#. (itstool) path: para/command -#: useradd.8.xml.out:795 userdel.8.xml.out:211 -#, fuzzy -#| msgid "OPTIONS" -msgid "ACTION" -msgstr "OPÇÕES" - -#. (itstool) path: para/command -#: useradd.8.xml.out:795 userdel.8.xml.out:211 -msgid "SUBJECT" -msgstr "" - -#. (itstool) path: para/filename -#: useradd.8.xml.out:795 -#, fuzzy -#| msgid "useradd" -msgid "useradd-pre.d" -msgstr "useradd" - -#. (itstool) path: para/filename -#: useradd.8.xml.out:795 -#, fuzzy -#| msgid "useradd" -msgid "useradd-post.d" -msgstr "useradd" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:795 -msgid "" -"Run-part files to execute during user addition. The environment variable <_:" -"command-1/> will be populated with useradd and <_:command-2/> with the <_:" -"command-3/>. <_:filename-4/> will be executed prior to any user addition. <_:" -"filename-5/> will execute after user addition. If a script exits non-zero " -"then execution will terminate." -msgstr "" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:801 -msgid "Directory containing default files." -msgstr "Directório que contém ficheiros predefinidos." - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:839 userdel.8.xml.out:243 -msgid "can't update password file" -msgstr "incapaz de actualizar o ficheiro da palavra passe" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:857 -#, fuzzy -#| msgid "UID already in use (and no )" -msgid "UID already in use (and no <_:option-1/>)" -msgstr "UID já em uso (e nenhum )" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:869 -#, fuzzy -#| msgid "username already in use" -msgid "username or group name already in use" -msgstr "nome de utilizador já em uso" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:881 -msgid "can't create home directory" -msgstr "incapaz de criar o directório home" - -#. (itstool) path: term/replaceable -#: useradd.8.xml.out:885 -msgid "14" -msgstr "14" - -#. (itstool) path: listitem/para -#: useradd.8.xml.out:887 -msgid "can't update SELinux user mapping" -msgstr "incapaz de actualizar mapeamento de utilizador SELinux" - -#. (itstool) path: refsect1/para -#: useradd.8.xml.out:896 usermod.8.xml.out:620 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:phrase-10/> " -"<_:citerefentry-11/>, <_:citerefentry-12/>." -msgstr "" - -#. (itstool) path: refnamediv/refpurpose -#: userdel.8.xml.out:47 -msgid "delete a user account and related files" -msgstr "apaga uma conta de utilizador e ficheiros relacionados" - -#. (itstool) path: refsect1/para -#: userdel.8.xml.out:61 -#, fuzzy -#| msgid "" -#| "The userdel command modifies the system account files, " -#| "deleting all entries that refer to the user name LOGIN. The named user must exist." -msgid "" -"The <_:command-1/> command modifies the system account files, deleting all " -"entries that refer to the user name <_:emphasis-2/>. The named user must " -"exist." -msgstr "" -"O comando userdel modifica os ficheiros de contas do " -"sistema, apagando todas as entradas que se referem ao nome de utilizador " -"LOGIN. O utilizador nomeado tem de existir." - -#. (itstool) path: listitem/para -#: userdel.8.xml.out:79 -#, fuzzy -#| msgid "" -#| "This option forces the removal of the user account, even if the user is " -#| "still logged in. It also forces userdel to remove the " -#| "user's home directory and mail spool, even if another user uses the same " -#| "home directory or if the mail spool is not owned by the specified user. " -#| "If is defined to yes in /etc/login.defs and if " -#| "a group exists with the same name as the deleted user, then this group " -#| "will be removed, even if it is still the primary group of another user." -msgid "" -"This option forces the removal of the user account, even if the user is " -"still logged in. It also forces <_:command-1/> to remove the user's home " -"directory and mail spool, even if another user uses the same home directory " -"or if the mail spool is not owned by the specified user. If <_:option-2/> is " -"defined to <_:emphasis-3/> in <_:filename-4/> and if a group exists with the " -"same name as the deleted user, then this group will be removed, even if it " -"is still the primary group of another user." -msgstr "" -"Esta opção força a remoção da conta de utilizador, mesmo que o utilizador " -"esteja ainda com sessão activa. Também força o userdel a " -"remover o directório home do utilizador e a pasta de mail, mesmo que outro " -"utilizador use o mesmo directório home ou se a pasta de mail não for da " -"posse do utilizador especificado. Se " -"estiver definida para yes em /etc/" -"login.defs e se um grupo existe com o mesmo nome que o utilizador " -"apagado, estão este grupo será removido, mesmo que ainda seja o grupo " -"primário de outro utilizador." - -#. (itstool) path: listitem/para -#: userdel.8.xml.out:92 -#, fuzzy -#| msgid "" -#| "Note: This option is dangerous and may leave your " -#| "system in an inconsistent state." -msgid "" -"<_:emphasis-1/> This option is dangerous and may leave your system in an " -"inconsistent state." -msgstr "" -"Nota: Esta opção é perigosa e pode deixar o seu sistema " -"num estado inconsistente." - -#. (itstool) path: term/option -#: userdel.8.xml.out:106 usermod.8.xml.out:317 -msgid "--remove" -msgstr "" - -#. (itstool) path: listitem/para -#: userdel.8.xml.out:109 -msgid "" -"Files in the user's home directory will be removed along with the home " -"directory itself and the user's mail spool. Files located in other file " -"systems will have to be searched for and deleted manually." -msgstr "" -"Os ficheiros no directório home do utilizador serão removidos juntamente com " -"o próprio directório home e a pasta de mail do utilizador. Os ficheiros " -"localizados noutros sistemas de ficheiros terão que ser procurados e " -"apagados manualmente." - -#. (itstool) path: listitem/para -#: userdel.8.xml.out:115 -#, fuzzy -#| msgid "" -#| "The mail spool is defined by the variable in " -#| "the login.defs file." -msgid "" -"The mail spool is defined by the <_:option-1/> variable in the <_:filename-2/" -"> file." -msgstr "" -"A pasta de mail é definida pela variável no " -"ficheiro login.defs." - -#. (itstool) path: listitem/para -#: userdel.8.xml.out:156 -msgid "Remove any SELinux user mapping for the user's login." -msgstr "Remove qualquer utilizador SELinux mapeado para o login do utilizador." - -#. (itstool) path: term/filename -#: userdel.8.xml.out:209 -msgid "/etc/shadow-maint/userdel-pre.d/*" -msgstr "" - -#. (itstool) path: term/filename -#: userdel.8.xml.out:209 -msgid "/etc/shadow-maint/userdel-post.d/*" -msgstr "" - -#. (itstool) path: para/filename -#: userdel.8.xml.out:211 -#, fuzzy -#| msgid "userdel" -msgid "userdel-pre.d" -msgstr "userdel" - -#. (itstool) path: para/filename -#: userdel.8.xml.out:211 -#, fuzzy -#| msgid "userdel" -msgid "userdel-post.d" -msgstr "userdel" - -#. (itstool) path: listitem/para -#: userdel.8.xml.out:211 -msgid "" -"Run-part files to execute during user deletion. The environment variable <_:" -"command-1/> will be populated with <_:command-2/> and <_:command-3/> with " -"the username. <_:filename-4/> will be executed prior to any user deletion. " -"<_:filename-5/> will execute after user deletion. If a script exits non-zero " -"then execution will terminate." -msgstr "" - -#. (itstool) path: listitem/para -#: userdel.8.xml.out:255 -msgid "specified user doesn't exist" -msgstr "o utilizador especificado não existe" - -#. (itstool) path: listitem/para -#: userdel.8.xml.out:261 -msgid "user currently logged in" -msgstr "utilizador actualmente com sessão activa" - -#. (itstool) path: listitem/para -#: userdel.8.xml.out:273 -msgid "can't remove home directory" -msgstr "incapaz de remover o directório home" - -#. (itstool) path: refsect1/para -#: userdel.8.xml.out:282 -#, fuzzy -#| msgid "" -#| "userdel will not allow you to remove an account if " -#| "there are running processes which belong to this account. In that case, " -#| "you may have to kill those processes or lock the user's password or " -#| "account and remove the account later. The option can " -#| "force the deletion of this account." -msgid "" -"<_:command-1/> will not allow you to remove an account if there are running " -"processes which belong to this account. In that case, you may have to kill " -"those processes or lock the user's password or account and remove the " -"account later. The <_:option-2/> option can force the deletion of this " -"account." -msgstr "" -"O userdel não irá permitir remover uma conta se existirem " -"processos a correr que pertençam a esta conta. Neste caso, você poderá ter " -"que matar esses processos, ou trancar a palavra passe do utilizador ou a " -"conta e remover a conta mais tarde. A opção pode forçar " -"o apagar desta conta." - -#. (itstool) path: refsect1/para -#: userdel.8.xml.out:289 -msgid "" -"You should manually check all file systems to ensure that no files remain " -"owned by this user." -msgstr "" -"Você deve verificar manualmente todos os sistemas para assegurar que não " -"restam ficheiros possuídos por este utilizador." - -#. (itstool) path: refsect1/para -#: userdel.8.xml.out:293 -msgid "" -"You may not remove any NIS attributes on a NIS client. This must be " -"performed on the NIS server." -msgstr "" -"Você não pode remover nenhum atributo NIS num cliente NIS client. Isto tem " -"de ser feito no servidor NIS." - -#. (itstool) path: refsect1/para -#: userdel.8.xml.out:296 -#, fuzzy -#| msgid "" -#| "If is defined to yes in /etc/login.defs, " -#| "userdel will delete the group with the same name as " -#| "the user. To avoid inconsistencies in the passwd and group databases, " -#| "userdel will check that this group is not used as a " -#| "primary group for another user, and will just warn without deleting the " -#| "group otherwise. The option can force the deletion of " -#| "this group." -msgid "" -"If <_:option-1/> is defined to <_:emphasis-2/> in <_:filename-3/>, <_:" -"command-4/> will delete the group with the same name as the user. To avoid " -"inconsistencies in the passwd and group databases, <_:command-5/> will check " -"that this group is not used as a primary group for another user, and will " -"just warn without deleting the group otherwise. The <_:option-6/> option can " -"force the deletion of this group." -msgstr "" -"Se estiver definido para yes em /etc/login.defs, o " -"userdel irá apagar o grupo com o mesmo nome que o " -"utilizador. Para evitar inconsistências nas bases de dados de palavras passe " -"e grupos, o userdel irá verificar que este grupo não é " -"usado como grupo primário para outro utilizador, e caso contrário irá apenas " -"avisar sobre o apagar do grupo. A opção pode forçar o " -"apagar o apagar deste grupo." - -#. (itstool) path: refsect1/para -#: userdel.8.xml.out:309 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:phrase-9/> <_:citerefentry-10/>, " -"<_:citerefentry-11/>." -msgstr "" - -#. (itstool) path: refnamediv/refpurpose -#: usermod.8.xml.out:48 -msgid "modify a user account" -msgstr "modifica uma conta de utilizador" - -#. (itstool) path: refsect1/para -#: usermod.8.xml.out:63 -msgid "The <_:command-1/> command modifies the system account files." -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:81 -#, fuzzy -#| msgid "" -#| "Add the user to the supplementary group(s). Use only with the ." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:102 -msgid "" -"update the comment field of the user in <_:filename-1/>, which is normally " -"modified using the <_:citerefentry-2/> utility." -msgstr "" - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: usermod.8.xml.out:112 usermod.8.xml.out:260 -msgid "--home" -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:115 -msgid "The user's new login directory." -msgstr "O novo directório de login do utilizador." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:118 -#, fuzzy -#| msgid "" -#| "If the option is given, the contents of the current " -#| "home directory will be moved to the new home directory, which is created " -#| "if it does not already exist." -msgid "" -"If the <_:option-1/> option is given, the contents of the current home " -"directory will be moved to the new home directory, which is created if it " -"does not already exist. If the current home directory does not exist the new " -"home directory will not be created." -msgstr "" -"Se for fornecida a opção , o conteúdo do directório home " -"actual será movido para o novo directório home, o qual será criado se não " -"existir já." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:132 -#, fuzzy -#| msgid "" -#| "The date on which the user account will be disabled. The date is " -#| "specified in the format YYYY-MM-DD." -msgid "" -"The date on which the user account will be disabled. The date is specified " -"in the format <_:emphasis-1/>. Integers as input are interpreted as days " -"after 1970-01-01." -msgstr "" -"A data na qual a conta do utilizador será desactivada. A data é especificada " -"no formato AAAA-MM-DD." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:138 -msgid "" -"An input of -1 or an empty string will blank the account expiration field in " -"the shadow password file. The account will remain available with no date " -"limit." -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:143 usermod.8.xml.out:165 -#, fuzzy -#| msgid "" -#| "This option requires a /etc/shadow file. A " -#| "/etc/shadow entry will be created if there were none." -msgid "" -"This option requires a <_:filename-1/> file. A <_:filename-2/> entry will be " -"created if there were none." -msgstr "" -"Esta opção requer um ficheiro /etc/shadow. Será criada " -"uma entrada /etc/shadow se não existir nenhuma." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:155 -msgid "" -"defines the number of days after the password exceeded its maximum age " -"during which the user may still login by immediately replacing the password. " -"This grace period before the account becomes inactive is stored in the " -"shadow password file. An input of 0 will disable an expired password with no " -"delay. An input of -1 will blank the respective field in the shadow password " -"file. See <_:citerefentry-1/> for more information." -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:177 -#, fuzzy -#| msgid "" -#| "The group name or number of the user's new initial login group. The group " -#| "must exist." -msgid "" -"The name or numerical ID of the user's new primary group. The group must " -"exist." -msgstr "" -"O nome do grupo ou número do grupo de login inicial dos novos utilizadores. " -"O grupo tem de existir." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:181 -msgid "" -"Any file from the user's home directory owned by the previous primary group " -"of the user will be owned by this new group." -msgstr "" -"Qualquer ficheiro do directório home do utilizador que pertença ao grupo " -"primário anterior do utilizador passará a pertencer a este novo grupo." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:185 -msgid "" -"The group ownership of files outside of the user's home directory must be " -"fixed manually." -msgstr "" -"A pertença de grupo dos ficheiros que estejam fora do directório home do " -"utilizador terá que ser corrigida manualmente." - -#. (itstool) path: para/filename -#: usermod.8.xml.out:193 usermod.8.xml.out:393 -msgid "/" -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:189 -msgid "" -"The change of the group ownership of files inside of the user's home " -"directory is also not done if the home dir owner uid is different from the " -"current or new user id. This is a safety measure for special home " -"directories such as <_:filename-1/>." -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:202 -#, fuzzy -#| msgid "" -#| "A list of supplementary groups which the user is also a member of. Each " -#| "group is separated from the next by a comma, with no intervening " -#| "whitespace. The groups are subject to the same restrictions as the group " -#| "given with the option." -msgid "" -"A list of supplementary groups which the user is also a member of. Each " -"group is separated from the next by a comma, with no intervening whitespace. " -"The groups must exist." -msgstr "" -"Uma lista de grupos suplementares a que o utilizador é também membro. Cada " -"grupo é separado do próximo por uma vírgula, sem nenhum espaço em branco " -"intermédio. Os grupos estão sujeitos às mesmas restrições que o grupo dado " -"com a opção ." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:207 -#, fuzzy -#| msgid "" -#| "If the user is currently a member of a group which is not listed, the " -#| "user will be removed from the group. This behaviour can be changed via " -#| "the option, which appends the user to the current " -#| "supplementary group list." -msgid "" -"If the user is currently a member of a group which is not listed, the user " -"will be removed from the group. This behaviour can be changed via the <_:" -"option-1/> option, which appends the user to the current supplementary group " -"list." -msgstr "" -"Se o utilizador é actualmente membro de um grupo que não está listado, o " -"utilizador será removido desse grupo. Este comportamento pode ser alterado " -"via opção , a qual acrescenta o utilizador à actual lista " -"de grupos suplementares." - -#. (itstool) path: term/replaceable -#. (itstool) path: para/replaceable -#: usermod.8.xml.out:217 usermod.8.xml.out:223 -#, fuzzy -#| msgid "LOGIN" -msgid "NEW_LOGIN" -msgstr "LOGIN" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:220 -#, fuzzy -#| msgid "" -#| "The name of the user will be changed from LOGIN to NEW_LOGIN. Nothing else is " -#| "changed. In particular, the user's home directory or mail spool should " -#| "probably be renamed manually to reflect the new login name." -msgid "" -"The name of the user will be changed from <_:replaceable-1/> to <_:" -"replaceable-2/>. Nothing else is changed. In particular, the user's home " -"directory or mail spool should probably be renamed manually to reflect the " -"new login name." +#: passwd.5.xml:144(para) +msgid "" +"The home directory field provides the name of the initial working directory." +" The login program uses this information to set the value" +" of the $HOME environmental variable." +msgstr "" +"O campo \"home directory\" fornece o nome do directório de trabalho iniciai." +" O " +"programa login usa esta informação para definir o valor " +"da variável de ambiente $HOME." + +#: passwd.5.xml:150(para) +msgid "" +"The command interpreter field provides the name of the user's command" +" language interpreter, or the name of the initial program to execute. The <" +"command>login program uses this information to set the value of the" +" $SHELL environmental variable. If this field is empty, it" +" defaults to the value /bin/sh." +msgstr "" +"O campo \"command interpreter\" fornece o nome do interpretador de " +"linguagem de comandos do utilizador, ou o nome do programa inicial a " +"executar. O programa login usa esta informação para " +"definir o valor da variável de ambiente $SHELL. Se este campo " +"estiver vazio, usa por predefinição o valor /bin/sh." + +#: passwd.5.xml:171(para) +msgid "optional encrypted password file" +msgstr "ficheiro de palavra passe encriptada opcional" + +#: passwd.5.xml:175(filename) +msgid "/etc/passwd-" +msgstr "/etc/passwd-" + +#: passwd.5.xml:177(para) +msgid "Backup file for /etc/passwd." +msgstr "Ficheiro de salvaguarda para /etc/passwd." + +#: passwd.5.xml:189(para) +msgid "" +"crypt3<" +"/citerefentry>, getent1, getpwnam<" +"/refentrytitle>3, <" +"refentrytitle>login1, <" +"citerefentry>passwd1<" +"/citerefentry>, pwck8, pwconv<" +"/refentrytitle>8, <" +"refentrytitle>pwunconv8, shadow5, su1, sulogin<" +"/refentrytitle>8." +msgstr "" +"crypt3<" +"/citerefentry>, getent1, getpwnam<" +"/refentrytitle>3, <" +"refentrytitle>login1, <" +"citerefentry>passwd1<" +"/citerefentry>, pwck8, pwconv<" +"/refentrytitle>8, <" +"refentrytitle>pwunconv8, shadow5, su1, sulogin<" +"/refentrytitle>8." + +#: passwd.1.xml:72(refpurpose) +msgid "change user password" +msgstr "muda a palavra passe do utilizador" + +#: passwd.1.xml:89(para) +msgid "" +"The passwd command changes passwords for user accounts. A" +" normal user may only change the password for their own account, while the" +" superuser may change the password for any account. passwd" +" also changes the account or associated password validity period." +msgstr "" +"O comando passwd muda palavras passe para contas de " +"utilizadores. Um utilizador normal só pode mudar a palavra passe da sua " +"própria conta, enquanto que o super-utilizador pode mudar a palavra passe de " +"qualquer conta. O passwd também muda a conta ou o " +"período de validade da palavra passe associada." + +#: passwd.1.xml:98(title) +msgid "Password Changes" +msgstr "Mudanças de Palavras Passe" + +#: passwd.1.xml:99(para) +msgid "" +"The user is first prompted for their old password, if one is present. This" +" password is then encrypted and compared against the stored password. The" +" user has only one chance to enter the correct password. The superuser is" +" permitted to bypass this step so that forgotten passwords may be changed." +msgstr "" +"Ao utilizador é primeiro pedida a sua antiga palavra passe, se esta existir. " +"Esta palavra passe é então encriptada e comparada com a palavra passe " +"guardada. O utilizador tem apenas uma hipótese de inserir a palavra passe " +"correta. Ao super-utilizador é permitido saltar este passo para que as " +"palavras passe esquecidas possam ser mudadas." + +#: passwd.1.xml:107(para) +msgid "" +"After the password has been entered, password aging information is checked to" +" see if the user is permitted to change the password at this time. If not, <" +"command>passwd refuses to change the password and exits." +msgstr "" +"Após a palavra passe ser inserida, é verificada informação de envelhecimento " +"da palavra passe para se ver se é permitido ao utilizador mudar a palavra " +"passe nesta altura. Se não, o passwd recusa a mudança " +"da palavra passe e termina." + +#: passwd.1.xml:114(para) +msgid "" +"The user is then prompted twice for a replacement password. The second entry" +" is compared against the first and both are required to match in order for" +" the password to be changed." +msgstr "" +"Ao utilizador é então pedido duas vezes uma palavra passe de substituição. " +"A segunda entrada é comparada com a primeira e é requerido que ambas " +"correspondam para que a palavra passe seja mudada." + +#: passwd.1.xml:120(para) +msgid "" +"Then, the password is tested for complexity. As a general guideline," +" passwords should consist of 6 to 8 characters including one or more" +" characters from each of the following sets:" +msgstr "" +"Então, a palavra passe é testada para complexidade. Como orientação geral, " +"as palavras passe devem consistir de 6 a 8 caracteres incluindo um mais " +"caracteres de cada um dos seguintes conjuntos:" + +#: passwd.1.xml:128(para) +msgid "lower case alphabetics" +msgstr "alfabéticos em minúsculas" + +#: passwd.1.xml:131(para) +msgid "digits 0 thru 9" +msgstr "dígitos de 0 a 9" + +#: passwd.1.xml:134(para) +msgid "punctuation marks" +msgstr "pontos" + +#: passwd.1.xml:138(para) +msgid "" +"Care must be taken not to include the system default erase or kill" +" characters. passwd will reject any password which is not" +" suitably complex." +msgstr "" +"Deve-se ter cuidado em não incluir os caracteres de apagar ou matar " +"predefinidos do sistema. O passwd irá rejeitar qualquer " +"palavra passe que não tenha a complexidade apropriada." + +#: passwd.1.xml:147(title) +msgid "Hints for user passwords" +msgstr "Dicas para palavra passe de utilizador" + +#: passwd.1.xml:148(para) +msgid "" +"The security of a password depends upon the strength of the encryption" +" algorithm and the size of the key space. The legacy UNIX System encryption method is based on the NBS DES algorithm. More recent" +" methods are now recommended (see ). The size" +" of the key space depends upon the randomness of the password which is" +" selected." msgstr "" -"O nome do utilizador será alterado de LOGIN para " -"NEW_LOGIN. Nada mais é alterado. Em particular, o " -"directório home do utilizador ou a pasta de mail devem provavelmente ser " -"renomeados manualmente para refletir o novo nome de login." +"A segurança de uma palavra passe depende da força do algoritmo de encriptação " +"e do tamanho do espaço chave.O antigo método de encriptação do Sistema " +"UNIX é baseado no algoritmo NBS DES. Agora são " +"recomendados métodos mais recentes (veja ). " +"O tamanho do espaço chave depende da aleatoriedade da palavra passe que é " +"selecionada." -#. (itstool) path: term/option -#. (itstool) path: para/option -#: usermod.8.xml.out:231 usermod.8.xml.out:411 -#, fuzzy -#| msgid "-" -msgid "-L" -msgstr "-" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:234 -#, fuzzy -#| msgid "" -#| "Lock a user's password. This puts a '!' in front of the encrypted " -#| "password, effectively disabling the password. You can't use this option " -#| "with or ." -msgid "" -"Lock a user's password. This puts a '!' in front of the encrypted password, " -"effectively disabling the password. You can't use this option with <_:" -"option-1/> or <_:option-2/>." -msgstr "" -"Tranca a palavra passe do utilizador. Isto põe um '!' na frente da palavra " -"passe encriptada, efectivamente desactivando a palavra passe. Você não pode " -"usar esta opção com ou ." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:240 -#, fuzzy -#| msgid "" -#| "Note: if you wish to lock the account (not only access with a password), " -#| "you should also set the EXPIRE_DATE to " -#| "1." -msgid "" -"Note: if you wish to lock the account (not only access with a password), you " -"should also set the <_:replaceable-1/> to <_:replaceable-2/>." -msgstr "" -"Nota: Se deseja trancar uma conta (não apenas acesso com uma palavra passe), " -"você deve também definir EXPIRE_DATE para " -"1." - -#. (itstool) path: term/option -#: usermod.8.xml.out:250 -msgid "--move-home" -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:253 -msgid "" -"moves the content of the user's home directory to the new location. If the " -"current home directory does not exist the new home directory will not be " -"created." -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:258 -#, fuzzy -#| msgid "" -#| "This option is only valid in combination with the " -#| "option." -msgid "" -"This option is only valid in combination with the <_:option-1/> (or <_:" -"option-2/>) option." -msgstr "" -"Esta opção é apenas válida em combinação com a opção ." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:262 -#, fuzzy -#| msgid "" -#| "usermod will try to adapt the ownership of the files " -#| "and to copy the modes, ACL and extended attributes, but manual changes " -#| "might be needed afterwards." -msgid "" -"<_:command-1/> will try to adapt the ownership of the files and to copy the " -"modes, ACL and extended attributes, but manual changes might be needed " -"afterwards." -msgstr "" -"O usermod irá tentar adaptar a posse dos ficheiros e " -"copiar os modos, atributos ACL e estendidos, mas depois disso podem ser " -"precisas alterações manuais." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:274 -#, fuzzy -#| msgid "" -#| "When used with the option, this option allows to " -#| "change the user ID to a non-unique value." -msgid "allows to change the user ID to a non-unique value." -msgstr "" -"Quando usada com a opção , esta opção permite alterar o " -"ID de utilizador para um valor não-único." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:293 -msgid "" -"defines a new password for the user. PASSWORD is expected to be encrypted, " -"as returned by <_:citerefentry-1/>." -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:298 -#, fuzzy -#| msgid "" -#| "Note: This option is not recommended " -#| "because the password (or encrypted password) will be visible by users " -#| "listing the processes." -msgid "" -"<_:emphasis-1/> Avoid this option on the command line because the password " -"(or encrypted password) will be visible by users listing the processes." -msgstr "" -"Nota: Esta opção não é recomendada porque " -"a palavra passe (ou palavra passe encriptada) irá ser visível pelos " -"utilizadores que listam os processos." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:303 -#, fuzzy -#| msgid "" -#| "The password will be written in the local /etc/passwd or /etc/shadow file. This might differ " -#| "from the password database configured in your PAM configuration." -msgid "" -"The password will be written in the local <_:filename-1/> or <_:filename-2/> " -"file. This might differ from the password database configured in your PAM " -"configuration." -msgstr "" -"A palavra passe será escrita no ficheiro local /etc/passwd ou /etc/shadow. Isto pode diferir da base de " -"dados de palavras passe configurada na sua configuração de PAM." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:320 -#, fuzzy -#| msgid "" -#| "Add the user to the supplementary group(s). Use only with the ." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:344 -#, fuzzy -#| msgid "" -#| "Apply changes in the PREFIX_DIR directory and " -#| "use the configuration files from the PREFIX_DIR directory. This option does not chroot and is intended for " -#| "preparing a cross-compilation target. Some limitations: NIS and LDAP " -#| "users/groups are not verified. PAM authentication is using the host " -#| "files. No SELINUX support." -msgid "" -"Apply changes within the directory tree starting with <_:replaceable-1/> and " -"use as well the configuration files located there. This option does not " -"chroot and is intended for preparing a cross-compilation target. Some " -"limitations: NIS and LDAP users/groups are not verified. PAM authentication " -"is using the host files. No SELINUX support." -msgstr "" -"Aplica alterações no directório PREFIX_DIR e usa " -"os ficheiro de configuração do directório PREFIX_DIR. Esta opção não faz chroot e destina-se à preparação de um alvo " -"de compilação cruzada. Algumas limitações: Os utilizadores/grupos NIS e LDAP " -"não são verificados. A autenticação PAM usa os ficheiros do anfitrião. Não " -"há suporte a SELINUX." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:360 -#, fuzzy -#| msgid "" -#| "The name of the user's new login shell. Setting this field to blank " -#| "causes the system to select the default login shell." -msgid "" -"changes the user's login shell. An empty string for SHELL blanks the field " -"in <_:filename-1/> and logs the user into the system's default shell." -msgstr "" -"O nome da shell de login do novo utilizador. Definir este campo para vazio " -"faz com que o sistema selecione a shell de login predefinida." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:372 -#, fuzzy -#| msgid "The new numerical value of the user's ID." -msgid "The new value of the user's ID." -msgstr "O novo valor numérico do ID do utilizador." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:375 -#, fuzzy -#| msgid "" -#| "This value must be unique, unless the option is used. " -#| "The value must be non-negative." -msgid "" -"This value must be unique, unless the <_:option-1/> option is used. The " -"value must be non-negative." -msgstr "" -"Este valor tem de ser único, a menos que seja usada a opção or ." -msgid "" -"Unlock a user's password. This removes the '!' in front of the encrypted " -"password. You can't use this option with <_:option-1/> or <_:option-2/>." -msgstr "" -"Destranca a palavra passe do utilizador Isto remove o'!' da frente da " -"palavra passe encriptada. Você não pode usar esta opção com ." - -#. (itstool) path: para/replaceable -#: usermod.8.xml.out:417 -msgid "99999" -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:413 -#, fuzzy -#| msgid "" -#| "Note: if you wish to unlock the account (not only access with a " -#| "password), you should also set the EXPIRE_DATE " -#| "(for example to 99999, or to the " -#| " value from /etc/default/useradd)." -msgid "" -"Note: if you wish to unlock the account (not only access with a password), " -"you should also set the <_:replaceable-1/> (for example to <_:replaceable-2/" -">, or to the <_:option-3/> value from <_:filename-4/>)." -msgstr "" -"Nota: Se deseja destrancar a conta (não apenas acesso com uma palavra " -"passe), você deve também definir EXPIRE_DATE (por " -"exemplo para 99999, ou o valor ,  UID" -msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>-<_:replaceable-4/>" -msgstr "" -",  UID" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:428 -msgid "Add a range of subordinate uids to the user's account." -msgstr "Adiciona um alcance de uids subordinados à conta do utilizador." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:431 usermod.8.xml.out:469 -#, fuzzy -#| msgid "" -#| "This option may be specified multiple times to add multiple ranges to a " -#| "users account." -msgid "" -"This option may be specified multiple times to add multiple ranges to a " -"user's account." -msgstr "" -"Esta opção pode ser especificada várias vezes para adicionar vários alcances " -"à conta de um utilizador." - -#. (itstool) path: para/option -#: usermod.8.xml.out:436 usermod.8.xml.out:456 -msgid "SUB_UID_MIN" -msgstr "" - -#. (itstool) path: para/option -#: usermod.8.xml.out:436 usermod.8.xml.out:456 -#, fuzzy -#| msgid "LASTLOG_UID_MAX" -msgid "SUB_UID_MAX" -msgstr "LASTLOG_UID_MAX" - -#. (itstool) path: para/option -#: usermod.8.xml.out:437 usermod.8.xml.out:457 -msgid "SUB_UID_COUNT" -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:434 usermod.8.xml.out:454 usermod.8.xml.out:472 -#: usermod.8.xml.out:492 -#, fuzzy -#| msgid "" -#| "No checks will be performed with regard to , " -#| ", or from /etc/" -#| "login.defs." -msgid "" -"No checks will be performed with regard to <_:option-1/>, <_:option-2/>, or " -"<_:option-3/> from /etc/login.defs." -msgstr "" -"Nenhuma verificação será executada em relação a , ou a " -"partir de /etc/login.defs." - -#. (itstool) path: term/option -#: usermod.8.xml.out:443 -#, fuzzy -#| msgid "-" -msgid "-V" -msgstr "-" - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: usermod.8.xml.out:443 usermod.8.xml.out:451 -msgid "--del-subuids" -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:446 -msgid "Remove a range of subordinate uids from the user's account." -msgstr "Remove um alcance de uids subordinados à conta do utilizador." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:449 -#, fuzzy -#| msgid "" -#| "This option may be specified multiple times to remove multiple ranges to " -#| "a users account. When both and are specified, the removal of all subordinate uid " -#| "ranges happens before any subordinate uid range is added." -msgid "" -"This option may be specified multiple times to remove multiple ranges to a " -"user's account. When both <_:option-1/> and <_:option-2/> are specified, the " -"removal of all subordinate uid ranges happens before any subordinate uid " -"range is added." -msgstr "" -"Esta opção pode ser especifica várias vezes para remover vários alcances de " -"uma conta de utilizador. Quando ambas e " -" são especificadas, a remoção de um alcance de " -"uid subordinado acontece antes de se adicionar o alcance de uid subordinado." - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: usermod.8.xml.out:463 usermod.8.xml.out:489 -msgid "--add-subgids" -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:466 -msgid "Add a range of subordinate gids to the user's account." -msgstr "Adiciona um alcance de gids subordinados à conta do utilizador." - -#. (itstool) path: para/option -#: usermod.8.xml.out:474 usermod.8.xml.out:494 -msgid "SUB_GID_MIN" -msgstr "" - -#. (itstool) path: para/option -#: usermod.8.xml.out:474 usermod.8.xml.out:494 -#, fuzzy -#| msgid "LASTLOG_UID_MAX" -msgid "SUB_GID_MAX" -msgstr "LASTLOG_UID_MAX" - -#. (itstool) path: para/option -#: usermod.8.xml.out:475 usermod.8.xml.out:495 -msgid "SUB_GID_COUNT" -msgstr "" - -#. (itstool) path: term/option -#. (itstool) path: para/option -#: usermod.8.xml.out:481 usermod.8.xml.out:489 -msgid "--del-subgids" -msgstr "" - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:484 -msgid "Remove a range of subordinate gids from the user's account." -msgstr "Remove um alcance de gids subordinados à conta do utilizador." - -#. (itstool) path: listitem/para -#: usermod.8.xml.out:487 -#, fuzzy -#| msgid "" -#| "This option may be specified multiple times to remove multiple ranges to " -#| "a users account. When both and are specified, the removal of all subordinate gid " -#| "ranges happens before any subordinate gid range is added." -msgid "" -"This option may be specified multiple times to remove multiple ranges to a " -"user's account. When both <_:option-1/> and <_:option-2/> are specified, the " -"removal of all subordinate gid ranges happens before any subordinate gid " -"range is added." -msgstr "" -"Esta opção pode ser especifica várias vezes para remover vários alcances de " -"uma conta de utilizador. Quando ambas is 8 by default. Don't change unless your crypt() is" +" better. This is ignored if set to <" +"replaceable>yes." +msgstr "" +"Número de caracteres significativos na palavra passe para encriptação. " +"Por predefinição é 8. Não altere isto a " +"menos que a sua encriptação seja melhor. Isto é ignorado se " +" for definido para yes." + +#: passwd.1.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) gpasswd.1.xml:30(term) chpasswd.8.xml:30(term) chgpasswd.8.xml:30(term) +msgid " (number)" +msgstr " (número)" + +#: passwd.1.xml:31(term) newusers.8.xml:31(term) login.defs.5.xml:31(term) gpasswd.1.xml:31(term) chpasswd.8.xml:31(term) chgpasswd.8.xml:31(term) +msgid " (number)" +msgstr " (número)" + +#: passwd.1.xml:33(para) newusers.8.xml:33(para) login.defs.5.xml:33(para) gpasswd.1.xml:33(para) chpasswd.8.xml:33(para) chgpasswd.8.xml:33(para) +msgid "" +"When is set to SHA256<" +"/replaceable> or SHA512, this defines the number" +" of SHA rounds used by the encryption algorithm by default (when the number" +" of rounds is not specified on the command line)." +msgstr "" +"Quando é definido para SHA256<" +"/replaceable> ou SHA512, isto define o número de " +"rondas SHA usadas pelo algoritmo de encriptação por predefinição (quando o " +"número de rondas não é especificado na linha de comandos)." + +#: passwd.1.xml:40(para) newusers.8.xml:40(para) login.defs.5.xml:40(para) gpasswd.1.xml:40(para) chpasswd.8.xml:40(para) chgpasswd.8.xml:40(para) +msgid "" +"With a lot of rounds, it is more difficult to brute forcing the password. But" +" note also that more CPU resources will be needed to authenticate users." +msgstr "" +"Com muitas rondas, é mais difícil vencer a palavra passe por força bruta. " +"Mas note também que serão precisos mais recursos da CPU para autenticar " +"os utilizadores." + +#: passwd.1.xml:45(para) newusers.8.xml:45(para) login.defs.5.xml:45(para) gpasswd.1.xml:45(para) chpasswd.8.xml:45(para) chgpasswd.8.xml:45(para) +msgid "" +"If not specified, the libc will choose the default number of rounds (5000)." +msgstr "" +"Se não especificado, o libc irá escolher o número predefinido de rondas " +"(5000)." + +#: passwd.1.xml:49(para) newusers.8.xml:49(para) login.defs.5.xml:49(para) gpasswd.1.xml:49(para) chpasswd.8.xml:49(para) chgpasswd.8.xml:49(para) +msgid "The values must be inside the 1000-999,999,999 range." +msgstr "Os valores têm de estar dentro do alcance 1000-999,999,999." + +#: passwd.1.xml:52(para) newusers.8.xml:52(para) login.defs.5.xml:52(para) gpasswd.1.xml:52(para) chpasswd.8.xml:52(para) chgpasswd.8.xml:52(para) +msgid "" +"If only one of the or SHA_CRYPT_MAX_ROUNDS values is set, then this value will be used." +msgstr "" +"Se apenas um dos valores ou SHA_CRYPT_MAX_ROUNDS for definido, então será usado este valor." + +#: passwd.1.xml:57(para) newusers.8.xml:57(para) login.defs.5.xml:57(para) gpasswd.1.xml:57(para) chpasswd.8.xml:57(para) chgpasswd.8.xml:57(para) +msgid "" +"If > > , and their numeric identifiers are chosen in the <" +"option>SYS_UID_MIN- range, defined in <" +"filename>login.defs, instead of -UID_MAX (and their counterparts for the" +" creation of groups)." +msgstr "" +"Os utilizadores de sistema serão criados sem nenhuma informação de " +"envelhecimento em /etc/shadow, e os seus identificadores " +"numéricos são escolhidos dentro do alcance " +"-, definido em login.defs, " +"em vez de - (e os seus " +"homólogos para a criação de grupos)." + +#: newusers.8.xml:335(term) chgpasswd.8.xml:158(term) +msgid ", " +msgstr ", " + +#: newusers.8.xml:337(para) chpasswd.8.xml:204(para) chgpasswd.8.xml:160(para) +msgid "Use the specified number of rounds to encrypt the passwords." +msgstr "Usa o número de rondas especificado para encriptar as palavras passe." + +#: newusers.8.xml:340(para) chpasswd.8.xml:207(para) chgpasswd.8.xml:163(para) +msgid "" +"The value 0 means that the system will choose the default number of rounds" +" for the crypt method (5000)." +msgstr "" +"O valor 0 significa que o sistema irá escolher o número predefinido de rondas " +"para o método de encriptação (5000)." + +#: newusers.8.xml:344(para) chpasswd.8.xml:211(para) chgpasswd.8.xml:167(para) +msgid "" +"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced." +msgstr "Será forçado um valor mínimo de 1000 e um valor máximo de 999,999,999." + +#: newusers.8.xml:348(para) chpasswd.8.xml:215(para) chgpasswd.8.xml:171(para) +msgid "You can only use this option with the SHA256 or SHA512 crypt method." +msgstr "" +"Você pode apenas usar esta opção com o método de encriptação SHA256 ou SHA512." + +#: newusers.8.xml:352(para) chgpasswd.8.xml:175(para) +msgid "" +"By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and" +" SHA_CRYPT_MAX_ROUNDS variables in /etc/login.defs." +msgstr "" +"Por predefinição, o número de rondas é definido pelas variáveis " +"SHA_CRYPT_MIN_ROUNDS e SHA_CRYPT_MAX_ROUNDS em /etc/login.defs." + +#: newusers.8.xml:364(para) +msgid "" +"The input file must be protected since it contains unencrypted passwords." +msgstr "" +"O ficheiro de entrada deve ser protegido pois contém palavras passe " +"não encriptadas." + +#: newusers.8.xml:368(para) chgpasswd.8.xml:191(para) +msgid "" +"You should make sure the passwords and the encryption method respect the" +" system's password policy." +msgstr "" +"Você deve certificar que as palavras passe e o método de encriptação " +"respeitam a política de palavras passe do sistema." + +#: newusers.8.xml:444(filename) +msgid "/etc/pam.d/newusers" +msgstr "/etc/pam.d/newusers" + +#: newusers.8.xml:446(para) +msgid "PAM configuration for newusers." +msgstr "Configuração PAM para newusers." + +#: newusers.8.xml:466(para) +msgid "" +"login.defs5<" +"/manvolnum>, passwd<" +"/refentrytitle>1, subgid<" +"manvolnum>5, subuid<" +"/refentrytitle>5, <" +"citerefentry>useradd8<" +"/citerefentry>." +msgstr "" +"login.defs5<" +"/manvolnum>, passwd<" +"/refentrytitle>1, subgid<" +"manvolnum>5, subuid<" +"/refentrytitle>5, <" +"citerefentry>useradd8<" +"/citerefentry>." + +#: newgrp.1.xml:58(refentrytitle) newgrp.1.xml:65(refname) newgrp.1.xml:71(command) +msgid "newgrp" +msgstr "newgrp" + +#: newgrp.1.xml:66(refpurpose) +msgid "log in to a new group" +msgstr "login para um novo grupo" + +#: newgrp.1.xml:72(replaceable) grpck.8.xml:74(replaceable) groupadd.8.xml:78(replaceable) gpasswd.1.xml:88(replaceable) +msgid "group" +msgstr "group" + +#: newgrp.1.xml:78(para) +msgid "" +"The newgrp command is used to change the current group ID" +" during a login session. If the optional flag is given," +" the user's environment will be reinitialized as though the user had logged" +" in, otherwise the current environment, including current working directory," +" remains unchanged." +msgstr "" +"O comando newgrp é usado para alterar o ID de grupo " +"actual durante um login de sessão. Se for dada a bandeira opcional " +", o ambiente do utilizador será reiniciado como se o " +"utilizador tivesse feito login, caso contrário, o ambiente actual, incluindo " +"o directório de trabalho actual, permanece não alterado." + +#: newgrp.1.xml:86(para) +msgid "" +"newgrp changes the current real group ID to the named" +" group, or to the default group listed in /etc/passwd if" +" no group name is given. newgrp also tries to add the" +" group to the user groupset. If not root, the user will be prompted for a" +" password if she does not have a password (in /etc/shadow if this user has an entry in the shadowed password file, or in /etc/passwd otherwise) and the group does, or if the user is not" +" listed as a member and the group has a password. The user will be denied" +" access if the group password is empty and the user is not listed as a member." +msgstr "" +"newgrp muda o ID de grupo real actual para o grupo " +"nomeado, ou para o grupo predefinido listado em /etc/passwd se não for dado um nome de grupo. newgrp também " +"tenta adicionar o grupo ao conjunto de grupos do utilizador. Se não for root, " +"será pedido ao utilizador uma palavra passe se este não tiver uma palavra " +"passe (em /etc/shadow se este utilizador tiver uma " +"entrada no ficheiro de palavras passe sombra, ou caso contrário em /etc/passwd) e o grupo tiver, ou se o utilizador não estiver " +"listado como membro e o grupo possuir uma palavra passe. Será negado acesso " +"ao utilizador se a palavra passe do grupo estiver vazia e o utilizador não " +"estiver listado como membro." + +#: newgrp.1.xml:100(para) +msgid "" +"If there is an entry for this group in /etc/gshadow," +" then the list of members and the password of this group will be taken from" +" this file, otherwise, the entry in /etc/group is" +" considered." +msgstr "" +"Se existir uma entrada para este grupo em /etc/gshadow, " +"então a lista de membros e a palavra passe deste grupo serão obtidas a " +"partir deste ficheiro, caso contrário, será considerada a entrada em " +"/etc/group." + +#: newgrp.1.xml:152(para) +msgid "" +"id1<" +"/citerefentry>, login1, su1, sg<" +"/refentrytitle>1, <" +"refentrytitle>gpasswd1," +" group5<" +"/citerefentry>, gshadow5<" +"/manvolnum>." +msgstr "" +"id1<" +"/citerefentry>, login1, su1, sg<" +"/refentrytitle>1, <" +"refentrytitle>gpasswd1," +" group5<" +"/citerefentry>, gshadow5<" +"/manvolnum>." + +#: logoutd.8.xml:57(refentrytitle) logoutd.8.xml:64(refname) logoutd.8.xml:70(command) +msgid "logoutd" +msgstr "logoutd" + +#: logoutd.8.xml:65(refpurpose) +msgid "enforce login time restrictions" +msgstr "força restrições de hora de login" + +#: logoutd.8.xml:76(para) +msgid "" +"logoutd enforces the login time and port restrictions" +" specified in /etc/porttime. logoutd" +" should be started from /etc/rc. The /var/run/utmp file is scanned periodically and each user name is" +" checked to see if the named user is permitted on the named port at the" +" current time. Any login session which is violating the restrictions in <" +"filename>/etc/porttime is terminated." +msgstr "" +"logoutd reforça a hora de login e as restrições de porto " +"especificadas em /etc/porttime. O logoutd deve ser arrancado a partir de /etc/rc. O " +"ficheiro /var/run/utmp é sondado periodicamente e cada " +"nome de utilizador é verificado para se ver se o utilizador nomeado é " +"permitido no porto nomeado na hora actual. Qualquer sessão de login que " +"viole as restrições em /etc/porttime é terminada." + +#: logoutd.8.xml:98(filename) login.1.xml:341(filename) +msgid "/var/run/utmp" +msgstr "/var/run/utmp" + +#: logoutd.8.xml:100(para) login.1.xml:343(para) +msgid "List of current login sessions." +msgstr "Lista das sessões de login actuais." + +#: login.defs.5.xml:124(refentrytitle) login.defs.5.xml:131(refname) +msgid "login.defs" +msgstr "login.defs" + +#: login.defs.5.xml:132(refpurpose) +msgid "shadow password suite configuration" +msgstr "configuração da suite de palavra passe sombra" + +#: login.defs.5.xml:137(para) +msgid "" +"The /etc/login.defs file defines the site-specific" +" configuration for the shadow password suite. This file is required. Absence" +" of this file will not prevent system operation, but will probably result in" +" undesirable operation." +msgstr "" +"O ficheiro /etc/login.defs define a configuração " +"específica de sítio para a suite de palavras passe sombra. Este ficheiro " +"é necessário. A ausência deste ficheiro não irá impedir a operação do " +"sistema, mas irá provavelmente resultar em operação não desejável." + +#: login.defs.5.xml:144(para) +msgid "" +"This file is a readable text file, each line of the file describing one" +" configuration parameter. The lines consist of a configuration name and" +" value, separated by whitespace. Blank lines and comment lines are ignored." +" Comments are introduced with a \"#\" pound sign and the pound sign must be" +" the first non-white character of the line." +msgstr "" +"Este ficheiro é um ficheiro de texto legível, e cada linha do ficheiro " +"descreve um parâmetro de configuração. As linhas consistem de um nome de " +"configuração e um valor, separados por espaço em branco. As linhas vazias e " +"os comentários são ignorados. Os comentários são introduzidos com um " +"cardinal \"#\" e este cardinal tem de ser o primeiro caractere não branco da " +"linha." + +#: login.defs.5.xml:152(para) +msgid "" +"Parameter values may be of four types: strings, booleans, numbers, and long" +" numbers. A string is comprised of any printable characters. A boolean should" +" be either the value yes or no<" +"/replaceable>. An undefined boolean parameter or one with a value other than" +" these will be given a no value. Numbers (both" +" regular and long) may be either decimal values, octal values (precede the" +" value with 0) or hexadecimal values (precede the" +" value with 0x). The maximum value of the regular" +" and long numeric parameters is machine-dependent." +msgstr "" +"Os valores do parâmetros podem ser de quatro tipos: strings, booleanos, " +"números e números longos. Uma string é composta por quaisquer caracteres " +"de escrita. Um booleano deve ser ou o valor yes " +"ou no. Um parâmetro booleano não definido ou um " +"com o valor diferente destes receberá o valor no. " +"Números (ambos regulares e longos) podem ser ou valores decimais, valores em " +"octal (precedendo o valor com 0) ou valores em " +"hexadecimal (precedendo o valor com 0x). O valor " +"máximo dos parâmetros numéricos regulares e longos é dependente da máquina." + +#: login.defs.5.xml:167(para) +msgid "The following configuration items are provided:" +msgstr "Os seguintes itens de configuração são fornecidos:" + +#: login.defs.5.xml:32(term) chfn.1.xml:32(term) +msgid " (boolean)" +msgstr " (booleano)" + +#: login.defs.5.xml:34(para) chfn.1.xml:34(para) +msgid "" +"If yes, the chfn program will" +" require authentication before making any changes, unless run by the" +" superuser." +msgstr "" +"Se yes, o programa chfn irá " +"requerer autenticação antes de fazer quaisquer alterações, a menos que " +"seja corrido pelo super-utilizador." + +#: login.defs.5.xml:32(term) chfn.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:34(para) chfn.1.xml:34(para) +msgid "" +"This parameter specifies which values in the gecos<" +"/emphasis> field of the /etc/passwd file may be changed" +" by regular users using the chfn program. It can be any" +" combination of letters f, r<" +"/replaceable>, w, h," +" for Full name, Room number, Work phone, and Home phone, respectively. For" +" backward compatibility, yes is equivalent to <" +"replaceable>rwh and no is equivalent" +" to frwh. If not specified, only the superuser can" +" make any changes. The most restrictive setting is better achieved by not" +" installing chfn SUID." +msgstr "" +"Este parâmetro especifica quais valores no campo gecos<" +"/emphasis> do ficheiro /etc/passwd podem ser mudados " +"por utilizadores regulares usando o programa chfn. Pode " +"ser qualquer combinação das letras f, " +"r, w, " +"h, para nome \"Full\" completo, número de quarto " +"\" Room\", telefone de trabalho \"Work\", e telefone de casa \"Home\", " +"respetivamente. Para compatibilidade do versões anteriores, yes é equivalente a rwh e " +"no é equivalente a frwh. Se não for especificado, apenas o super-utilizador pode fazer " +"quaisquer alterações. A definição mais restritiva é melhor obtida ao não " +"instalar o chfn com SUID." + +#: login.defs.5.xml:32(term) chsh.1.xml:32(term) +msgid " (boolean)" +msgstr " (booleano)" + +#: login.defs.5.xml:34(para) chsh.1.xml:34(para) +msgid "" +"If yes, the chsh program will" +" require authentication before making any changes, unless run by the" +" superuser." +msgstr "" +"Se yes, o programa chsh irá " +"requerer autenticação antes de fazer quaisquer alterações, a menos que " +"seja corrido pelo super-utilizador." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"Terminal ERASE character (010 = backspace, <" +"replaceable>0177 = DEL)." +msgstr "" +"Caractere ERASE de terminal (010 = backspace, <" +"replaceable>0177 = DEL)." + +#: login.defs.5.xml:38(para) login.defs.5.xml:37(para) login.1.xml:38(para) login.1.xml:37(para) +msgid "" +"The value can be prefixed \"0\" for an octal value, or \"0x\" for an" +" hexadecimal value." +msgstr "" +"O valor pode ser prefixado com \"0\" para um valor octal, ou \"0x\" para um " +"valor hexadecimal." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"Delay in seconds before being allowed another attempt after a login failure." +msgstr "" +"Atraso em segundos antes de permitir nova tentativa após falha de login." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (boolean)" +msgstr " (booleano)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"Enable logging and display of /var/log/faillog login" +" failure info." +msgstr "" +"Activa o relatório e mostragem de /var/log/faillog da " +"informação de falhas de login." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"If set, login will execute this shell instead of the" +" users' shell specified in /etc/passwd." +msgstr "" +"Se definido, login irá executar esta shell em vez da " +"shell de utilizador especificada em /etc/passwd." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"If defined, login failures will be logged in this file in a utmp format." +msgstr "" +"Se definido, as falhas de login serão registadas neste ficheiro em formato " +"utmp." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"If defined, this file can inhibit all the usual chatter during the login" +" sequence. If a full pathname is specified, then hushed mode will be enabled" +" if the user's name or shell are found in the file. If not a full pathname," +" then hushed mode will be enabled if the file exists in the user's home" +" directory." +msgstr "" +"Se definido, este ficheiro pode inibi toda a conversa habitual da sequência " +"de login. Se for especificado um nome de caminho completo, será activado " +"o modo silencioso se o nome de utilizador ou a shell forem encontrados no " +"ficheiro. Se não um nome de caminho completo, então o modo silencioso será " +"activado se o ficheiro existir no directório home do utilizador." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "If defined, this file will be displayed before each login prompt." +msgstr "Se definido, este ficheiro será mostrado antes cada aviso de login." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "Terminal KILL character (025 = CTRL/U)." +msgstr "Caractere KILL de termina (025 = CTRL/U)." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (boolean)" +msgstr " (booleano)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "Enable logging and display of /var/log/lastlog login time info." +msgstr "" +"Activa o registo e mostragem da informação de horas de login em " +"/var/log/lastlog." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (boolean)" +msgstr " (booleano)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "Enable logging of successful logins." +msgstr "Activa o registo de logins com sucesso." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (boolean)" +msgstr " (booleano)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "Enable display of unknown usernames when login failures are recorded." +msgstr "" +"Activa mostragem de nomes de utilizadores desconhecidos quando as falhas " +"de login são registadas." + +#: login.defs.5.xml:38(para) login.1.xml:38(para) +msgid "" +"Note: logging unknown usernames may be a security issue if an user enter her" +" password instead of her login name." +msgstr "" +"Nota: o registar de nomes de utilizador desconhecidos pode ser um problema " +"de segurança se o utilizador escrever a palavra passe no lugar no seu nome " +"de login." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "Maximum number of login retries in case of bad password." +msgstr "Número máximo de tentativas de login em caso de palavra passe errada." + +#: login.defs.5.xml:37(para) login.1.xml:37(para) +msgid "" +"This will most likely be overridden by PAM, since the default pam_unix module" +" has its own built in of 3 retries. However, this is a safe fallback in case" +" you are using an authentication module that does not enforce PAM_MAXTRIES." +msgstr "" +"Isto irá muito provavelmente ser sobreposto pelo PAM, pois o módulo pam_unix " +"predefinido tem embutido nele próprio 3 tentativas. No entanto, isto é um " +"recurso de segurança no caso de você estar a usar um módulo de autenticação " +"que não força PAM_MAXTRIES." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "Max time in seconds for login." +msgstr "Tempo máximo em segundos para login." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"If defined, \":\" delimited list of \"message of the day\" files to be" +" displayed upon login." +msgstr "" +"Se definido, lista delimitada por \":\" de ficheiros \"mensagem do dia\" a" +" serem " +"mostrados após login." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"If defined, name of file whose presence will inhibit non-root logins. The" +" contents of this file should be a message indicating why logins are" +" inhibited." +msgstr "" +"Se definido, o nome do ficheiro cuja presença irá inibir logins não-root. O " +"conteúdo deste ficheiro deve ser uma mensagem a indicar o porquê dos logins " +"estarem inibidos." + +#: login.defs.5.xml:212(para) +msgid "" +", and PASS_WARN_AGE are only used at the time of account creation. Any" +" changes to these settings won't affect existing accounts." +msgstr "" +", e PASS_WARN_AGE são apenas usadas na altura da criação da conta. " +"Quaisquer alterações nestas definições não afectam contas existentes." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (boolean)" +msgstr " (booleano)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"Enable checking of time restrictions specified in /etc/porttime<" +"/filename>." +msgstr "" +"Activa a verificação das restrições de tempo especificadas em " +"/etc/porttime." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:33(term) login.1.xml:33(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:35(para) login.1.xml:35(para) +msgid "" +"The terminal permissions: the login tty will be owned by the TTYGROUP group, and the permissions will be set to , e as permissões serão definidas para can be either the name of a group or a numeric" +" group identifier." +msgstr "" +" pode ser ou o nome de um grupo ou o identificados " +"numérico de um grupo." + +#: login.defs.5.xml:49(para) login.1.xml:49(para) +msgid "" +"If you have a write program which is \"setgid\" to a" +" special group which owns the terminals, define TTYGROUP to the group number" +" and TTYPERM to 0620. Otherwise leave TTYGROUP commented out and assign" +" TTYPERM to either 622 or 600." +msgstr "" +"Se você tem um programa write o qual é \"setgid\" para um " +"grupo especial que possui os terminais, defina TTYGROUP para o número do " +"grupo e TTYPERM para 0620. Caso contrário deixe TTYGROUP comentado e defina " +"TTYPERM a 622 ou 600." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (string)" +msgstr " (string)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "" +"If defined, file which maps tty line to TERM environment parameter. Each line" +" of the file is in a format something like \"vt100 tty01\"." +msgstr "" +"Se definido, ficheiro que mapeia a linha tty para o parâmetro de ambiente " +"TERM. Cada linha do ficheiro está um formato parecido com \"vt100 tty01\"." + +#: login.defs.5.xml:32(term) login.1.xml:32(term) +msgid " (number)" +msgstr " (número)" + +#: login.defs.5.xml:34(para) login.1.xml:34(para) +msgid "Default ulimit value." +msgstr "Valor ulimit predefinido." + +#: login.defs.5.xml:245(title) +msgid "CROSS REFERENCES" +msgstr "REFERÊNCIAS CRUZADAS" + +#: login.defs.5.xml:246(para) +msgid "" +"The following cross references show which programs in the shadow password" +" suite use which parameters." +msgstr "" +"As seguintes referências cruzadas mostram quais programas na suite de " +"palavras passe sombra usam quais parâmetros." + +#: login.defs.5.xml:253(term) chage.1.xml:58(refentrytitle) chage.1.xml:65(refname) chage.1.xml:70(command) +msgid "chage" +msgstr "chage" + +#: login.defs.5.xml:255(para) login.defs.5.xml:451(phrase) login.defs.5.xml:523(phrase) +msgid "USE_TCB" +msgstr "USE_TCB" + +#: login.defs.5.xml:259(term) chfn.1.xml:60(refentrytitle) chfn.1.xml:67(refname) chfn.1.xml:73(command) +msgid "chfn" +msgstr "chfn" + +#: login.defs.5.xml:261(para) +msgid "" +"CHFN_AUTH CHFN_RESTRICT LOGIN_STRING" +msgstr "" +"CHFN_AUTH CHFN_RESTRICT LOGIN_STRING" + +#: login.defs.5.xml:269(term) chgpasswd.8.xml:57(refentrytitle) chgpasswd.8.xml:64(refname) chgpasswd.8.xml:70(command) +msgid "chgpasswd" +msgstr "chgpasswd" + +#: login.defs.5.xml:271(para) login.defs.5.xml:302(para) +msgid "" +"ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +msgstr "" +"ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" + +#: login.defs.5.xml:279(term) chpasswd.8.xml:61(refentrytitle) chpasswd.8.xml:68(refname) chpasswd.8.xml:74(command) +msgid "chpasswd" +msgstr "chpasswd" + +#: login.defs.5.xml:282(phrase) +msgid "ENCRYPT_METHOD MD5_CRYPT_ENAB" +msgstr "ENCRYPT_METHOD MD5_CRYPT_ENAB" + +#: login.defs.5.xml:284(phrase) +msgid "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +msgstr "SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" + +#: login.defs.5.xml:290(term) chsh.1.xml:60(refentrytitle) chsh.1.xml:67(refname) chsh.1.xml:73(command) +msgid "chsh" +msgstr "chsh" + +#: login.defs.5.xml:292(para) +msgid "CHSH_AUTH LOGIN_STRING" +msgstr "CHSH_AUTH LOGIN_STRING" + +#: login.defs.5.xml:300(term) gpasswd.1.xml:62(refentrytitle) gpasswd.1.xml:69(refname) gpasswd.1.xml:83(command) +msgid "gpasswd" +msgstr "gpasswd" + +#: login.defs.5.xml:310(term) groupadd.8.xml:60(refentrytitle) groupadd.8.xml:67(refname) groupadd.8.xml:73(command) +msgid "groupadd" +msgstr "groupadd" + +#: login.defs.5.xml:312(para) +msgid "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" +msgstr "GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP SYS_GID_MAX SYS_GID_MIN" + +#: login.defs.5.xml:319(term) groupdel.8.xml:58(refentrytitle) groupdel.8.xml:65(refname) groupdel.8.xml:71(command) +msgid "groupdel" +msgstr "groupdel" + +#: login.defs.5.xml:321(para) login.defs.5.xml:327(para) login.defs.5.xml:333(para) login.defs.5.xml:340(para) login.defs.5.xml:346(para) login.defs.5.xml:352(para) +msgid "MAX_MEMBERS_PER_GROUP" +msgstr "MAX_MEMBERS_PER_GROUP" + +#: login.defs.5.xml:325(term) groupmems.8.xml:61(refentrytitle) groupmems.8.xml:68(refname) groupmems.8.xml:74(command) +msgid "groupmems" +msgstr "groupmems" + +#: login.defs.5.xml:331(term) groupmod.8.xml:58(refentrytitle) groupmod.8.xml:65(refname) groupmod.8.xml:71(command) +msgid "groupmod" +msgstr "groupmod" + +#: login.defs.5.xml:338(term) grpck.8.xml:58(refentrytitle) grpck.8.xml:65(refname) grpck.8.xml:71(command) +msgid "grpck" +msgstr "grpck" + +#: login.defs.5.xml:357(term) lastlog.8.xml:59(refentrytitle) lastlog.8.xml:66(refname) lastlog.8.xml:72(command) +msgid "lastlog" +msgstr "lastlog" + +#: login.defs.5.xml:359(para) +msgid "LASTLOG_UID_MAX" +msgstr "LASTLOG_UID_MAX" + +#: login.defs.5.xml:363(term) login.1.xml:90(refentrytitle) login.1.xml:97(refname) login.1.xml:103(command) login.1.xml:111(command) login.1.xml:118(command) +msgid "login" +msgstr "login" + +#: login.defs.5.xml:365(para) +msgid "" +"CONSOLE CONSOLE_GROUPS DEFAULT_HOME <" +"phrase condition=\"no_pam\">ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE<" +"/phrase> ERASECHAR FAIL_DELAY FAILLOG_ENAB<" +"/phrase> FAKE_SHELL FTMP_FILE" +" HUSHLOGIN_FILE ISSUE_FILE KILLCHAR <" +"phrase condition=\"no_pam\">LASTLOG_ENAB LASTLOG_UID_MAX" +" LOGIN_RETRIES LOGIN_STRING" +" LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE" +" PORTTIME_CHECKS_ENAB QUOTAS_ENAB TTYGROUP TTYPERM TTYTYPE_FILE <" +"phrase condition=\"no_pam\">ULIMIT UMASK USERGROUPS_ENAB" +msgstr "" +"CONSOLE CONSOLE_GROUPS DEFAULT_HOME <" +"phrase condition=\"no_pam\">ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ ENVIRON_FILE<" +"/phrase> ERASECHAR FAIL_DELAY FAILLOG_ENAB<" +"/phrase> FAKE_SHELL FTMP_FILE" +" HUSHLOGIN_FILE ISSUE_FILE KILLCHAR <" +"phrase condition=\"no_pam\">LASTLOG_ENAB LASTLOG_UID_MAX" +" LOGIN_RETRIES LOGIN_STRING" +" LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE" +" PORTTIME_CHECKS_ENAB QUOTAS_ENAB TTYGROUP TTYPERM TTYTYPE_FILE <" +"phrase condition=\"no_pam\">ULIMIT UMASK USERGROUPS_ENAB" + +#: login.defs.5.xml:392(term) +msgid "newgrp / sg" +msgstr "newgrp / sg" + +#: login.defs.5.xml:394(para) +msgid "SYSLOG_SG_ENAB" +msgstr "SYSLOG_SG_ENAB" + +#: login.defs.5.xml:402(para) +msgid "" +"ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB HOME_MODE" +" PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS SUB_GID_COUNT SUB_GID_MAX" +" SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN" +" SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" +msgstr "" +"ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB HOME_MODE" +" PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS SUB_GID_COUNT SUB_GID_MAX" +" SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN" +" SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK" + +#: login.defs.5.xml:421(para) +msgid "" +"ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN" +" PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" +msgstr "" +"ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN" +" PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN SHA_CRYPT_MAX_ROUNDS SHA_CRYPT_MIN_ROUNDS" + +#: login.defs.5.xml:432(para) +msgid "" +"PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" +msgstr "" +"PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" + +#: login.defs.5.xml:441(para) +msgid "" +"PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE USE_TCB<" +"/phrase>" +msgstr "" +"PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE USE_TCB<" +"/phrase>" + +#: login.defs.5.xml:458(para) +msgid "" +"CONSOLE CONSOLE_GROUPS DEFAULT_HOME <" +"phrase condition=\"no_pam\">ENV_HZ ENVIRON_FILE ENV_PATH ENV_SUPATH" +" ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR" +" MAIL_FILE QUOTAS_ENAB SULOG_FILE SU_NAME SU_WHEEL_ONLY SYSLOG_SU_ENAB USERGROUPS_ENAB" +msgstr "" +"CONSOLE CONSOLE_GROUPS DEFAULT_HOME <" +"phrase condition=\"no_pam\">ENV_HZ ENVIRON_FILE ENV_PATH ENV_SUPATH" +" ENV_TZ LOGIN_STRING MAIL_CHECK_ENAB MAIL_DIR" +" MAIL_FILE QUOTAS_ENAB SULOG_FILE SU_NAME SU_WHEEL_ONLY SYSLOG_SU_ENAB USERGROUPS_ENAB" + +#: login.defs.5.xml:473(term) +msgid "sulogin" +msgstr "sulogin" + +#: login.defs.5.xml:475(para) +msgid "ENV_HZ ENV_TZ" +msgstr "ENV_HZ ENV_TZ" + +#: login.defs.5.xml:484(para) +msgid "" +"CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR" +" MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE" +" SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN" +" SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <" +"phrase condition=\"tcb\">TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" +msgstr "" +"CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR" +" MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE" +" SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN" +" SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <" +"phrase condition=\"tcb\">TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" + +#: login.defs.5.xml:502(para) +msgid "" +"MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB TCB_SYMLINKS USE_TCB" +msgstr "" +"MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB TCB_SYMLINKS USE_TCB" + +#: login.defs.5.xml:512(para) +msgid "" +"LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP TCB_SYMLINKS USE_TCB" +msgstr "" +"LASTLOG_UID_MAX MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP TCB_SYMLINKS USE_TCB" + +#: login.defs.5.xml:532(para) +msgid "" +"Much of the functionality that used to be provided by the shadow password" +" suite is now handled by PAM. Thus, /etc/login.defs is" +" no longer used by passwd<" +"manvolnum>1, or less used by <" +"refentrytitle>login1," +" and su1<" +"/citerefentry>. Please refer to the corresponding PAM configuration files" +" instead." +msgstr "" +"Muitas das funcionalidades que eram fornecidas pela suite de palavras passe " +"sombra são agora lidadas pelo PAM. Assim, /etc/login.defs não é mais usado pelo passwd1, ou menos menos usado " +"pelo login1, e su<" +"manvolnum>1. Por favor consulte os ficheiros de " +"configuração do PAM em vez destes." + +#: login.defs.5.xml:548(para) +msgid "" +"login1<" +"/citerefentry>, passwd1, su1, passwd5, shadow5, pam8<" +"/citerefentry>." +msgstr "" +"login1<" +"/citerefentry>, passwd1, su1, passwd5, shadow5, pam8<" +"/citerefentry>." + +#: login.access.5.xml:58(refentrytitle) login.access.5.xml:65(refname) +msgid "login.access" +msgstr "login.access" + +#: login.access.5.xml:66(refpurpose) +msgid "login access control table" +msgstr "tabela de controle de acessos de login" + +#: login.access.5.xml:71(para) +msgid "" +"The login.access file specifies (user, host)" +" combinations and/or (user, tty) combinations for which a login will be" +" either accepted or refused." +msgstr "" +"O ficheiro login.accessespecifica" +" combinações " +"(utilizador, máquina) e/ou combinações (utilizador, tty) para os quais um " +"login será aceite ou recusado." + +#: login.access.5.xml:77(para) +msgid "" +"When someone logs in, the login.access is" +" scanned for the first entry that matches the (user, host) combination, or," +" in case of non-networked logins, the first entry that matches the (user," +" tty) combination. The permissions field of that table entry determines" +" whether the login will be accepted or refused." +msgstr "" +"Quando alguém faz login, o ficheiro login.access é sondado pela primeira entrada que corresponda à combinação " +"(utilizador, máquina), ou, no caso de logins não-rede, a primeira entrada " +"que corresponda à combinação (utilizador, tty). O campo de permissões dessa " +"entrada de tabela determina se o login será aceite ou recusado." + +#: login.access.5.xml:85(para) +msgid "" +"Each line of the login access control table has three fields separated by a" +" \":\" character:" +msgstr "" +"Cada linha da tabela de controle de acesso de login tem três campos separados " +"por um caractere \":\":" + +#: login.access.5.xml:90(para) +msgid "" +"permission:users<" +"/emphasis>:origins" +msgstr "" +"permission:users<" +"/emphasis>:origins" + +#: login.access.5.xml:94(para) +msgid "" +"The first field should be a \"+\" (access granted) or" +" \"-\" (access denied) character. The second field" +" should be a list of one or more login names, group names, or ALL<" +"/emphasis> (always matches). The third field should be a list of one or more" +" tty names (for non-networked logins), host names, domain names (begin with" +" \".\"), host addresses, internet network numbers (end" +" with \".\"), ALL (always matches) or" +" LOCAL (matches any string that does not contain a \"<" +"literal>.\" character). If you run NIS you can use @netgroupname in" +" host or user patterns." +msgstr "" +"O primeiro campo deve ser um caractere \"+\" (acesso " +"garantido) ou \"-\" (acesso negado). O segundo campo" +" deve " +"ser uma lista de um ou mais nomes de login, nomes de grupos, ou ALL<" +"/emphasis> (corresponde sempre). O terceiro campo deve ser uma lista de um " +"ou mais nomes tty (para logins não-rede), nomes de máquinas, nomes de " +"domínio (começam com \".\"), endereços de máquinas," +" números " +"de rede de internet (acabam com \".\"), ALL (corresponde sempre) ou LOCAL (corresponde a " +"qualquer string que não contém um caractere \".\"). Se" +" você " +"corre o NIS você pode usar @netgroupname em padrões de máquina ou utilizador." + +#: login.access.5.xml:108(para) +msgid "" +"The EXCEPT operator makes it possible to write very" +" compact rules." +msgstr "" +"O operador EXCEPT torna possível escrever regras muito " +"compactas." + +#: login.access.5.xml:113(para) +msgid "" +"The group file is searched only when a name does not match that of the" +" logged-in user. Only groups are matched in which users are explicitly" +" listed: the program does not look at a user's primary group id value." +msgstr "" +"O ficheiro de grupo é sondado apenas quando um nome não corresponde ao do " +"utilizador que fez login. Apenas são correspondidos grupos nos quais os " +"utilizadores são explicitamente listados: o programa não procura um valor " +"de id de grupo primário de utilizador." + +#: login.1.xml:98(refpurpose) +msgid "begin session on the system" +msgstr "iniciar sessão no sistema" + +#: login.1.xml:104(arg) login.1.xml:112(arg) login.1.xml:119(arg) login.1.xml:236(option) groupmems.8.xml:79(arg) +msgid "-p" +msgstr "-p" + +#: login.1.xml:105(replaceable) login.1.xml:113(replaceable) login.1.xml:120(replaceable) +msgid "host" +msgstr "host" + +#: login.1.xml:105(arg) login.1.xml:113(arg) +msgid "-h " +msgstr "-h " + +#: login.1.xml:108(replaceable) +msgid "ENV=VAR" +msgstr "ENV=VAR" + +#: login.1.xml:114(arg) login.1.xml:214(option) +msgid "-f" +msgstr "-f" + +#: login.1.xml:120(arg) +msgid "-r " +msgstr "-r " + +#: login.1.xml:126(para) +msgid "" +"The login program is used to establish a new session with" +" the system. It is normally invoked automatically by responding to the <" +"emphasis remap=\"I\">login: prompt on the user's terminal. <" +"command>login may be special to the shell and may not be invoked as" +" a sub-process. When called from a shell, login should be" +" executed as exec login which will cause the" +" user to exit from the current shell (and thus will prevent the new logged in" +" user to return to the session of the caller). Attempting to execute login from any shell but the login shell will produce an error" +" message." +msgstr "" +"O programa login é usado para estabelecer uma nova " +"sessão com o sistema. É normalmente invocado automaticamente quando se " +"responde ao pedido login: no terminal do " +"utilizador. login pode ser especial para a shell e pode " +"não ser invocado como um sub-processo. Quando chamado a partir da shell, " +"login deve ser executado como exec login o que irá fazer com que o utilizador saia " +"da shell actual (e assim previne-se que o novo utilizador acabado de iniciar " +"sessão retorne à sessão do chamador). Tentar executar login a partir de qualquer shell que não seja a shell de login irá " +"produzir uma mensagem de erro." + +#: login.1.xml:140(para) +msgid "" +"The user is then prompted for a password, where appropriate. Echoing is" +" disabled to prevent revealing the password. Only a small number of password" +" failures are permitted before login exits and the" +" communications link is severed." +msgstr "" +"Ao utilizador é então pedida uma palavra passe, onde apropriado. O eco " +"é desactivado para impedir a revelação da palavra passe. Apenas um pequeno " +"número de falhas de palavra passe é permitido antes de login terminar e a ligação de comunicação ser interrompida." + +#: login.1.xml:147(para) +msgid "" +"If password aging has been enabled for your account, you may be prompted for" +" a new password before proceeding. You will be forced to provide your old" +" password and the new password before continuing. Please refer to <" +"citerefentry>passwd1<" +"/citerefentry> for more information." +msgstr "" +"Se o envelhecimento de palavra passe foi activado para a sua conta, poderá " +"ser-lhe pedida uma nova palavra passe antes de prosseguir. Você irá ser " +"obrigado a fornecer a palavra passe antiga e a nova palavra passe antes " +"de continuar. Por favor consulte passwd1 para mais informação." + +#: login.1.xml:156(para) +msgid "" +"After a successful login, you will be informed of any system messages and the" +" presence of mail. You may turn off the printing of the system message file," +" /etc/motd, by creating a zero-length file .hushlogin in your login directory. The mail message will be one" +" of \"You have new mail.\", \"You have mail.<" +"/emphasis>\", or \"No Mail.\" according to the condition" +" of your mailbox." +msgstr "" +"Após um login com sucesso, você será informado de quaisquer mensagens do " +"sistema e da presença de mail. Você pode desligar o escrever no ficheiro " +"de mensagens de sistema, /etc/motd, ao criar um ficheiro " +"de tamanho-zero .hushlogin no seu directório de login. " +"A mensagem de mail será uma de \"You have new mail.\", " +"\"You have mail.\", ou \"No Mail.\" " +"de acordo coma condição da caixa de mail." + +#: login.1.xml:167(para) +msgid "" +"Your user and group ID will be set according to their values in the /etc/passwd file. The value for $HOME, $SHELL, $PATH, $LOGNAME, and $MAIL are set according to the appropriate fields in the password" +" entry. Ulimit, umask and nice values may also be set according to entries in" +" the GECOS field." +msgstr "" +"O seu ID de utilizador e grupo irão ser definidos de acordo com os seus " +"valores no ficheiro /etc/passwd. O valor para " +"$HOME, $SHELL, $PATH, " +"$LOGNAME, e $MAIL são definidos de acordo " +"com os campos apropriados na entrada password. Os valores ulimit, umask e " +"nice podem também ser definidos de acordo com as entradas no campo GECOS." + +#: login.1.xml:176(para) +msgid "" +"On some installations, the environmental variable $TERM will" +" be initialized to the terminal type on your tty line, as specified in <" +"filename>/etc/ttytype." +msgstr "" +"Em algumas instalações, a variável de ambiente $TERM será " +"inicializada para o tipo de terminal na sua linha tty, como especificado em " +"/etc/ttytype." + +#: login.1.xml:182(para) +msgid "" +"An initialization script for your command interpreter may also be executed." +" Please see the appropriate manual section for more information on this" +" function." +msgstr "" +"Também pode ser executado um script de inicialização para o seu interpretador " +"de comandos. Por favor veja a secção de manual apropriada para mais " +"informação sobre esta função." + +#: login.1.xml:194(para) login.1.xml:270(para) +msgid "" +"The login program is NOT responsible for removing users" +" from the utmp file. It is the responsibility of getty8 and <" +"citerefentry>init8<" +"/citerefentry> to clean up apparent ownership of a terminal session. If you" +" use login from the shell prompt without exec<" +"/command>, the user you use will continue to appear to be logged in even" +" after you log out of the \"subsession\"." +msgstr "" +"O programa login NÃO é responsável por remover " +"utilizadores do ficheiro utmp. É da responsabilidade do <" +"refentrytitle>getty8 e " +"init8<" +"/citerefentry> limpar a posse aparente de uma sessão de terminal. Se você " +"usar login a partir do aviso de shell sem exec<" +"/command>, o utilizador que você usa irá continuar a parecer ter uma sessão " +"activa mesmo após você terminar a \"sub-sessão\"." + +#: login.1.xml:217(para) +msgid "Do not perform authentication, user is preauthenticated." +msgstr "Não executa a autenticação, o utilizador é pré-autenticado." + +#: login.1.xml:220(para) +msgid "Note: In that case, username is mandatory." +msgstr "Nota: Neste caso, username é obrigatório." + +#: login.1.xml:228(option) +msgid "-h" +msgstr "-h" + +#: login.1.xml:231(para) +msgid "Name of the remote host for this login." +msgstr "Nome da máquina remota para este login." + +#: login.1.xml:239(para) +msgid "Preserve environment." +msgstr "Preservar o ambiente." + +#: login.1.xml:244(option) +msgid "-r" +msgstr "-r" + +#: login.1.xml:247(para) +msgid "Perform autologin protocol for rlogin." +msgstr "Executa protocolo de autologin para rlogin." + +#: login.1.xml:252(para) +msgid "" +"The , and options" +" are only used when login is invoked by root." +msgstr "" +"As opções , e " +"são apenas usadas quando login é invocado pelo root." + +#: login.1.xml:261(para) +msgid "" +"This version of login has many compilation options, only" +" some of which may be in use at any particular site." +msgstr "" +"Esta versão do login tem muitas opções de compilação, " +"apenas algumas delas podem estar em uso em qualquer sítio particular." + +#: login.1.xml:266(para) +msgid "" +"The location of files is subject to differences in system configuration." +msgstr "" +"A localização de ficheiros está sujeita a diferenças na configuração do " +"sistema." + +#: login.1.xml:282(para) +msgid "" +"As with any program, login's appearance can be faked. If" +" non-trusted users have physical access to a machine, an attacker could use" +" this to obtain the password of the next person coming to sit in front of the" +" machine. Under Linux, the SAK mechanism can be used by users to initiate a" +" trusted path and prevent this kind of attack." +msgstr "" +"Como qualquer outro programa, a aparência do login pode " +"ser falsificada. Se utilizadores não-de-confiança tiverem acesso físico à " +"máquina, um atacante pode usar isto para obter a palavra passe da " +"próxima pessoa que se sente em frente da máquina. Sob Linux, o mecanismo " +"SAK pode ser usado pelos utilizadores para iniciar um caminho de confiança " +"e prevenir este tipo de ataque." + +#: login.1.xml:347(filename) +msgid "/var/log/wtmp" +msgstr "/var/log/wtmp" + +#: login.1.xml:349(para) +msgid "List of previous login sessions." +msgstr "Lista das sessões de login anteriores." + +#: login.1.xml:365(filename) +msgid "/etc/motd" +msgstr "/etc/motd" + +#: login.1.xml:367(para) +msgid "System message of the day file." +msgstr "Ficheiro de mensagem do dia ao sistema." + +#: login.1.xml:371(filename) +msgid "/etc/nologin" +msgstr "/etc/nologin" + +#: login.1.xml:373(para) +msgid "Prevent non-root users from logging in." +msgstr "Previne utilizadores não-root de fazerem login." + +#: login.1.xml:377(filename) +msgid "/etc/ttytype" +msgstr "/etc/ttytype" + +#: login.1.xml:379(para) +msgid "List of terminal types." +msgstr "Lista de tipos de terminais." + +#: login.1.xml:383(filename) +msgid "$HOME/.hushlogin" +msgstr "$HOME/.hushlogin" + +#: login.1.xml:385(para) +msgid "Suppress printing of system messages." +msgstr "Suprime o escreve de mensagens do sistema" + +#: login.1.xml:399(para) +msgid "" +"mail1<" +"/citerefentry>, passwd1, sh1, su<" +"/refentrytitle>1, <" +"refentrytitle>login.defs5<" +"/citerefentry>, nologin<" +"manvolnum>5, passwd<" +"/refentrytitle>5, <" +"refentrytitle>securetty5, getty8." +msgstr "" +"mail1<" +"/citerefentry>, passwd1, sh1, su<" +"/refentrytitle>1, <" +"refentrytitle>login.defs5<" +"/citerefentry>, nologin<" +"manvolnum>5, passwd<" +"/refentrytitle>5, <" +"refentrytitle>securetty5, getty8." + +#: limits.5.xml:41(firstname) +msgid "Luca" +msgstr "Luca" + +#: limits.5.xml:42(surname) +msgid "Berra" +msgstr "Berra" + +#: limits.5.xml:59(refentrytitle) limits.5.xml:66(refname) +msgid "limits" +msgstr "limits" + +#: limits.5.xml:67(refpurpose) +msgid "resource limits definition" +msgstr "definição de limites de recurso" + +#: limits.5.xml:73(para) +msgid "" +"The limits file (/etc/limits<" +"/filename> by default or LIMITS_FILE defined config.h)" +" describes the resource limits you wish to impose. It should be owned by root" +" and readable by root account only." +msgstr "" +"O ficheiro limits (/etc/limits<" +"/filename> por predefinição ou definindo LIMITS_FILE config.h) descreve os limites de recursos que você deseja impor. Deve ser " +"da posse do root e legível apenas pela conta do root." + +#: limits.5.xml:81(para) +msgid "" +"By default no quota is imposed on 'root'. In fact, there is no way to impose" +" limits via this procedure to root-equiv accounts (accounts with UID 0)." +msgstr "" +"Por predefinição, nenhuma cota é imposta em 'root'. De facto, não há maneira " +"de impor limites por este procedimento a contas equivalentes a root (contas " +"com UID 0)." + +#: limits.5.xml:87(para) +msgid "Each line describes a limit for a user in the form:" +msgstr "Cada linha descreve um limite para um utilizador no formato:" + +#: limits.5.xml:90(emphasis) +msgid "user LIMITS_STRING" +msgstr "user LIMITS_STRING" + +#: limits.5.xml:93(para) +msgid "or in the form:" +msgstr "ou no formato:" + +#: limits.5.xml:96(emphasis) +msgid "@group LIMITS_STRING" +msgstr "@group LIMITS_STRING" + +#: limits.5.xml:99(para) +msgid "" +"The LIMITS_STRING is a string of a concatenated list of" +" resource limits. Each limit consists of a letter identifier followed by a" +" numerical limit." +msgstr "" +"LIMITS_STRING é uma string de uma lista concatenada " +"de limites de recursos. Cada limite consiste de uma letra identificadora " +"seguida de um limite numérico." + +#: limits.5.xml:105(para) +msgid "The valid identifiers are:" +msgstr "Os identificadores válidos são:" + +#: limits.5.xml:108(para) +msgid "A: max address space (KB)" +msgstr "A: máximo espaço de endereço (KB)" + +#: limits.5.xml:109(para) +msgid "C: max core file size (KB)" +msgstr "C: máximo tamanho de ficheiro de núcleo (KB)" + +#: limits.5.xml:110(para) +msgid "D: max data size (KB)" +msgstr "D: máximo tamanho de dados (KB)" + +#: limits.5.xml:111(para) +msgid "F: maximum file size (KB)" +msgstr "F: máximo tamanho de ficheiro (KB)" + +#: limits.5.xml:112(para) +msgid "" +"K: file creation mask, set by umask<" +"/refentrytitle>2." +msgstr "" +"K: máscara de criação de ficheiro, definida por umask2." + +#: limits.5.xml:117(para) +msgid "I: max nice value (0..39 which translates to 20..-19)" +msgstr "I: máximo valor nice (0..39 o que traduz para 20..-19)" + +#: limits.5.xml:119(para) +msgid "L: max number of logins for this user" +msgstr "L: máximo número de logins para este utilizador" + +#: limits.5.xml:120(para) +msgid "M: max locked-in-memory address space (KB)" +msgstr "M: máximo espaço de endereço trancado-em-memória (KB)" + +#: limits.5.xml:121(para) +msgid "N: max number of open files" +msgstr "N: máximo número de ficheiros abertos" + +#: limits.5.xml:122(para) +msgid "O: max real time priority" +msgstr "O: máxima prioridade em tempo real" + +#: limits.5.xml:123(para) +msgid "" +"P: process priority, set by setpriority<" +"/refentrytitle>2." +msgstr "" +"P: prioridade do processo, definido por setpriority2." + +#: limits.5.xml:128(para) +msgid "R: max resident set size (KB)" +msgstr "R: máximo tamanho de conjunto residente (KB)" + +#: limits.5.xml:129(para) +msgid "S: max stack size (KB)" +msgstr "S: tamanho máximo da pilha (KB)" + +#: limits.5.xml:130(para) +msgid "T: max CPU time (MIN)" +msgstr "T: máximo tempo de CPU (MIN)" + +#: limits.5.xml:131(para) +msgid "U: max number of processes" +msgstr "U: máximo número de processos" + +#: limits.5.xml:134(para) +msgid "" +"For example, L2D2048N5 is a valid LIMITS_STRING. For reading convenience, the following entries are" +" equivalent:" +msgstr "" +"Por exemplo, L2D2048N5 é uma LIMITS_STRING válida. Para conveniência de leitura, as seguintes " +"entradas são equivalentes:" + +#: limits.5.xml:140(programlisting) #, no-wrap -#~ msgid "" -#~ "\n" -#~ "if ( UID is less than 1000) {\n" -#~ " use /etc/tcb/user\n" -#~ "} else if ( UID is less than 1000000) {\n" -#~ " kilos = UID / 1000\n" -#~ " use /etc/tcb/:kilos/user\n" -#~ " make symlink /etc/tcb/user to the above directory\n" -#~ "} else {\n" -#~ " megas = UID / 1000000\n" -#~ " kilos = ( UID / megas * 1000000 ) / 1000\n" -#~ " use /etc/tcb/:megas/:kilos/user\n" -#~ " make symlink /etc/tcb/user to the above directory\n" -#~ "}\n" -#~ " " -#~ msgstr "" -#~ "\n" -#~ "if ( UID is less than 1000) {\n" -#~ " use /etc/tcb/user\n" -#~ "} else if ( UID is less than 1000000) {\n" -#~ " kilos = UID / 1000\n" -#~ " use /etc/tcb/:kilos/user\n" -#~ " make symlink /etc/tcb/user to the above directory\n" -#~ "} else {\n" -#~ " megas = UID / 1000000\n" -#~ " kilos = ( UID / megas * 1000000 ) / 1000\n" -#~ " use /etc/tcb/:megas/:kilos/user\n" -#~ " make symlink /etc/tcb/user to the above directory\n" -#~ "}\n" -#~ " " +msgid "\n username L2D2048N5\n username L2 D2048 N5\n " +msgstr "\n username L2D2048N5\n username L2 D2048 N5\n " -#~ msgid "" -#~ "If yes, the location of the user tcb directory " -#~ "to be created will not be automatically set to /etc/tcb/user, but will be " -#~ "computed depending on the UID of the user, according to the following " -#~ "algorithm: " -#~ msgstr "" -#~ "Se yes, a localização do directório tcb do " -#~ "utilizador a ser criado não será definido automaticamente para /etc/tcb/" -#~ "user, mas será computado dependendo do UID do utilizador, de acordo com o " -#~ "seguinte algoritmo: " +#: limits.5.xml:145(para) +msgid "" +"Be aware that after username the rest of the" +" line is considered a limit string, thus comments are not allowed. An invalid" +" limits string will be rejected (not considered) by the login<" +"/command> program." +msgstr "" +"Tenha atenção que após username o resto da " +"linha é considerado um limite da string, assim os comentários não são " +"permitidos. Um limite de string inválido será rejeitado (não considerado) " +"pelo programa login." -#~ msgid "" -#~ "chfn1, chsh1, " -#~ "passwd1, crypt3, " -#~ "gpasswd8, groupadd8, " -#~ "groupdel8, groupmod8, " -#~ "login.defs5, subgid5, " -#~ "subuid5, useradd8, " -#~ "userdel8." -#~ msgstr "" -#~ "chfn1, chsh1, " -#~ "passwd1, crypt3, " -#~ "gpasswd8, groupadd8, " -#~ "groupdel8, groupmod8, " -#~ "login.defs5, subgid5, " -#~ "subuid5, useradd8, " -#~ "userdel8." +#: limits.5.xml:152(para) +msgid "" +"The default entry is denoted by username \"*\". If you" +" have multiple default entries in your <" +"emphasis>LIMITS_FILE, then the last one will be used as the" +" default entry." +msgstr "" +"A entrada predefinida é denotada pelo nome de utilizador \"*\". Se você tem várias entradas default no seu LIMITS_FILE, então a última delas " +"será usada como a entrada predefinida." -#~ msgid "" -#~ "The options which apply to the userdel command are:" -#~ msgstr "As opções que se aplicam ao comando userdel são:" +#: limits.5.xml:159(para) +msgid "" +"The limits specified in the form \"@group\" apply" +" to the members of the specified group." +msgstr "" +"Os limites especificados no formato \"@group\" " +"aplicam-se aos membros do grupo especificado." -#~ msgid ", " -#~ msgstr ", " +#: limits.5.xml:165(para) +msgid "" +"If more than one line with limits for a user exist, only the first line for" +" this user will be considered." +msgstr "" +"Se existir mais do que uma linha com limites para um utilizador, apenas " +"será considerada a primeira linha para esse utilizador." -#~ msgid ", " -#~ msgstr ", " +#: limits.5.xml:170(para) +msgid "" +"If no lines are specified for a user, the last @group<" +"/replaceable> line matching a group whose the user is a member of will be" +" considered, or the last line with default limits if no groups contain the" +" user." +msgstr "" +"Se nenhuma linha for especificada para um utilizador, será considerada a " +"última linha @group que corresponde ao grupo " +"cujo utilizador é membro, ou a última linha com limites predefinidos se " +"nenhum grupo conter o utilizador." -#~ msgid ", " -#~ msgstr ", " +#: limits.5.xml:177(para) +msgid "" +"To completely disable limits for a user, a single dash \"-<" +"/emphasis>\" will do." +msgstr "" +"Para desactivar completamente os limites para um utilizador, um traço " +"\"-\" único chega." -#~ msgid " (string)" -#~ msgstr " (string)" +#: limits.5.xml:182(para) +msgid "" +"To disable a limit for a user, a single dash \"-\"" +" can be used instead of the numerical value for this limit." +msgstr "" +"Para desactivar um limite para um utilizador, pode ser usado um único " +"traço \"-\" em vez do valor numérico para este " +"limite." -#~ msgid "" -#~ "If defined, this command is run when removing a user. It should remove " -#~ "any at/cron/print jobs etc. owned by the user to be removed (passed as " -#~ "the first argument)." -#~ msgstr "" -#~ "Se definido, este comando é corrido quando se remove um utilizador. " -#~ "Deverá remover quaisquer tarefas at/cron/print etc. possuídas pelo " -#~ "utilizador a ser removido (passado como primeiro argumento)." +#: limits.5.xml:188(para) +msgid "" +"Also, please note that all limit settings are set PER LOGIN. They are not" +" global, nor are they permanent. Perhaps global limits will come, but for now" +" this will have to do ;)" +msgstr "" +"Também, por favor note que todas as definições de limites são definidas " +"POR LOGIN. Não são globais, nem são permanentes. Talvez um dia tenhamos " +"limites globais, mas por agora isto vai ter de servir ;)" -#~ msgid "The return code of the script is not taken into account." -#~ msgstr "O código de retorno do script não é tido em conta." +#: limits.5.xml:199(filename) +msgid "/etc/limits" +msgstr "/etc/limits" +#: limits.5.xml:207(para) +msgid "" +"login1<" +"/citerefentry>, setpriority<" +"manvolnum>2, setrlimit2." +msgstr "" +"login1<" +"/citerefentry>, setpriority<" +"manvolnum>2, setrlimit2." + +#: lastlog.8.xml:67(refpurpose) +msgid "reports the most recent login of all users or of a given user" +msgstr "" +"reporta o login mais recente de todos os utilizadores ou de um dado " +"utilizador." + +#: lastlog.8.xml:81(para) +msgid "" +"lastlog formats and prints the contents of the last login" +" log /var/log/lastlog file. The login-name<" +"/emphasis>, port, and last login time<" +"/emphasis> will be printed. The default (no flags) causes lastlog entries to" +" be printed, sorted by their order in /etc/passwd." +msgstr "" +"lastlog formata e escreve o conteúdo do ficheiro de " +"relatório do último login /var/log/lastlog. Serão " +"escritos os login-name, port, e " +"last login time. A predefinição (sem bandeiras) faz com " +"que as entradas do lastlog sejam escritas, ordenadas pela ordem em " +"/etc/passwd." + +#: lastlog.8.xml:93(para) +msgid "The options which apply to the lastlog command are:" +msgstr "As opções que se aplicam ao comando lastlog são:" + +#: lastlog.8.xml:98(term) +msgid "" +",  DAYS<" +"/replaceable>" +msgstr "" +",  DAYS<" +"/replaceable>" + +#: lastlog.8.xml:102(para) +msgid "" +"Print only lastlog records older than DAYS." +msgstr "" +"Escreve apenas registos do lastlog mais antigos que DAYS." + +#: lastlog.8.xml:108(term) +msgid ", " +msgstr ", " + +#: lastlog.8.xml:112(para) +msgid "" +"Clear lastlog record of a user. This option can be used only together with <" +"option>-u ())." +msgstr "" +"Limpa o registo do lastlog de um utilizador. Esta opção só pode ser usada " +"juntamente com ()." + +#: lastlog.8.xml:139(term) +msgid ", " +msgstr ", " + +#: lastlog.8.xml:143(para) +msgid "" +"Set lastlog record of a user to the current time. This option can be used" +" only together with ())." +msgstr "" +"Define o registo de lastlog de um utilizador par a a hora actual. Esta opção " +"só pode ser usada juntamente com (,  DAYS<" +"/replaceable>" +msgstr "" +",  DAYS<" +"/replaceable>" + +#: lastlog.8.xml:154(para) +msgid "" +"Print the lastlog records more recent than DAYS<" +"/emphasis>." +msgstr "" +"Escreve os registos do lastlog mais recentes que DAYS<" +"/emphasis>." + +#: lastlog.8.xml:161(term) faillog.8.xml:202(term) +msgid "" +",  LOGIN<" +"/replaceable>|RANGE" +msgstr "" +",  LOGIN<" +"/replaceable>|RANGE" + +#: lastlog.8.xml:165(para) +msgid "Print the lastlog record of the specified user(s)." +msgstr "Escreve o registo lastlog dos utilizador(es) especificados." + +#: lastlog.8.xml:168(para) faillog.8.xml:211(para) +msgid "" +"The users can be specified by a login name, a numerical user ID, or a <" +"replaceable>RANGE of users. This RANGE<" +"/replaceable> of users can be specified with a min and max values (<" +"replaceable>UID_MIN-UID_MAX), a max value (-UID_MAX), or a min value (UID_MIN-)." +msgstr "" +"Os utilizadores podem ser especificados por um nome de login, um ID numérico " +"de utilizador, ou um RANGE de utilizadores. Este " +"RANGE de utilizadores pode ser especificado com " +"valores mínimo e máximo (UID_MIN-UID_MAX), um " +"valor máximo (-UID_MAX), ou um valor mínimo " +"(UID_MIN-)." + +#: lastlog.8.xml:180(para) +msgid "" +"If the user has never logged in the message ** Never logged in**<" +"/emphasis> will be displayed instead of the port and time." +msgstr "" +"Se o utilizador nunca iniciou sessão, será,mostrada a mensagem " +"** Never logged in** em vez do porto e do tempo." + +#: lastlog.8.xml:185(para) +msgid "" +"Only the entries for the current users of the system will be displayed. Other" +" entries may exist for users that were deleted previously." +msgstr "" +"Apenas serão mostradas as entradas dos utilizadores actuais do sistema. Podem " +"existir outras entradas para utilizadores que foram removidos anteriormente." + +#: lastlog.8.xml:193(title) groups.1.xml:90(title) chsh.1.xml:140(title) chage.1.xml:237(title) +msgid "NOTE" +msgstr "NOTA" + +#: lastlog.8.xml:194(para) +msgid "" +"The lastlog file is a database which contains info on" +" the last login of each user. You should not rotate it. It is a sparse file," +" so its size on the disk is usually much smaller than the one shown by \"<" +"command>ls -l\" (which can indicate a really big file if you have" +" in passwd users with a high UID). You can display its" +" real size with \"ls -s\"." +msgstr "" +"O ficheiro lastlog é uma base de dados que contém " +"informação sobre o último login de cada utilizador. Você não deve rodá-lo. " +"É um ficheiro disperso, assim o tamanho no disco é geralmente muito menor " +"que aquele mostrado por \"ls -l\" (que pode indicar um " +"ficheiro muito grande se você tiver utilizadores em passwd com um UID alto). Você pode ver o seu tamanho real com " +"\"ls -s\"." + +#: lastlog.8.xml:220(filename) +msgid "/var/log/lastlog" +msgstr "/var/log/lastlog" + +#: lastlog.8.xml:222(para) +msgid "Database times of previous user logins." +msgstr "Base de dados dos tempos de logins anteriores de utilizadores." + +#: lastlog.8.xml:230(para) +msgid "" +"Large gaps in UID numbers will cause the lastlog program to run longer with" +" no output to the screen (i.e. if in lastlog database there is no entries for" +" users with UID between 170 and 800 lastlog will appear to hang as it" +" processes entries with UIDs 171-799)." +msgstr "" +"Grandes lacunas em números de UID irão fazer o programa lastlog correr mais " +"tempo sem resultados no ecrã (isto é, se na base de dados lastlog não " +"existirem entradas para utilizadores com UID entre 170 e 800, o lastlog " +"irá parecer ter deixado de responder enquanto processa entradas com UID " +"de 171 a 799)." + +#: gshadow.5.xml:41(contrib) +msgid "Creation, 2005" +msgstr "Criação, 2005" + +#: gshadow.5.xml:46(refentrytitle) gshadow.5.xml:53(refname) +msgid "gshadow" +msgstr "gshadow" + +#: gshadow.5.xml:54(refpurpose) +msgid "shadowed group file" +msgstr "ficheiro de grupo ensombrado" + +#: gshadow.5.xml:59(para) +msgid "" +"/etc/gshadow contains the shadowed information for group" +" accounts." +msgstr "" +"/etc/gshadow contém informação ensombrada para " +"contas de grupos." + +#: gshadow.5.xml:69(para) +msgid "Each line of this file contains the following colon-separated fields:" +msgstr "" +"Cada linha deste ficheiro contém os seguintes campos separados por dois " +"pontos:" + +#: gshadow.5.xml:75(emphasis) +msgid "group name" +msgstr "nome de grupo" + +#: gshadow.5.xml:77(para) +msgid "It must be a valid group name, which exist on the system." +msgstr "Tem de ser um nome de grupo válido, que existe no sistema." + +#: gshadow.5.xml:90(para) +msgid "" +"If the password field contains some string that is not a valid result of <" +"citerefentry>crypt3<" +"/citerefentry>, for instance ! or *, users will not be able to use a unix" +" password to access the group (but group members do not need the password)." +msgstr "" +"Se o campo da palavra passe conter alguma string que não é um resultado " +"válido de crypt3, por exemplo ! ou *, os utilizadores não serão " +"capazes de usar uma palavra passe de unix para aceder ao grupo (mas os " +"membros do grupo não precisam da palavra passe)." + +#: gshadow.5.xml:97(para) +msgid "" +"The password is used when a user who is not a member of the group wants to" +" gain the permissions of this group (see newgrp<" +"/refentrytitle>1)." +msgstr "" +"A palavra passe é usada quando um utilizador que não é membro do grupo " +"quer ganhar permissões desse grupo (veja newgrp<" +"/refentrytitle>1)." + +#: gshadow.5.xml:103(para) +msgid "" +"This field may be empty, in which case only the group members can gain the" +" group permissions." +msgstr "" +"Este campo pode estar vazio, o que nesse caso apenas os membros do grupo " +"podem ganhar as permissões do grupo." + +#: gshadow.5.xml:113(para) +msgid "" +"This password supersedes any password specified in /etc/group<" +"/filename>." +msgstr "" +"Esta palavra passe sobrepõe-se a qualquer palavra passe especificada em " +"/etc/group." + +#: gshadow.5.xml:121(emphasis) +msgid "administrators" +msgstr "administradores" + +#: gshadow.5.xml:123(para) gshadow.5.xml:139(para) +msgid "It must be a comma-separated list of user names." +msgstr "Tem de ser uma lista de nomes de utilizadores separados por vírgulas." + +#: gshadow.5.xml:126(para) +msgid "Administrators can change the password or the members of the group." +msgstr "Os administradores podem mudar a palavra passe dos membros do grupo." + +#: gshadow.5.xml:130(para) +msgid "" +"Administrators also have the same permissions as the members (see below)." +msgstr "" +"Os administradores também têm as mesmas permissões que os membros (veja " +"em baixo)." + +#: gshadow.5.xml:137(emphasis) +msgid "members" +msgstr "membros" + +#: gshadow.5.xml:142(para) +msgid "Members can access the group without being prompted for a password." +msgstr "" +"Os membros podem aceder ao grupo sem lhes ser pedida uma palavra passe." + +#: gshadow.5.xml:146(para) +msgid "" +"You should use the same list of users as in /etc/group." +msgstr "" +"Você deve usar a mesma lista de utilizadores que em /etc/group." + +#: gshadow.5.xml:175(para) +msgid "" +"gpasswd5<" +"/citerefentry>, group5, grpck<" +"/refentrytitle>8, <" +"refentrytitle>grpconv8," +" newgrp1<" +"/citerefentry>." +msgstr "" +"gpasswd5<" +"/citerefentry>, group5, grpck<" +"/refentrytitle>8, <" +"refentrytitle>grpconv8," +" newgrp1<" +"/citerefentry>." + +#: grpck.8.xml:66(refpurpose) +msgid "verify integrity of group files" +msgstr "verifica a integridade de ficheiros de grupo" + +#: grpck.8.xml:84(para) +msgid "" +"The grpck command verifies the integrity of the groups" +" information. It checks that all entries in /etc/group<" +"phrase condition=\"gshadow\">and /etc/gshadow" +" have the proper format and contain valid data. The user is prompted to" +" delete entries that are improperly formatted or which have other" +" uncorrectable errors." +msgstr "" +"O comando grpck verifica a integridade da informação " +"de grupos. Verifica se todas as entradas em /etc/group<" +"phrase condition=\"gshadow\"> e /etc/gshadow" +"têm o formato apropriado e contêm dados válidos. Ao utilizador é pedido para " +"apagar as entradas que não têm formato apropriado ou que têm outros erros " +"incorrigíveis." + +#: grpck.8.xml:101(para) +msgid "a unique and valid group name" +msgstr "um nome de grupo único e válido" + +#: grpck.8.xml:104(para) +msgid "" +"a valid group identifier (/etc/group only)" +msgstr "" +"um identificador de grupo válido (apenas " +"/etc/group)" + +#: grpck.8.xml:111(para) +msgid "" +"a valid list of members and administrators<" +"/phrase>" +msgstr "" +"uma lista de membros e administradores " +"válida" + +#: grpck.8.xml:117(para) +msgid "" +"a corresponding entry in the /etc/gshadow file" +" (respectively /etc/group for the gshadow<" +"/filename> checks)" +msgstr "" +"uma entrada correspondente no ficheiro /etc/gshadow " +"(respetivamente /etc/group para as verificações de " +"gshadow)" + +#: grpck.8.xml:125(para) +msgid "" +"The checks for correct number of fields and unique group name are fatal. If" +" an entry has the wrong number of fields, the user will be prompted to delete" +" the entire line. If the user does not answer affirmatively, all further" +" checks are bypassed. An entry with a duplicated group name is prompted for" +" deletion, but the remaining checks will still be made. All other errors are" +" warnings and the user is encouraged to run the groupmod" +" command to correct the error." +msgstr "" +"As verificações para o correcto número de campos e nome de grupo único são " +"fatais. Se a entrada tiver o número errado de campos, será pedido ao " +"utilizador para apagar a linha inteira. Se o utilizador não responder " +"afirmativamente, todos os testes posteriores são saltados. Uma entrada com " +"um nome de grupo duplicado é avisada para remoção, mas os restantes " +"testes continuarão a ser feitos. Todos os outros erros produzem avisos e o " +"utilizador é encorajado a correr o comando groupmod " +"para corrigir o erro." + +#: grpck.8.xml:136(para) +msgid "" +"The commands which operate on the /etc/groupfileand <" +"filename>/etc/gshadow files are not able to alter" +" corrupted or duplicated entries. grpck should be used in" +" those circumstances to remove the offending entries." +msgstr "" +"Os comandos que operam nos ficheiros /etc/group e " +"/etc/gshadow não são capazes de alterar " +"entradas corruptas ou duplicadas. Deve ser usado o grpck " +"em tais circunstâncias para remover as entradas ofensivas." + +#: grpck.8.xml:152(para) +msgid "The options which apply to the grpck command are:" +msgstr "As opções que se aplicam ao comando grpck são:" + +#: grpck.8.xml:165(para) +msgid "" +"Execute the grpck command in read-only mode. This causes" +" all questions regarding changes to be answered no" +" without user intervention." +msgstr "" +"Executa o comando grpck em modo só-leitura. Isto faz " +"com que todas as perguntas sobre alterações sejam respondidas com " +"não sem a intervenção do utilizador." + +#: grpck.8.xml:187(para) +msgid "" +"Sort entries in /etc/groupand /etc/gshadow by GID." +msgstr "" +"Ordena as entradas em /etc/group e /etc/gshadow pelo GID." + +#: grpck.8.xml:196(para) +msgid "" +"By default, grpck operates on /etc/group<" +"/filename>and /etc/gshadow. The user may select alternate files with the groupparameter.<" +"/phrase>and shadow<" +"/emphasis> parameters." +msgstr "" +"Por predefinição, o grpck opera em /etc/group<" +"/filename> e /etc/gshadow. O utilizador pode selecionar ficheiros alternativos com os " +"parâmetro group. E parâmetros do " +"shadow." + +#: grpck.8.xml:264(para) +msgid "one or more bad group entries" +msgstr "uma ou mais entradas de grupo más" + +#: grpck.8.xml:270(para) +msgid "can't open group files" +msgstr "incapaz de abrir ficheiros de grupo" + +#: grpck.8.xml:276(para) +msgid "can't lock group files" +msgstr "incapaz de trancar ficheiros de grupo" + +#: grpck.8.xml:282(para) +msgid "can't update group files" +msgstr "incapaz de actualizar ficheiros de grupo" + +#: grpck.8.xml:246(para) +msgid "" +"The grpck command exits with the following values: <" +"placeholder-1/>" +msgstr "" +"O comando grpck termina com os seguintes valores: " +"" + +#: grpck.8.xml:291(para) +msgid "" +"group5<" +"/citerefentry>, groupmod<" +"manvolnum>8, <" +"citerefentry>gshadow5," +" , passwd5, pwck<" +"/refentrytitle>8, <" +"refentrytitle>shadow5." +msgstr "" +"group5<" +"/citerefentry>, groupmod<" +"manvolnum>8, <" +"citerefentry>gshadow5," +" , passwd5, pwck<" +"/refentrytitle>8, <" +"refentrytitle>shadow5." + +#: groups.1.xml:57(refentrytitle) groups.1.xml:64(refname) groups.1.xml:70(command) +msgid "groups" +msgstr "groups" + +#: groups.1.xml:65(refpurpose) +msgid "display current group names" +msgstr "mostra nomes de grupo actuais" + +#: groups.1.xml:72(replaceable) +msgid "user" +msgstr "user" + +#: groups.1.xml:79(para) +msgid "" +"The groups command displays the current group names or ID" +" values. If the value does not have a corresponding entry in /etc/group, the value will be displayed as the numerical group" +" value. The optional user parameter will" +" display the groups for the named user." +msgstr "" +"O comando The groups mostra os nomes de grupos actuais " +"ou os valores ID. Se o valor não possuir uma entrada correspondente em " +"/etc/group, o valor será mostrado como um valor numérico " +"de grupo. O parâmetro opcional user irá " +"mostrar os grupos para o user nomeado." + +#: groups.1.xml:91(para) +msgid "" +"Systems which do not support concurrent group sets will have the information" +" from /etc/group reported. The user must use newgrp or sg to change his current real and" +" effective group ID." +msgstr "" +"Os sistemas que não suportam conjuntos de grupos concorrentes irão reportar " +"a informação de /etc/group. O utilizador tem de usar " +"newgrp ou sg para mudar o seu ID " +"de grupo efectivo e real actual." + +#: groups.1.xml:113(para) +msgid "" +"newgrp1<" +"/citerefentry>, getgid2, getgroups<" +"/refentrytitle>2, <" +"refentrytitle>getuid2." +msgstr "" +"newgrp1<" +"/citerefentry>, getgid2, getgroups<" +"/refentrytitle>2, <" +"refentrytitle>getuid2." + +#: groupmod.8.xml:66(refpurpose) +msgid "modify a group definition on the system" +msgstr "modifica a definição de um grupo no sistema" + +#: groupmod.8.xml:75(replaceable) groupdel.8.xml:75(replaceable) +msgid "GROUP" +msgstr "GRUPO" + +#: groupmod.8.xml:81(para) +msgid "" +"The groupmod command modifies the definition of the" +" specified GROUP by modifying the appropriate" +" entry in the group database." +msgstr "" +"O comando groupmod modifica a definição do " +"GROUP especificado ao modificar a entrada " +"apropriada na base de dados do grupo." + +#: groupmod.8.xml:90(para) +msgid "The options which apply to the groupmod command are:" +msgstr "As opções que se aplicam ao comando groupmod são:" + +#: groupmod.8.xml:96(term) groupadd.8.xml:114(term) +msgid "" +",  GID<" +"/replaceable>" +msgstr "" +",  GID<" +"/replaceable>" + +#: groupmod.8.xml:100(para) +msgid "" +"The group ID of the given GROUP will be changed to" +" GID." +msgstr "" +"I ID de grupo do GROUP fornecido será mudado " +"para GID." + +#: groupmod.8.xml:104(para) +msgid "" +"The value of GID must be a non-negative decimal" +" integer. This value must be unique, unless the option is" +" used." +msgstr "" +"O valor de GID tem de ser um inteiro decimal não " +"negativo. Este valor deve ser único, a menos que seja usada a opção " +"." + +#: groupmod.8.xml:110(para) +msgid "" +"Users who use the group as primary group will be updated to keep the group as" +" their primary group." +msgstr "" +"Os utilizadores que usam o grupo como grupo primário serão actualizados " +"para manterem o grupo como u seu grupo primário." + +#: groupmod.8.xml:114(para) +msgid "" +"Any files that have the old group ID and must continue to belong to <" +"replaceable>GROUP, must have their group ID changed manually." +msgstr "" +"Quaisquer ficheiros que têm o ID de grupo antigo e devem continuar a " +"pertencer ao GROUP, precisam de ter o seu ID de " +"grupo mudado manualmente." + +#: groupmod.8.xml:120(para) +msgid "" +"No checks will be performed with regard to the , <" +"option>GID_MAX, , or SYS_GID_MAX from /etc/login.defs." +msgstr "" +"Nenhuma verificação será executada com respeito a , " +", , ou " +" de /etc/login.defs." + +#: groupmod.8.xml:135(term) +msgid "" +",  NEW_GROUP<" +"/replaceable>" +msgstr "" +",  NEW_GROUP<" +"/replaceable>" + +#: groupmod.8.xml:139(para) +msgid "" +"The name of the group will be changed from GROUP" +" to NEW_GROUP name." +msgstr "" +"O nome do grupo será alterado de GROUP " +"para NEW_GROUP." + +#: groupmod.8.xml:150(para) +msgid "" +"When used with the option, allow to change the group <" +"replaceable>GID to a non-unique value." +msgstr "" +"Quando usado com a opção , permite mudar o " +"GID do grupo para um valor não-único." + +#: groupmod.8.xml:259(para) +msgid "E_SUCCESS: success" +msgstr "E_SUCCESS: sucesso" + +#: groupmod.8.xml:265(para) +msgid "E_USAGE: invalid command syntax" +msgstr "E_USAGE: sintaxe inválida de comando" + +#: groupmod.8.xml:271(para) +msgid "E_BAD_ARG: invalid argument to option" +msgstr "E_BAD_ARG: argumento inválido para a opção" + +#: groupmod.8.xml:277(para) +msgid "E_GID_IN_USE: specified group doesn't exist" +msgstr "E_GID_IN_USE: grupo especificado não existe" + +#: groupmod.8.xml:283(para) +msgid "E_NOTFOUND: specified group doesn't exist" +msgstr "E_NOTFOUND: grupo especificado não existe" + +#: groupmod.8.xml:289(para) +msgid "E_NAME_IN_USE: group name already in use" +msgstr "E_NAME_IN_USE: nome de grupo já em uso" + +#: groupmod.8.xml:295(para) +msgid "E_GRP_UPDATE: can't update group file" +msgstr "E_GRP_UPDATE: incapaz de actualizar ficheiro de grupo" + +#: groupmod.8.xml:299(replaceable) +msgid "11" +msgstr "11" + +#: groupmod.8.xml:301(para) +msgid "E_CLEANUP_SERVICE: can't setup cleanup service" +msgstr "E_CLEANUP_SERVICE: incapaz de configurar o serviço de limpeza" + +#: groupmod.8.xml:307(para) +msgid "E_PAM_USERNAME: can't determine your username for use with pam" +msgstr "" +"E_PAM_USERNAME: incapaz de determinar o seu nome de utilizador par usar " +"com o pam" + +#: groupmod.8.xml:311(replaceable) +msgid "13" +msgstr "13" + +#: groupmod.8.xml:313(para) +msgid "" +"E_PAM_ERROR: pam returned an error, see syslog facility id groupmod for the" +" PAM error message" +msgstr "" +"E_PAM_ERROR: pam retornou um erro, veja a funcionalidade id groupmod no " +"syslog para a mensagem de erro do PAM" + +#: groupmod.8.xml:253(para) +msgid "" +"The groupmod command exits with the following values: <" +"placeholder-1/>" +msgstr "" +"O comando groupmod termina com os seguintes valores: " +"" + +#: groupmod.8.xml:322(para) +msgid "" +"chfn1<" +"/citerefentry>, chsh1, passwd<" +"/refentrytitle>1, <" +"refentrytitle>gpasswd8," +" groupadd8, groupdel<" +"manvolnum>8, login.defs5, <" +"citerefentry>useradd8<" +"/citerefentry>, userdel<" +"manvolnum>8, usermod<" +"/refentrytitle>8." +msgstr "" +"chfn1<" +"/citerefentry>, chsh1, passwd<" +"/refentrytitle>1, <" +"refentrytitle>gpasswd8," +" groupadd8, groupdel<" +"manvolnum>8, login.defs5, <" +"citerefentry>useradd8<" +"/citerefentry>, userdel<" +"manvolnum>8, usermod<" +"/refentrytitle>8." + +#: groupmems.8.xml:42(firstname) +msgid "George" +msgstr "George" + +#: groupmems.8.xml:43(surname) +msgid "Kraft" +msgstr "Kraft" + +#: groupmems.8.xml:44(lineage) +msgid "IV" +msgstr "IV" + +#: groupmems.8.xml:45(contrib) +msgid "Creation, 2000" +msgstr "Criação, 2000" + +#: groupmems.8.xml:69(refpurpose) +msgid "administer members of a user's primary group" +msgstr "membros administrativos de um grupo primário de utilizador." + +#: groupmems.8.xml:76(replaceable) groupmems.8.xml:77(replaceable) +msgid "user_name" +msgstr "user_name" + +#: groupmems.8.xml:76(arg) +msgid "-a " +msgstr "-a " + +#: groupmems.8.xml:77(arg) +msgid "-d " +msgstr "-d " + +#: groupmems.8.xml:78(replaceable) +msgid "group_name" +msgstr "group_name" + +#: groupmems.8.xml:78(arg) +msgid "-g " +msgstr "-g " + +#: groupmems.8.xml:79(arg) +msgid "-l" +msgstr "-l" + +#: groupmems.8.xml:86(para) +msgid "" +"The groupmems command allows a user to administer their" +" own group membership list without the requirement of superuser privileges." +" The groupmems utility is for systems that configure its" +" users to be in their own name sake primary group (i.e., guest / guest)." +msgstr "" +"O comando groupmems permite a um utilizador administrar " +"a lista de membros do seu próprio grupo sem os requerimentos dos privilégios " +"do super-utilizador. O utilitário groupmems serve para " +"sistemas que configuram os seus utilizadores para terem o seu nome próprio e " +"para pertencerem ao seu próprio grupo primário (isto é, guest / guest)." + +#: groupmems.8.xml:94(para) +msgid "" +"Only the superuser, as administrator, can use groupmems to" +" alter the memberships of other groups." +msgstr "" +"Apenas o super-utilizador, como administrador, pode usar groupmems par alterar a lista de membros dos outros grupos." + +#: groupmems.8.xml:101(para) +msgid "" +"The options which apply to the groupmems command are:" +msgstr "As opções que se aplicam ao comando groupmems são:" + +#: groupmems.8.xml:107(term) +msgid "" +",  user_name<" +"/replaceable>" +msgstr "" +",  user_name<" +"/replaceable>" + +#: groupmems.8.xml:109(para) +msgid "Add a user to the group membership list." +msgstr "Adiciona um utilizador à lista de membros do grupo." + +#: groupmems.8.xml:110(para) groupmems.8.xml:126(para) groupmems.8.xml:157(para) +msgid "" +"If the /etc/gshadow file exist, and the group has no" +" entry in the /etc/gshadow file, a new entry will be" +" created." +msgstr "" +"Se o ficheiro /etc/gshadow existir, e o grupo não " +"tiver uma entrada no ficheiro /etc/gshadow, será criada " +"uma nova entrada." + +#: groupmems.8.xml:118(term) +msgid "" +",  user_name<" +"/replaceable>" +msgstr "" +",  user_name<" +"/replaceable>" + +#: groupmems.8.xml:120(para) +msgid "Delete a user from the group membership list." +msgstr "Apaga um utilizador da lista de membros de grupo." + +#: groupmems.8.xml:121(para) +msgid "" +"If the /etc/gshadow file exist, the user will be removed" +" from the list of members and administrators of the group." +msgstr "" +"Se o ficheiro /etc/gshadow existir, o utilizador será " +"removido da lista de membros e administradores do grupo." + +#: groupmems.8.xml:134(term) +msgid "" +",  group_name<" +"/replaceable>" +msgstr "" +",  group_name<" +"/replaceable>" + +#: groupmems.8.xml:136(para) +msgid "The superuser can specify which group membership list to modify." +msgstr "" +"O super-utilizador pode especificar a lista de membros de grupo a modificar." + +#: groupmems.8.xml:148(term) chage.1.xml:160(term) +msgid ", " +msgstr ", " + +#: groupmems.8.xml:150(para) +msgid "List the group membership list." +msgstr "Lista a lista de membros do grupo." + +#: groupmems.8.xml:154(term) +msgid ", " +msgstr ", " + +#: groupmems.8.xml:156(para) +msgid "Purge all users from the group membership list." +msgstr "Purga todos os utilizadores da lista de membros de grupo." + +#: groupmems.8.xml:180(title) +msgid "SETUP" +msgstr "CONFIGURAÇÃO" + +#: groupmems.8.xml:181(para) +msgid "" +"The groupmems executable should be in mode 2710<" +"/literal> as user root and in group groups<" +"/emphasis>. The system administrator can add users to group groups<" +"/emphasis> to allow or disallow them using the groupmems" +" utility to manage their own group membership list." +msgstr "" +"O executável groupmems deve estar em modo 2710<" +"/literal> como utilizador root e no grupo " +"groups. O administrador do sistema pode adicionar " +"utilizadores ao grupo groups para permitir ou retirar " +"a permissão destes usarem o utilitário groupmems para " +"gerir a sua própria lista de membros do grupo." + +#: groupmems.8.xml:190(programlisting) #, no-wrap -#~ msgid "" -#~ "\n" -#~ "#! /bin/sh\n" -#~ "\n" -#~ "# Check for the required argument.\n" -#~ "if [ $# != 1 ]; then\n" -#~ "\techo \"Usage: $0 username\"\n" -#~ "\texit 1\n" -#~ "fi\n" -#~ "\n" -#~ "# Remove cron jobs.\n" -#~ "crontab -r -u $1\n" -#~ "\n" -#~ "# Remove at jobs.\n" -#~ "# Note that it will remove any jobs owned by the same UID,\n" -#~ "# even if it was shared by a different username.\n" -#~ "AT_SPOOL_DIR=/var/spool/cron/atjobs\n" -#~ "find $AT_SPOOL_DIR -name \"[^.]*\" -type f -user $1 -delete \\;\n" -#~ "\n" -#~ "# Remove print jobs.\n" -#~ "lprm $1\n" -#~ "\n" -#~ "# All done.\n" -#~ "exit 0\n" -#~ " " -#~ msgstr "" -#~ "\n" -#~ "#! /bin/sh\n" -#~ "\n" -#~ "# Check for the required argument.\n" -#~ "if [ $# != 1 ]; then\n" -#~ "\techo \"Usage: $0 username\"\n" -#~ "\texit 1\n" -#~ "fi\n" -#~ "\n" -#~ "# Remove cron jobs.\n" -#~ "crontab -r -u $1\n" -#~ "\n" -#~ "# Remove at jobs.\n" -#~ "# Note that it will remove any jobs owned by the same UID,\n" -#~ "# even if it was shared by a different username.\n" -#~ "AT_SPOOL_DIR=/var/spool/cron/atjobs\n" -#~ "find $AT_SPOOL_DIR -name \"[^.]*\" -type f -user $1 -delete \\;\n" -#~ "\n" -#~ "# Remove print jobs.\n" -#~ "lprm $1\n" -#~ "\n" -#~ "# All done.\n" -#~ "exit 0\n" -#~ " " - -#~ msgid "" -#~ "Here is an example script, which removes the user's cron, at and print " -#~ "jobs: " -#~ msgstr "" -#~ "Aqui está um script de exemplo que remove as tarefas cron e de impressão " -#~ "do utilizador: " - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "Enable setting of the umask group bits to be the same as owner bits " -#~ "(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." -#~ msgstr "" -#~ "Activa a definição dos bits de grupo umask group bits para serem os " -#~ "mesmos que os bits do dono (exemplos: 022 -> 002, 077 -> 007) para " -#~ "utilizadores não-root, se o uid for o mesmo que o gid, e o nome de " -#~ "utilizador o mesmo que o nome de grupo primário." - -#~ msgid "" -#~ "If set to yes, userdel will " -#~ "remove the user's group if it contains no more members, and " -#~ "useradd will create by default a group with the name " -#~ "of the user." -#~ msgstr "" -#~ "Se definido para yes, userdel irá remover o grupo do utilizador se este não conter mais " -#~ "membros, e useradd irá criar por predefinição um grupo " -#~ "com o nome do utilizador." - -#~ msgid "" -#~ "The userdel command exits with the following values: " -#~ "" -#~ msgstr "" -#~ "O comando userdel termina com os seguintes valores: " -#~ "" - -#~ msgid "" -#~ "chfn1, chsh1, " -#~ "passwd1, login.defs5, " -#~ "gpasswd8, groupadd8, " -#~ "groupdel8, groupmod8, subgid5, " -#~ "subuid5, useradd8, " -#~ "usermod8." -#~ msgstr "" -#~ "chfn1, chsh1, " -#~ "passwd1, login.defs5, " -#~ "gpasswd8, groupadd8, " -#~ "groupdel8, groupmod8, subgid5, " -#~ "subuid5, useradd8, " -#~ "usermod8." - -#~ msgid "" -#~ "The options which apply to the useradd command are:" -#~ msgstr "As opções que se aplicam ao comando useradd são:" - -#~ msgid "" -#~ ",  " -#~ "BASE_DIR" -#~ msgstr "" -#~ ",  " -#~ "BASE_DIR" - -#~ msgid "" -#~ ",  " -#~ "HOME_DIR" -#~ msgstr "" -#~ ",  " -#~ "HOME_DIR" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ "The number of days after a password expires until the account is " -#~ "permanently disabled. A value of 0 disables the account as soon as the " -#~ "password has expired, and a value of -1 disables the feature." -#~ msgstr "" -#~ "O número de dias após a palavra passe expirar até que a conta " -#~ "permanentemente desactivada. Um valor de 0 desactiva a conta assim que a " -#~ "palavra-passe expirar, e um valor -1 desactiva esta funcionalidade." - -#~ msgid "" -#~ ",  SKEL_DIR" -#~ msgstr "" -#~ ",  SKEL_DIR" - -#~ msgid "" -#~ ",  KEY=VALUE" -#~ msgstr "" -#~ ",  KEY=VALUE" - -#~ msgid "" -#~ "Overrides /etc/login.defs defaults (, , " -#~ " and others). Example: " -#~ " PASS_MAX_DAYS=-1 can be used when creating " -#~ "system account to turn off password aging, even though system account has " -#~ "no password at all. Multiple options can be " -#~ "specified, e.g.:  UID_MIN=100  " -#~ "UID_MAX=499" -#~ msgstr "" -#~ "Sobrepõe as predefinições de /etc/login.defs " -#~ "(, , e outras). " -#~ "Exemplo: pode ser usado  " -#~ "PASS_MAX_DAYS=-1 " -#~ "quando se cria uma conta de sistema para desligar o envelhecimento da " -#~ "palavra passe, mesmo que a conta de sistema não tenha nenhuma palavra " -#~ "passe. Podem ser especificadas varias opções , ex. : " -#~ " UID_MIN=100  " -#~ "UID_MAX=499" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ "The encrypted password, as returned by " -#~ "crypt3. The default is to disable the password." -#~ msgstr "" -#~ "A palavra passe encriptada, como retornada por " -#~ "crypt3. A predefinição é desactivar a palavra passe." - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ "System users will be created with no aging information in /etc/" -#~ "shadow, and their numeric identifiers are chosen in the " -#~ "- range, defined " -#~ "in /etc/login.defs, instead of (and their " -#~ "counterparts for the creation of groups)." -#~ msgstr "" -#~ "Os utilizadores de sistema serão criados sem nenhuma informação de " -#~ "envelhecimento em /etc/shadow, e os seus " -#~ "identificadores numéricos são escolhidos dentro do alcance " -#~ " -, definido em " -#~ "/etc/login.defs, em vez de -" -#~ " (e os seus homólogos para a " -#~ "criação de grupos)." - -#~ msgid "" -#~ "The name of the user's login shell. The default is to leave this field " -#~ "blank, which causes the system to select the default login shell " -#~ "specified by the variable in /etc/" -#~ "default/useradd, or an empty string by default." -#~ msgstr "" -#~ "O nome da shell de login do utilizador. A predefinição é deixar este " -#~ "campo vazio, o que faz com que o sistema selecione a shell de login " -#~ "predefinida especificada pela variável em " -#~ "/etc/default/useradd, ou uma string vazia por " -#~ "predefinição." - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ "The SELinux user for the user's login. The default is to leave this field " -#~ "blank, which causes the system to select the default SELinux user." -#~ msgstr "" -#~ "O utilizador SELinux para o login de utilizador. A predefinição é deixar " -#~ "este campo vazio, o que faz com que o sistema selecione o utilizador " -#~ "SELinux predefinido." - -#~ msgid "" -#~ "This option sets the variable in /etc/" -#~ "default/useradd." -#~ msgstr "" -#~ "Esta opção define a variável em /etc/" -#~ "default/useradd." - -#~ msgid "" -#~ "The number of days after a password has expired before the account will " -#~ "be disabled." -#~ msgstr "" -#~ "O número de dias após a palavra passe ter expirado e antes da conta ser " -#~ "desactivada." - -#~ msgid "" -#~ "This option sets the variable in /etc/" -#~ "default/useradd." -#~ msgstr "" -#~ "Esta opção define a variável em /etc/" -#~ "default/useradd." - -#~ msgid "" -#~ "The group name or ID for a new user's initial group (when the is used or when the ou quando a variável " -#~ " esta definida para no em /etc/login.defs). O grupo nomeado " -#~ "tem de existir, e um ID de grupo numérico tem de ter uma entrada " -#~ "existente." - -#~ msgid "" -#~ "This option sets the variable in /etc/" -#~ "default/useradd." -#~ msgstr "" -#~ "Esta opção define a variável em /etc/" -#~ "default/useradd." - -#~ msgid "The name of a new user's login shell." -#~ msgstr "O nome da shell de login do novo utilizador." - -#~ msgid "" -#~ "This option sets the variable in /etc/" -#~ "default/useradd." -#~ msgstr "" -#~ "Esta opção define a variável em /etc/" -#~ "default/useradd." - -#~ msgid "" -#~ "Usernames must start with a lower case letter or an underscore, followed " -#~ "by lower case letters, digits, underscores, or dashes. They can end with " -#~ "a dollar sign. In regular expression terms: [a-z_][a-z0-9_-]*[$]?" -#~ msgstr "" -#~ "Os nomes de utilizador devem começar com uma letra minúscula ou um " -#~ "underscore, seguido de letras minúsculas, dígitos, underscores, ou " -#~ "traços. Eles podem acabar com um cifrão. Em termos de expressão regular: " -#~ "[a-z_][a-z0-9_-]*[$]?" - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "Indicate if a home directory should be created by default for new users." -#~ msgstr "" -#~ "Indica se um directório home deve ser criado por predefinição para novos " -#~ "utilizadores." - -#~ msgid "" -#~ "This setting does not apply to system users, and can be overridden on the " -#~ "command line." -#~ msgstr "" -#~ "Esta definição não se aplica a utilizadores do sistema, e pode ser " -#~ "sobreposta na linha de comandos." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "Range of group IDs used for the creation of regular groups by " -#~ "useradd, groupadd, or " -#~ "newusers." -#~ msgstr "" -#~ "Alcance dos IDs de grupo usados para a criação de grupos regulares por " -#~ "useradd, groupadd, ou " -#~ "newusers." - -#~ msgid "" -#~ "The default value for (resp. (resp. (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "The mode for new home directories. If not specified, the para criar o modo." - -#~ msgid "" -#~ "useradd and newusers use this to " -#~ "set the mode of the home directory they create." -#~ msgstr "" -#~ "useradd e newusers usam isto para " -#~ "definir o modo do directório home que criam." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "The maximum number of days a password may be used. If the password is " -#~ "older than this, a password change will be forced. If not specified, -1 " -#~ "will be assumed (which disables the restriction)." -#~ msgstr "" -#~ "O número máximo de dias que uma palavra passe pode ser usada. Se a " -#~ "palavra passe for mais antiga que isto, é forçada a alteração da palavra " -#~ "passe. Se não especificado, será assumido -1 (que desactiva a restrição)." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "The minimum number of days allowed between password changes. Any password " -#~ "changes attempted sooner than this will be rejected. If not specified, -1 " -#~ "will be assumed (which disables the restriction)." -#~ msgstr "" -#~ "O número mínimo de dias permitidos entre alterações de palavra passe. " -#~ "Quaisquer tentativas de mudança de palavra passe mais cedo que isto serão " -#~ "rejeitadas. Se não especificado, será assumido -1 (o que desactiva a " -#~ "restrição)." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "The number of days warning given before a password expires. A zero means " -#~ "warning is given only upon the day of expiration, a negative value means " -#~ "no warning is given. If not specified, no warning will be provided." -#~ msgstr "" -#~ "O número de dias de avisos antes da palavra passe expirar. Um zero " -#~ "significa que o aviso só é dado apenas no dia de expiração, um valor " -#~ "negativo significa que nenhum aviso será dado. Se não especificado, " -#~ "nenhum aviso será dado." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "Range of group IDs used for the creation of system groups by " -#~ "useradd, groupadd, or " -#~ "newusers." -#~ msgstr "" -#~ "Alcance de IDs de grupo usados para a criação de grupos do sistema por " -#~ "useradd, groupadd, ou " -#~ "newusers." - -#~ msgid "" -#~ "The default value for (resp. " -#~ ") is 101 (resp. -1)." -#~ msgstr "" -#~ "O valor predefinido para (resp. " -#~ ") é 101 (resp. -1)." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "Range of user IDs used for the creation of system users by " -#~ "useradd or newusers." -#~ msgstr "" -#~ "Alcance de IDs de utilizador usados para a criação de utilizadores do " -#~ "sistema por useradd, ou newusers." - -#~ msgid "" -#~ "The default value for (resp. " -#~ ") is 101 (resp. -1)." -#~ msgstr "" -#~ "O valor predefinido para (resp. " -#~ ") é 101 (resp. -1)." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "If yes, newly created tcb shadow files will be " -#~ "group owned by the auth group." -#~ msgstr "" -#~ "Se yes, os ficheiros sombra tcb criados novos " -#~ "irão ser do grupo possuído pelo grupo auth." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "Range of user IDs used for the creation of regular users by " -#~ "useradd or newusers." -#~ msgstr "" -#~ "Alcance de IDs de utilizador usados para a criação de utilizadores " -#~ "regulares por useradd, ou newusers." - -#~ msgid "" -#~ "The default value for (resp. (resp. (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "The file mode creation mask is initialized to this value. If not " -#~ "specified, the mask will be initialized to 022." -#~ msgstr "" -#~ "A máscara de criação de modo de ficheiro é inicializada para este valor. " -#~ "Se não especificado, a máscara será inicializada para 022." - -#~ msgid "" -#~ "useradd and newusers use this mask " -#~ "to set the mode of the home directory they create if não estiver definido." - -#~ msgid "" -#~ "It is also used by login to define users' initial " -#~ "umask. Note that this mask can be overridden by the user's GECOS line (if " -#~ " is set) or by the specification of a limit " -#~ "with the K identifier in " -#~ "limits5." -#~ msgstr "" -#~ "É também usado por login para definir a umask inicial " -#~ "do utilizador. Note que esta máscara pode ser sobreposta pela linha GECOS " -#~ "do utilizador (se estiver definida) ou pela " -#~ "especificação de um limite com o identificador K em " -#~ "limits5." - -#~ msgid "" -#~ "It is also used by pam_umask as the default umask " -#~ "value." -#~ msgstr "" -#~ "É também usado pelo pam_umask como o valor umask " -#~ "predefinido." - -#~ msgid "" -#~ "The useradd command exits with the following values: " -#~ "" -#~ msgstr "" -#~ "O comando useradd termina com os seguintes valores: " -#~ "" - -#~ msgid "" -#~ "chfn1, chsh1, " -#~ "passwd1, crypt3, " -#~ "groupadd8, groupdel8, " -#~ "groupmod8, login.defs5, " -#~ "newusers8, subgid5, " -#~ "subuid5, userdel8, " -#~ "usermod8." -#~ msgstr "" -#~ "chfn1, chsh1, " -#~ "passwd1, crypt3, " -#~ "groupadd8, groupdel8, " -#~ "groupmod8, login.defs5, " -#~ "newusers8, subgid5, " -#~ "subuid5, userdel8, " -#~ "usermod8." - -#~ msgid "" -#~ ",  " -#~ "COMMAND" -#~ msgstr "" -#~ ",  " -#~ "COMMAND" - -#~ msgid ", , " -#~ msgstr ", , " - -#~ msgid "" -#~ ", , , , (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If defined, either full pathname of a file containing device names (one " -#~ "per line) or a \":\" delimited list of device names. Root logins will be " -#~ "allowed only upon these devices." -#~ msgstr "" -#~ "Se definido, ou é um nome de caminho completo de um ficheiro que contem " -#~ "nomes de dispositivos (um por linha)m ou uma lista delimitada por \":\" " -#~ "de nomes de dispositivos. Os logins de root serão permitidos apenas sobre " -#~ "estes dispositivos." - -#~ msgid "If not defined, root will be allowed on any device." -#~ msgstr "Se não definido, o root será permitido em qualquer dispositivo." - -#~ msgid "The device should be specified without the /dev/ prefix." -#~ msgstr "O dispositivo deve ser especificado sem o prefixo /dev/." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "List of groups to add to the user's supplementary groups set when logging " -#~ "in on the console (as determined by the CONSOLE setting). Default is " -#~ "none. Use with caution - it is possible for users to " -#~ "gain permanent access to these groups, even when not logged in on the " -#~ "console." -#~ msgstr "" -#~ "Lista de grupos a adicionar ao conjunto de grupos suplementares do " -#~ "utilizador quando se faz login na consola (como determinado pela " -#~ "definição CONSOLE). A predefinição é nenhum. Use com " -#~ "cuidado - É possível os utilizadores ganharem acesso permanente a estes " -#~ "grupos, mesmo quando não fazem login na consola." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "Indicate if login is allowed if we can't cd to the home directory. " -#~ "Default is no." -#~ msgstr "" -#~ "Indica se é permitido o login se não pudermos fazer cd para o directório " -#~ "home. A predefinição é \"não\"." - -#~ msgid "" -#~ "If set to yes, the user will login in the root " -#~ "(/) directory if it is not possible to cd to her " -#~ "home directory." -#~ msgstr "" -#~ "Se definido para yes, o utilizador irá fazer " -#~ "login no directório raiz (/) se não for possível " -#~ "fazer cd para o seu directório home." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If set, it will be used to define the HZ environment variable when a user " -#~ "login. The value must be preceded by HZ=. A " -#~ "common value on Linux is HZ=100." -#~ msgstr "" -#~ "Se definido, irá ser usado para definir a variável de ambiente HZ quando " -#~ "um utilizador faz login. O valor tem de ser precedido de " -#~ "HZ=. Um valor comum em Linux é " -#~ "HZ=100." - -#~ msgid "" -#~ "The HZ environment variable is only set when the user (the " -#~ "superuser) logs in with sulogin." -#~ msgstr "" -#~ "A variável de ambiente HZ é apenas definida quando o " -#~ "utilizador (o super-utilizador) inicia sessão com sulogin." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If this file exists and is readable, login environment will be read from " -#~ "it. Every line should be in the form name=value." -#~ msgstr "" -#~ "Se este ficheiro existir e for legível, a ambiente de login será lido de " -#~ "ele. Cada linha deve estar no formato nome=valor." - -#~ msgid "Lines starting with a # are treated as comment lines and ignored." -#~ msgstr "" -#~ "As linhas começadas com # são tratadas como comentários e ignoradas." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If set, it will be used to define the PATH environment variable when a " -#~ "regular user login. The value is a colon separated list of paths (for " -#~ "example /bin:/usr/bin) and can be preceded by " -#~ "PATH=. The default value is PATH=/" -#~ "bin:/usr/bin." -#~ msgstr "" -#~ "Se definido, irá ser usado para definir a variável de ambiente PATH " -#~ "quando um utilizador regular faz login. O valor é uma lista separada por " -#~ "dois pontosde caminhos (por exemplo /bin:/usr/bin) e pode ser precedido por PATH=. " -#~ "O valor predefinido é PATH=/bin:/usr/bin." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If set, it will be used to define the PATH environment variable when the " -#~ "superuser login. The value is a colon separated list of paths (for " -#~ "example /sbin:/bin:/usr/sbin:/usr/bin) and can " -#~ "be preceded by PATH=. The default value is " -#~ "PATH=/sbin:/bin:/usr/sbin:/usr/bin." -#~ msgstr "" -#~ "Se definido, irá ser usado para definir a variável de ambiente PATH " -#~ "quando o super-utilizador faz login. O valor é uma lista separada por " -#~ "dois pontosde caminhos (por exemplo /sbin:/bin:/usr/sbin:/" -#~ "usr/bin) e pode ser precedido por PATH=. O valor predefinido é PATH=/sbin:/bin:/usr/" -#~ "sbin:/usr/bin." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If set, it will be used to define the TZ environment variable when a user " -#~ "login. The value can be the name of a timezone preceded by " -#~ "TZ= (for example TZ=CST6CDT), or the full path to the file containing the timezone " -#~ "specification (for example /etc/tzname)." -#~ msgstr "" -#~ "Se definido, será usado para definir a variável de ambiente TZ quando um " -#~ "utilizador faz login. O valor pode ser o nome de uma zona horária " -#~ "precedido por TZ= (por exemplo " -#~ "TZ=CST6CDT), ou o caminho completo para o " -#~ "ficheiro que contém a especificação da zona horária (por exemplo " -#~ "/etc/tzname)." - -#~ msgid "" -#~ "If a full path is specified but the file does not exist or cannot be " -#~ "read, the default is to use TZ=CST6CDT." -#~ msgstr "" -#~ "Se for especificado um caminho completo mas o ficheiro não existir ou não " -#~ "puder ser lido, a predefinição é usar TZ=CST6CDT." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "The string used for prompting a password. The default is to use " -#~ "\"Password: \", or a translation of that string. If you set this " -#~ "variable, the prompt will not be translated." -#~ msgstr "" -#~ "A string usada para pedir uma palavra passe. A predefinição é usar " -#~ "\"Password: \", ou uma tradução dessa string. Se você definir esta " -#~ "variável, o aviso não será traduzido." - -#~ msgid "" -#~ "If the string contains %s, this will be " -#~ "replaced by the user's name." -#~ msgstr "" -#~ "Se a string conter %s, isto será substituído " -#~ "pelo nome de utilizador." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "Enable checking and display of mailbox status upon login." -#~ msgstr "Activa a verificação e mostragem da caixa de mail após login." - -#~ msgid "" -#~ "You should disable it if the shell startup files already check for mail " -#~ "(\"mailx -e\" or equivalent)." -#~ msgstr "" -#~ "Você deve desactivar isto se os ficheiros de arranque da shell já " -#~ "verificam o mail (\"mailx -e\" ou equivalente)." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "Enable setting of resource limits from /etc/limits " -#~ "and ulimit, umask, and niceness from the user's passwd gecos field." -#~ msgstr "" -#~ "Activa a definição de limites de recurso a partir de /etc/" -#~ "limits e ulimit, umask, e niceness a partir do campo passwd " -#~ "gecos do utilizador." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "If defined, all su activity is logged to this file." -#~ msgstr "Se definido, toda a atividade de su é registada neste ficheiro." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If defined, the command name to display when running \"su -\". For " -#~ "example, if this is defined as \"su\" then a \"ps\" will display the " -#~ "command is \"-su\". If not defined, then \"ps\" would display the name of " -#~ "the shell actually being run, e.g. something like \"-sh\"." -#~ msgstr "" -#~ "Se definido, o nome de comando a mostrar quando se corre \"su -\". Por " -#~ "exemplo, se isto for definido como \"su\" então um \"ps\" irá mostrar o " -#~ "comando é \"-su\". Se não for definido, então \"ps\" irá mostrar o nome " -#~ "da shell que está actualmente a ser corrida, ex. algo como \"-sh\"." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "If yes, the user must be listed as a member of " -#~ "the first gid 0 group in /etc/group (called " -#~ "root on most Linux systems) to be able to " -#~ "su to uid 0 accounts. If the group doesn't exist or is " -#~ "empty, no one will be able to su to uid 0." -#~ msgstr "" -#~ "Se yes, o utilizador tem de estar listado como " -#~ "membro do primeiro grupo de gid 0 em /etc/group " -#~ "(chamado root na maioria dos sistemas Linux) " -#~ "para ser capaz de fazer su para contas de uid 0. Se o " -#~ "grupo não existir ou estiver vazio, ninguém será capaz de fazer " -#~ "su para uid 0." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "Enable \"syslog\" logging of su activity - in addition " -#~ "to sulog file logging." -#~ msgstr "" -#~ "Activa o registo \"syslog\" das atividades su - em " -#~ "adição ao registo no ficheiro sulog." - -#~ msgid "" -#~ "login1, login.defs5, " -#~ "sg1, sh1." -#~ msgstr "" -#~ "login1, login.defs5, " -#~ "sg1, sh1." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "Enable \"syslog\" logging of sg activity." -#~ msgstr "Activo o registo \"syslog\" da atividade do sg." - -#~ msgid "" -#~ "id1, login1, " -#~ "newgrp1, su1, " -#~ "gpasswd1, group5, gshadow5." -#~ msgstr "" -#~ "id1, login1, " -#~ "newgrp1, su1, " -#~ "gpasswd1, group5, gshadow5." - -#~ msgid "" -#~ "chage1, login1, " -#~ "passwd1, passwd5, " -#~ "pwck8, pwconv8, " -#~ "pwunconv8, su1, " -#~ "sulogin8." -#~ msgstr "" -#~ "chage1, login1, " -#~ "passwd1, passwd5, " -#~ "pwck8, pwconv8, " -#~ "pwunconv8, su1, " -#~ "sulogin8." - -#~ msgid "" -#~ "getpwent3, shadow5." -#~ msgstr "" -#~ "getpwent3, shadow5." - -#~ msgid "" -#~ "The pwunconv command creates passwd from passwd and shadow and then removes " -#~ "shadow." -#~ msgstr "" -#~ "O comando pwunconv cria >emphasis remap=\"I\">passwd a partir de passwd e shadow e depois remove shadow." - -#~ msgid "" -#~ "The grpconv command creates gshadow from group and an optionally existing gshadow." -#~ msgstr "" -#~ "O comando grpconv cria gshadow a partir de group e de um " -#~ "gshadow de existência opcional." - -#~ msgid "" -#~ "The grpunconv command creates group from group " -#~ "and gshadow and then removes gshadow." -#~ msgstr "" -#~ "O comando grpunconv cria group a partir de group e gshadow e depois remove gshadow." - -#~ msgid "" -#~ "pwconv will use the values of PASS_MIN_DAYS, PASS_MAX_DAYS, and PASS_WARN_AGE from /etc/login.defs when adding new entries to /etc/shadow." -#~ msgstr "" -#~ "pwconv irá usar os valores de PASS_MIN_DAYS, PASS_MAX_DAYS, e PASS_WARN_AGE a partir de /etc/login." -#~ "defs quando adiciona novas entradas em /etc/shadow." - -#~ msgid "" -#~ "The options which apply to the pwconv, " -#~ "pwunconv, grpconv, and " -#~ "grpunconv commands are:" -#~ msgstr "" -#~ "As opções que se aplicam aos comandos pwconv, " -#~ "pwunconv, grpconv, e " -#~ "grpunconv são:" - -#~ msgid "" -#~ "The following configuration variable in /etc/login.defs changes the behavior of grpconv and " -#~ "grpunconv:" -#~ msgstr "" -#~ "As seguintes variáveis de configuração em /etc/login.defs mudam o comportamento de grpconv e de " -#~ "grpunconv:" - -#~ msgid "" -#~ "grpck8, login.defs5, " -#~ "pwck8, " -#~ "tcb_convert8, tcb_unconvert8." -#~ msgstr "" -#~ "grpck8, login.defs5, " -#~ "pwck8, " -#~ "tcb_convert8, tcb_unconvert8." - -#~ msgid "" -#~ "The pwck command verifies the integrity of the users " -#~ "and authentication information. It checks that all entries in /" -#~ "etc/passwd and /etc/shadow(or the files in /etc/tcb, when " -#~ " is enabled) have the proper format and " -#~ "contain valid data. The user is prompted to delete entries that are " -#~ "improperly formatted or which have other uncorrectable errors." -#~ msgstr "" -#~ "O comando pwck verifica a integridade da informação do " -#~ "utilizador e autenticação. Verifica que todas as entradas em /" -#~ "etc/passwd e /etc/shadow(ou os ficheiros em /etc/tcb, " -#~ "quando está activo) têm o formato " -#~ "correcto e contêm dados válidos. O é chamado a apagar entradas que estão " -#~ "formatadas de modo incorreto ou que têm outros erros incorrigíveis ." - -#~ msgid "The options which apply to the pwck command are:" -#~ msgstr "As opções que se aplicam ao comando pwck são:" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ "group5, grpck8, " -#~ "passwd5, shadow5, " -#~ "usermod8." -#~ msgstr "" -#~ "group5, grpck8, " -#~ "passwd5, shadow5, " -#~ "usermod8." - -#~ msgid "" -#~ "login1." -#~ msgstr "" -#~ "login1." - -#~ msgid "" -#~ "A password field which starts with an exclamation " -#~ "mark means that the password is locked. The remaining characters on the " -#~ "line represent the password field before the " -#~ "password was locked." -#~ msgstr "" -#~ "Um campo password começado com um ponto de " -#~ "exclamação significa que a palavra passe está trancada. Os restantes " -#~ "caracteres da linha representam o campo password " -#~ "antes da palavra passe ser trancada." - -#~ msgid "" -#~ "The comment field is used by various system utilities, such as " -#~ "finger1." -#~ msgstr "" -#~ "O campo \"comment\" é usado por vários utilitários do sistema, tais como " -#~ "finger1." - -#~ msgid "" -#~ "crypt3, getent1, " -#~ "getpwnam3, login1, " -#~ "passwd1, pwck8, " -#~ "pwconv8, pwunconv8, " -#~ "shadow5, su1, " -#~ "sulogin8." -#~ msgstr "" -#~ "crypt3, getent1, " -#~ "getpwnam3, login1, " -#~ "passwd1, pwck8, " -#~ "pwconv8, pwunconv8, " -#~ "shadow5, su1, " -#~ "sulogin8." - -#~ msgid "" -#~ "Then, the password is tested for complexity. As a general guideline, " -#~ "passwords should consist of 6 to 8 characters including one or more " -#~ "characters from each of the following sets:" -#~ msgstr "" -#~ "Então, a palavra passe é testada para complexidade. Como orientação " -#~ "geral, as palavras passe devem consistir de 6 a 8 caracteres incluindo um " -#~ "mais caracteres de cada um dos seguintes conjuntos:" - -#~ msgid "lower case alphabetics" -#~ msgstr "alfabéticos em minúsculas" - -#~ msgid "digits 0 thru 9" -#~ msgstr "dígitos de 0 a 9" - -#~ msgid "punctuation marks" -#~ msgstr "pontos" - -#~ msgid "" -#~ "Care must be taken not to include the system default erase or kill " -#~ "characters. passwd will reject any password which is " -#~ "not suitably complex." -#~ msgstr "" -#~ "Deve-se ter cuidado em não incluir os caracteres de apagar ou matar " -#~ "predefinidos do sistema. O passwd irá rejeitar " -#~ "qualquer palavra passe que não tenha a complexidade apropriada." - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ ",  " -#~ "INACTIVE" -#~ msgstr "" -#~ ",  " -#~ "INACTIVE" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ ",  " -#~ "MIN_DAYS" -#~ msgstr "" -#~ ",  " -#~ "MIN_DAYS" - -#~ msgid "" -#~ ",  " -#~ "REPOSITORY" -#~ msgstr "" -#~ ",  " -#~ "REPOSITORY" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ ",  " -#~ "WARN_DAYS" -#~ msgstr "" -#~ ",  " -#~ "WARN_DAYS" - -#~ msgid "" -#~ ",  " -#~ "MAX_DAYS" -#~ msgstr "" -#~ ",  " -#~ "MAX_DAYS" - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "This defines the system default encryption algorithm for encrypting " -#~ "passwords (if no algorithm are specified on the command line)." -#~ msgstr "" -#~ "Isto define o algoritmo de encriptação predefinido do sistema para " -#~ "encriptar palavras passe (se não for especificado um algoritmo na linha " -#~ "de comandos)." - -#~ msgid "" -#~ "It can take one of these values: DES " -#~ "(default), MD5, SHA256, " -#~ "SHA512." -#~ msgstr "" -#~ "Pode tomar um destes valores: DES " -#~ "(predefinido), MD5, SHA256, " -#~ "SHA512." - -#~ msgid "" -#~ "Note: this parameter overrides the " -#~ "variable." -#~ msgstr "" -#~ "Nota: este parâmetro sobrepõe a variável ." - -#~ msgid "" -#~ "Note: This only affect the generation of group passwords. The generation " -#~ "of user passwords is done by PAM and subject to the PAM configuration. It " -#~ "is recommended to set this variable consistently with the PAM " -#~ "configuration." -#~ msgstr "" -#~ "Nota: Isto apenas afeta a geração de palavras passe de grupo. A geração " -#~ "das palavras passe de utilizadores é feita pelo PAM e sujeita à " -#~ "configuração do PAM. É recomendado definir esta variável em consistência " -#~ "com a configuração do PAM." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "Indicate if passwords must be encrypted using the MD5-based algorithm. If " -#~ "set to yes, new passwords will be encrypted " -#~ "using the MD5-based algorithm compatible with the one used by recent " -#~ "releases of FreeBSD. It supports passwords of unlimited length and longer " -#~ "salt strings. Set to no if you need to copy " -#~ "encrypted passwords to other systems which don't understand the new " -#~ "algorithm. Default is no." -#~ msgstr "" -#~ "Indica se as palavras passe devem ser encriptadas usando o algoritmo " -#~ "baseado em MD5. Se definido para yes, as novas " -#~ "palavras passe serão encriptadas usando o algoritmo baseado em MD5 " -#~ "compatível com aquele usado pelos lançamentos recentes de FreeBSD. " -#~ "Suporta palavras passe de comprimento ilimitado e strings longas " -#~ "salgadas. Defina para no se você precisar de " -#~ "copiar palavras passe encriptadas para outros sistemas que não " -#~ "compreendem o novo algoritmo. A predefinição é no." - -#~ msgid "" -#~ "This variable is superseded by the " -#~ "variable or by any command line option used to configure the encryption " -#~ "algorithm." -#~ msgstr "" -#~ "Esta variável é sobreposta pela variável " -#~ "ou por qualquer opção de linha de comandos usada para configurar o " -#~ "algoritmo de encriptação." - -#~ msgid "" -#~ "This variable is deprecated. You should use (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "Enable additional checks upon password changes." -#~ msgstr "Activa verificações adicionais após alterações na palavra passe." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "Warn about weak passwords (but still allow them) if you are root." -#~ msgstr "" -#~ "Avisa sobre palavras passe fracas (mas mesmo assim permite-as) se você " -#~ "for o root." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "Maximum number of attempts to change password if rejected (too easy)." -#~ msgstr "" -#~ "Número máximo de tentativas de mudar a palavra passe se rejeitada (muito " -#~ "fácil)." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "Number of significant characters in the password for crypt(). " -#~ " is 8 by default. Don't change unless your " -#~ "crypt() is better. This is ignored if set " -#~ "to yes." -#~ msgstr "" -#~ "Número de caracteres significativos na palavra passe para encriptação. " -#~ "Por predefinição é 8. Não altere isto a " -#~ "menos que a sua encriptação seja melhor. Isto é ignorado se " -#~ " for definido para yes." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "When is set to SHA256 or SHA512, this defines the " -#~ "number of SHA rounds used by the encryption algorithm by default (when " -#~ "the number of rounds is not specified on the command line)." -#~ msgstr "" -#~ "Quando é definido para " -#~ "SHA256 ou SHA512, " -#~ "isto define o número de rondas SHA usadas pelo algoritmo de encriptação " -#~ "por predefinição (quando o número de rondas não é especificado na linha " -#~ "de comandos)." - -#~ msgid "" -#~ "With a lot of rounds, it is more difficult to brute forcing the password. " -#~ "But note also that more CPU resources will be needed to authenticate " -#~ "users." -#~ msgstr "" -#~ "Com muitas rondas, é mais difícil vencer a palavra passe por força bruta. " -#~ "Mas note também que serão precisos mais recursos da CPU para autenticar " -#~ "os utilizadores." - -#~ msgid "" -#~ "If not specified, the libc will choose the default number of rounds " -#~ "(5000)." -#~ msgstr "" -#~ "Se não especificado, o libc irá escolher o número predefinido de rondas " -#~ "(5000)." - -#~ msgid "The values must be inside the 1000-999,999,999 range." -#~ msgstr "Os valores têm de estar dentro do alcance 1000-999,999,999." - -#~ msgid "" -#~ "If only one of the or " -#~ " values is set, then this value will " -#~ "be used." -#~ msgstr "" -#~ "Se apenas um dos valores ou " -#~ " for definido, então será usado este " -#~ "valor." - -#~ msgid "" -#~ "If > " -#~ ", the highest value will be used." -#~ msgstr "" -#~ "Se > " -#~ ", será usado o valor mais alto." - -#~ msgid "" -#~ "The passwd command exits with the following values: " -#~ "" -#~ msgstr "" -#~ "O comando passwd termina com os seguintes valores: " -#~ "" - -#~ msgid "" -#~ "chpasswd8, passwd5, " -#~ "shadow5, login.defs5, usermod8." -#~ msgstr "" -#~ "chpasswd8, passwd5, " -#~ "shadow5, login.defs5, usermod8." - -#~ msgid "" -#~ "To disable all logins, investigate nologin5." -#~ msgstr "" -#~ "Para desactivar todos os logins, investigue " -#~ "nologin5." - -#~ msgid "" -#~ "login1, nologin5." -#~ msgstr "" -#~ "login1, nologin5." - -#~ msgid "" -#~ "If this field does not specify an existing directory, the specified " -#~ "directory is created, with ownership set to the user being created or " -#~ "updated and its primary group." -#~ msgstr "" -#~ "Se este campo não especificar um directório existente, o directório " -#~ "especificado é criado, com a posse definida para o utilizador a ser " -#~ "criado ou actualizado e o seu grupo primário." - -#~ msgid "" -#~ "The options which apply to the newusers command are:" -#~ msgstr "" -#~ "As opções que se aplicam ao comando newusers são:" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ "The value 0 means that the system will choose the default number of " -#~ "rounds for the crypt method (5000)." -#~ msgstr "" -#~ "O valor 0 significa que o sistema irá escolher o número predefinido de " -#~ "rondas para o método de encriptação (5000)." - -#~ msgid "You can only use this option with the SHA256 or SHA512 crypt method." -#~ msgstr "" -#~ "Você pode apenas usar esta opção com o método de encriptação SHA256 ou " -#~ "SHA512." - -#~ msgid "PAM configuration for newusers." -#~ msgstr "Configuração PAM para newusers." - -#~ msgid "" -#~ "login.defs5, passwd1, subgid5, " -#~ "subuid5, useradd8." -#~ msgstr "" -#~ "login.defs5, passwd1, subgid5, " -#~ "subuid5, useradd8." - -#~ msgid "" -#~ "id1, login1, " -#~ "su1, sg1, " -#~ "gpasswd1, group5, gshadow5." -#~ msgstr "" -#~ "id1, login1, " -#~ "su1, sg1, " -#~ "gpasswd1, group5, gshadow5." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "If yes, the chfn program " -#~ "will require authentication before making any changes, unless run by the " -#~ "superuser." -#~ msgstr "" -#~ "Se yes, o programa chfn irá " -#~ "requerer autenticação antes de fazer quaisquer alterações, a menos que " -#~ "seja corrido pelo super-utilizador." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "This parameter specifies which values in the gecos field of the /etc/passwd file may be " -#~ "changed by regular users using the chfn program. It " -#~ "can be any combination of letters f, " -#~ "r, w, " -#~ "h, for Full name, Room number, Work phone, and " -#~ "Home phone, respectively. For backward compatibility, yes is equivalent to rwh and " -#~ "no is equivalent to frwh. If not specified, only the superuser can make any changes. " -#~ "The most restrictive setting is better achieved by not installing " -#~ "chfn SUID." -#~ msgstr "" -#~ "Este parâmetro especifica quais valores no campo gecos do ficheiro /etc/passwd " -#~ "podem ser mudados por utilizadores regulares usando o programa " -#~ "chfn. Pode ser qualquer combinação das letras " -#~ "f, r, " -#~ "w, h, para nome " -#~ "\"Full\" completo, número de quarto \" Room\", telefone de trabalho " -#~ "\"Work\", e telefone de casa \"Home\", respetivamente. Para " -#~ "compatibilidade do versões anteriores, yes é " -#~ "equivalente a rwh e no é equivalente a frwh. Se não for " -#~ "especificado, apenas o super-utilizador pode fazer quaisquer alterações. " -#~ "A definição mais restritiva é melhor obtida ao não instalar o " -#~ "chfn com SUID." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "If yes, the chsh program " -#~ "will require authentication before making any changes, unless run by the " -#~ "superuser." -#~ msgstr "" -#~ "Se yes, o programa chsh irá " -#~ "requerer autenticação antes de fazer quaisquer alterações, a menos que " -#~ "seja corrido pelo super-utilizador." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "Terminal ERASE character (010 = backspace, " -#~ "0177 = DEL)." -#~ msgstr "" -#~ "Caractere ERASE de terminal (010 = backspace, " -#~ "0177 = DEL)." - -#~ msgid "" -#~ "The value can be prefixed \"0\" for an octal value, or \"0x\" for an " -#~ "hexadecimal value." -#~ msgstr "" -#~ "O valor pode ser prefixado com \"0\" para um valor octal, ou \"0x\" para " -#~ "um valor hexadecimal." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "" -#~ "Delay in seconds before being allowed another attempt after a login " -#~ "failure." -#~ msgstr "" -#~ "Atraso em segundos antes de permitir nova tentativa após falha de login." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "Enable logging and display of /var/log/faillog login " -#~ "failure info." -#~ msgstr "" -#~ "Activa o relatório e mostragem de /var/log/faillog " -#~ "da informação de falhas de login." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If set, login will execute this shell instead of the " -#~ "users' shell specified in /etc/passwd." -#~ msgstr "" -#~ "Se definido, login irá executar esta shell em vez da " -#~ "shell de utilizador especificada em /etc/passwd." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If defined, login failures will be logged in this file in a utmp format." -#~ msgstr "" -#~ "Se definido, as falhas de login serão registadas neste ficheiro em " -#~ "formato utmp." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If defined, this file can inhibit all the usual chatter during the login " -#~ "sequence. If a full pathname is specified, then hushed mode will be " -#~ "enabled if the user's name or shell are found in the file. If not a full " -#~ "pathname, then hushed mode will be enabled if the file exists in the " -#~ "user's home directory." -#~ msgstr "" -#~ "Se definido, este ficheiro pode inibi toda a conversa habitual da " -#~ "sequência de login. Se for especificado um nome de caminho completo, será " -#~ "activado o modo silencioso se o nome de utilizador ou a shell forem " -#~ "encontrados no ficheiro. Se não um nome de caminho completo, então o modo " -#~ "silencioso será activado se o ficheiro existir no directório home do " -#~ "utilizador." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "If defined, this file will be displayed before each login prompt." -#~ msgstr "Se definido, este ficheiro será mostrado antes cada aviso de login." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "Terminal KILL character (025 = CTRL/U)." -#~ msgstr "" -#~ "Caractere KILL de termina (025 = CTRL/U)." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "Enable logging and display of /var/log/lastlog login time info." -#~ msgstr "" -#~ "Activa o registo e mostragem da informação de horas de login em /var/log/" -#~ "lastlog." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "Enable logging of successful logins." -#~ msgstr "Activa o registo de logins com sucesso." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "Enable display of unknown usernames when login failures are recorded." -#~ msgstr "" -#~ "Activa mostragem de nomes de utilizadores desconhecidos quando as falhas " -#~ "de login são registadas." - -#~ msgid "" -#~ "Note: logging unknown usernames may be a security issue if an user enter " -#~ "her password instead of her login name." -#~ msgstr "" -#~ "Nota: o registar de nomes de utilizador desconhecidos pode ser um " -#~ "problema de segurança se o utilizador escrever a palavra passe no lugar " -#~ "no seu nome de login." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "Maximum number of login retries in case of bad password." -#~ msgstr "" -#~ "Número máximo de tentativas de login em caso de palavra passe errada." - -#~ msgid "" -#~ "This will most likely be overridden by PAM, since the default pam_unix " -#~ "module has its own built in of 3 retries. However, this is a safe " -#~ "fallback in case you are using an authentication module that does not " -#~ "enforce PAM_MAXTRIES." -#~ msgstr "" -#~ "Isto irá muito provavelmente ser sobreposto pelo PAM, pois o módulo " -#~ "pam_unix predefinido tem embutido nele próprio 3 tentativas. No entanto, " -#~ "isto é um recurso de segurança no caso de você estar a usar um módulo de " -#~ "autenticação que não força PAM_MAXTRIES." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "Max time in seconds for login." -#~ msgstr "Tempo máximo em segundos para login." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If defined, \":\" delimited list of \"message of the day\" files to be " -#~ "displayed upon login." -#~ msgstr "" -#~ "Se definido, lista delimitada por \":\" de ficheiros \"mensagem do dia\" " -#~ "a serem mostrados após login." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If defined, name of file whose presence will inhibit non-root logins. The " -#~ "contents of this file should be a message indicating why logins are " -#~ "inhibited." -#~ msgstr "" -#~ "Se definido, o nome do ficheiro cuja presença irá inibir logins não-root. " -#~ "O conteúdo deste ficheiro deve ser uma mensagem a indicar o porquê dos " -#~ "logins estarem inibidos." - -#~ msgid " (boolean)" -#~ msgstr " (booleano)" - -#~ msgid "" -#~ "Enable checking of time restrictions specified in /etc/" -#~ "porttime." -#~ msgstr "" -#~ "Activa a verificação das restrições de tempo especificadas em /" -#~ "etc/porttime." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "The terminal permissions: the login tty will be owned by the " -#~ " group, and the permissions will be set to " -#~ "." -#~ msgstr "" -#~ "As permissões de terminal: o tty de login será da posse do grupo " -#~ ", e as permissões serão definidas para " -#~ "." - -#~ msgid "" -#~ "By default, the ownership of the terminal is set to the user's primary " -#~ "group and the permissions are set to 0600." -#~ msgstr "" -#~ "Por predefinição, a posse do terminal é definida para o grupo primário do " -#~ "utilizador e as permissões são definidas para 0600." - -#~ msgid "" -#~ " can be either the name of a group or a numeric " -#~ "group identifier." -#~ msgstr "" -#~ " pode ser ou o nome de um grupo ou o " -#~ "identificados numérico de um grupo." - -#~ msgid "" -#~ "If you have a write program which is \"setgid\" to a " -#~ "special group which owns the terminals, define TTYGROUP to the group " -#~ "number and TTYPERM to 0620. Otherwise leave TTYGROUP commented out and " -#~ "assign TTYPERM to either 622 or 600." -#~ msgstr "" -#~ "Se você tem um programa write o qual é \"setgid\" para " -#~ "um grupo especial que possui os terminais, defina TTYGROUP para o número " -#~ "do grupo e TTYPERM para 0620. Caso contrário deixe TTYGROUP comentado e " -#~ "defina TTYPERM a 622 ou 600." - -#~ msgid " (string)" -#~ msgstr " (string)" - -#~ msgid "" -#~ "If defined, file which maps tty line to TERM environment parameter. Each " -#~ "line of the file is in a format something like \"vt100 tty01\"." -#~ msgstr "" -#~ "Se definido, ficheiro que mapeia a linha tty para o parâmetro de ambiente " -#~ "TERM. Cada linha do ficheiro está um formato parecido com \"vt100 tty01\"." - -#~ msgid " (number)" -#~ msgstr " (número)" - -#~ msgid "Default ulimit value." -#~ msgstr "Valor ulimit predefinido." - -#~ msgid "" -#~ "CHFN_AUTH CHFN_RESTRICT LOGIN_STRING" -#~ msgstr "" -#~ "CHFN_AUTH CHFN_RESTRICT LOGIN_STRING" - -#~ msgid "" -#~ "CONSOLE CONSOLE_GROUPS DEFAULT_HOME " -#~ "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ " -#~ "ENVIRON_FILE ERASECHAR FAIL_DELAY FAILLOG_ENAB FAKE_SHELL FTMP_FILE HUSHLOGIN_FILE ISSUE_FILE KILLCHAR LASTLOG_ENAB LASTLOG_UID_MAX LOGIN_RETRIES " -#~ "LOGIN_STRING LOGIN_TIMEOUT " -#~ "LOG_OK_LOGINS LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE " -#~ "NOLOGINS_FILE PORTTIME_CHECKS_ENAB QUOTAS_ENAB TTYGROUP TTYPERM " -#~ "TTYTYPE_FILE ULIMIT UMASK " -#~ "USERGROUPS_ENAB" -#~ msgstr "" -#~ "CONSOLE CONSOLE_GROUPS DEFAULT_HOME " -#~ "ENV_HZ ENV_PATH ENV_SUPATH ENV_TZ " -#~ "ENVIRON_FILE ERASECHAR FAIL_DELAY FAILLOG_ENAB FAKE_SHELL FTMP_FILE HUSHLOGIN_FILE ISSUE_FILE KILLCHAR LASTLOG_ENAB LASTLOG_UID_MAX LOGIN_RETRIES " -#~ "LOGIN_STRING LOGIN_TIMEOUT " -#~ "LOG_OK_LOGINS LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE " -#~ "NOLOGINS_FILE PORTTIME_CHECKS_ENAB QUOTAS_ENAB TTYGROUP TTYPERM " -#~ "TTYTYPE_FILE ULIMIT UMASK " -#~ "USERGROUPS_ENAB" - -#~ msgid "" -#~ "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" -#~ msgstr "" -#~ "PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE TCB_AUTH_GROUP TCB_SYMLINKS USE_TCB" - -#~ msgid "" -#~ "CONSOLE CONSOLE_GROUPS DEFAULT_HOME " -#~ "ENV_HZ ENVIRON_FILE ENV_PATH " -#~ "ENV_SUPATH ENV_TZ LOGIN_STRING " -#~ "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB SULOG_FILE " -#~ "SU_NAME SU_WHEEL_ONLY " -#~ "SYSLOG_SU_ENAB USERGROUPS_ENAB" -#~ msgstr "" -#~ "CONSOLE CONSOLE_GROUPS DEFAULT_HOME " -#~ "ENV_HZ ENVIRON_FILE ENV_PATH " -#~ "ENV_SUPATH ENV_TZ LOGIN_STRING " -#~ "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE QUOTAS_ENAB SULOG_FILE " -#~ "SU_NAME SU_WHEEL_ONLY " -#~ "SYSLOG_SU_ENAB USERGROUPS_ENAB" - -#~ msgid "ENV_HZ ENV_TZ" -#~ msgstr "ENV_HZ ENV_TZ" - -#~ msgid "" -#~ "login1, passwd1, " -#~ "su1, passwd5, " -#~ "shadow5, pam8." -#~ msgstr "" -#~ "login1, passwd1, " -#~ "su1, passwd5, " -#~ "shadow5, pam8." - -#~ msgid "" -#~ "permission:users:origins" -#~ msgstr "" -#~ "permission:users:origins" - -#~ msgid "" -#~ "This version of login has many compilation options, " -#~ "only some of which may be in use at any particular site." -#~ msgstr "" -#~ "Esta versão do login tem muitas opções de compilação, " -#~ "apenas algumas delas podem estar em uso em qualquer sítio particular." - -#~ msgid "" -#~ "mail1, passwd1, " -#~ "sh1, su1, " -#~ "login.defs5, nologin5, " -#~ "passwd5, securetty5, " -#~ "getty8." -#~ msgstr "" -#~ "mail1, passwd1, " -#~ "sh1, su1, " -#~ "login.defs5, nologin5, " -#~ "passwd5, securetty5, " -#~ "getty8." - -#~ msgid "" -#~ "K: file creation mask, set by umask2." -#~ msgstr "" -#~ "K: máscara de criação de ficheiro, definida por " -#~ "umask2." - -#~ msgid "" -#~ "P: process priority, set by setpriority2." -#~ msgstr "" -#~ "P: prioridade do processo, definido por " -#~ "setpriority2." - -#~ msgid "" -#~ "login1, setpriority2, " -#~ "setrlimit2." -#~ msgstr "" -#~ "login1, setpriority2, " -#~ "setrlimit2." - -#~ msgid "" -#~ "The options which apply to the lastlog command are:" -#~ msgstr "As opções que se aplicam ao comando lastlog são:" - -#~ msgid "" -#~ ",  DAYS" -#~ msgstr "" -#~ ",  DAYS" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ ",  DAYS" -#~ msgstr "" -#~ ",  DAYS" - -#~ msgid "" -#~ ",  LOGIN|RANGE" -#~ msgstr "" -#~ ",  LOGIN|RANGE" - -#~ msgid "" -#~ "gpasswd5, group5, " -#~ "grpck8, grpconv8, " -#~ "newgrp1." -#~ msgstr "" -#~ "gpasswd5, group5, " -#~ "grpck8, grpconv8, " -#~ "newgrp1." - -#~ msgid "" -#~ "a valid group identifier (/etc/" -#~ "group only)" -#~ msgstr "" -#~ "um identificador de grupo válido (apenas " -#~ "/etc/group)" - -#~ msgid "" -#~ "a valid list of members and " -#~ "administrators" -#~ msgstr "" -#~ "uma lista de membros e administradores válida" - -#~ msgid "" -#~ "The commands which operate on the /etc/groupfileand " -#~ "/etc/gshadow files are not able to alter " -#~ "corrupted or duplicated entries. grpck should be used " -#~ "in those circumstances to remove the offending entries." -#~ msgstr "" -#~ "Os comandos que operam nos ficheiros /etc/group e /etc/gshadow não " -#~ "são capazes de alterar entradas corruptas ou duplicadas. Deve ser usado o " -#~ "grpck em tais circunstâncias para remover as entradas " -#~ "ofensivas." - -#~ msgid "The options which apply to the grpck command are:" -#~ msgstr "As opções que se aplicam ao comando grpck são:" - -#~ msgid "" -#~ "Sort entries in /etc/groupand /etc/gshadow by " -#~ "GID." -#~ msgstr "" -#~ "Ordena as entradas em /etc/group e /etc/gshadow pelo " -#~ "GID." - -#~ msgid "" -#~ "By default, grpck operates on /etc/groupand /etc/gshadow. The user may select alternate files with the " -#~ "groupparameter.and shadow " -#~ "parameters." -#~ msgstr "" -#~ "Por predefinição, o grpck opera em /etc/" -#~ "group e /etc/gshadow. O utilizador pode selecionar ficheiros alternativos " -#~ "com os parâmetro group. E parâmetros do " -#~ "shadow." - -#~ msgid "" -#~ "The grpck command exits with the following values: " -#~ "" -#~ msgstr "" -#~ "O comando grpck termina com os seguintes valores: " -#~ "" - -#~ msgid "" -#~ "group5, groupmod8, gshadow5, , passwd5, pwck8, " -#~ "shadow5." -#~ msgstr "" -#~ "group5, groupmod8, gshadow5, , passwd5, pwck8, " -#~ "shadow5." - -#~ msgid "" -#~ "newgrp1, getgid2, " -#~ "getgroups2, getuid2." -#~ msgstr "" -#~ "newgrp1, getgid2, " -#~ "getgroups2, getuid2." - -#~ msgid "" -#~ "The options which apply to the groupmod command are:" -#~ msgstr "" -#~ "As opções que se aplicam ao comando groupmod são:" - -#~ msgid "" -#~ ",  GID" -#~ msgstr "" -#~ ",  GID" - -#~ msgid "" -#~ "No checks will be performed with regard to the , " -#~ ", , or " -#~ " from /etc/login.defs." -#~ msgstr "" -#~ "Nenhuma verificação será executada com respeito a , , ou " -#~ " de /etc/login.defs." - -#~ msgid "" -#~ ",  " -#~ "NEW_GROUP" -#~ msgstr "" -#~ ",  " -#~ "NEW_GROUP" - -#~ msgid "E_GID_IN_USE: specified group doesn't exist" -#~ msgstr "E_GID_IN_USE: grupo especificado não existe" - -#~ msgid "" -#~ "The groupmod command exits with the following values: " -#~ "" -#~ msgstr "" -#~ "O comando groupmod termina com os seguintes valores: " -#~ "" - -#~ msgid "" -#~ "chfn1, chsh1, " -#~ "passwd1, gpasswd8, " -#~ "groupadd8, groupdel8, " -#~ "login.defs5, useradd8, " -#~ "userdel8, usermod8." -#~ msgstr "" -#~ "chfn1, chsh1, " -#~ "passwd1, gpasswd8, " -#~ "groupadd8, groupdel8, " -#~ "login.defs5, useradd8, " -#~ "userdel8, usermod8." - -#~ msgid "" -#~ "The options which apply to the groupmems command are:" -#~ msgstr "" -#~ "As opções que se aplicam ao comando groupmems são:" - -#~ msgid "" -#~ ",  user_name" -#~ msgstr "" -#~ ",  user_name" - -#~ msgid "" -#~ ",  " -#~ "user_name" -#~ msgstr "" -#~ ",  " -#~ "user_name" - -#~ msgid "" -#~ ",  " -#~ "group_name" -#~ msgstr "" -#~ ",  " -#~ "group_name" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ "chfn1, chsh1, " -#~ "passwd1, groupadd8, " -#~ "groupdel8, useradd8, " -#~ "userdel8, usermod8." -#~ msgstr "" -#~ "chfn1, chsh1, " -#~ "passwd1, groupadd8, " -#~ "groupdel8, useradd8, " -#~ "userdel8, usermod8." - -#~ msgid "" -#~ "The options which apply to the groupdel command are:" -#~ msgstr "" -#~ "As opções que se aplicam ao comando groupdel são:" - -#~ msgid "" -#~ "The groupdel command exits with the following values: " -#~ "" -#~ msgstr "" -#~ "O comando groupdel termina com os seguintes valores: " -#~ "" - -#~ msgid "" -#~ "chfn1, chsh1, " -#~ "passwd1, gpasswd8, " -#~ "groupadd8, groupmod8, " -#~ "useradd8, userdel8, " -#~ "usermod8." -#~ msgstr "" -#~ "chfn1, chsh1, " -#~ "passwd1, gpasswd8, " -#~ "groupadd8, groupmod8, " -#~ "useradd8, userdel8, " -#~ "usermod8." - -#~ msgid "" -#~ "The options which apply to the groupadd command are:" -#~ msgstr "" -#~ "As opções que se aplicam ao comando groupadd são:" - -#~ msgid "" -#~ "See also the option and the " -#~ "description." -#~ msgstr "" -#~ "Veja também a opção ." - -#~ msgid "" -#~ "Example:  GID_MIN=100  " -#~ "GID_MAX=499" -#~ msgstr "" -#~ "Exemplo:  GID_MIN=100  " -#~ "GID_MAX=499" - -#~ msgid "This option permits to add a group with a non-unique GID." -#~ msgstr "Esta opção permite adicionar um grupo com um GID não único." - -#~ msgid "" -#~ "Groupnames must start with a lower case letter or an underscore, followed " -#~ "by lower case letters, digits, underscores, or dashes. They can end with " -#~ "a dollar sign. In regular expression terms: [a-z_][a-z0-9_-]*[$]?" -#~ msgstr "" -#~ "Os nomes de grupos devem começar com uma letra minúscula ou um " -#~ "underscore, seguido de letras minúsculas, dígitos, underscores, ou " -#~ "traços. Eles podem acabar com um cifrão. Em termos de expressão regular: " -#~ "[a-z_][a-z0-9_-]*[$]?" - -#~ msgid "" -#~ "Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters long." -#~ msgstr "" -#~ "Nomes de grupos só pode ir até &GROUP_NAME_MAX_LENGTH; caracteres de " -#~ "comprimento." - -#~ msgid "GID not unique (when not used)" -#~ msgstr "GID não único (quando não usado)" - -#~ msgid "group name not unique" -#~ msgstr "nome de grupo não único" - -#~ msgid "" -#~ "The groupadd command exits with the following values: " -#~ "" -#~ msgstr "" -#~ "O comando groupadd termina com os seguintes valores: " -#~ "" - -#~ msgid "" -#~ "chfn1, chsh1, " -#~ "passwd1, gpasswd8, " -#~ "groupdel8, groupmod8, " -#~ "login.defs5, useradd8, " -#~ "userdel8, usermod8." -#~ msgstr "" -#~ "chfn1, chsh1, " -#~ "passwd1, gpasswd8, " -#~ "groupdel8, groupmod8, " -#~ "login.defs5, useradd8, " -#~ "userdel8, usermod8." - -#~ msgid "" -#~ "The gpasswd command is used to administer /" -#~ "etc/group, and /etc/" -#~ "gshadow. Every group can have administrators, members and a password." -#~ msgstr "" -#~ "O comando gpasswd é usado para administrar /" -#~ "etc/group, e /etc/" -#~ "gshadow. Cada grupo pode ter administradores, membros e uma palavra " -#~ "passe." - -#~ msgid "" -#~ "gpasswd called by a " -#~ "group administratora system " -#~ "administrator with a group name only prompts for the new " -#~ "password of the group." -#~ msgstr "" -#~ "gpasswd chamado por um " -#~ "administrador de grupoum " -#~ "administrador de sistema com um nome de grupo apenas pede a nova " -#~ "palavra passe do group." - -#~ msgid "" -#~ "The options which apply to the gpasswd command are:" -#~ msgstr "As opções que se aplicam ao comando gpasswd são:" - -#~ msgid "" -#~ ",  user" -#~ msgstr "" -#~ ",  user" - -#~ msgid "" -#~ ",  user" -#~ msgstr "" -#~ ",  user" - -#~ msgid "" -#~ ",  " -#~ "CHROOT_DIR" -#~ msgstr "" -#~ ",  " -#~ "CHROOT_DIR" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ ",  " -#~ "user,..." -#~ msgstr "" -#~ ",  " -#~ "user,..." - -#~ msgid "" -#~ ",  user,..." -#~ msgstr "" -#~ ",  user,..." - -#~ msgid "" -#~ "newgrp1, groupadd8, " -#~ "groupdel8, groupmod8, " -#~ "grpck8, group5, gshadow5." -#~ msgstr "" -#~ "newgrp1, groupadd8, " -#~ "groupdel8, groupmod8, " -#~ "grpck8, group5, gshadow5." - -#~ msgid "" -#~ "The options which apply to the faillog command are:" -#~ msgstr "As opções que se aplicam ao comando faillog são:" - -#~ msgid "" -#~ ",  SEC" -#~ msgstr "" -#~ ",  SEC" - -#~ msgid "" -#~ ",  MAX" -#~ msgstr "" -#~ ",  MAX" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ "login1, faillog5." -#~ msgstr "" -#~ "login1, faillog5." - -#~ msgid "" -#~ "The options which apply to the expiry command are:" -#~ msgstr "As opções que se aplicam ao comando expiry são:" - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ "passwd5, shadow5." -#~ msgstr "" -#~ "passwd5, shadow5." - -#~ msgid "The options which apply to the chsh command are:" -#~ msgstr "As opções que se aplicam ao comando chsh são:" - -#~ msgid "" -#~ "chfn1, login.defs5, " -#~ "passwd5." -#~ msgstr "" -#~ "chfn1, login.defs5, " -#~ "passwd5." - -#~ msgid "" -#~ "user_name:password" -#~ msgstr "" -#~ "user_name:password" - -#~ msgid "" -#~ "The default encryption algorithm can be defined for the system with the " -#~ " or " -#~ "variables of /etc/login.defs, and can be overwritten " -#~ "with the , , or " -#~ "options." -#~ msgstr "" -#~ "O algoritmo de encriptação predefinido pode ser definido para o sistema " -#~ "com as variáveis ou " -#~ " de /etc/login.defs, " -#~ "e pode ser sobreposto com as opções , ." - -#~ msgid "" -#~ "The options which apply to the chpasswd command are:" -#~ msgstr "" -#~ "As opções que se aplicam ao comando chpasswd são:" - -#~ msgid "" -#~ ",  " -#~ "METHOD" -#~ msgstr "" -#~ ",  " -#~ "METHOD" - -#~ msgid "The available methods are DES, MD5, and NONE." -#~ msgstr "Os métodos disponíveis são DES, MD5, e NONE." - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid ", " -#~ msgstr ", " - -#~ msgid "" -#~ ",  " -#~ "ROUNDS" -#~ msgstr "" -#~ ",  " -#~ "ROUNDS" - -#~ msgid "" -#~ "By default, the number of rounds is defined by the " -#~ " and e is turned off)." +msgstr "" +"Esta opção faz com que o comando simplesmente termine com estado de sucesso " +"se o grupo especificado já existir. Quando usado com , e o " +"GID especificado já existir, é escolhido outro GID (único) (isto é, " +" é desligado)." + +#: groupadd.8.xml:118(para) +msgid "" +"The numerical value of the group's ID. This value must be unique, unless the" +" option is used. The value must be non-negative. The" +" default is to use the smallest ID value greater than or equal to GID_MIN and greater than every other group." +msgstr "" +"O valor numérico do ID de grupo. Este valor tem de ser único, a menos " +"que a opção seja usada. O valor tem de ser não-negativo. " +"A predefinição é usar menor valor de ID maior ou igual a option and the " +" description." +msgstr "" +"Veja também a opção ." + +#: groupadd.8.xml:141(para) +msgid "" +"Overrides /etc/login.defs defaults (GID_MIN, GID_MAX and" +" others). Multiple options can be specified." +msgstr "" +"Sobrepõe as predefinições de /etc/login.defs (GID_MIN, " +"GID_MAX e outros). Podem ser especificadas opções " +"múltiplas vezes." + +#: groupadd.8.xml:146(para) +msgid "" +"Example:  GID_MIN=<" +"replaceable>100  GID_MAX=499" +msgstr "" +"Exemplo:  GID_MIN=<" +"replaceable>100  GID_MAX=499" + +#: groupadd.8.xml:150(para) +msgid "" +"Note:  GID_MIN=<" +"replaceable>10,GID_MAX=499 doesn't work yet." +msgstr "" +"Nota:  GID_MIN=<" +"replaceable>10,GID_MAX=499 ainda não funciona." + +#: groupadd.8.xml:161(para) +msgid "This option permits to add a group with a non-unique GID." +msgstr "Esta opção permite adicionar um grupo com um GID não único." + +#: groupadd.8.xml:192(para) +msgid "Create a system group." +msgstr "Cria um grupo de sistema." + +#: groupadd.8.xml:195(para) +msgid "" +"The numeric identifiers of new system groups are chosen in the SYS_GID_MIN- range, defined in <" +"filename>login.defs, instead of -GID_MAX." +msgstr "" +"Os identificadores numéricos de novos grupos de sistema são escolhidos " +"dentro da gama -, " +"definida em login.defs, em vez de ." + +#: groupadd.8.xml:275(para) +msgid "" +"Groupnames must start with a lower case letter or an underscore, followed by" +" lower case letters, digits, underscores, or dashes. They can end with a" +" dollar sign. In regular expression terms: [a-z_][a-z0-9_-]*[$]?" +msgstr "" +"Os nomes de grupos devem começar com uma letra minúscula ou um " +"underscore, seguido de letras minúsculas, dígitos, underscores, ou traços. " +"Eles podem acabar com um cifrão. Em termos de expressão regular: " +"[a-z_][a-z0-9_-]*[$]?" + +#: groupadd.8.xml:281(para) +msgid "Groupnames may only be up to &GROUP_NAME_MAX_LENGTH; characters long." +msgstr "" +"Nomes de grupos só pode ir até &GROUP_NAME_MAX_LENGTH; caracteres de " +"comprimento." + +#: groupadd.8.xml:284(para) +msgid "" +"You may not add a NIS or LDAP group. This must be performed on the" +" corresponding server." +msgstr "" +"Você não pode adicionar um grupo NIS ou LDAP. Isto tem de ser feito no " +"servidor correspondente." + +#: groupadd.8.xml:288(para) +msgid "" +"If the groupname already exists in an external group database such as NIS or" +" LDAP, groupadd will deny the group creation request." +msgstr "" +"Se o nome de grupo já existir numa base de dados de grupos externa como " +"NIS ou LDAP, o groupadd irá negar o pedido de criação " +"de grupo." + +#: groupadd.8.xml:321(para) +msgid "GID not unique (when not used)" +msgstr "GID não único (quando não usado)" + +#: groupadd.8.xml:327(para) +msgid "group name not unique" +msgstr "nome de grupo não único" + +#: groupadd.8.xml:297(para) +msgid "" +"The groupadd command exits with the following values: <" +"placeholder-1/>" +msgstr "" +"O comando groupadd termina com os seguintes valores: " +"" + +#: groupadd.8.xml:342(para) +msgid "" +"chfn1<" +"/citerefentry>, chsh1, passwd<" +"/refentrytitle>1, <" +"refentrytitle>gpasswd8," +" groupdel8, groupmod<" +"manvolnum>8, login.defs5, <" +"citerefentry>useradd8<" +"/citerefentry>, userdel<" +"manvolnum>8, usermod<" +"/refentrytitle>8." +msgstr "" +"chfn1<" +"/citerefentry>, chsh1, passwd<" +"/refentrytitle>1, <" +"refentrytitle>gpasswd8," +" groupdel8, groupmod<" +"manvolnum>8, login.defs5, <" +"citerefentry>useradd8<" +"/citerefentry>, userdel<" +"manvolnum>8, usermod<" +"/refentrytitle>8." + +#: gpasswd.1.xml:44(firstname) +msgid "Rafal" +msgstr "Rafal" + +#: gpasswd.1.xml:45(surname) +msgid "Maszkowski" +msgstr "Maszkowski" + +#: gpasswd.1.xml:71(phrase) +msgid "administer " +msgstr "administra " + +#: gpasswd.1.xml:74(phrase) +msgid "administer and " +msgstr "administra e " + +#: gpasswd.1.xml:85(replaceable) expiry.1.xml:76(replaceable) +msgid "option" +msgstr "opção" + +#: gpasswd.1.xml:95(para) +msgid "" +"The gpasswd command is used to administer /etc/group, and /etc/gshadow. Every group can have administrators, members and a password." +msgstr "" +"O comando gpasswd é usado para administrar /etc/group, e /etc/gshadow. Cada grupo pode ter administradores, membros e uma palavra passe." + +#: gpasswd.1.xml:103(para) +msgid "" +"System administrators can use the option to define group" +" administrator(s) and the option to define members. They" +" have all rights of group administrators and members." +msgstr "" +"Administradores do sistema pode usar a opção para definir " +"administradores do grupo e a opção para definir membros. " +"Eles têm todos os direitos de administradores de grupo e membros." + +#: gpasswd.1.xml:108(para) +msgid "" +"gpasswd called by a group" +" administratora system" +" administrator with a group name only prompts for the new password" +" of the group." +msgstr "" +"gpasswd chamado por um " +"administrador de grupoum " +"administrador de sistema com um nome de grupo apenas pede a nova " +"palavra passe do group." + +#: gpasswd.1.xml:115(para) +msgid "" +"If a password is set the members can still use newgrp1 without a" +" password, and non-members must supply the password." +msgstr "" +"Se uma palavra passe for definida os membros podem ainda usar " +"newgrp1 sem uma palavra passe, e os não-membros têm " +"de fornecer a palavra passe." + +#: gpasswd.1.xml:123(title) +msgid "Notes about group passwords" +msgstr "Notas acerca de palavras passe de grupo" + +#: gpasswd.1.xml:124(para) +msgid "" +"Group passwords are an inherent security problem since more than one person" +" is permitted to know the password. However, groups are a useful tool for" +" permitting co-operation between different users." +msgstr "" +"As palavras passe de grupo são um problema de segurança inerente pois é " +"permitido que mais do que uma pessoa saiba a palavra passe. No entanto, os " +"grupos são uma ferramenta útil para permitir co-operação entre diferentes " +"utilizadores." + +#: gpasswd.1.xml:135(para) +msgid "" +"Except for the and options, the" +" options cannot be combined." +msgstr "" +"Excepto para as opções e , as opções " +"não podem ser combinadas." + +#: gpasswd.1.xml:139(para) +msgid "The options cannot be combined." +msgstr "As opções não podem ser combinadas." + +#: gpasswd.1.xml:142(para) +msgid "The options which apply to the gpasswd command are:" +msgstr "As opções que se aplicam ao comando gpasswd são:" + +#: gpasswd.1.xml:147(term) +msgid "" +",  user<" +"/replaceable>" +msgstr "" +",  user<" +"/replaceable>" + +#: gpasswd.1.xml:151(para) +msgid "" +"Add the user to the named group<" +"/replaceable>." +msgstr "" +"Adiciona o user ao group nomeado." + +#: gpasswd.1.xml:160(term) +msgid "" +",  user<" +"/replaceable>" +msgstr "" +",  user<" +"/replaceable>" + +#: gpasswd.1.xml:164(para) +msgid "" +"Remove the user from the named group<" +"/replaceable>." +msgstr "" +"Remove o user do group nomeado." + +#: gpasswd.1.xml:181(term) +msgid "" +",  CHROOT_DIR<" +"/replaceable>" +msgstr "" +",  CHROOT_DIR<" +"/replaceable>" + +#: gpasswd.1.xml:195(term) +msgid ", " +msgstr ", " + +#: gpasswd.1.xml:199(para) +msgid "" +"Remove the password from the named group. The" +" group password will be empty. Only group members will be allowed to use <" +"command>newgrp to join the named group." +msgstr "" +"Remove a palavra passe do group nomeado. A " +"palavra passe de grupo ficará vazia. Apenas os membros do grupo terão " +"permissão de usar newgrp para se juntarem ao " +"group nomeado." + +#: gpasswd.1.xml:211(term) +msgid ", " +msgstr ", " + +#: gpasswd.1.xml:215(para) +msgid "" +"Restrict the access to the named group. The group" +" password is set to \"!\". Only group members with a password will be allowed" +" to use newgrp to join the named group<" +"/replaceable>." +msgstr "" +"Restringe o acesso ao group nomeado A palavra " +"passe de grupo é definida para \"!\". Apenas os membros do grupo com uma " +"palavra passe terão permissão de usar newgrp para se " +"juntarem ao group nomeado." + +#: gpasswd.1.xml:227(term) +msgid "" +",  user,..." +msgstr "" +",  user,..." + +#: gpasswd.1.xml:231(para) +msgid "Set the list of administrative users." +msgstr "Define a lista de utilizadores administrativos." + +#: gpasswd.1.xml:239(term) +msgid "" +",  user<" +"/replaceable>,..." +msgstr "" +",  user<" +"/replaceable>,..." + +#: gpasswd.1.xml:243(para) +msgid "Set the list of group members." +msgstr "Define a lista de membros de grupos." + +#: gpasswd.1.xml:253(para) +msgid "" +"This tool only operates on the /etc/group and /etc/gshadow files.file. Thus you cannot change any" +" NIS or LDAP group. This must be performed on the corresponding server." +msgstr "" +"Esta ferramenta apenas opera nos ficheiros /etc/group" +" e /etc/gshadow. " +"ficheiro. Assim você " +"não pode alterar nenhum grupo NIS ou LDAP. Isto tem de ser feito no servidor " +"correspondente." + +#: gpasswd.1.xml:298(para) +msgid "" +"newgrp1<" +"/citerefentry>, groupadd<" +"manvolnum>8, groupdel8, <" +"citerefentry>groupmod8<" +"/citerefentry>, grpck8, group<" +"/refentrytitle>5, gshadow5." +msgstr "" +"newgrp1<" +"/citerefentry>, groupadd<" +"manvolnum>8, groupdel8, <" +"citerefentry>groupmod8<" +"/citerefentry>, grpck8, group<" +"/refentrytitle>5, gshadow5." + +#: faillog.8.xml:57(refentrytitle) faillog.8.xml:64(refname) faillog.8.xml:70(command) faillog.5.xml:57(refentrytitle) faillog.5.xml:64(refname) faillog.5.xml:111(refentrytitle) +msgid "faillog" +msgstr "faillog" + +#: faillog.8.xml:65(refpurpose) +msgid "display faillog records or set login failure limits" +msgstr "mostra registos faillog ou define limites de falhas de login" + +#: faillog.8.xml:79(para) +msgid "" +"faillog displays the contents of the failure log database" +" (/var/log/faillog). It can also set the failure" +" counters and limits. When faillog is run without" +" arguments, it only displays the faillog records of the users who had a login" +" failure." +msgstr "" +"faillog mostra o conteúdo da base de dados de " +"registo de falhas (/var/log/faillog). Também pode " +"definir os contadores e limites de falhas. Quando o faillog é corrido sem argumentos, apenas mostra os registos faillog dos " +"utilizadores que tiveram falhas no login." + +#: faillog.8.xml:90(para) +msgid "The options which apply to the faillog command are:" +msgstr "As opções que se aplicam ao comando faillog são:" + +#: faillog.8.xml:98(para) +msgid "" +"Display (or act on) faillog records for all users having an entry in the <" +"filename>faillog database." +msgstr "" +"Mostra (ou actua em) registos faillog para todos os utilizadores que tenham " +"uma entrada na base de dados faillog." + +#: faillog.8.xml:102(para) +msgid "" +"The range of users can be restricted with the option." +msgstr "" +"A gama de utilizadores pode ser restringida com a opção ." + +#: faillog.8.xml:106(para) +msgid "" +"In display mode, this is still restricted to existing users but forces the" +" display of the faillog entries even if they are empty." +msgstr "" +"Em modo de mostragem, isto está ainda restrito aos utilizadores existentes " +"mas força a mostragem de entradas faillog mesmo que estas estejam vazias." + +#: faillog.8.xml:111(para) +msgid "" +"With the , , , <" +"option>-t options, the users' records are changed, even if the user" +" does not exist on the system. This is useful to reset records of users that" +" have been deleted or to set a policy in advance for a range of users." +msgstr "" +"Com as opções , , , " +", os registos dos utilizadores são alterados, mesmo se " +"o utilizador já não existir no sistema. Isto é útil para reiniciar registos " +"de utilizadores que foram apagados ou para definir antecipadamente uma " +"política para uma gama de utilizadores." + +#: faillog.8.xml:128(term) +msgid "" +",  SEC<" +"/replaceable>" +msgstr "" +",  SEC<" +"/replaceable>" + +#: faillog.8.xml:132(para) +msgid "" +"Lock account for SEC seconds after failed login." +msgstr "" +"Tranca a conta por SEC segundos após login " +"falhado." + +#: faillog.8.xml:136(para) faillog.8.xml:161(para) faillog.8.xml:173(para) +msgid "" +"Write access to /var/log/faillog is required for this" +" option." +msgstr "" +"É requerido acesso de escrita a /var/log/faillog para " +"esta opção." + +#: faillog.8.xml:143(term) +msgid "" +",  MAX<" +"/replaceable>" +msgstr "" +",  MAX<" +"/replaceable>" + +#: faillog.8.xml:147(para) +msgid "" +"Set the maximum number of login failures after the account is disabled to <" +"replaceable>MAX." +msgstr "" +"Define o número máximo de falhas de login para MAX " +"o que após isso desactiva a conta " + +#: faillog.8.xml:151(para) +msgid "" +"Selecting a MAX value of 0 has the effect of not" +" placing a limit on the number of failed logins." +msgstr "" +"Selecionar um valor MAX de o tem o efeito de " +"não impor um limite ao número de logins falhados." + +#: faillog.8.xml:156(para) +msgid "" +"The maximum failure count should always be 0 for root to" +" prevent a denial of services attack against the system." +msgstr "" +"O contador máximo de falhas deve ser sempre 0 para o root para prevenir um ataque de negação de serviços contra o sistema." + +#: faillog.8.xml:168(term) +msgid ", " +msgstr ", " + +#: faillog.8.xml:170(para) +msgid "Reset the counters of login failures." +msgstr "Reinicia os contadores das falhas de login." + +#: faillog.8.xml:195(para) +msgid "" +"Display faillog records more recent than DAYS." +msgstr "" +"Mostra registos faillog mais recentes que DAYS." + +#: faillog.8.xml:206(para) +msgid "" +"Display faillog record or maintains failure counters and limits (if used with" +" , or options)" +" only for the specified user(s)." +msgstr "" +"Mostra o registo faillog ou mantém contadores e limites de falha (se usado " +"com as opções , ou " +") apenas para os utilizadores especificados." + +#: faillog.8.xml:224(para) +msgid "" +"When none of the , , or , , ou " +" é usada, faillog mostra o registo " +"record dos utilizadores especificados." + +#: faillog.8.xml:233(para) +msgid "" +"faillog only prints out users with no successful login" +" since the last failure. To print out a user who has had a successful login" +" since their last failure, you must explicitly request the user with the <" +"option>-u flag, or print out all users with the " +" flag." +msgstr "" +"faillog apenas escreve utilizadores com login sem sucesso " +"desde a última falha. Para mostrar um utilizador que teve um login com " +"sucesso desde a sua última falha, você tem que explicitamente requisitar " +"o utilizador com a bandeira , ou mostrar todos os " +"utilizadores com a bandeira ." + +#: faillog.8.xml:246(filename) faillog.5.xml:99(filename) +msgid "/var/log/faillog" +msgstr "/var/log/faillog" + +#: faillog.8.xml:248(para) faillog.5.xml:101(para) +msgid "Failure logging file." +msgstr "Ficheiro de registo de falhas." + +#: faillog.8.xml:256(para) +msgid "" +"login1<" +"/citerefentry>, faillog<" +"manvolnum>5." +msgstr "" +"login1<" +"/citerefentry>, faillog<" +"manvolnum>5." + +#: faillog.5.xml:65(refpurpose) +msgid "login failure logging file" +msgstr "ficheiro de registo de falhas de login" + +#: faillog.5.xml:70(para) +msgid "" +"/var/log/faillog maintains a count of login failures and" +" the limits for each account." +msgstr "" +"/var/log/faillog mantém uma contagem de falhas de " +"login e os limites de cada conta." + +#: faillog.5.xml:74(para) +msgid "" +"The file contains fixed length records, indexed by numerical UID. Each record" +" contains the count of login failures since the last successful login; the" +" maximum number of failures before the account is disabled; the line on which" +" the last login failure occurred; the date of the last login failure; and the" +" duration (in seconds) during which the account will be locked after a" +" failure." +msgstr "" +"O ficheiro contém registos de comprimento fixo, indexados pelo UID numérico. " +"Cada registo contém a contagem de falhas de login desde o último login " +"com sucesso; o número máximo da falhas antes da conta ser desativada; a " +"linha na qual a última falha de login ocorreu; a data da última falha de " +"login; e a duração (em segundos) durante a conta ficará trancada após " +"uma falha." + +#: faillog.5.xml:84(para) +msgid "The structure of the file is:" +msgstr "A estrutura do ficheiro é:" + +#: faillog.5.xml:85(programlisting) +#, no-wrap +msgid "" +"\nstruct\tfaillog {\n\tshort fail_cnt;\n\tshort fail_max;\n\tchar " +" fail_line[12];\n\ttime_t fail_time;\n\tlong fail_locktime;\n};" +msgstr "" +"\nstruct\tfaillog {\n\tshort fail_cnt;\n\tshort fail_max;\n\tchar " +" fail_line[12];\n\ttime_t fail_time;\n\tlong fail_locktime;\n};" + +#: expiry.1.xml:45(contrib) chsh.1.xml:44(contrib) chfn.1.xml:44(contrib) chage.1.xml:42(contrib) +msgid "Creation, 1990" +msgstr "Criação, 1990" + +#: expiry.1.xml:61(refentrytitle) expiry.1.xml:68(refname) expiry.1.xml:74(command) +msgid "expiry" +msgstr "expiry" + +#: expiry.1.xml:69(refpurpose) +msgid "check and enforce password expiration policy" +msgstr "verifica e reforça a política de expiração da palavra passe" + +#: expiry.1.xml:83(para) +msgid "" +"The expiry command checks () the" +" current password expiration and forces () changes when" +" required. It is callable as a normal user command." +msgstr "" +"O comando expiry verifica () a " +"expiração da palavra passe actual e força () alterações " +"quando requerido. Pode ser chamado como comando de utilizador normal." + +#: expiry.1.xml:92(para) +msgid "The options which apply to the expiry command are:" +msgstr "As opções que se aplicam ao comando expiry são:" + +#: expiry.1.xml:97(term) +msgid ", " +msgstr ", " + +#: expiry.1.xml:99(para) +msgid "Check the password expiration of the current user." +msgstr "Verifica a expiração da palavra passe do utilizador actual." + +#: expiry.1.xml:105(para) +msgid "Force a password change if the current user has an expired password." +msgstr "" +"Força a mudança da palavra passe se o utilizador actual tem uma palavra " +"passe expirada." + +#: expiry.1.xml:140(para) chage.1.xml:318(para) +msgid "" +"passwd5<" +"/citerefentry>, shadow5." +msgstr "" +"passwd5<" +"/citerefentry>, shadow5." + +#: chsh.1.xml:68(refpurpose) +msgid "change login shell" +msgstr "muda a shell de login" + +#: chsh.1.xml:85(para) +msgid "" +"The chsh command changes the user login shell. This" +" determines the name of the user's initial login command. A normal user may" +" only change the login shell for her own account; the superuser may change" +" the login shell for any account." +msgstr "" +"O comando chsh muda a shell de login do utilizador. " +"Isto determina o nome do comando de login inicial. Um utilizador normal " +"pode apenas mudar a shell de login para a sua própria conta; o " +"super-utilizador pode mudar a shell de login para qualquer conta." + +#: chsh.1.xml:96(para) +msgid "The options which apply to the chsh command are:" +msgstr "As opções que se aplicam ao comando chsh são:" + +#: chsh.1.xml:130(para) +msgid "" +"If the option is not selected, chsh" +" operates in an interactive fashion, prompting the user with the current" +" login shell. Enter the new value to change the shell, or leave the line" +" blank to use the current one. The current shell is displayed between a pair" +" of [ ] marks." +msgstr "" +"Se a opção não for selecionada, o chsh " +"opera em modo interactivo, pedindo ao utilizador a shell de login actual. " +"Insira novo valor para mudar a shell, ou deixe a linha em branco para usar " +"a actual. A shell actual é mostrada entre um para de parêntesis rectos " +"[ ]." + +#: chsh.1.xml:141(para) +msgid "" +"The only restriction placed on the login shell is that the command name must" +" be listed in /etc/shells, unless the invoker is the" +" superuser, and then any value may be added. An account with a restricted" +" login shell may not change her login shell. For this reason, placing <" +"filename>/bin/rsh in /etc/shells is" +" discouraged since accidentally changing to a restricted shell would prevent" +" the user from ever changing her login shell back to its original value." +msgstr "" +"A única restrição colocada na shell de login é que o nome de comando " +"tem de estar listado em /etc/shells, a menos que o " +"invocador seja o super-utilizador, e assim qualquer valor pode ser " +"adicionado. Uma conta com uma shell de login restringida não pode mudar " +"a sua shell de login. Por esta razão, colocar /bin/rsh " +"em /etc/shells é desencorajado a mudança acidental " +"para uma shell restringida iria impedir o utilizador de alguma vez voltar a " +"mudar a sua shell de login para o seu valor original." + +#: chsh.1.xml:176(filename) +msgid "/etc/shells" +msgstr "/etc/shells" + +#: chsh.1.xml:178(para) +msgid "List of valid login shells." +msgstr "Lista de shells de login válidas." + +#: chsh.1.xml:192(para) +msgid "" +"chfn1<" +"/citerefentry>, login.defs<" +"manvolnum>5, passwd<" +"/refentrytitle>5." +msgstr "" +"chfn1<" +"/citerefentry>, login.defs<" +"manvolnum>5, passwd<" +"/refentrytitle>5." + +#: chpasswd.8.xml:69(refpurpose) +msgid "update passwords in batch mode" +msgstr "actualiza palavras passe em modo de lote" + +#: chpasswd.8.xml:83(para) +msgid "" +"The chpasswd command reads a list of user name and" +" password pairs from standard input and uses this information to update a" +" group of existing users. Each line is of the format:" +msgstr "" +"O comando chpasswd lê uma lista de pares de nome de " +"utilizador e palavra passe a partir da entrada standard e usa esta informação " +"para actualizar um grupo de utilizadores existentes. Cada linha tem o formato:" + +#: chpasswd.8.xml:88(para) +msgid "" +"user_name:password<" +"/emphasis>" +msgstr "" +"user_name:password<" +"/emphasis>" + +#: chpasswd.8.xml:92(para) +msgid "" +"By default the passwords must be supplied in clear-text, and are encrypted by" +" chpasswd. Also the password age will be updated, if" +" present." +msgstr "" +"Por predefinição as palavras passe têm de ser fornecidas em texto simples, " +"e são encriptadas pelo chpasswd. A idade da palavra " +"passe também será actualizada, se estiver presente." + +#: chpasswd.8.xml:97(para) +msgid "" +"The default encryption algorithm can be defined for the system with the <" +"option>ENCRYPT_METHOD or variables" +" of /etc/login.defs, and can be overwritten with the <" +"option>-e, , or options." +msgstr "" +"O algoritmo de encriptação predefinido pode ser definido para o sistema " +"com as variáveis ou " +" de /etc/login.defs, " +"e pode ser sobreposto com as opções , , " +"ou ." + +#: chpasswd.8.xml:105(para) +msgid "" +"By default, passwords are encrypted by PAM, but (even if not recommended) you" +" can select a different encryption method with the , <" +"option>-m, or options." +msgstr "" +"Por predefinição, as palavras passe são encriptadas pelo PAM, mas (mesmo que " +"não recomendado) você pode selecionar um método de encriptação diferente " +"com as opções , , ou " +"." + +#: chpasswd.8.xml:111(para) +msgid "" +"Except when PAM is used to encrypt the passwords,<" +"/phrase>chpasswd first updates all the passwords in" +" memory, and then commits all the changes to disk if no errors occurred for" +" any user." +msgstr "" +"Excepto quando o PAM é usado para encriptar as " +"palavras passe, o chpasswd primeiro actualiza " +"todas as palavras passe em memória, e depois guarda todas as alterações " +"no disco, se não ocorrerem erros para nenhum utilizador." + +#: chpasswd.8.xml:117(para) +msgid "" +"When PAM is used to encrypt the passwords (and update the passwords in the" +" system database) then if a password cannot be updated chpasswd<" +"/command> continues updating the passwords of the next users, and will return" +" an error code on exit." +msgstr "" +"Quando o PAM é usado para encriptar as palavras passe (e actualizar as " +"palavras passe na base de dados do sistema) então se uma palavra passe " +"não puder ser actualizada o chpasswd continua a " +"actualizar as palavras passe dos próximos utilizadores, e irá retornar um " +"código de erro ao terminar." + +#: chpasswd.8.xml:123(para) chgpasswd.8.xml:98(para) +msgid "" +"This command is intended to be used in a large system environment where many" +" accounts are created at a single time." +msgstr "" +"Este comando destina-se a ser usado num ambiente de sistema grande onde " +"muitas contas são criadas de uma só vez." + +#: chpasswd.8.xml:131(para) +msgid "The options which apply to the chpasswd command are:" +msgstr "As opções que se aplicam ao comando chpasswd são:" + +#: chpasswd.8.xml:137(term) +msgid "" +",  METHOD" +msgstr "" +",  METHOD" + +#: chpasswd.8.xml:142(para) chgpasswd.8.xml:115(para) +msgid "The available methods are DES, MD5, and NONE." +msgstr "Os métodos disponíveis são DES, MD5, e NONE." + +#: chpasswd.8.xml:149(para) +msgid "By default, PAM is used to encrypt the passwords." +msgstr "Por predefinição, é usado o PAM para encriptar as palavras passe." + +#: chpasswd.8.xml:152(para) +msgid "" +"By default (if none of the , , or <" +"option>-e options are specified), the encryption method is defined" +" by the or " +" variables of /etc/login.defs." +msgstr "" +"Por predefinição (se nenhuma da opções , for especificada), o método de encriptação " +"é definido pelas variáveis ou " +" de /etc/login.defs." + +#: chpasswd.8.xml:163(term) chgpasswd.8.xml:125(term) +msgid ", " +msgstr ", " + +#: chpasswd.8.xml:165(para) chgpasswd.8.xml:127(para) +msgid "Supplied passwords are in encrypted form." +msgstr "Palavras passe fornecidas estão em formato encriptado." + +#: chpasswd.8.xml:179(term) chgpasswd.8.xml:137(term) +msgid ", " +msgstr ", " + +#: chpasswd.8.xml:181(para) chgpasswd.8.xml:139(para) +msgid "" +"Use MD5 encryption instead of DES when the supplied passwords are not" +" encrypted." +msgstr "" +"Usa encriptação MD5 em vez de DES quando as palavras passe fornecidas " +"não estão encriptadas." + +#: chpasswd.8.xml:200(term) +msgid "" +",  ROUNDS<" +"/replaceable>" +msgstr "" +",  ROUNDS<" +"/replaceable>" + +#: chpasswd.8.xml:219(para) +msgid "" +"By default, the number of rounds is defined by the SHA_CRYPT_MIN_ROUNDS and " +" variables in /etc/login.defs." +msgstr "" +"Por predefinição, o número de rondas é definido pelas variáveis SHA_CRYPT_MIN_ROUNDS e " +"em /etc/login.defs." + +#: chpasswd.8.xml:232(para) chgpasswd.8.xml:187(para) +msgid "" +"Remember to set permissions or umask to prevent readability of unencrypted" +" files by other users." +msgstr "" +"Lembre-se de definir permissões ou umask para impedir a leitura de ficheiros " +"não encriptados por outros utilizadores." + +#: chpasswd.8.xml:276(filename) +msgid "/etc/pam.d/chpasswd" +msgstr "/etc/pam.d/chpasswd" + +#: chpasswd.8.xml:278(para) +msgid "PAM configuration for chpasswd." +msgstr "Configuração PAM para chpasswd." + +#: chpasswd.8.xml:286(para) +msgid "" +"passwd1<" +"/citerefentry>, newusers<" +"manvolnum>8, login.defs5, useradd8." +msgstr "" +"passwd1<" +"/citerefentry>, newusers<" +"manvolnum>8, login.defs5, useradd8." + +#: chgpasswd.8.xml:47(contrib) +msgid "Creation, 2006" +msgstr "Criação, 2006" + +#: chgpasswd.8.xml:65(refpurpose) +msgid "update group passwords in batch mode" +msgstr "actualiza palavras passe de grupo em modo de lote" + +#: chgpasswd.8.xml:79(para) +msgid "" +"The chgpasswd command reads a list of group name and" +" password pairs from standard input and uses this information to update a set" +" of existing groups. Each line is of the format:" +msgstr "" +"O comando chgpasswd lê uma lista de pares de nome de " +"grupo e palavra passe a partir da entrada standard e usa esta informação " +"para actualizar um conjunto de grupos existentes Cada linha tem o formato:" + +#: chgpasswd.8.xml:84(para) +msgid "" +"group_name:password<" +"/emphasis>" +msgstr "" +"group_name:password<" +"/emphasis>" + +#: chgpasswd.8.xml:88(para) +msgid "" +"By default the supplied password must be in clear-text, and is encrypted by <" +"command>chgpasswd." +msgstr "" +"Por predefinição a palavra passe fornecida tem de estar em texto simples, e " +"é encriptada pelo chgpasswd." + +#: chgpasswd.8.xml:92(para) +msgid "" +"The default encryption algorithm can be defined for the system with the <" +"option>ENCRYPT_METHOD variable of /etc/login.defs<" +"/filename>, and can be overwritten with the , options." +msgstr "" +"O algoritmo de encriptação predefinido pode ser definido para o sistema com a " +"variável de /etc/login.defs<" +"/filename>, e pode ser sobreposto com as opções , " +", ou ." + +#: chgpasswd.8.xml:106(para) +msgid "" +"The options which apply to the chgpasswd command are:" +msgstr "As opções que se aplicam ao comando chgpasswd são:" + +#: chgpasswd.8.xml:238(para) +msgid "" +"gpasswd1<" +"/citerefentry>, groupadd<" +"manvolnum>8, login.defs5." +msgstr "" +"gpasswd1<" +"/citerefentry>, groupadd<" +"manvolnum>8, login.defs5." + +#: chfn.1.xml:68(refpurpose) +msgid "change real user name and information" +msgstr "muda o nome e informação do utilizador real" + +#: chfn.1.xml:85(para) +msgid "" +"The chfn command changes user fullname, office room" +" number, office phone number, and home phone number information for a user's" +" account. This information is typically printed by <" +"refentrytitle>finger1" +" and similar programs. A normal user may only change the fields for her own" +" account, subject to the restrictions in /etc/login.defs. (The default configuration is to prevent users from changing their" +" fullname.) The superuser may change any field for any account. Additionally," +" only the superuser may use the option to change the" +" undefined portions of the GECOS field." +msgstr "" +"O comando chfn muda a informação do nome completo do " +"utilizador, o número do quarto de escritório, número de telefone do " +"escritório, e número de telefone de casa para a conta de um utilizador. Esta " +"informação é tipicamente mostrada pelo finger1 e programas " +"semelhantes. Um utilizador normal apenas pode modificar os campos da sua " +"própria conta, sujeito às restrições em /etc/login.defs. " +"(A configuração predefinida serve para prevenir os utilizadores de mudarem " +"o seu nome completo.) O super-utilizador pode mudar qualquer campo em " +"qualquer conta. Adicionalmente apenas o super-utilizador pode usar a opção " +" para mudar as porções não definidas do campo GECOS." + +#: chfn.1.xml:99(para) +msgid "" +"These fields must not contain any colons. Except for the other field, they should not contain any comma or" +" equal sign. It is also recommended to avoid non-US-ASCII characters, but" +" this is only enforced for the phone numbers. The other field is used to store accounting information used by other" +" applications." +msgstr "" +"Estes campos não podem conter símbolos de dois pontos. Excepto no campo " +"other, não podem conter nenhuma vírgula " +"nem o sinal de igual. É também recomendado evitar caracteres não US-ASCII, " +"mas isto apenas é forçado para os números de telefone. O campo " +"other é usado para guardar informação da " +"conta usada por outras aplicações." + +#: chfn.1.xml:112(para) +msgid "The options which apply to the chfn command are:" +msgstr "As opções que se aplicam ao comando chfn são:" + +#: chfn.1.xml:117(term) +msgid "" +",  FULL_NAME" +msgstr "" +",  FULL_NAME" + +#: chfn.1.xml:121(para) +msgid "Change the user's full name." +msgstr "Muda o nome completo do utilizador." + +#: chfn.1.xml:125(term) +msgid "" +",  HOME_PHONE" +msgstr "" +",  HOME_PHONE" + +#: chfn.1.xml:129(para) +msgid "Change the user's home phone number." +msgstr "Muda o número de telefone de casa do utilizador." + +#: chfn.1.xml:133(term) +msgid "" +",  OTHER<" +"/replaceable>" +msgstr "" +",  OTHER<" +"/replaceable>" + +#: chfn.1.xml:137(para) +msgid "" +"Change the user's other GECOS information. This field is used to store" +" accounting information used by other applications, and can be changed only" +" by a superuser." +msgstr "" +"Muda a \"outra\" informação GECOS do utilizador. Este campo é usado para " +"guardar informação de conta usada por outras aplicações, e só pode ser " +"mudada por um super-utilizador." + +#: chfn.1.xml:145(term) +msgid "" +",  ROOM_NUMBER<" +"/replaceable>" +msgstr "" +",  ROOM_NUMBER<" +"/replaceable>" + +#: chfn.1.xml:149(para) +msgid "Change the user's room number." +msgstr "Muda o número de quarto do utilizador." + +#: chfn.1.xml:165(term) +msgid ", " +msgstr ", " + +#: chfn.1.xml:173(term) +msgid "" +",  WORK_PHONE" +msgstr "" +",  WORK_PHONE" + +#: chfn.1.xml:177(para) +msgid "Change the user's office phone number." +msgstr "Muda o número de telefone do escritório do utilizador." + +#: chfn.1.xml:181(para) +msgid "" +"If none of the options are selected, chfn operates in an" +" interactive fashion, prompting the user with the current values for all of" +" the fields. Enter the new value to change the field, or leave the line blank" +" to use the current value. The current value is displayed between a pair of <" +"emphasis remap=\"B\">[ ] marks. Without options, chfn<" +"/command> prompts for the current user account." +msgstr "" +"Se nenhuma das opções for selecionada, o chfn opera num " +"modo interativo, pedido ao utilizador os valores actuais para todos os " +"campos. Insira o novo valor para mudar o campo, ou deixe esta linha em " +"branco para usar o valor actual. O valor actual é mostrado entre um par de " +"parêntesis rectos [ ]. Sem opções, o " +"chfn pergunta pela conta de utilizador actual." + +#: chfn.1.xml:226(para) +msgid "" +"chsh1<" +"/citerefentry>, login.defs<" +"manvolnum>5, passwd<" +"/refentrytitle>5." +msgstr "" +"chsh1<" +"/citerefentry>, login.defs<" +"manvolnum>5, passwd<" +"/refentrytitle>5." + +#: chage.1.xml:66(refpurpose) +msgid "change user password expiry information" +msgstr "muda a informação de expiração da palavra passe do utilizador" + +#: chage.1.xml:82(para) +msgid "" +"The chage command changes the number of days between" +" password changes and the date of the last password change. This information" +" is used by the system to determine when a user must change their password." +msgstr "" +"O comando chage muda o número de dias entre mudanças " +"de palavra passe e a data da última mudança de palavra passe. Esta informação " +"é usada pelo sistema para determinar quando um utilizador tem de mudar a " +"sua palavra passe." + +#: chage.1.xml:92(para) +msgid "The options which apply to the chage command are:" +msgstr "As opções que se aplicam ao comando chage são:" + +#: chage.1.xml:97(term) +msgid "" +",  LAST_DAY<" +"/replaceable>" +msgstr "" +",  LAST_DAY<" +"/replaceable>" + +#: chage.1.xml:101(para) +msgid "" +"Set the number of days since January 1st, 1970 when the password was last" +" changed. The date may also be expressed in the format YYYY-MM-DD (or the" +" format more commonly used in your area)." +msgstr "" +"Define o número de dias desde 1 de Janeiro de 1970 em que a palavra passe " +"foi mudada pela última vez. A data também pode ser expressada no formato " +"AAAA-MM-DD (ou no formato mais comum usado na sua área)." + +#: chage.1.xml:109(term) +msgid "" +",  EXPIRE_DATE" +msgstr "" +",  EXPIRE_DATE" + +#: chage.1.xml:113(para) +msgid "" +"Set the date or number of days since January 1, 1970 on which the user's" +" account will no longer be accessible. The date may also be expressed in the" +" format YYYY-MM-DD (or the format more commonly used in your area). A user" +" whose account is locked must contact the system administrator before being" +" able to use the system again." +msgstr "" +"Define a data ou número de dias desde 1 Janeiro 1970 no qual a conta do " +"utilizador não estará mais acessível. A data também pode ser expressada " +"no formato AAAA-MM-DD (ou no formato maus comum usado na sua área). Um " +"utilizador cuja conta está trancada tem de contactar o administrador do " +"sistema antes de poder voltar a usar o sistema." + +#: chage.1.xml:121(para) +msgid "" +"Passing the number -1 as the EXPIRE_DATE will remove an account expiration date." +msgstr "" +"Passar o número -1 como EXPIRE_DATE irá remover a data de expiração da conta." + +#: chage.1.xml:135(term) +msgid ", " +msgstr ", " + +#: chage.1.xml:137(para) +msgid "When printing dates, use YYYY-MM-DD format." +msgstr "ao escrever datas, usa o formato AAAA-MM-DD." + +#: chage.1.xml:141(term) +msgid "" +",  INACTIVE<" +"/replaceable>" +msgstr "" +",  INACTIVE<" +"/replaceable>" + +#: chage.1.xml:145(para) +msgid "" +"Set the number of days of inactivity after a password has expired before the" +" account is locked. The INACTIVE option is the" +" number of days of inactivity. A user whose account is locked must contact" +" the system administrator before being able to use the system again." +msgstr "" +"Define o dias de inactividade após a palavra passe ter expirado e antes " +"da conta ser trancada. A opção INACTIVE é o " +"número de ias de inactividade. Um utilizador cuja conta está trancada tem " +"de contactar o administrador do sistema antes de poder voltar a usar o " +"sistema." + +#: chage.1.xml:152(para) +msgid "" +"Passing the number -1 as the INACTIVE will remove an account's inactivity." +msgstr "" +"Passar o número -1 como INACTIVE irá remover a inactividade da conta." + +#: chage.1.xml:164(para) +msgid "Show account aging information." +msgstr "Mostra informação de envelhecimento da conta." + +#: chage.1.xml:170(term) +msgid "" +",  MIN_DAYS<" +"/replaceable>" +msgstr "" +",  MIN_DAYS<" +"/replaceable>" + +#: chage.1.xml:182(term) +msgid "" +",  MAX_DAYS<" +"/replaceable>" +msgstr "" +",  MAX_DAYS<" +"/replaceable>" + +#: chage.1.xml:186(para) +msgid "" +"Set the maximum number of days during which a password is valid. When <" +"replaceable>MAX_DAYS plus LAST_DAY" +" is less than the current day, the user will be required to change their" +" password before being able to use their account. This occurrence can be" +" planned for in advance by use of the option, which" +" provides the user with advance warning." +msgstr "" +"Define o número máximo de dias durante o qual a palavra passe é válida. " +"Quando MAX_DAYS mais LAST_DAY é menor que o dia actual, é requerido ao utilizador mudar a sua " +"palavra passe antes de poder usar a sua conta. Esta ocorrência pode ser " +"planeada com antecedência com o uso da opção , que " +"fornece ao utilizador um aviso adiantado." + +#: chage.1.xml:215(term) +msgid "" +",  WARN_DAYS<" +"/replaceable>" +msgstr "" +",  WARN_DAYS<" +"/replaceable>" + +#: chage.1.xml:219(para) +msgid "" +"Set the number of days of warning before a password change is required. The <" +"replaceable>WARN_DAYS option is the number of days prior to the" +" password expiring that a user will be warned their password is about to" +" expire." +msgstr "" +"Define o número de dias de aviso antes de ser requerido a mudança da palavra " +"passe. A opção WARN_DAYS é o número de dias " +"antes da palavra passe expirar em que o utilizador é avisado que a sua " +"palavra passe está prestes a expirar." + +#: chage.1.xml:228(para) +msgid "" +"If none of the options are selected, chage operates in an" +" interactive fashion, prompting the user with the current values for all of" +" the fields. Enter the new value to change the field, or leave the line blank" +" to use the current value. The current value is displayed between a pair of <" +"emphasis>[ ] marks." +msgstr "" +"Se nenhuma das opções for selecionada, o chage opera " +"num modo interativo, pedido ao utilizador os valores actuais para todos os " +"campos Insira o novo valor para mudar o campo, ou deixe esta linha em " +"branco para usar o valor actual. O valor actual é mostrado entre um par de " +"parêntesis rectos [ ]." + +#: chage.1.xml:238(para) +msgid "" +"The chage program requires a shadow password file to be" +" available." +msgstr "" +"O programa chage requer que um ficheiro de palavras passe " +"sombra esteja disponível." + +#: chage.1.xml:242(para) +msgid "" +"The chage command is restricted to the root user, except" +" for the option, which may be used by an unprivileged" +" user to determine when their password or account is due to expire." +msgstr "" +"O comando chage é restrito ao utilizador root, excepto " +"para a opção , que pode ser usada por um utilizador sem " +"privilégios para consultar quando a sua palavra passe ou conta estão para " +"expirar." + +#: chage.1.xml:307(replaceable) +msgid "15" +msgstr "15" + +#: chage.1.xml:309(para) +msgid "can't find the shadow password file" +msgstr "incapaz de encontrar o ficheiro de palavras passe sombra" + +#: chage.1.xml:285(para) +msgid "" +"The chage command exits with the following values: <" +"placeholder-1/>" +msgstr "" +"O comando chage termina com os seguintes valores: " +"" + +#. Put one translator per line, in the form of NAME , YEAR1, YEAR2 +#: chage.1.xml:0(None) +msgid "translator-credits" +msgstr "Américo Monteiro , 2020" + + diff --git a/man/po/ro.po b/man/po/ro.po index b2282ec4..c24443df 100644 --- a/man/po/ro.po +++ b/man/po/ro.po @@ -21,8 +21,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Poedit 3.4.3\n" #. (itstool) path: author/firstname @@ -327,14 +326,8 @@ msgstr "DESCRIERE" #. (itstool) path: refsect1/para #: chage.1.xml.out:58 -msgid "" -"The <_:command-1/> command changes the number of days between password " -"changes and the date of the last password change. This information is used " -"by the system to determine when a user must change their password." -msgstr "" -"Comanda <_:command-1/> modifică numărul de zile dintre schimbările de parolă " -"și data ultimei schimbări de parolă. Aceste informații sunt utilizate de " -"sistem pentru a determina când un utilizator trebuie să își schimbe parola." +msgid "The <_:command-1/> command changes the number of days between password changes and the date of the last password change. This information is used by the system to determine when a user must change their password." +msgstr "Comanda <_:command-1/> modifică numărul de zile dintre schimbările de parolă și data ultimei schimbări de parolă. Aceste informații sunt utilizate de sistem pentru a determina când un utilizator trebuie să își schimbe parola." #. (itstool) path: refsect1/title #. (itstool) path: arg/replaceable @@ -366,6 +359,7 @@ msgstr "Opțiunile care se aplică comenzii <_:command-1/> sunt:" #: chage.1.xml.out:74 gpasswd.1.xml.out:139 groupmems.8.xml.out:94 #: passwd.1.xml.out:164 useradd.8.xml.out:123 useradd.8.xml.out:151 #: useradd.8.xml.out:619 usermod.8.xml.out:112 usermod.8.xml.out:260 +#| msgid "-" msgid "-d" msgstr "-d" @@ -426,20 +420,12 @@ msgstr "0" #. (itstool) path: listitem/para #: chage.1.xml.out:77 -msgid "" -"Set the number of days since January 1st, 1970 when the password was last " -"changed. The date may also be expressed in the format YYYY-MM-DD (or the " -"format more commonly used in your area). If the <_:replaceable-1/> is set to " -"<_:emphasis-2/> the user is forced to change his password on the next log on." -msgstr "" -"Stabilește numărul de zile începând cu 1 ianuarie 1970, când parola a fost " -"schimbată ultima dată. Data poate fi, de asemenea, exprimată în formatul " -"AAAA-LL-ZZ (sau formatul cel mai frecvent utilizat în zona dumneavoastră). " -"Dacă <_:replaceable-1/> este stabilită la <_:emphasis-2/>, utilizatorul este " -"obligat să își schimbe parola la următoarea conectare." +msgid "Set the number of days since January 1st, 1970 when the password was last changed. The date may also be expressed in the format YYYY-MM-DD (or the format more commonly used in your area). If the <_:replaceable-1/> is set to <_:emphasis-2/> the user is forced to change his password on the next log on." +msgstr "Stabilește numărul de zile începând cu 1 ianuarie 1970, când parola a fost schimbată ultima dată. Data poate fi, de asemenea, exprimată în formatul AAAA-LL-ZZ (sau formatul cel mai frecvent utilizat în zona dumneavoastră). Dacă <_:replaceable-1/> este stabilită la <_:emphasis-2/>, utilizatorul este obligat să își schimbe parola la următoarea conectare." #. (itstool) path: term/option #: chage.1.xml.out:89 +#| msgid "-" msgid "-E" msgstr "-E" @@ -459,28 +445,13 @@ msgstr "DATA_EXPIRARE" #. (itstool) path: listitem/para #: chage.1.xml.out:92 -msgid "" -"Set the date or number of days since January 1, 1970 on which the user's " -"account will no longer be accessible. The date may also be expressed in the " -"format YYYY-MM-DD (or the format more commonly used in your area). A user " -"whose account is locked must contact the system administrator before being " -"able to use the system again." -msgstr "" -"Stabilește data sau numărul de zile de la 1 ianuarie 1970 la care contul " -"utilizatorului nu va mai fi accesibil. Data poate fi, de asemenea, exprimată " -"în formatul AAAA-LL-ZZ (sau formatul cel mai frecvent utilizat în zona " -"dumneavoastră). Un utilizator al cărui cont este blocat trebuie să " -"contacteze administratorul sistemului înainte de a putea utiliza din nou " -"sistemul." +msgid "Set the date or number of days since January 1, 1970 on which the user's account will no longer be accessible. The date may also be expressed in the format YYYY-MM-DD (or the format more commonly used in your area). A user whose account is locked must contact the system administrator before being able to use the system again." +msgstr "Stabilește data sau numărul de zile de la 1 ianuarie 1970 la care contul utilizatorului nu va mai fi accesibil. Data poate fi, de asemenea, exprimată în formatul AAAA-LL-ZZ (sau formatul cel mai frecvent utilizat în zona dumneavoastră). Un utilizator al cărui cont este blocat trebuie să contacteze administratorul sistemului înainte de a putea utiliza din nou sistemul." #. (itstool) path: listitem/para #: chage.1.xml.out:100 -msgid "" -"For example the following can be used to set an account to expire in 180 " -"days:" -msgstr "" -"De exemplu, următorul text poate fi utilizat pentru a configura un cont să " -"expire în 180 de zile:" +msgid "For example the following can be used to set an account to expire in 180 days:" +msgstr "De exemplu, următorul text poate fi utilizat pentru a configura un cont să expire în 180 de zile:" #. (itstool) path: listitem/programlisting #: chage.1.xml.out:104 @@ -491,17 +462,14 @@ msgstr "chage -E $(date -d +180days +%Y-%m-%d)" #. (itstool) path: para/replaceable #: chage.1.xml.out:108 chage.1.xml.out:139 chage.1.xml.out:182 #: passwd.1.xml.out:355 useradd.8.xml.out:317 +#| msgid "1" msgid "-1" msgstr "-1" #. (itstool) path: listitem/para #: chage.1.xml.out:107 -msgid "" -"Passing the number <_:emphasis-1/> as the <_:replaceable-2/> will remove an " -"account expiration date." -msgstr "" -"Pasarea numărului <_:emphasis-1/> ca <_:replaceable-2/> va elimina data de " -"expirare a contului." +msgid "Passing the number <_:emphasis-1/> as the <_:replaceable-2/> will remove an account expiration date." +msgstr "Pasarea numărului <_:emphasis-1/> ca <_:replaceable-2/> va elimina data de expirare a contului." #. (itstool) path: term/option #. (itstool) path: para/option @@ -559,6 +527,7 @@ msgstr "--help" #: usermod.8.xml.out:249 usermod.8.xml.out:270 usermod.8.xml.out:316 #: usermod.8.xml.out:404 vipw.8.xml.out:90 vipw.8.xml.out:96 vipw.8.xml.out:102 #: vipw.8.xml.out:108 vipw.8.xml.out:127 vipw.8.xml.out:133 +#| msgid ", " msgid "<_:option-1/>, <_:option-2/>" msgstr "„<_:option-1/>”, „<_:option-2/>”" @@ -575,6 +544,7 @@ msgstr "Afișează mesajul de ajutor și iese." #. (itstool) path: term/option #: chage.1.xml.out:121 passwd.1.xml.out:193 +#| msgid "-" msgid "-i" msgstr "-i" @@ -590,6 +560,7 @@ msgstr "La imprimarea datelor, utilizează formatul AAAA-LL-ZZ." #. (itstool) path: term/option #: chage.1.xml.out:128 +#| msgid "-" msgid "-I" msgstr "-I" @@ -611,26 +582,13 @@ msgstr "INACTIVĂ" #. (itstool) path: listitem/para #: chage.1.xml.out:131 -msgid "" -"Set the number of days of inactivity after a password has expired before the " -"account is locked. The <_:replaceable-1/> option is the number of days of " -"inactivity. A user whose account is locked must contact the system " -"administrator before being able to use the system again." -msgstr "" -"Stabilește numărul de zile de inactivitate după expirarea unei parole " -"înainte ca contul să fie blocat. Opțiunea <_:replaceable-1/> este numărul de " -"zile de inactivitate. Un utilizator al cărui cont este blocat trebuie să " -"contacteze administratorul de sistem înainte de a putea utiliza din nou " -"sistemul." +msgid "Set the number of days of inactivity after a password has expired before the account is locked. The <_:replaceable-1/> option is the number of days of inactivity. A user whose account is locked must contact the system administrator before being able to use the system again." +msgstr "Stabilește numărul de zile de inactivitate după expirarea unei parole înainte ca contul să fie blocat. Opțiunea <_:replaceable-1/> este numărul de zile de inactivitate. Un utilizator al cărui cont este blocat trebuie să contacteze administratorul de sistem înainte de a putea utiliza din nou sistemul." #. (itstool) path: listitem/para #: chage.1.xml.out:138 -msgid "" -"Passing the number <_:emphasis-1/> as the <_:replaceable-2/> will remove an " -"account's inactivity." -msgstr "" -"Pasarea numărului <_:emphasis-1/> ca <_:replaceable-2/> va elimina " -"inactivitatea unui cont." +msgid "Passing the number <_:emphasis-1/> as the <_:replaceable-2/> will remove an account's inactivity." +msgstr "Pasarea numărului <_:emphasis-1/> ca <_:replaceable-2/> va elimina inactivitatea unui cont." #. (itstool) path: term/option #. (itstool) path: para/option @@ -661,6 +619,7 @@ msgstr "Afișează informații despre datele de vechime ale contului." #: faillog.8.xml.out:185 faillog.8.xml.out:202 su.1.xml.out:207 #: useradd.8.xml.out:289 useradd.8.xml.out:352 useradd.8.xml.out:478 #: usermod.8.xml.out:119 usermod.8.xml.out:250 +#| msgid "-" msgid "-m" msgstr "-m" @@ -678,19 +637,14 @@ msgstr "MIN_ZILE" #. (itstool) path: listitem/para #: chage.1.xml.out:160 passwd.1.xml.out:245 -msgid "" -"Set the minimum number of days between password changes to <_:replaceable-1/" -">. A value of zero for this field indicates that the user may change their " -"password at any time." -msgstr "" -"Stabilește numărul minim de zile dintre schimbările de parolă la <_:" -"replaceable-1/>. O valoare de zero pentru acest câmp indică faptul că " -"utilizatorul își poate schimba parola în orice moment." +msgid "Set the minimum number of days between password changes to <_:replaceable-1/>. A value of zero for this field indicates that the user may change their password at any time." +msgstr "Stabilește numărul minim de zile dintre schimbările de parolă la <_:replaceable-1/>. O valoare de zero pentru acest câmp indică faptul că utilizatorul își poate schimba parola în orice moment." #. (itstool) path: term/option #. (itstool) path: para/option #: chage.1.xml.out:169 gpasswd.1.xml.out:83 gpasswd.1.xml.out:114 #: gpasswd.1.xml.out:219 useradd.8.xml.out:162 useradd.8.xml.out:375 +#| msgid "-" msgid "-M" msgstr "-M" @@ -709,33 +663,19 @@ msgstr "MAX_ZILE" #. (itstool) path: para/option #. (itstool) path: term/option #: chage.1.xml.out:178 chage.1.xml.out:218 usermod.8.xml.out:481 +#| msgid "-" msgid "-W" msgstr "-W" #. (itstool) path: listitem/para #: chage.1.xml.out:172 -msgid "" -"Set the maximum number of days during which a password is valid. When <_:" -"replaceable-1/> plus <_:replaceable-2/> is less than the current day, the " -"user will be required to change their password before being able to use " -"their account. This occurrence can be planned for in advance by use of the " -"<_:option-3/> option, which provides the user with advance warning." -msgstr "" -"Stabilește numărul maxim de zile în care o parolă este valabilă. Atunci când " -"<_:replaceable-1/> plus <_:replaceable-2/> este mai mic decât ziua curentă, " -"utilizatorului i se va cere să își schimbe parola înainte de a-și putea " -"utiliza contul. Această situație poate fi planificată în avans prin " -"utilizarea opțiunii „<_:option-3/>”, care oferă utilizatorului un " -"avertisment în acest sens." +msgid "Set the maximum number of days during which a password is valid. When <_:replaceable-1/> plus <_:replaceable-2/> is less than the current day, the user will be required to change their password before being able to use their account. This occurrence can be planned for in advance by use of the <_:option-3/> option, which provides the user with advance warning." +msgstr "Stabilește numărul maxim de zile în care o parolă este valabilă. Atunci când <_:replaceable-1/> plus <_:replaceable-2/> este mai mic decât ziua curentă, utilizatorului i se va cere să își schimbe parola înainte de a-și putea utiliza contul. Această situație poate fi planificată în avans prin utilizarea opțiunii „<_:option-3/>”, care oferă utilizatorului un avertisment în acest sens." #. (itstool) path: listitem/para #: chage.1.xml.out:181 passwd.1.xml.out:354 -msgid "" -"Passing the number <_:emphasis-1/> as <_:replaceable-2/> will remove " -"checking a password's validity." -msgstr "" -"Pasarea numărului <_:emphasis-1/> ca <_:replaceable-2/> va elimina " -"verificarea validității unei parole." +msgid "Passing the number <_:emphasis-1/> as <_:replaceable-2/> will remove checking a password's validity." +msgstr "Pasarea numărului <_:emphasis-1/> ca <_:replaceable-2/> va elimina verificarea validității unei parole." #. (itstool) path: term/option #: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:129 @@ -745,6 +685,7 @@ msgstr "" #: lastlog.8.xml.out:104 newusers.8.xml.out:308 passwd.1.xml.out:274 #: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:491 #: userdel.8.xml.out:123 usermod.8.xml.out:328 vipw.8.xml.out:115 +#| msgid "-" msgid "-R" msgstr "-R" @@ -793,19 +734,14 @@ msgstr "DIR_CHROOT" #: lastlog.8.xml.out:107 newusers.8.xml.out:311 passwd.1.xml.out:277 #: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:494 #: userdel.8.xml.out:126 usermod.8.xml.out:331 vipw.8.xml.out:118 -msgid "" -"Apply changes in the <_:replaceable-1/> directory and use the configuration " -"files from the <_:replaceable-2/> directory. Only absolute paths are " -"supported." -msgstr "" -"Aplică modificările în directorul <_:replaceable-1/> și utilizează fișierele " -"de configurare din directorul <_:replaceable-2/>. Sunt acceptate numai " -"rutele absolute." +msgid "Apply changes in the <_:replaceable-1/> directory and use the configuration files from the <_:replaceable-2/> directory. Only absolute paths are supported." +msgstr "Aplică modificările în directorul <_:replaceable-1/> și utilizează fișierele de configurare din directorul <_:replaceable-2/>. Sunt acceptate numai rutele absolute." #. (itstool) path: term/option #: chage.1.xml.out:203 chpasswd.8.xml.out:184 groupadd.8.xml.out:214 #: groupdel.8.xml.out:102 groupmod.8.xml.out:177 passwd.1.xml.out:287 #: useradd.8.xml.out:504 userdel.8.xml.out:136 usermod.8.xml.out:341 +#| msgid "-" msgid "-P" msgstr "-P" @@ -831,19 +767,8 @@ msgstr "DIR_PREFIX" #. (itstool) path: listitem/para #: chage.1.xml.out:206 chpasswd.8.xml.out:187 groupadd.8.xml.out:217 #: passwd.1.xml.out:290 useradd.8.xml.out:507 -msgid "" -"Apply changes to configuration files under the root filesystem found under " -"the directory <_:replaceable-1/>. This option does not chroot and is " -"intended for preparing a cross-compilation target. Some limitations: NIS and " -"LDAP users/groups are not verified. PAM authentication is using the host " -"files. No SELINUX support." -msgstr "" -"Aplică modificările la fișierele de configurare din sistemul de fișiere " -"rădăcină aflat în directorul <_:replaceable-1/>. Această opțiune nu face " -"chroot și este destinată pregătirii unei ținte de multicompilare (cross-" -"compilation). Unele limitări: Utilizatorii/grupurile NIS și LDAP nu sunt " -"verificate. Autentificarea PAM utilizează fișierele gazdă. Nu există suport " -"pentru SELinux." +msgid "Apply changes to configuration files under the root filesystem found under the directory <_:replaceable-1/>. This option does not chroot and is intended for preparing a cross-compilation target. Some limitations: NIS and LDAP users/groups are not verified. PAM authentication is using the host files. No SELINUX support." +msgstr "Aplică modificările la fișierele de configurare din sistemul de fișiere rădăcină aflat în directorul <_:replaceable-1/>. Această opțiune nu face chroot și este destinată pregătirii unei ținte de multicompilare (cross-compilation). Unele limitări: Utilizatorii/grupurile NIS și LDAP nu sunt verificate. Autentificarea PAM utilizează fișierele gazdă. Nu există suport pentru SELinux." #. (itstool) path: term/option #: chage.1.xml.out:218 passwd.1.xml.out:333 @@ -859,15 +784,8 @@ msgstr "ZILE_AVERTIZARE" #. (itstool) path: listitem/para #: chage.1.xml.out:221 -msgid "" -"Set the number of days of warning before a password change is required. The " -"<_:replaceable-1/> option is the number of days prior to the password " -"expiring that a user will be warned their password is about to expire." -msgstr "" -"Stabilește numărul de zile de avertizare înainte de a fi necesară schimbarea " -"parolei. Opțiunea <_:replaceable-1/> este numărul de zile înainte de " -"expirarea parolei în care un utilizator va fi avertizat că parola sa este pe " -"cale să expire." +msgid "Set the number of days of warning before a password change is required. The <_:replaceable-1/> option is the number of days prior to the password expiring that a user will be warned their password is about to expire." +msgstr "Stabilește numărul de zile de avertizare înainte de a fi necesară schimbarea parolei. Opțiunea <_:replaceable-1/> este numărul de zile înainte de expirarea parolei în care un utilizator va fi avertizat că parola sa este pe cale să expire." #. (itstool) path: para/emphasis #: chage.1.xml.out:235 chfn.1.xml.out:163 chsh.1.xml.out:112 @@ -876,18 +794,8 @@ msgstr "[ ]" #. (itstool) path: refsect1/para #: chage.1.xml.out:230 -msgid "" -"If none of the options are selected, <_:command-1/> operates in an " -"interactive fashion, prompting the user with the current values for all of " -"the fields. Enter the new value to change the field, or leave the line blank " -"to use the current value. The current value is displayed between a pair of " -"<_:emphasis-2/> marks." -msgstr "" -"Dacă nu este selectată niciuna dintre opțiuni, <_:command-1/> funcționează " -"într-un mod interactiv, solicitând utilizatorului valorile curente pentru " -"toate câmpurile. Introduceți noua valoare pentru a modifica câmpul sau " -"lăsați linia goală pentru a utiliza valoarea curentă. Valoarea curentă este " -"afișată între o pereche de paranteze drepte <_:emphasis-2/>." +msgid "If none of the options are selected, <_:command-1/> operates in an interactive fashion, prompting the user with the current values for all of the fields. Enter the new value to change the field, or leave the line blank to use the current value. The current value is displayed between a pair of <_:emphasis-2/> marks." +msgstr "Dacă nu este selectată niciuna dintre opțiuni, <_:command-1/> funcționează într-un mod interactiv, solicitând utilizatorului valorile curente pentru toate câmpurile. Introduceți noua valoare pentru a modifica câmpul sau lăsați linia goală pentru a utiliza valoarea curentă. Valoarea curentă este afișată între o pereche de paranteze drepte <_:emphasis-2/>." #. (itstool) path: refsect1/title #: chage.1.xml.out:239 chsh.1.xml.out:117 groups.1.xml.out:65 @@ -897,25 +805,13 @@ msgstr "NOTĂ" #. (itstool) path: refsect1/para #: chage.1.xml.out:240 -msgid "" -"The <_:command-1/> program requires a shadow password file to be available." -msgstr "" -"Programul <_:command-1/> necesită ca fișierul de parole shadow să fie " -"disponibil." +msgid "The <_:command-1/> program requires a shadow password file to be available." +msgstr "Programul <_:command-1/> necesită ca fișierul de parole shadow să fie disponibil." #. (itstool) path: refsect1/para #: chage.1.xml.out:244 -msgid "" -"The chage program will report only the information from the shadow password " -"file. This implies that configuration from other sources (e.g. LDAP or empty " -"password hash field from the passwd file) that affect the user's login will " -"not be shown in the chage output." -msgstr "" -"Programul «chage» va raporta numai informațiile din fișierul de parole " -"shadow. Acest lucru implică faptul ca configurația din alte surse (de " -"exemplu, LDAP sau câmpul „hash” gol al parolei din fișierul „passwd”) care " -"afectează autentificarea utilizatorului nu va fi afișată în rezultatul de " -"ieșire al programului «chage»." +msgid "The chage program will report only the information from the shadow password file. This implies that configuration from other sources (e.g. LDAP or empty password hash field from the passwd file) that affect the user's login will not be shown in the chage output." +msgstr "Programul «chage» va raporta numai informațiile din fișierul de parole shadow. Acest lucru implică faptul ca configurația din alte surse (de exemplu, LDAP sau câmpul „hash” gol al parolei din fișierul „passwd”) care afectează autentificarea utilizatorului nu va fi afișată în rezultatul de ieșire al programului «chage»." #. (itstool) path: para/command #. (itstool) path: citerefentry/refentrytitle @@ -933,26 +829,13 @@ msgstr "pwck" #. (itstool) path: refsect1/para #: chage.1.xml.out:250 -msgid "" -"The <_:command-1/> program will also not report any inconsistency between " -"the shadow and passwd files (e.g. missing x in the passwd file). The <_:" -"command-2/> can be used to check for this kind of inconsistencies." -msgstr "" -"De asemenea, programul <_:command-1/> nu va semnala nicio neconcordanță " -"între fișierele shadow și passwd (de exemplu, x lipsă în fișierul passwd). " -"Programul <_:command-2/> poate fi utilizat pentru a verifica acest tip de " -"neconcordanțe." +msgid "The <_:command-1/> program will also not report any inconsistency between the shadow and passwd files (e.g. missing x in the passwd file). The <_:command-2/> can be used to check for this kind of inconsistencies." +msgstr "De asemenea, programul <_:command-1/> nu va semnala nicio neconcordanță între fișierele shadow și passwd (de exemplu, x lipsă în fișierul passwd). Programul <_:command-2/> poate fi utilizat pentru a verifica acest tip de neconcordanțe." #. (itstool) path: refsect1/para #: chage.1.xml.out:256 -msgid "" -"The <_:command-1/> command is restricted to the root user, except for the <_:" -"option-2/> option, which may be used by an unprivileged user to determine " -"when their password or account is due to expire." -msgstr "" -"Comanda <_:command-1/> este limitată la utilizatorul root, cu excepția " -"opțiunii „<_:option-2/>”, care poate fi utilizată de un utilizator " -"neprivilegiat pentru a determina când expiră parola sau contul său." +msgid "The <_:command-1/> command is restricted to the root user, except for the <_:option-2/> option, which may be used by an unprivileged user to determine when their password or account is due to expire." +msgstr "Comanda <_:command-1/> este limitată la utilizatorul root, cu excepția opțiunii „<_:option-2/>”, care poate fi utilizată de un utilizator neprivilegiat pentru a determina când expiră parola sau contul său." #. (itstool) path: refsect1/title #: chage.1.xml.out:264 chfn.1.xml.out:170 chgpasswd.8.xml.out:201 @@ -1004,12 +887,8 @@ msgstr "„/etc/login.defs”" #: passwd.1.xml.out:395 pwck.8.xml.out:241 sg.1.xml.out:75 su.1.xml.out:315 #: useradd.8.xml.out:731 userdel.8.xml.out:166 usermod.8.xml.out:554 #: vipw.8.xml.out:143 -msgid "" -"The following configuration variables in <_:filename-1/> change the behavior " -"of this tool:" -msgstr "" -"Următoarele variabile de configurare din <_:filename-1/> modifică " -"comportamentul acestui instrument:" +msgid "The following configuration variables in <_:filename-1/> change the behavior of this tool:" +msgstr "Următoarele variabile de configurare din <_:filename-1/> modifică comportamentul acestui instrument:" #. (itstool) path: refsect1/title #: chage.1.xml.out:276 chfn.1.xml.out:184 chgpasswd.8.xml.out:218 @@ -1132,9 +1011,7 @@ msgstr "nu se poate găsi fișierul de parole shadow" #: chage.1.xml.out:299 groupadd.8.xml.out:299 groupdel.8.xml.out:164 #: groupmod.8.xml.out:255 grpck.8.xml.out:233 passwd.1.xml.out:443 #: pwck.8.xml.out:283 useradd.8.xml.out:827 userdel.8.xml.out:231 -msgid "" -"The <_:command-1/> command exits with the following values: <_:" -"variablelist-2/>" +msgid "The <_:command-1/> command exits with the following values: <_:variablelist-2/>" msgstr "Comanda <_:command-1/> iese cu următoarele valori: <_:variablelist-2/>" #. (itstool) path: refsect1/title @@ -1269,31 +1146,14 @@ msgstr "finger" #: groupadd.8.xml.out:145 groupadd.8.xml.out:323 groupmod.8.xml.out:93 #: groupmod.8.xml.out:132 useradd.8.xml.out:407 useradd.8.xml.out:538 #: useradd.8.xml.out:857 usermod.8.xml.out:271 usermod.8.xml.out:377 +#| msgid "-" msgid "-o" msgstr "-o" #. (itstool) path: refsect1/para #: chfn.1.xml.out:61 -msgid "" -"The <_:command-1/> command changes user fullname, office room number, office " -"phone number, and home phone number information for a user's account. This " -"information is typically printed by <_:citerefentry-2/> and similar " -"programs. A normal user may only change the fields for her own account, " -"subject to the restrictions in <_:filename-3/>. (The default configuration " -"is to prevent users from changing their fullname.) The superuser may change " -"any field for any account. Additionally, only the superuser may use the <_:" -"option-4/> option to change the undefined portions of the GECOS field." -msgstr "" -"Comanda <_:command-1/> modifică numele complet al utilizatorului, numărul " -"camerei de birou, numărul de telefon de la birou și numărul de telefon de " -"acasă pentru contul unui utilizator. Aceste informații sunt în general " -"afișate de <_:citerefentry-2/> și programe similare. Un utilizator normal " -"poate modifica câmpurile doar pentru propriul său cont, în conformitate cu " -"restricțiile din „/etc/login.defs”. Configurația implicită este de a " -"împiedica utilizatorii să își schimbe numele complet. Superutilizatorul " -"poate modifica orice câmp pentru orice cont. În plus, numai " -"superutilizatorul poate utiliza opțiunea -o pentru a modifica porțiunile " -"nedefinite ale câmpului GECOS." +msgid "The <_:command-1/> command changes user fullname, office room number, office phone number, and home phone number information for a user's account. This information is typically printed by <_:citerefentry-2/> and similar programs. A normal user may only change the fields for her own account, subject to the restrictions in <_:filename-3/>. (The default configuration is to prevent users from changing their fullname.) The superuser may change any field for any account. Additionally, only the superuser may use the <_:option-4/> option to change the undefined portions of the GECOS field." +msgstr "Comanda <_:command-1/> modifică numele complet al utilizatorului, numărul camerei de birou, numărul de telefon de la birou și numărul de telefon de acasă pentru contul unui utilizator. Aceste informații sunt în general afișate de <_:citerefentry-2/> și programe similare. Un utilizator normal poate modifica câmpurile doar pentru propriul său cont, în conformitate cu restricțiile din „/etc/login.defs”. Configurația implicită este de a împiedica utilizatorii să își schimbe numele complet. Superutilizatorul poate modifica orice câmp pentru orice cont. În plus, numai superutilizatorul poate utiliza opțiunea -o pentru a modifica porțiunile nedefinite ale câmpului GECOS." #. (itstool) path: para/emphasis #: chfn.1.xml.out:77 chfn.1.xml.out:80 @@ -1302,18 +1162,8 @@ msgstr "diverse" #. (itstool) path: refsect1/para #: chfn.1.xml.out:75 -msgid "" -"These fields must not contain any colons. Except for the <_:emphasis-1/> " -"field, they should not contain any comma or equal sign. It is also " -"recommended to avoid non-US-ASCII characters, but this is only enforced for " -"the phone numbers. The <_:emphasis-2/> field is used to store accounting " -"information used by other applications." -msgstr "" -"Aceste câmpuri nu trebuie să conțină două puncte. Cu excepția câmpului <_:" -"emphasis-1/>, acestea nu trebuie să conțină nicio virgulă sau semn egal. De " -"asemenea, se recomandă evitarea caracterelor non-US-ASCII, dar acest lucru " -"este impus doar pentru numerele de telefon. Câmpul <_:emphasis-2/> este " -"utilizat pentru a stoca informații despre cont utilizate de alte aplicații." +msgid "These fields must not contain any colons. Except for the <_:emphasis-1/> field, they should not contain any comma or equal sign. It is also recommended to avoid non-US-ASCII characters, but this is only enforced for the phone numbers. The <_:emphasis-2/> field is used to store accounting information used by other applications." +msgstr "Aceste câmpuri nu trebuie să conțină două puncte. Cu excepția câmpului <_:emphasis-1/>, acestea nu trebuie să conțină nicio virgulă sau semn egal. De asemenea, se recomandă evitarea caracterelor non-US-ASCII, dar acest lucru este impus doar pentru numerele de telefon. Câmpul <_:emphasis-2/> este utilizat pentru a stoca informații despre cont utilizate de alte aplicații." #. (itstool) path: term/option #. (itstool) path: para/option @@ -1368,14 +1218,8 @@ msgstr "DIVERSE" #. (itstool) path: listitem/para #: chfn.1.xml.out:113 -msgid "" -"Change the user's other GECOS information. This field is used to store " -"accounting information used by other applications, and can be changed only " -"by a superuser." -msgstr "" -"Modifică alte informații GECOS ale utilizatorului. Acest câmp este utilizat " -"pentru a stoca informații despre cont utilizate de alte aplicații și poate " -"fi modificat numai de către superutilizator." +msgid "Change the user's other GECOS information. This field is used to store accounting information used by other applications, and can be changed only by a superuser." +msgstr "Modifică alte informații GECOS ale utilizatorului. Acest câmp este utilizat pentru a stoca informații despre cont utilizate de alte aplicații și poate fi modificat numai de către superutilizator." #. (itstool) path: term/option #. (itstool) path: para/option @@ -1411,11 +1255,13 @@ msgstr "Modifică numărul camerei utilizatorului." #: lastlog.8.xml.out:139 passwd.1.xml.out:320 useradd.8.xml.out:416 #: useradd.8.xml.out:533 usermod.8.xml.out:279 usermod.8.xml.out:369 #: vipw.8.xml.out:133 +#| msgid "-" msgid "-u" msgstr "-u" #. (itstool) path: term/option #: chfn.1.xml.out:151 passwd.1.xml.out:333 usermod.8.xml.out:463 +#| msgid "-" msgid "-w" msgstr "-w" @@ -1436,20 +1282,8 @@ msgstr "Modifică numărul de telefon de la birou al utilizatorului." #. (itstool) path: refsect1/para #: chfn.1.xml.out:158 -msgid "" -"If none of the options are selected, <_:command-1/> operates in an " -"interactive fashion, prompting the user with the current values for all of " -"the fields. Enter the new value to change the field, or leave the line blank " -"to use the current value. The current value is displayed between a pair of " -"<_:emphasis-2/> marks. Without options, <_:command-3/> prompts for the " -"current user account." -msgstr "" -"Dacă nu este selectată niciuna dintre opțiuni, <_:command-1/> funcționează " -"într-un mod interactiv, solicitând utilizatorului valorile curente pentru " -"toate câmpurile. Introduceți noua valoare pentru a modifica câmpul sau " -"lăsați linia goală pentru a utiliza valoarea curentă. Valoarea curentă este " -"afișată între o pereche de paranteze drepte <_:emphasis-2/>. Fără opțiuni, " -"<_:command-3/> solicită contul de utilizator curent." +msgid "If none of the options are selected, <_:command-1/> operates in an interactive fashion, prompting the user with the current values for all of the fields. Enter the new value to change the field, or leave the line blank to use the current value. The current value is displayed between a pair of <_:emphasis-2/> marks. Without options, <_:command-3/> prompts for the current user account." +msgstr "Dacă nu este selectată niciuna dintre opțiuni, <_:command-1/> funcționează într-un mod interactiv, solicitând utilizatorului valorile curente pentru toate câmpurile. Introduceți noua valoare pentru a modifica câmpul sau lăsați linia goală pentru a utiliza valoarea curentă. Valoarea curentă este afișată între o pereche de paranteze drepte <_:emphasis-2/>. Fără opțiuni, <_:command-3/> solicită contul de utilizator curent." #. (itstool) path: listitem/para #: chfn.1.xml.out:189 chgpasswd.8.xml.out:235 chpasswd.8.xml.out:291 @@ -1567,14 +1401,8 @@ msgstr "actualizează parolele de grup în modul de procesare pe loturi" #. (itstool) path: refsect1/para #: chgpasswd.8.xml.out:57 -msgid "" -"The <_:command-1/> command reads a list of group name and password pairs " -"from standard input and uses this information to update a set of existing " -"groups. Each line is of the format:" -msgstr "" -"Comanda <_:command-1/> citește o listă de perechi de nume de grup și parole " -"de la intrarea standard și utilizează aceste informații pentru a actualiza " -"un set de grupuri existente. Fiecare linie are formatul:" +msgid "The <_:command-1/> command reads a list of group name and password pairs from standard input and uses this information to update a set of existing groups. Each line is of the format:" +msgstr "Comanda <_:command-1/> citește o listă de perechi de nume de grup și parole de la intrarea standard și utilizează aceste informații pentru a actualiza un set de grupuri existente. Fiecare linie are formatul:" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable @@ -1597,12 +1425,8 @@ msgstr "<_:emphasis-1/>:<_:emphasis-2/>" #. (itstool) path: refsect1/para #: chgpasswd.8.xml.out:66 -msgid "" -"By default the supplied password must be in clear-text, and is encrypted by " -"<_:command-1/>." -msgstr "" -"În mod implicit, parola furnizată trebuie să fie în text clar și este " -"criptată de <_:command-1/>." +msgid "By default the supplied password must be in clear-text, and is encrypted by <_:command-1/>." +msgstr "În mod implicit, parola furnizată trebuie să fie în text clar și este criptată de <_:command-1/>." #. (itstool) path: para/option #: chgpasswd.8.xml.out:72 chpasswd.8.xml.out:77 chpasswd.8.xml.out:138 @@ -1616,6 +1440,7 @@ msgstr "METODĂ_CRIPTARE" #: chpasswd.8.xml.out:86 chpasswd.8.xml.out:136 chpasswd.8.xml.out:145 #: passwd.1.xml.out:176 useradd.8.xml.out:179 useradd.8.xml.out:630 #: usermod.8.xml.out:129 +#| msgid "-" msgid "-e" msgstr "-e" @@ -1632,23 +1457,13 @@ msgstr "-c" #. (itstool) path: refsect1/para #: chgpasswd.8.xml.out:70 -msgid "" -"The default encryption algorithm can be defined for the system with the <_:" -"option-1/> variable of <_:filename-2/>, and can be overwritten with the <_:" -"option-3/>, <_:option-4/>, or <_:option-5/> options." -msgstr "" -"Algoritmul de criptare implicit poate fi definit pentru sistem cu variabila " -"„<_:option-1/>” din <_:filename-2/> și poate fi suprascris cu opțiunile „<_:" -"option-3/>”, „<_:option-4/>” sau „<_:option-5/>”." +msgid "The default encryption algorithm can be defined for the system with the <_:option-1/> variable of <_:filename-2/>, and can be overwritten with the <_:option-3/>, <_:option-4/>, or <_:option-5/> options." +msgstr "Algoritmul de criptare implicit poate fi definit pentru sistem cu variabila „<_:option-1/>” din <_:filename-2/> și poate fi suprascris cu opțiunile „<_:option-3/>”, „<_:option-4/>” sau „<_:option-5/>”." #. (itstool) path: refsect1/para #: chgpasswd.8.xml.out:76 chpasswd.8.xml.out:101 -msgid "" -"This command is intended to be used in a large system environment where many " -"accounts are created at a single time." -msgstr "" -"Această comandă este destinată a fi utilizată într-un mediu de sistem mare, " -"în care sunt create mai multe conturi simultan." +msgid "This command is intended to be used in a large system environment where many accounts are created at a single time." +msgstr "Această comandă este destinată a fi utilizată într-un mediu de sistem mare, în care sunt create mai multe conturi simultan." #. (itstool) path: term/option #: chgpasswd.8.xml.out:90 chpasswd.8.xml.out:116 newusers.8.xml.out:270 @@ -1701,6 +1516,7 @@ msgstr ", <_:replaceable-1/>, <_:replaceable-2/>" #. (itstool) path: phrase/replaceable #: chgpasswd.8.xml.out:100 chgpasswd.8.xml.out:154 chpasswd.8.xml.out:127 #: chpasswd.8.xml.out:213 newusers.8.xml.out:335 +#| msgid "DESCRIPTION" msgid "YESCRYPT" msgstr "YESCRYPT" @@ -1716,14 +1532,8 @@ msgstr "NICIUNA" #. (itstool) path: listitem/para #: chgpasswd.8.xml.out:93 chpasswd.8.xml.out:120 -msgid "" -"The available methods are <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/" -"><_:phrase-4/><_:phrase-5/> and <_:replaceable-6/> if your libc supports " -"these methods." -msgstr "" -"Metodele disponibile sunt <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/" -"><_:phrase-4/><_:phrase-5/> și <_:replaceable-6/> dacă biblioteca dvs. " -"„libc” acceptă aceste metode." +msgid "The available methods are <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/><_:phrase-4/><_:phrase-5/> and <_:replaceable-6/> if your libc supports these methods." +msgstr "Metodele disponibile sunt <_:phrase-1/> <_:replaceable-2/>, <_:replaceable-3/><_:phrase-4/><_:phrase-5/> și <_:replaceable-6/> dacă biblioteca dvs. „libc” acceptă aceste metode." #. (itstool) path: term/option #: chgpasswd.8.xml.out:107 chpasswd.8.xml.out:145 @@ -1742,12 +1552,8 @@ msgstr "--md5" #. (itstool) path: listitem/para #: chgpasswd.8.xml.out:121 chpasswd.8.xml.out:163 -msgid "" -"Use MD5 encryption instead of DES when the supplied passwords are not " -"encrypted." -msgstr "" -"Utilizează criptarea MD5 în loc de DES atunci când parolele furnizate nu " -"sunt criptate." +msgid "Use MD5 encryption instead of DES when the supplied passwords are not encrypted." +msgstr "Utilizează criptarea MD5 în loc de DES atunci când parolele furnizate nu sunt criptate." #. (itstool) path: term/option #. (itstool) path: para/option @@ -1757,6 +1563,7 @@ msgstr "" #: pwck.8.xml.out:209 su.1.xml.out:163 useradd.8.xml.out:519 #: useradd.8.xml.out:675 usermod.8.xml.out:357 vipw.8.xml.out:70 #: vipw.8.xml.out:127 +#| msgid "-" msgid "-s" msgstr "-s" @@ -1772,66 +1579,38 @@ msgstr "Utilizează numărul specificat de runde pentru a cripta parolele." #. (itstool) path: listitem/para #: chgpasswd.8.xml.out:146 chpasswd.8.xml.out:205 newusers.8.xml.out:327 -msgid "" -"You can only use this option with crypt method: <_:phrase-1/> <_:phrase-2/> " -"<_:phrase-3/>" -msgstr "" -"Puteți utiliza această opțiune numai cu metoda de criptare: <_:phrase-1/> <_:" -"phrase-2/> <_:phrase-3/>" +msgid "You can only use this option with crypt method: <_:phrase-1/> <_:phrase-2/> <_:phrase-3/>" +msgstr "Puteți utiliza această opțiune numai cu metoda de criptare: <_:phrase-1/> <_:phrase-2/> <_:phrase-3/>" #. (itstool) path: listitem/para #: chgpasswd.8.xml.out:156 chpasswd.8.xml.out:215 newusers.8.xml.out:337 -msgid "" -"By default, the number of rounds for BCRYPT is defined by the " -"BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in <_:filename-1/>." -msgstr "" -"În mod implicit, numărul de runde pentru BCRYPT este definit de variabilele " -"BCRYPT_MIN_ROUNDS și BCRYPT_MAX_ROUNDS din <_:filename-1/>." +msgid "By default, the number of rounds for BCRYPT is defined by the BCRYPT_MIN_ROUNDS and BCRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgstr "În mod implicit, numărul de runde pentru BCRYPT este definit de variabilele BCRYPT_MIN_ROUNDS și BCRYPT_MAX_ROUNDS din <_:filename-1/>." #. (itstool) path: listitem/para #: chgpasswd.8.xml.out:161 chpasswd.8.xml.out:220 -msgid "" -"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " -"The default number of rounds is 13." -msgstr "" -"O valoare minimă de 4 și o valoare maximă de 31 vor fi aplicate pentru " -"BCRYPT. Numărul implicit de runde este 13." +msgid "A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. The default number of rounds is 13." +msgstr "O valoare minimă de 4 și o valoare maximă de 31 vor fi aplicate pentru BCRYPT. Numărul implicit de runde este 13." #. (itstool) path: listitem/para #: chgpasswd.8.xml.out:165 chpasswd.8.xml.out:224 newusers.8.xml.out:346 -msgid "" -"By default, the number of rounds for SHA256 or SHA512 is defined by the " -"SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." -msgstr "" -"În mod implicit, numărul de runde pentru SHA256 sau SHA512 este definit de " -"variabilele SHA_CRYPT_MIN_ROUNDS și SHA_CRYPT_MAX_ROUNDS din <_:filename-1/>." +msgid "By default, the number of rounds for SHA256 or SHA512 is defined by the SHA_CRYPT_MIN_ROUNDS and SHA_CRYPT_MAX_ROUNDS variables in <_:filename-1/>." +msgstr "În mod implicit, numărul de runde pentru SHA256 sau SHA512 este definit de variabilele SHA_CRYPT_MIN_ROUNDS și SHA_CRYPT_MAX_ROUNDS din <_:filename-1/>." #. (itstool) path: listitem/para #: chgpasswd.8.xml.out:170 chpasswd.8.xml.out:229 -msgid "" -"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " -"for SHA256 and SHA512. The default number of rounds is 5000." -msgstr "" -"O valoare minimă de 1000 și o valoare maximă de 999.999.999 vor fi aplicate " -"pentru SHA256 și SHA512. Numărul implicit de runde este 5000." +msgid "A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512. The default number of rounds is 5000." +msgstr "O valoare minimă de 1000 și o valoare maximă de 999.999.999 vor fi aplicate pentru SHA256 și SHA512. Numărul implicit de runde este 5000." #. (itstool) path: listitem/para #: chgpasswd.8.xml.out:175 chpasswd.8.xml.out:234 newusers.8.xml.out:355 -msgid "" -"By default, the number of rounds for YESCRYPT is defined by the " -"YESCRYPT_COST_FACTOR in <_:filename-1/>." -msgstr "" -"În mod implicit, numărul de runde pentru YESCRYPT este definit de " -"YESCRYPT_COST_FACTOR în <_:filename-1/>." +msgid "By default, the number of rounds for YESCRYPT is defined by the YESCRYPT_COST_FACTOR in <_:filename-1/>." +msgstr "În mod implicit, numărul de runde pentru YESCRYPT este definit de YESCRYPT_COST_FACTOR în <_:filename-1/>." #. (itstool) path: listitem/para #: chgpasswd.8.xml.out:179 chpasswd.8.xml.out:238 -msgid "" -"A minimal value of 1 and a maximal value of 11 will be enforced for " -"YESCRYPT. The default number of rounds is 5." -msgstr "" -"O valoare minimă de 1 și o valoare maximă de 11 vor fi aplicate pentru " -"YESCRYPT. Numărul implicit de runde este 5." +msgid "A minimal value of 1 and a maximal value of 11 will be enforced for YESCRYPT. The default number of rounds is 5." +msgstr "O valoare minimă de 1 și o valoare maximă de 11 vor fi aplicate pentru YESCRYPT. Numărul implicit de runde este 5." #. (itstool) path: refsect1/title #: chgpasswd.8.xml.out:189 chpasswd.8.xml.out:248 faillog.8.xml.out:209 @@ -1844,21 +1623,13 @@ msgstr "AVERTISMENTE" #. (itstool) path: refsect1/para #: chgpasswd.8.xml.out:190 chpasswd.8.xml.out:249 -msgid "" -"Remember to set permissions or umask to prevent readability of unencrypted " -"files by other users." -msgstr "" -"Nu uitați să stabiliți permisiuni sau umask pentru a preveni citirea " -"fișierelor necriptate de către alți utilizatori." +msgid "Remember to set permissions or umask to prevent readability of unencrypted files by other users." +msgstr "Nu uitați să stabiliți permisiuni sau umask pentru a preveni citirea fișierelor necriptate de către alți utilizatori." #. (itstool) path: refsect1/para #: chgpasswd.8.xml.out:194 newusers.8.xml.out:374 -msgid "" -"You should make sure the passwords and the encryption method respect the " -"system's password policy." -msgstr "" -"Trebuie să vă asigurați că parolele și metoda de criptare respectă politica " -"de parole a sistemului." +msgid "You should make sure the passwords and the encryption method respect the system's password policy." +msgstr "Trebuie să vă asigurați că parolele și metoda de criptare respectă politica de parole a sistemului." #. (itstool) path: term/filename #. (itstool) path: phrase/filename @@ -1975,14 +1746,8 @@ msgstr "actualizează parolele în modul de procesare pe loturi" #. (itstool) path: refsect1/para #: chpasswd.8.xml.out:61 -msgid "" -"The <_:command-1/> command reads a list of user name and password pairs from " -"standard input and uses this information to update a group of existing " -"users. Each line is of the format:" -msgstr "" -"Comanda <_:command-1/> citește o listă de perechi de nume de utilizator și " -"parole de la intrarea standard și utilizează aceste informații pentru a " -"actualiza un grup de utilizatori existenți. Fiecare linie are formatul:" +msgid "The <_:command-1/> command reads a list of user name and password pairs from standard input and uses this information to update a group of existing users. Each line is of the format:" +msgstr "Comanda <_:command-1/> citește o listă de perechi de nume de utilizator și parole de la intrarea standard și utilizează aceste informații pentru a actualiza un grup de utilizatori existenți. Fiecare linie are formatul:" #. (itstool) path: para/emphasis #. (itstool) path: arg/replaceable @@ -1994,13 +1759,8 @@ msgstr "nume-utilizator" #. (itstool) path: refsect1/para #: chpasswd.8.xml.out:70 -msgid "" -"By default the passwords must be supplied in clear-text, and are encrypted " -"by <_:command-1/>. Also the password age will be updated, if present." -msgstr "" -"În mod implicit, parolele trebuie să fie furnizate în text clar și sunt " -"criptate de <_:command-1/>. De asemenea, vârsta parolei va fi actualizată, " -"dacă este prezentă." +msgid "By default the passwords must be supplied in clear-text, and are encrypted by <_:command-1/>. Also the password age will be updated, if present." +msgstr "În mod implicit, parolele trebuie să fie furnizate în text clar și sunt criptate de <_:command-1/>. De asemenea, vârsta parolei va fi actualizată, dacă este prezentă." #. (itstool) path: para/option #: chpasswd.8.xml.out:78 chpasswd.8.xml.out:139 @@ -2009,55 +1769,28 @@ msgstr "MD5_CRYPT_ENAB" #. (itstool) path: refsect1/para #: chpasswd.8.xml.out:75 -msgid "" -"The default encryption algorithm can be defined for the system with the <_:" -"option-1/> or <_:option-2/> variables of <_:filename-3/>, and can be " -"overwritten with the <_:option-4/>, <_:option-5/>, or <_:option-6/> options." -msgstr "" -"Algoritmul de criptare implicit poate fi definit pentru sistem cu " -"variabilele „<_:option-1/>” sau „<_:option-2/>” din <_:filename-3/> și poate " -"fi suprascris cu opțiunile „<_:option-4/>”, „<_:option-5/>” sau „<_:option-6/" -">”." +msgid "The default encryption algorithm can be defined for the system with the <_:option-1/> or <_:option-2/> variables of <_:filename-3/>, and can be overwritten with the <_:option-4/>, <_:option-5/>, or <_:option-6/> options." +msgstr "Algoritmul de criptare implicit poate fi definit pentru sistem cu variabilele „<_:option-1/>” sau „<_:option-2/>” din <_:filename-3/> și poate fi suprascris cu opțiunile „<_:option-4/>”, „<_:option-5/>” sau „<_:option-6/>”." #. (itstool) path: refsect1/para #: chpasswd.8.xml.out:83 -msgid "" -"By default, passwords are encrypted by PAM, but (even if not recommended) " -"you can select a different encryption method with the <_:option-1/>, <_:" -"option-2/>, or <_:option-3/> options." -msgstr "" -"În mod implicit, parolele sunt criptate de PAM, dar (chiar dacă nu este " -"recomandat) puteți selecta o metodă de criptare diferită cu opțiunile „<_:" -"option-1/>”, „<_:option-2/>”, sau „<_:option-3/>”." +msgid "By default, passwords are encrypted by PAM, but (even if not recommended) you can select a different encryption method with the <_:option-1/>, <_:option-2/>, or <_:option-3/> options." +msgstr "În mod implicit, parolele sunt criptate de PAM, dar (chiar dacă nu este recomandat) puteți selecta o metodă de criptare diferită cu opțiunile „<_:option-1/>”, „<_:option-2/>”, sau „<_:option-3/>”." #. (itstool) path: para/phrase #: chpasswd.8.xml.out:90 msgid "Except when PAM is used to encrypt the passwords," -msgstr "" -"Cu excepția cazului în care PAM este utilizat pentru a cripta parolele," +msgstr "Cu excepția cazului în care PAM este utilizat pentru a cripta parolele," #. (itstool) path: refsect1/para #: chpasswd.8.xml.out:89 -msgid "" -"<_:phrase-1/> <_:command-2/> first updates all the passwords in memory, and " -"then commits all the changes to disk if no errors occurred for any user." -msgstr "" -"<_:phrase-1/> <_:command-2/> actualizează mai întâi toate parolele din " -"memorie și apoi transferă toate modificările pe disc dacă nu au apărut erori " -"pentru niciun utilizator." +msgid "<_:phrase-1/> <_:command-2/> first updates all the passwords in memory, and then commits all the changes to disk if no errors occurred for any user." +msgstr "<_:phrase-1/> <_:command-2/> actualizează mai întâi toate parolele din memorie și apoi transferă toate modificările pe disc dacă nu au apărut erori pentru niciun utilizator." #. (itstool) path: refsect1/para #: chpasswd.8.xml.out:95 -msgid "" -"When PAM is used to encrypt the passwords (and update the passwords in the " -"system database) then if a password cannot be updated <_:command-1/> " -"continues updating the passwords of the next users, and will return an error " -"code on exit." -msgstr "" -"Atunci când PAM este utilizat pentru criptarea parolelor (și actualizarea " -"parolelor în baza de date a sistemului), dacă o parolă nu poate fi " -"actualizată <_:command-1/> continuă actualizarea parolelor următorilor " -"utilizatori și va returna un cod de eroare la ieșire." +msgid "When PAM is used to encrypt the passwords (and update the passwords in the system database) then if a password cannot be updated <_:command-1/> continues updating the passwords of the next users, and will return an error code on exit." +msgstr "Atunci când PAM este utilizat pentru criptarea parolelor (și actualizarea parolelor în baza de date a sistemului), dacă o parolă nu poate fi actualizată <_:command-1/> continuă actualizarea parolelor următorilor utilizatori și va returna un cod de eroare la ieșire." #. (itstool) path: term/replaceable #: chpasswd.8.xml.out:116 @@ -2071,15 +1804,8 @@ msgstr "În mod implicit, PAM este utilizat pentru a cripta parolele." #. (itstool) path: listitem/para #: chpasswd.8.xml.out:134 -msgid "" -"By default (if none of the <_:option-1/>, <_:option-2/>, or <_:option-3/> " -"options are specified), the encryption method is defined by the <_:option-4/" -"> or <_:option-5/> variables of <_:filename-6/>." -msgstr "" -"În mod implicit (dacă nu este specificată niciuna dintre opțiunile „<_:" -"option-1/>”, „<_:option-2/>” sau „<_:option-3/>”), metoda de criptare este " -"definită de variabilele „<_:option-4/>” sau „<_:option-5/>” din <_:" -"filename-6/>." +msgid "By default (if none of the <_:option-1/>, <_:option-2/>, or <_:option-3/> options are specified), the encryption method is defined by the <_:option-4/> or <_:option-5/> variables of <_:filename-6/>." +msgstr "În mod implicit (dacă nu este specificată niciuna dintre opțiunile „<_:option-1/>”, „<_:option-2/>” sau „<_:option-3/>”), metoda de criptare este definită de variabilele „<_:option-4/>” sau „<_:option-5/>” din <_:filename-6/>." #. (itstool) path: term/replaceable #: chpasswd.8.xml.out:199 @@ -2137,10 +1863,8 @@ msgstr "useradd" #. (itstool) path: refsect1/para #: chpasswd.8.xml.out:305 newusers.8.xml.out:472 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>." #. (itstool) path: refnamediv/refpurpose #: chsh.1.xml.out:44 @@ -2149,17 +1873,8 @@ msgstr "schimbă shell-ul de autentificare" #. (itstool) path: refsect1/para #: chsh.1.xml.out:61 -msgid "" -"The <_:command-1/> command changes the user login shell. This determines the " -"name of the user's initial login command. A normal user may only change the " -"login shell for her own account; the superuser may change the login shell " -"for any account." -msgstr "" -"Comanda <_:command-1/> modifică shell-ul de autentificare al utilizatorului. " -"Aceasta determină numele comenzii inițiale de autentificare a " -"utilizatorului. Un utilizator normal poate modifica shell-ul de " -"autentificare numai pentru propriul cont; superutilizatorul poate modifica " -"shell-ul de autentificare pentru orice cont." +msgid "The <_:command-1/> command changes the user login shell. This determines the name of the user's initial login command. A normal user may only change the login shell for her own account; the superuser may change the login shell for any account." +msgstr "Comanda <_:command-1/> modifică shell-ul de autentificare al utilizatorului. Aceasta determină numele comenzii inițiale de autentificare a utilizatorului. Un utilizator normal poate modifica shell-ul de autentificare numai pentru propriul cont; superutilizatorul poate modifica shell-ul de autentificare pentru orice cont." #. (itstool) path: term/option #. (itstool) path: para/option @@ -2178,28 +1893,13 @@ msgstr "SHELL" #. (itstool) path: listitem/para #: chsh.1.xml.out:100 -msgid "" -"The name of the user's new login shell. Setting this field to blank causes " -"the system to select the default login shell." -msgstr "" -"Numele noului shell de autentificare a utilizatorului. Dacă se definește " -"acest câmp ca fiind gol, sistemul selectează shell-ul de autentificare " -"implicit." +msgid "The name of the user's new login shell. Setting this field to blank causes the system to select the default login shell." +msgstr "Numele noului shell de autentificare a utilizatorului. Dacă se definește acest câmp ca fiind gol, sistemul selectează shell-ul de autentificare implicit." #. (itstool) path: refsect1/para #: chsh.1.xml.out:107 -msgid "" -"If the <_:option-1/> option is not selected, <_:command-2/> operates in an " -"interactive fashion, prompting the user with the current login shell. Enter " -"the new value to change the shell, or leave the line blank to use the " -"current one. The current shell is displayed between a pair of <_:emphasis-3/" -"> marks." -msgstr "" -"Dacă opțiunea „<_:option-1/>” nu este selectată, <_:command-2/> funcționează " -"într-un mod interactiv, solicitând utilizatorului shell-ul de autentificare " -"curent. Introduceți noua valoare pentru a schimba shell-ul sau lăsați linia " -"goală pentru a-l utiliza pe cel curent. Shell-ul curent este afișat între o " -"pereche de semne <_:emphasis-3/>." +msgid "If the <_:option-1/> option is not selected, <_:command-2/> operates in an interactive fashion, prompting the user with the current login shell. Enter the new value to change the shell, or leave the line blank to use the current one. The current shell is displayed between a pair of <_:emphasis-3/> marks." +msgstr "Dacă opțiunea „<_:option-1/>” nu este selectată, <_:command-2/> funcționează într-un mod interactiv, solicitând utilizatorului shell-ul de autentificare curent. Introduceți noua valoare pentru a schimba shell-ul sau lăsați linia goală pentru a-l utiliza pe cel curent. Shell-ul curent este afișat între o pereche de semne <_:emphasis-3/>." #. (itstool) path: para/filename #. (itstool) path: term/filename @@ -2215,23 +1915,8 @@ msgstr "/bin/rsh" #. (itstool) path: refsect1/para #: chsh.1.xml.out:118 -msgid "" -"The only restriction placed on the login shell is that the command name must " -"be listed in <_:filename-1/>, unless the invoker is the superuser, and then " -"any value may be added. An account with a restricted login shell may not " -"change her login shell. For this reason, placing <_:filename-2/> in <_:" -"filename-3/> is discouraged since accidentally changing to a restricted " -"shell would prevent the user from ever changing her login shell back to its " -"original value." -msgstr "" -"Singura restricție impusă shell-ului de autentificare este că numele " -"comenzii trebuie să fie listat în <_:filename-1/>, cu excepția cazului în " -"care invocatorul este superutilizatorul, iar atunci poate fi adăugată orice " -"valoare. Un cont cu un shell de autentificare restricționat nu își poate " -"schimba shell-ul de autentificare. Din acest motiv, plasarea <_:filename-2/> " -"în <_:filename-3/> este descurajată, deoarece trecerea accidentală la un " -"shell restricționat ar împiedica utilizatorul să își schimbe vreodată shell-" -"ul de autentificare la valoarea sa inițială." +msgid "The only restriction placed on the login shell is that the command name must be listed in <_:filename-1/>, unless the invoker is the superuser, and then any value may be added. An account with a restricted login shell may not change her login shell. For this reason, placing <_:filename-2/> in <_:filename-3/> is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value." +msgstr "Singura restricție impusă shell-ului de autentificare este că numele comenzii trebuie să fie listat în <_:filename-1/>, cu excepția cazului în care invocatorul este superutilizatorul, iar atunci poate fi adăugată orice valoare. Un cont cu un shell de autentificare restricționat nu își poate schimba shell-ul de autentificare. Din acest motiv, plasarea <_:filename-2/> în <_:filename-3/> este descurajată, deoarece trecerea accidentală la un shell restricționat ar împiedica utilizatorul să își schimbe vreodată shell-ul de autentificare la valoarea sa inițială." #. (itstool) path: para/filename #. (itstool) path: term/filename @@ -2246,6 +1931,7 @@ msgstr "%vendordir%/shells.d/*" #. (itstool) path: para/filename #: chsh.1.xml.out:134 +#| msgid "/etc/skel/" msgid "/etc/shells.d/*" msgstr "/etc/shells.d/*" @@ -2261,35 +1947,13 @@ msgstr "%vendordir%/shells.d/@filename@" #. (itstool) path: refsect1/para #: chsh.1.xml.out:128 -msgid "" -"The only restriction placed on the login shell is that the command name must " -"be listed in <_:filename-1/>. If this file does not exist, the definitions " -"are taken from the files <_:filename-2/>, <_:filename-3/> and <_:filename-4/" -"> in that order. If <_:filename-5/> exists, then <_:filename-6/> will not be " -"used. If the invoker is the superuser any value may be added regardless what " -"is defined in the configuration files. An account with a restricted login " -"shell may not change her login shell." -msgstr "" -"Singura restricție impusă shell-ului de autentificare este că numele " -"comenzii trebuie să fie listat în <_:filename-1/>. Dacă acest fișier nu " -"există, definițiile sunt preluate din fișierele <_:filename-2/>, <_:" -"filename-3/> și <_:filename-4/> în această ordine. Dacă <_:filename-5/> " -"există, atunci <_:filename-6/> nu va fi utilizat. Dacă invocatorul este " -"superutilizatorul, orice valoare poate fi adăugată indiferent de ceea ce " -"este definit în fișierele de configurare. Un cont cu un shell de " -"autentificare restricționat nu își poate schimba shell-ul de autentificare." +msgid "The only restriction placed on the login shell is that the command name must be listed in <_:filename-1/>. If this file does not exist, the definitions are taken from the files <_:filename-2/>, <_:filename-3/> and <_:filename-4/> in that order. If <_:filename-5/> exists, then <_:filename-6/> will not be used. If the invoker is the superuser any value may be added regardless what is defined in the configuration files. An account with a restricted login shell may not change her login shell." +msgstr "Singura restricție impusă shell-ului de autentificare este că numele comenzii trebuie să fie listat în <_:filename-1/>. Dacă acest fișier nu există, definițiile sunt preluate din fișierele <_:filename-2/>, <_:filename-3/> și <_:filename-4/> în această ordine. Dacă <_:filename-5/> există, atunci <_:filename-6/> nu va fi utilizat. Dacă invocatorul este superutilizatorul, orice valoare poate fi adăugată indiferent de ceea ce este definit în fișierele de configurare. Un cont cu un shell de autentificare restricționat nu își poate schimba shell-ul de autentificare." #. (itstool) path: refsect1/para #: chsh.1.xml.out:141 -msgid "" -"For this reason, placing <_:filename-1/> in <_:filename-2/> is discouraged " -"since accidentally changing to a restricted shell would prevent the user " -"from ever changing her login shell back to its original value." -msgstr "" -"Din acest motiv, plasarea <_:filename-1/> în <_:filename-2/> este " -"descurajată, deoarece trecerea accidentală la un shell restricționat ar " -"împiedica utilizatorul să își schimbe vreodată shell-ul de autentificare la " -"valoarea sa inițială." +msgid "For this reason, placing <_:filename-1/> in <_:filename-2/> is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value." +msgstr "Din acest motiv, plasarea <_:filename-1/> în <_:filename-2/> este descurajată, deoarece trecerea accidentală la un shell restricționat ar împiedica utilizatorul să își schimbe vreodată shell-ul de autentificare la valoarea sa inițială." #. (itstool) path: listitem/para #: chsh.1.xml.out:174 @@ -2314,20 +1978,18 @@ msgstr "%vendordir%/shells.d" #. (itstool) path: listitem/para #: chsh.1.xml.out:190 msgid "Directory for additional vendor specific configuration files." -msgstr "" -"Director pentru fișierele suplimentare de configurare specifice " -"distribuitorului, de exemplu, Debian." +msgstr "Director pentru fișierele suplimentare de configurare specifice distribuitorului, de exemplu, Debian." #. (itstool) path: term/filename #: chsh.1.xml.out:194 +#| msgid "/etc/skel/" msgid "/etc/shells.d" msgstr "/etc/shells.d" #. (itstool) path: listitem/para #: chsh.1.xml.out:196 msgid "Directory for additional user defined configuration files." -msgstr "" -"Director pentru fișierele suplimentare de configurare definite de utilizator." +msgstr "Director pentru fișierele suplimentare de configurare definite de utilizator." #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname @@ -2350,14 +2012,8 @@ msgstr "opțiune" #. (itstool) path: refsect1/para #: expiry.1.xml.out:59 -msgid "" -"The <_:command-1/> command checks (<_:option-2/>) the current password " -"expiration and forces (<_:option-3/>) changes when required. It is callable " -"as a normal user command." -msgstr "" -"Comanda <_:command-1/> verifică („<_:option-2/>”) expirarea parolei curente " -"și forțează („<_:option-3/>”) modificările atunci când este necesar. Poate " -"fi apelată ca o comandă de utilizator normală." +msgid "The <_:command-1/> command checks (<_:option-2/>) the current password expiration and forces (<_:option-3/>) changes when required. It is callable as a normal user command." +msgstr "Comanda <_:command-1/> verifică („<_:option-2/>”) expirarea parolei curente și forțează („<_:option-3/>”) modificările atunci când este necesar. Poate fi apelată ca o comandă de utilizator normală." #. (itstool) path: term/option #: expiry.1.xml.out:73 @@ -2378,8 +2034,7 @@ msgstr "--force" #. (itstool) path: listitem/para #: expiry.1.xml.out:81 msgid "Force a password change if the current user has an expired password." -msgstr "" -"Forțează schimbarea parolei dacă utilizatorul curent are o parolă expirată." +msgstr "Forțează schimbarea parolei dacă utilizatorul curent are o parolă expirată." #. (itstool) path: author/contrib #: faillog.5.xml.out:17 faillog.8.xml.out:17 login.1.xml.out:50 @@ -2424,29 +2079,13 @@ msgstr "„/var/log/faillog”" #. (itstool) path: refsect1/para #: faillog.5.xml.out:46 -msgid "" -"<_:filename-1/> maintains a count of login failures and the limits for each " -"account." -msgstr "" -"<_:filename-1/> menține o evidență a numărului de eșecuri la autentificare " -"și limitele pentru fiecare cont." +msgid "<_:filename-1/> maintains a count of login failures and the limits for each account." +msgstr "<_:filename-1/> menține o evidență a numărului de eșecuri la autentificare și limitele pentru fiecare cont." #. (itstool) path: refsect1/para #: faillog.5.xml.out:50 -msgid "" -"The file contains fixed length records, indexed by numerical UID. Each " -"record contains the count of login failures since the last successful login; " -"the maximum number of failures before the account is disabled; the line on " -"which the last login failure occurred; the date of the last login failure; " -"and the duration (in seconds) during which the account will be locked after " -"a failure." -msgstr "" -"Fișierul conține înregistrări de lungime fixă, indexate după UID-ul numeric. " -"Fiecare înregistrare conține numărul de erori de autentificare de la ultima " -"autentificare reușită; numărul maxim de erori înainte ca acel cont să fie " -"dezactivat; linia pe care a avut loc ultima eroare de autentificare; data " -"ultimei erori de autentificare; și durata (în secunde) în care contul va fi " -"blocat după o eroare." +msgid "The file contains fixed length records, indexed by numerical UID. Each record contains the count of login failures since the last successful login; the maximum number of failures before the account is disabled; the line on which the last login failure occurred; the date of the last login failure; and the duration (in seconds) during which the account will be locked after a failure." +msgstr "Fișierul conține înregistrări de lungime fixă, indexate după UID-ul numeric. Fiecare înregistrare conține numărul de erori de autentificare de la ultima autentificare reușită; numărul maxim de erori înainte ca acel cont să fie dezactivat; linia pe care a avut loc ultima eroare de autentificare; data ultimei erori de autentificare; și durata (în secunde) în care contul va fi blocat după o eroare." #. (itstool) path: refsect1/para #: faillog.5.xml.out:60 @@ -2455,12 +2094,8 @@ msgstr "Structura fișierului este următoarea:" #. (itstool) path: refsect1/programlisting #: faillog.5.xml.out:61 -msgid "" -"struct faillog { short fail_cnt; short fail_max; char fail_line[12]; time_t " -"fail_time; long fail_locktime; };" -msgstr "" -"struct faillog { short fail_cnt; short fail_max; char fail_line[12]; time_t " -"fail_time; long fail_locktime; };" +msgid "struct faillog { short fail_cnt; short fail_max; char fail_line[12]; time_t fail_time; long fail_locktime; };" +msgstr "struct faillog { short fail_cnt; short fail_max; char fail_line[12]; time_t fail_time; long fail_locktime; };" #. (itstool) path: listitem/para #: faillog.5.xml.out:77 faillog.8.xml.out:225 @@ -2470,29 +2105,19 @@ msgstr "Fișier de jurnalizare a eșecului de autentificare." #. (itstool) path: refnamediv/refpurpose #: faillog.8.xml.out:41 msgid "display faillog records or set login failure limits" -msgstr "" -"afișează înregistrările „faillog” sau stabilește limite pentru eșecul " -"autentificării" +msgstr "afișează înregistrările „faillog” sau stabilește limite pentru eșecul autentificării" #. (itstool) path: refsect1/para #: faillog.8.xml.out:55 -msgid "" -"<_:command-1/> displays the contents of the failure log database (<_:" -"filename-2/>). It can also set the failure counters and limits. When <_:" -"command-3/> is run without arguments, it only displays the faillog records " -"of the users who had a login failure." -msgstr "" -"<_:command-1/> afișează conținutul bazei de date a jurnalului de eșecuri (<_:" -"filename-2/>). De asemenea, poate configura contoarele și limitele de " -"eșecuri. Atunci când <_:command-3/> este executat fără argumente, acesta " -"afișează numai înregistrările „faillog” ale utilizatorilor care au avut un " -"eșec la autentificare." +msgid "<_:command-1/> displays the contents of the failure log database (<_:filename-2/>). It can also set the failure counters and limits. When <_:command-3/> is run without arguments, it only displays the faillog records of the users who had a login failure." +msgstr "<_:command-1/> afișează conținutul bazei de date a jurnalului de eșecuri (<_:filename-2/>). De asemenea, poate configura contoarele și limitele de eșecuri. Atunci când <_:command-3/> este executat fără argumente, acesta afișează numai înregistrările „faillog” ale utilizatorilor care au avut un eșec la autentificare." #. (itstool) path: term/option #. (itstool) path: para/option #: faillog.8.xml.out:72 faillog.8.xml.out:215 gpasswd.1.xml.out:126 #: groupmems.8.xml.out:83 groupmod.8.xml.out:73 passwd.1.xml.out:153 #: usermod.8.xml.out:78 usermod.8.xml.out:210 +#| msgid "-" msgid "-a" msgstr "-a" @@ -2503,48 +2128,30 @@ msgstr "--all" #. (itstool) path: listitem/para #: faillog.8.xml.out:74 -msgid "" -"Display (or act on) faillog records for all users having an entry in the <_:" -"filename-1/> database." -msgstr "" -"Afișează (sau acționează asupra) înregistrărilor „faillog” pentru toți " -"utilizatorii care au o intrare în baza de date <_:filename-1/>." +msgid "Display (or act on) faillog records for all users having an entry in the <_:filename-1/> database." +msgstr "Afișează (sau acționează asupra) înregistrărilor „faillog” pentru toți utilizatorii care au o intrare în baza de date <_:filename-1/>." #. (itstool) path: listitem/para #: faillog.8.xml.out:78 msgid "The range of users can be restricted with the <_:option-1/> option." -msgstr "" -"Intervalul de utilizatori poate fi limitat cu opțiunea „<_:option-1/>”." +msgstr "Intervalul de utilizatori poate fi limitat cu opțiunea „<_:option-1/>”." #. (itstool) path: listitem/para #: faillog.8.xml.out:82 -msgid "" -"In display mode, this is still restricted to existing users but forces the " -"display of the faillog entries even if they are empty." -msgstr "" -"În modul de afișare, aceasta este în continuare limitată la utilizatorii " -"existenți, dar forțează afișarea intrărilor „faillog” chiar dacă acestea " -"sunt goale." +msgid "In display mode, this is still restricted to existing users but forces the display of the faillog entries even if they are empty." +msgstr "În modul de afișare, aceasta este în continuare limitată la utilizatorii existenți, dar forțează afișarea intrărilor „faillog” chiar dacă acestea sunt goale." #. (itstool) path: para/option #. (itstool) path: term/option #: faillog.8.xml.out:89 faillog.8.xml.out:169 lastlog.8.xml.out:128 +#| msgid "-" msgid "-t" msgstr "-t" #. (itstool) path: listitem/para #: faillog.8.xml.out:87 -msgid "" -"With the <_:option-1/>, <_:option-2/>, <_:option-3/>, <_:option-4/> options, " -"the users' records are changed, even if the user does not exist on the " -"system. This is useful to reset records of users that have been deleted or " -"to set a policy in advance for a range of users." -msgstr "" -"Cu opțiunile „<_:option-1/>”, „<_:option-2/>”, „<_:option-3/>”, „<_:option-4/" -">”, înregistrările utilizatorilor sunt modificate, chiar dacă utilizatorul " -"nu există pe sistem. Acest lucru este util pentru a reinițializa " -"înregistrările utilizatorilor care au fost șterși sau pentru a stabili o " -"politică în avans pentru o serie de utilizatori." +msgid "With the <_:option-1/>, <_:option-2/>, <_:option-3/>, <_:option-4/> options, the users' records are changed, even if the user does not exist on the system. This is useful to reset records of users that have been deleted or to set a policy in advance for a range of users." +msgstr "Cu opțiunile „<_:option-1/>”, „<_:option-2/>”, „<_:option-3/>”, „<_:option-4/>”, înregistrările utilizatorilor sunt modificate, chiar dacă utilizatorul nu există pe sistem. Acest lucru este util pentru a reinițializa înregistrările utilizatorilor care au fost șterși sau pentru a stabili o politică în avans pentru o serie de utilizatori." #. (itstool) path: term/option #: faillog.8.xml.out:105 @@ -2560,15 +2167,12 @@ msgstr "SEC" #. (itstool) path: listitem/para #: faillog.8.xml.out:108 msgid "Lock account for <_:replaceable-1/> seconds after failed login." -msgstr "" -"Blochează contul pentru <_:replaceable-1/> secunde după o autentificare " -"eșuată." +msgstr "Blochează contul pentru <_:replaceable-1/> secunde după o autentificare eșuată." #. (itstool) path: listitem/para #: faillog.8.xml.out:112 faillog.8.xml.out:137 faillog.8.xml.out:149 msgid "Write access to <_:filename-1/> is required for this option." -msgstr "" -"Accesul de scriere în <_:filename-1/> este necesar pentru această opțiune." +msgstr "Accesul de scriere în <_:filename-1/> este necesar pentru această opțiune." #. (itstool) path: term/option #: faillog.8.xml.out:120 @@ -2583,21 +2187,13 @@ msgstr "MAX" #. (itstool) path: listitem/para #: faillog.8.xml.out:123 -msgid "" -"Set the maximum number of login failures after the account is disabled to <_:" -"replaceable-1/>." -msgstr "" -"Stabilește numărul maxim de eșecuri de autentificare după ce contul este " -"dezactivat la <_:replaceable-1/>." +msgid "Set the maximum number of login failures after the account is disabled to <_:replaceable-1/>." +msgstr "Stabilește numărul maxim de eșecuri de autentificare după ce contul este dezactivat la <_:replaceable-1/>." #. (itstool) path: listitem/para #: faillog.8.xml.out:127 -msgid "" -"Selecting a <_:replaceable-1/> value of 0 has the effect of not placing a " -"limit on the number of failed logins." -msgstr "" -"Selectarea unei valori <_:replaceable-1/> de 0 are ca efect neimpunerea unei " -"limite asupra numărului de autentificări eșuate." +msgid "Selecting a <_:replaceable-1/> value of 0 has the effect of not placing a limit on the number of failed logins." +msgstr "Selectarea unei valori <_:replaceable-1/> de 0 are ca efect neimpunerea unei limite asupra numărului de autentificări eșuate." #. (itstool) path: para/emphasis #: faillog.8.xml.out:134 groupmems.8.xml.out:160 porttime.5.xml.out:85 @@ -2606,13 +2202,8 @@ msgstr "root" #. (itstool) path: listitem/para #: faillog.8.xml.out:132 -msgid "" -"The maximum failure count should always be 0 for <_:emphasis-1/> to prevent " -"a denial of services attack against the system." -msgstr "" -"Numărul maxim de eșecuri trebuie să fie întotdeauna 0 pentru <_:emphasis-1/> " -"pentru a preveni un atac de «refuzare a serviciilor» („denial of services”: " -"dos) împotriva sistemului." +msgid "The maximum failure count should always be 0 for <_:emphasis-1/> to prevent a denial of services attack against the system." +msgstr "Numărul maxim de eșecuri trebuie să fie întotdeauna 0 pentru <_:emphasis-1/> pentru a preveni un atac de «refuzare a serviciilor» („denial of services”: dos) împotriva sistemului." #. (itstool) path: term/option #: faillog.8.xml.out:144 @@ -2645,6 +2236,7 @@ msgstr "Afișează înregistrările „faillog” mai recente de <_:replaceable- #. (itstool) path: para/option #: faillog.8.xml.out:180 lastlog.8.xml.out:90 lastlog.8.xml.out:122 #: lastlog.8.xml.out:139 vipw.8.xml.out:133 +#| msgid "userdel" msgid "--user" msgstr "--user" @@ -2662,14 +2254,8 @@ msgstr "„<_:option-1/>”, „<_:option-2/>” <_:replaceable-3/>|<_:replaceab #. (itstool) path: listitem/para #: faillog.8.xml.out:183 -msgid "" -"Display faillog record or maintains failure counters and limits (if used " -"with <_:option-1/>, <_:option-2/> or <_:option-3/> options) only for the " -"specified user(s)." -msgstr "" -"Afișează înregistrarea „faillog” sau menține contoarele de erori și limitele " -"(dacă este utilizată cu opțiunile „<_:option-1/>”, „<_:option-2/>” sau „<_:" -"option-3/>”) numai pentru utilizatorii specificați." +msgid "Display faillog record or maintains failure counters and limits (if used with <_:option-1/>, <_:option-2/> or <_:option-3/> options) only for the specified user(s)." +msgstr "Afișează înregistrarea „faillog” sau menține contoarele de erori și limitele (dacă este utilizată cu opțiunile „<_:option-1/>”, „<_:option-2/>” sau „<_:option-3/>”) numai pentru utilizatorii specificați." #. (itstool) path: para/replaceable #: faillog.8.xml.out:193 lastlog.8.xml.out:149 @@ -2688,41 +2274,18 @@ msgstr "UID_MIN-" #. (itstool) path: listitem/para #: faillog.8.xml.out:188 lastlog.8.xml.out:145 -msgid "" -"The users can be specified by a login name, a numerical user ID, or a <_:" -"replaceable-1/> of users. This <_:replaceable-2/> of users can be specified " -"with a min and max values (<_:replaceable-3/>), a max value (<_:" -"replaceable-4/>), or a min value (<_:replaceable-5/>)." -msgstr "" -"Utilizatorii pot fi specificați printr-un nume de autentificare, un ID de " -"utilizator numeric sau un număr <_:replaceable-1/> de utilizatori. Acest <_:" -"replaceable-2/> de utilizatori poate fi specificat cu o valoare min și max " -"(<_:replaceable-3/>), o valoare max (<_:replaceable-4/>) sau o valoare min " -"(<_:replaceable-5/>)." +msgid "The users can be specified by a login name, a numerical user ID, or a <_:replaceable-1/> of users. This <_:replaceable-2/> of users can be specified with a min and max values (<_:replaceable-3/>), a max value (<_:replaceable-4/>), or a min value (<_:replaceable-5/>)." +msgstr "Utilizatorii pot fi specificați printr-un nume de autentificare, un ID de utilizator numeric sau un număr <_:replaceable-1/> de utilizatori. Acest <_:replaceable-2/> de utilizatori poate fi specificat cu o valoare min și max (<_:replaceable-3/>), o valoare max (<_:replaceable-4/>) sau o valoare min (<_:replaceable-5/>)." #. (itstool) path: refsect1/para #: faillog.8.xml.out:201 -msgid "" -"When none of the <_:option-1/>, <_:option-2/>, or <_:option-3/> options are " -"used, <_:command-4/> displays the faillog record of the specified user(s)." -msgstr "" -"Atunci când nu este utilizată niciuna dintre opțiunile „<_:option-1/>”, „<_:" -"option-2/>” sau „<_:option-3/>”, <_:command-4/> afișează înregistrarea " -"„faillog” a utilizatorilor specificați." +msgid "When none of the <_:option-1/>, <_:option-2/>, or <_:option-3/> options are used, <_:command-4/> displays the faillog record of the specified user(s)." +msgstr "Atunci când nu este utilizată niciuna dintre opțiunile „<_:option-1/>”, „<_:option-2/>” sau „<_:option-3/>”, <_:command-4/> afișează înregistrarea „faillog” a utilizatorilor specificați." #. (itstool) path: refsect1/para #: faillog.8.xml.out:210 -msgid "" -"<_:command-1/> only prints out users with no successful login since the last " -"failure. To print out a user who has had a successful login since their last " -"failure, you must explicitly request the user with the <_:option-2/> flag, " -"or print out all users with the <_:option-3/> flag." -msgstr "" -"<_:command-1/> afișează numai utilizatorii care nu s-au autentificat cu " -"succes de la ultimul eșec. Pentru a afișa un utilizator care a avut o " -"autentificare reușită de la ultimul eșec, trebuie să solicitați explicit " -"utilizatorul cu opțiunea „<_:option-2/>”, sau să afișați toți utilizatorii " -"cu opțiunea „<_:option-3/>”." +msgid "<_:command-1/> only prints out users with no successful login since the last failure. To print out a user who has had a successful login since their last failure, you must explicitly request the user with the <_:option-2/> flag, or print out all users with the <_:option-3/> flag." +msgstr "<_:command-1/> afișează numai utilizatorii care nu s-au autentificat cu succes de la ultimul eșec. Pentru a afișa un utilizator care a avut o autentificare reușită de la ultimul eșec, trebuie să solicitați explicit utilizatorul cu opțiunea „<_:option-2/>”, sau să afișați toți utilizatorii cu opțiunea „<_:option-3/>”." #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: para/command @@ -2796,30 +2359,20 @@ msgstr "administratori," #. (itstool) path: refsect1/para #: gpasswd.1.xml.out:73 -msgid "" -"The <_:command-1/> command is used to administer <_:filename-2/><_:phrase-3/" -">. Every group can have <_:phrase-4/> members and a password." -msgstr "" -"Comanda <_:command-1/> este utilizată pentru a administra <_:filename-2/><_:" -"phrase-3/>. Fiecare grup poate avea <_:phrase-4/> membri și o parolă." +msgid "The <_:command-1/> command is used to administer <_:filename-2/><_:phrase-3/>. Every group can have <_:phrase-4/> members and a password." +msgstr "Comanda <_:command-1/> este utilizată pentru a administra <_:filename-2/><_:phrase-3/>. Fiecare grup poate avea <_:phrase-4/> membri și o parolă." #. (itstool) path: para/option #. (itstool) path: term/option #: gpasswd.1.xml.out:82 gpasswd.1.xml.out:114 gpasswd.1.xml.out:207 +#| msgid "-" msgid "-A" msgstr "-A" #. (itstool) path: refsect1/para #: gpasswd.1.xml.out:81 -msgid "" -"System administrators can use the <_:option-1/> option to define group " -"administrator(s) and the <_:option-2/> option to define members. They have " -"all rights of group administrators and members." -msgstr "" -"Administratorii de sistem pot utiliza opțiunea „<_:option-1/>” pentru a " -"defini administratorul (administratorii) grupului și opțiunea „<_:option-2/" -">” pentru a defini membrii. Aceștia au toate drepturile administratorilor de " -"grup și ale membrilor." +msgid "System administrators can use the <_:option-1/> option to define group administrator(s) and the <_:option-2/> option to define members. They have all rights of group administrators and members." +msgstr "Administratorii de sistem pot utiliza opțiunea „<_:option-1/>” pentru a defini administratorul (administratorii) grupului și opțiunea „<_:option-2/>” pentru a defini membrii. Aceștia au toate drepturile administratorilor de grup și ale membrilor." #. (itstool) path: para/phrase #: gpasswd.1.xml.out:88 @@ -2833,12 +2386,8 @@ msgstr "un administrator de sistem" #. (itstool) path: refsect1/para #: gpasswd.1.xml.out:86 -msgid "" -"<_:command-1/> called by <_:phrase-2/> <_:phrase-3/> with a group name only " -"prompts for the new password of the <_:replaceable-4/>." -msgstr "" -"<_:command-1/> apelat de <_:phrase-2/> <_:phrase-3/> cu un nume de grup " -"solicită doar noua parolă a <_:replaceable-4/>." +msgid "<_:command-1/> called by <_:phrase-2/> <_:phrase-3/> with a group name only prompts for the new password of the <_:replaceable-4/>." +msgstr "<_:command-1/> apelat de <_:phrase-2/> <_:phrase-3/> cu un nume de grup solicită doar noua parolă a <_:replaceable-4/>." #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: para/command @@ -2856,12 +2405,8 @@ msgstr "newgrp" #. (itstool) path: refsect1/para #: gpasswd.1.xml.out:93 -msgid "" -"If a password is set the members can still use <_:citerefentry-1/> without a " -"password, and non-members must supply the password." -msgstr "" -"Dacă este specificată o parolă, membrii pot utiliza în continuare <_:" -"citerefentry-1/> fără parolă, iar non-membrii trebuie să furnizeze parola." +msgid "If a password is set the members can still use <_:citerefentry-1/> without a password, and non-members must supply the password." +msgstr "Dacă este specificată o parolă, membrii pot utiliza în continuare <_:citerefentry-1/> fără parolă, iar non-membrii trebuie să furnizeze parola." #. (itstool) path: refsect2/title #: gpasswd.1.xml.out:101 @@ -2870,23 +2415,13 @@ msgstr "Note privind parolele de grup" #. (itstool) path: refsect2/para #: gpasswd.1.xml.out:102 -msgid "" -"Group passwords are an inherent security problem since more than one person " -"is permitted to know the password. However, groups are a useful tool for " -"permitting co-operation between different users." -msgstr "" -"Parolele de grup reprezintă o problemă de securitate inerentă, deoarece mai " -"mult de o persoană poate cunoaște parola. Cu toate acestea, grupurile sunt " -"un instrument util pentru a permite cooperarea între diferiți utilizatori." +msgid "Group passwords are an inherent security problem since more than one person is permitted to know the password. However, groups are a useful tool for permitting co-operation between different users." +msgstr "Parolele de grup reprezintă o problemă de securitate inerentă, deoarece mai mult de o persoană poate cunoaște parola. Cu toate acestea, grupurile sunt un instrument util pentru a permite cooperarea între diferiți utilizatori." #. (itstool) path: refsect1/para #: gpasswd.1.xml.out:113 -msgid "" -"Except for the <_:option-1/> and <_:option-2/> options, the options cannot " -"be combined." -msgstr "" -"Cu excepția opțiunilor „<_:option-1/>” și „<_:option-2/>”, opțiunile nu pot " -"fi combinate." +msgid "Except for the <_:option-1/> and <_:option-2/> options, the options cannot be combined." +msgstr "Cu excepția opțiunilor „<_:option-1/>” și „<_:option-2/>”, opțiunile nu pot fi combinate." #. (itstool) path: refsect1/para #: gpasswd.1.xml.out:117 @@ -2924,6 +2459,7 @@ msgstr "Elimină <_:replaceable-1/> din numitul <_:replaceable-2/>." #. (itstool) path: term/option #: gpasswd.1.xml.out:160 +#| msgid "-" msgid "-Q" msgstr "-Q" @@ -2934,14 +2470,8 @@ msgstr "--remove-password" #. (itstool) path: listitem/para #: gpasswd.1.xml.out:178 -msgid "" -"Remove the password from the named <_:replaceable-1/>. The group password " -"will be empty. Only group members will be allowed to use <_:command-2/> to " -"join the named <_:replaceable-3/>." -msgstr "" -"Elimină parola din grupul numit <_:replaceable-1/>. Parola grupului va fi " -"goală. Numai membrilor grupului li se va permite să utilizeze <_:command-2/> " -"pentru a intra în grupul numit <_:replaceable-3/>." +msgid "Remove the password from the named <_:replaceable-1/>. The group password will be empty. Only group members will be allowed to use <_:command-2/> to join the named <_:replaceable-3/>." +msgstr "Elimină parola din grupul numit <_:replaceable-1/>. Parola grupului va fi goală. Numai membrilor grupului li se va permite să utilizeze <_:command-2/> pentru a intra în grupul numit <_:replaceable-3/>." #. (itstool) path: term/option #: gpasswd.1.xml.out:191 @@ -2950,14 +2480,8 @@ msgstr "--restrict" #. (itstool) path: listitem/para #: gpasswd.1.xml.out:194 -msgid "" -"Restrict the access to the named <_:replaceable-1/>. The group password is " -"set to \"!\". Only group members with a password will be allowed to use <_:" -"command-2/> to join the named <_:replaceable-3/>." -msgstr "" -"Restricționează accesul la grupul numit <_:replaceable-1/>. Parola grupului " -"este stabilită la „!”. Numai membrii grupului cu o parolă vor putea utiliza " -"<_:command-2/> pentru a se alătura grupului numit <_:replaceable-3/>." +msgid "Restrict the access to the named <_:replaceable-1/>. The group password is set to \"!\". Only group members with a password will be allowed to use <_:command-2/> to join the named <_:replaceable-3/>." +msgstr "Restricționează accesul la grupul numit <_:replaceable-1/>. Parola grupului este stabilită la „!”. Numai membrii grupului cu o parolă vor putea utiliza <_:command-2/> pentru a se alătura grupului numit <_:replaceable-3/>." #. (itstool) path: term/option #: gpasswd.1.xml.out:207 @@ -2996,14 +2520,8 @@ msgstr "fișier." #. (itstool) path: refsect1/para #: gpasswd.1.xml.out:232 -msgid "" -"This tool only operates on the <_:filename-1/> <_:phrase-2/> <_:phrase-3/> " -"Thus you cannot change any NIS or LDAP group. This must be performed on the " -"corresponding server." -msgstr "" -"Acest instrument funcționează numai pe grupul <_:filename-1/> <_:phrase-2/> " -"<_:phrase-3/> Astfel, nu puteți modifica niciun grup NIS sau LDAP. Acest " -"lucru trebuie efectuat pe serverul corespunzător." +msgid "This tool only operates on the <_:filename-1/> <_:phrase-2/> <_:phrase-3/> Thus you cannot change any NIS or LDAP group. This must be performed on the corresponding server." +msgstr "Acest instrument funcționează numai pe grupul <_:filename-1/> <_:phrase-2/> <_:phrase-3/> Astfel, nu puteți modifica niciun grup NIS sau LDAP. Acest lucru trebuie efectuat pe serverul corespunzător." #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: refmeta/refentrytitle @@ -3066,12 +2584,8 @@ msgstr ", <_:citerefentry-1/>" #. (itstool) path: refsect1/para #: gpasswd.1.xml.out:277 newgrp.1.xml.out:128 sg.1.xml.out:117 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/><_:phrase-7/>." #. (itstool) path: refnamediv/refpurpose #: groupadd.8.xml.out:44 @@ -3086,28 +2600,13 @@ msgstr "GRUP_NOU" #. (itstool) path: refsect1/para #: groupadd.8.xml.out:61 -msgid "" -"The <_:command-1/> command creates a new group account using the values " -"specified on the command line plus the default values from the system. The " -"new group will be entered into the system files as needed." -msgstr "" -"Comanda <_:command-1/> creează un nou cont de grup folosind valorile " -"specificate în linia de comandă plus valorile implicite din sistem. Noul " -"grup va fi introdus în fișierele de sistem după cum este necesar." +msgid "The <_:command-1/> command creates a new group account using the values specified on the command line plus the default values from the system. The new group will be entered into the system files as needed." +msgstr "Comanda <_:command-1/> creează un nou cont de grup folosind valorile specificate în linia de comandă plus valorile implicite din sistem. Noul grup va fi introdus în fișierele de sistem după cum este necesar." #. (itstool) path: refsect1/para #: groupadd.8.xml.out:66 -msgid "" -"Groupnames may contain only lower and upper case letters, digits, " -"underscores, or dashes. They can end with a dollar sign. Dashes are not " -"allowed at the beginning of the groupname. Fully numeric groupnames and " -"groupnames . or .. are also disallowed." -msgstr "" -"Numele grupurilor pot conține numai litere minuscule și majuscule, cifre, " -"liniuțe de subliniere sau liniuțe de unire. Acestea se pot încheia cu semnul " -"dolarului. Liniuțele de unire nu sunt permise la începutul numelui grupului. " -"De asemenea, numele de grup complet numerice și numele de grup . sau .. nu " -"sunt permise." +msgid "Groupnames may contain only lower and upper case letters, digits, underscores, or dashes. They can end with a dollar sign. Dashes are not allowed at the beginning of the groupname. Fully numeric groupnames and groupnames . or .. are also disallowed." +msgstr "Numele grupurilor pot conține numai litere minuscule și majuscule, cifre, liniuțe de subliniere sau liniuțe de unire. Acestea se pot încheia cu semnul dolarului. Liniuțele de unire nu sunt permise la începutul numelui grupului. De asemenea, numele de grup complet numerice și numele de grup . sau .. nu sunt permise." #. (itstool) path: refsect1/para #: groupadd.8.xml.out:74 @@ -3122,21 +2621,14 @@ msgstr "Numele de grup pot avea doar până la 32 de caractere." #: useradd.8.xml.out:230 useradd.8.xml.out:264 useradd.8.xml.out:393 #: useradd.8.xml.out:398 useradd.8.xml.out:559 useradd.8.xml.out:659 #: usermod.8.xml.out:174 vipw.8.xml.out:90 +#| msgid "-" msgid "-g" msgstr "-g" #. (itstool) path: listitem/para #: groupadd.8.xml.out:91 -msgid "" -"This option causes the command to simply exit with success status if the " -"specified group already exists. When used with <_:option-1/>, and the " -"specified GID already exists, another (unique) GID is chosen (i.e. <_:" -"option-2/> is turned off)." -msgstr "" -"Această opțiune face ca comanda să iasă pur și simplu cu starea de succes " -"dacă grupul specificat există deja. Atunci când este utilizată cu „<_:" -"option-1/>”, iar GID-ul specificat există deja, este ales un alt GID (unic) " -"(adică „<_:option-2/>” este dezactivată)." +msgid "This option causes the command to simply exit with success status if the specified group already exists. When used with <_:option-1/>, and the specified GID already exists, another (unique) GID is chosen (i.e. <_:option-2/> is turned off)." +msgstr "Această opțiune face ca comanda să iasă pur și simplu cu starea de succes dacă grupul specificat există deja. Atunci când este utilizată cu „<_:option-1/>”, iar GID-ul specificat există deja, este ales un alt GID (unic) (adică „<_:option-2/>” este dezactivată)." #. (itstool) path: term/option #: groupadd.8.xml.out:102 groupmod.8.xml.out:82 useradd.8.xml.out:230 @@ -3163,17 +2655,8 @@ msgstr "GID_MIN" #. (itstool) path: listitem/para #: groupadd.8.xml.out:105 -msgid "" -"The numerical value of the group's ID. <_:replaceable-1/> must be unique, " -"unless the <_:option-2/> option is used. The value must be non-negative. The " -"default is to use the smallest ID value greater than or equal to <_:option-3/" -"> and greater than every other group." -msgstr "" -"Valoarea numerică a ID-ului grupului. <_:replaceable-1/> trebuie să fie " -"unic, cu excepția cazului în care este utilizată opțiunea „<_:option-2/>”. " -"Valoarea trebuie să fie ne-negativă. Valoarea implicită este de a utiliza " -"cea mai mică valoare ID mai mare sau egală cu „<_:option-3/>” și mai mare " -"decât orice alt grup." +msgid "The numerical value of the group's ID. <_:replaceable-1/> must be unique, unless the <_:option-2/> option is used. The value must be non-negative. The default is to use the smallest ID value greater than or equal to <_:option-3/> and greater than every other group." +msgstr "Valoarea numerică a ID-ului grupului. <_:replaceable-1/> trebuie să fie unic, cu excepția cazului în care este utilizată opțiunea „<_:option-2/>”. Valoarea trebuie să fie ne-negativă. Valoarea implicită este de a utiliza cea mai mică valoare ID mai mare sau egală cu „<_:option-3/>” și mai mare decât orice alt grup." #. (itstool) path: para/option #. (itstool) path: para/replaceable @@ -3185,9 +2668,7 @@ msgstr "GID_MAX" #. (itstool) path: listitem/para #: groupadd.8.xml.out:111 useradd.8.xml.out:543 msgid "See also the <_:option-1/> option and the <_:option-2/> description." -msgstr "" -"A se vedea de asemenea opțiunea „<_:option-1/>” și descrierea „<_:option-2/" -">”." +msgstr "A se vedea de asemenea opțiunea „<_:option-1/>” și descrierea „<_:option-2/>”." #. (itstool) path: term/option #. (itstool) path: para/option @@ -3195,6 +2676,7 @@ msgstr "" #: groupadd.8.xml.out:135 groupadd.8.xml.out:138 useradd.8.xml.out:305 #: useradd.8.xml.out:316 useradd.8.xml.out:319 useradd.8.xml.out:321 #: useradd.8.xml.out:322 +#| msgid "-" msgid "-K" msgstr "-K" @@ -3220,15 +2702,12 @@ msgstr "„<_:option-1/>”, „<_:option-2/>” <_:replaceable-3/>=<_:replaceab #. (itstool) path: listitem/para #: groupadd.8.xml.out:128 -msgid "" -"Overrides <_:filename-1/> defaults (GID_MIN, GID_MAX and others). Multiple " -"<_:option-2/> options can be specified." -msgstr "" -"Suprascrie valorile implicite <_:filename-1/> (GID_MIN, GID_MAX și altele). " -"Pot fi specificate mai multe opțiuni „<_:option-2/>”." +msgid "Overrides <_:filename-1/> defaults (GID_MIN, GID_MAX and others). Multiple <_:option-2/> options can be specified." +msgstr "Suprascrie valorile implicite <_:filename-1/> (GID_MIN, GID_MAX și altele). Pot fi specificate mai multe opțiuni „<_:option-2/>”." #. (itstool) path: para/replaceable #: groupadd.8.xml.out:134 useradd.8.xml.out:322 +#| msgid "10" msgid "100" msgstr "100" @@ -3239,12 +2718,8 @@ msgstr "499" #. (itstool) path: listitem/para #: groupadd.8.xml.out:133 -msgid "" -"Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> <_:option-4/> " -"<_:replaceable-5/>=<_:replaceable-6/>" -msgstr "" -"Exemplu: „<_:option-1/>” <_:replaceable-2/>=<_:replaceable-3/> „<_:option-4/" -">” <_:replaceable-5/>=<_:replaceable-6/>" +msgid "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> <_:option-4/> <_:replaceable-5/>=<_:replaceable-6/>" +msgstr "Exemplu: „<_:option-1/>” <_:replaceable-2/>=<_:replaceable-3/> „<_:option-4/>” <_:replaceable-5/>=<_:replaceable-6/>" #. (itstool) path: para/replaceable #. (itstool) path: term/replaceable @@ -3255,12 +2730,8 @@ msgstr "10" #. (itstool) path: listitem/para #: groupadd.8.xml.out:137 -msgid "" -"Note: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/>,<_:replaceable-4/" -">=<_:replaceable-5/> doesn't work yet." -msgstr "" -"Notă: „<_:option-1/>” <_:replaceable-2/>=<_:replaceable-3/>,<_:replaceable-4/" -">=<_:replaceable-5/> nu funcționează încă." +msgid "Note: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/>,<_:replaceable-4/>=<_:replaceable-5/> doesn't work yet." +msgstr "Notă: „<_:option-1/>” <_:replaceable-2/>=<_:replaceable-3/>,<_:replaceable-4/>=<_:replaceable-5/> nu funcționează încă." #. (itstool) path: term/option #: groupadd.8.xml.out:145 groupmod.8.xml.out:132 useradd.8.xml.out:407 @@ -3270,14 +2741,8 @@ msgstr "--non-unique" #. (itstool) path: listitem/para #: groupadd.8.xml.out:148 -msgid "" -"permits the creation of a group with an already used numerical ID. As a " -"result, for this <_:replaceable-1/>, the mapping towards group <_:" -"replaceable-2/> may not be unique." -msgstr "" -"permite crearea unui grup cu un ID numeric deja utilizat. Ca urmare, pentru " -"acest <_:replaceable-1/>, corespondența cu grupul <_:replaceable-2/> poate " -"să nu fie unică." +msgid "permits the creation of a group with an already used numerical ID. As a result, for this <_:replaceable-1/>, the mapping towards group <_:replaceable-2/> may not be unique." +msgstr "permite crearea unui grup cu un ID numeric deja utilizat. Ca urmare, pentru acest <_:replaceable-1/>, corespondența cu grupul <_:replaceable-2/> poate să nu fie unică." #. (itstool) path: term/option #. (itstool) path: group/arg @@ -3294,6 +2759,7 @@ msgstr "-p" #. (itstool) path: term/option #: groupadd.8.xml.out:158 groupmod.8.xml.out:143 useradd.8.xml.out:427 #: usermod.8.xml.out:290 +#| msgid "passwd" msgid "--password" msgstr "--password" @@ -3328,23 +2794,13 @@ msgstr "3" #. (itstool) path: listitem/para #: groupadd.8.xml.out:161 -msgid "" -"defines an initial password for the group account. PASSWORD is expected to " -"be encrypted, as returned by <_:citerefentry-1/>." -msgstr "" -"definește o parolă inițială pentru contul de grup. Se așteaptă ca PAROLA DE " -"ACCES să fie criptată, astfel cum este returnată de <_:citerefentry-1/>." +msgid "defines an initial password for the group account. PASSWORD is expected to be encrypted, as returned by <_:citerefentry-1/>." +msgstr "definește o parolă inițială pentru contul de grup. Se așteaptă ca PAROLA DE ACCES să fie criptată, astfel cum este returnată de <_:citerefentry-1/>." #. (itstool) path: listitem/para #: groupadd.8.xml.out:166 -msgid "" -"Without this option, the group account will be locked and with no password " -"defined, i.e. a single exclamation mark in the respective field of ths " -"system account file <_:filename-1/> or <_:filename-2/>." -msgstr "" -"Fără această opțiune, contul de grup va fi blocat și fără parolă definită, " -"adică un singur semn al exclamării în câmpul respectiv din fișierul de cont " -"de sistem <_:filename-1/> sau <_:filename-2/>." +msgid "Without this option, the group account will be locked and with no password defined, i.e. a single exclamation mark in the respective field of ths system account file <_:filename-1/> or <_:filename-2/>." +msgstr "Fără această opțiune, contul de grup va fi blocat și fără parolă definită, adică un singur semn al exclamării în câmpul respectiv din fișierul de cont de sistem <_:filename-1/> sau <_:filename-2/>." #. (itstool) path: para/emphasis #: groupadd.8.xml.out:173 groupmod.8.xml.out:152 useradd.8.xml.out:446 @@ -3354,21 +2810,14 @@ msgstr "Notă:" #. (itstool) path: listitem/para #: groupadd.8.xml.out:172 groupmod.8.xml.out:151 -msgid "" -"<_:emphasis-1/> This option is not recommended because the password (or " -"encrypted password) will be visible by users listing the processes." -msgstr "" -"<_:emphasis-1/> Această opțiune nu este recomandată deoarece parola (sau " -"parola criptată) va fi vizibilă de către utilizatorii care listează " -"procesele." +msgid "<_:emphasis-1/> This option is not recommended because the password (or encrypted password) will be visible by users listing the processes." +msgstr "<_:emphasis-1/> Această opțiune nu este recomandată deoarece parola (sau parola criptată) va fi vizibilă de către utilizatorii care listează procesele." #. (itstool) path: listitem/para #: groupadd.8.xml.out:177 groupmod.8.xml.out:156 useradd.8.xml.out:450 #: usermod.8.xml.out:309 -msgid "" -"You should make sure the password respects the system's password policy." -msgstr "" -"Trebuie să vă asigurați că parola respectă politica de parole a sistemului." +msgid "You should make sure the password respects the system's password policy." +msgstr "Trebuie să vă asigurați că parola respectă politica de parole a sistemului." #. (itstool) path: term/option #: groupadd.8.xml.out:185 newusers.8.xml.out:289 useradd.8.xml.out:458 @@ -3392,14 +2841,8 @@ msgstr "SYS_GID_MAX" #. (itstool) path: listitem/para #: groupadd.8.xml.out:191 -msgid "" -"The numeric identifiers of new system groups are chosen in the <_:option-1/>-" -"<_:option-2/> range, defined in <_:filename-3/>, instead of <_:option-4/>-<_:" -"option-5/>." -msgstr "" -"Identificatorii numerici ai noilor grupuri de sisteme sunt aleși în " -"intervalul „<_:option-1/>”-„<_:option-2/>”, definit în <_:filename-3/>, în " -"loc de „<_:option-4/>”-„<_:option-5/>”." +msgid "The numeric identifiers of new system groups are chosen in the <_:option-1/>-<_:option-2/> range, defined in <_:filename-3/>, instead of <_:option-4/>-<_:option-5/>." +msgstr "Identificatorii numerici ai noilor grupuri de sisteme sunt aleși în intervalul „<_:option-1/>”-„<_:option-2/>”, definit în <_:filename-3/>, în loc de „<_:option-4/>”-„<_:option-5/>”." #. (itstool) path: term/option #. (itstool) path: para/option @@ -3407,25 +2850,26 @@ msgstr "" #: groupmod.8.xml.out:202 useradd.8.xml.out:96 useradd.8.xml.out:399 #: useradd.8.xml.out:551 useradd.8.xml.out:560 usermod.8.xml.out:238 #: usermod.8.xml.out:405 +#| msgid "-" msgid "-U" msgstr "-U" #. (itstool) path: term/option #: groupadd.8.xml.out:229 groupmod.8.xml.out:194 +#| msgid "newusers" msgid "--users" msgstr "--users" #. (itstool) path: listitem/para #: groupadd.8.xml.out:232 groupmod.8.xml.out:197 msgid "A list of usernames to add as members of the group." -msgstr "" -"O listă de nume de utilizator care urmează să fie adăugați ca membri ai " -"grupului." +msgstr "O listă de nume de utilizator care urmează să fie adăugați ca membri ai grupului." #. (itstool) path: para/option #. (itstool) path: term/option #: groupadd.8.xml.out:237 groupmod.8.xml.out:202 useradd.8.xml.out:96 #: useradd.8.xml.out:388 useradd.8.xml.out:399 useradd.8.xml.out:560 +#| msgid "-" msgid "-N" msgstr "-N" @@ -3440,33 +2884,18 @@ msgstr "USERGROUPS_ENAB" #. (itstool) path: listitem/para #: groupadd.8.xml.out:235 groupmod.8.xml.out:200 useradd.8.xml.out:397 #: useradd.8.xml.out:558 -msgid "" -"The default behavior (if the <_:option-1/>, <_:option-2/>, and <_:option-3/> " -"options are not specified) is defined by the <_:option-4/> variable in <_:" -"filename-5/>." -msgstr "" -"Comportamentul implicit (dacă opțiunile „<_:option-1/>”, „<_:option-2/>” și " -"„<_:option-3/>” nu sunt specificate) este definit de variabila „<_:option-4/" -">” din <_:filename-5/>." +msgid "The default behavior (if the <_:option-1/>, <_:option-2/>, and <_:option-3/> options are not specified) is defined by the <_:option-4/> variable in <_:filename-5/>." +msgstr "Comportamentul implicit (dacă opțiunile „<_:option-1/>”, „<_:option-2/>” și „<_:option-3/>” nu sunt specificate) este definit de variabila „<_:option-4/>” din <_:filename-5/>." #. (itstool) path: refsect1/para #: groupadd.8.xml.out:286 -msgid "" -"You may not add a NIS or LDAP group. This must be performed on the " -"corresponding server." -msgstr "" -"Nu puteți adăuga un grup NIS sau LDAP. Acest lucru trebuie efectuat pe " -"serverul corespunzător." +msgid "You may not add a NIS or LDAP group. This must be performed on the corresponding server." +msgstr "Nu puteți adăuga un grup NIS sau LDAP. Acest lucru trebuie efectuat pe serverul corespunzător." #. (itstool) path: refsect1/para #: groupadd.8.xml.out:290 -msgid "" -"If the groupname already exists in an external group database such as NIS or " -"LDAP, <_:command-1/> will deny the group creation request." -msgstr "" -"Dacă numele grupului există deja într-o bază de date externă a grupurilor, " -"cum ar fi NIS sau LDAP, <_:command-1/> va respinge cererea de creare a " -"grupului." +msgid "If the groupname already exists in an external group database such as NIS or LDAP, <_:command-1/> will deny the group creation request." +msgstr "Dacă numele grupului există deja într-o bază de date externă a grupurilor, cum ar fi NIS sau LDAP, <_:command-1/> va respinge cererea de creare a grupului." #. (itstool) path: listitem/para #: groupadd.8.xml.out:317 passwd.1.xml.out:485 useradd.8.xml.out:851 @@ -3532,16 +2961,8 @@ msgstr "usermod" #. (itstool) path: refsect1/para #: groupadd.8.xml.out:344 groupmod.8.xml.out:324 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:" -"citerefentry-10/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:" -"citerefentry-10/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:citerefentry-10/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:citerefentry-10/>." #. (itstool) path: refnamediv/refpurpose #: groupdel.8.xml.out:42 @@ -3563,56 +2984,28 @@ msgstr "GRUP" #. (itstool) path: refsect1/para #: groupdel.8.xml.out:57 -msgid "" -"The <_:command-1/> command modifies the system account files, deleting all " -"entries that refer to <_:replaceable-2/>. The named group must exist." -msgstr "" -"Comanda <_:command-1/> modifică fișierele contului de sistem, ștergând toate " -"intrările care se referă la <_:replaceable-2/>. Grupul numit trebuie să " -"existe." +msgid "The <_:command-1/> command modifies the system account files, deleting all entries that refer to <_:replaceable-2/>. The named group must exist." +msgstr "Comanda <_:command-1/> modifică fișierele contului de sistem, ștergând toate intrările care se referă la <_:replaceable-2/>. Grupul numit trebuie să existe." #. (itstool) path: listitem/para #: groupdel.8.xml.out:75 -msgid "" -"This option forces the removal of the group, even if there's some user " -"having the group as the primary one." -msgstr "" -"Această opțiune forțează eliminarea grupului, chiar dacă există un " -"utilizator care are grupul ca principal." +msgid "This option forces the removal of the group, even if there's some user having the group as the primary one." +msgstr "Această opțiune forțează eliminarea grupului, chiar dacă există un utilizator care are grupul ca principal." #. (itstool) path: listitem/para #: groupdel.8.xml.out:105 groupmod.8.xml.out:180 userdel.8.xml.out:139 -msgid "" -"Apply changes in the <_:replaceable-1/> directory and use the configuration " -"files from the <_:replaceable-2/> directory. This option does not chroot and " -"is intended for preparing a cross-compilation target. Some limitations: NIS " -"and LDAP users/groups are not verified. PAM authentication is using the host " -"files. No SELINUX support." -msgstr "" -"Aplică modificările din directorul <_:replaceable-1/> și utilizează " -"fișierele de configurare din directorul <_:replaceable-2/>. Această opțiune " -"nu face chroot și este destinată pregătirii unei ținte de multicompilare " -"(cross-compilation). Unele limitări: Utilizatorii/grupurile NIS și LDAP nu " -"sunt verificați. Autentificarea PAM utilizează fișierele gazdă. Nu există " -"suport pentru SELinux." +msgid "Apply changes in the <_:replaceable-1/> directory and use the configuration files from the <_:replaceable-2/> directory. This option does not chroot and is intended for preparing a cross-compilation target. Some limitations: NIS and LDAP users/groups are not verified. PAM authentication is using the host files. No SELINUX support." +msgstr "Aplică modificările din directorul <_:replaceable-1/> și utilizează fișierele de configurare din directorul <_:replaceable-2/>. Această opțiune nu face chroot și este destinată pregătirii unei ținte de multicompilare (cross-compilation). Unele limitări: Utilizatorii/grupurile NIS și LDAP nu sunt verificați. Autentificarea PAM utilizează fișierele gazdă. Nu există suport pentru SELinux." #. (itstool) path: refsect1/para #: groupdel.8.xml.out:122 -msgid "" -"You may not remove the primary group of any existing user. You must remove " -"the user before you remove the group." -msgstr "" -"Nu puteți elimina grupul primar al niciunui utilizator existent. Trebuie să " -"eliminați utilizatorul înainte de a elimina grupul." +msgid "You may not remove the primary group of any existing user. You must remove the user before you remove the group." +msgstr "Nu puteți elimina grupul primar al niciunui utilizator existent. Trebuie să eliminați utilizatorul înainte de a elimina grupul." #. (itstool) path: refsect1/para #: groupdel.8.xml.out:126 -msgid "" -"You should manually check all file systems to ensure that no files remain " -"owned by this group." -msgstr "" -"Trebuie să verificați manual toate sistemele de fișiere pentru a vă asigura " -"că niciun fișier nu rămâne deținut de acest grup." +msgid "You should manually check all file systems to ensure that no files remain owned by this group." +msgstr "Trebuie să verificați manual toate sistemele de fișiere pentru a vă asigura că niciun fișier nu rămâne deținut de acest grup." #. (itstool) path: term/replaceable #: groupdel.8.xml.out:180 groupmod.8.xml.out:283 passwd.1.xml.out:483 @@ -3632,14 +3025,8 @@ msgstr "nu se poate elimina grupul primar al utilizatorului" #. (itstool) path: refsect1/para #: groupdel.8.xml.out:203 login.1.xml.out:375 shadow.5.xml.out:260 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>." #. (itstool) path: author/firstname #: groupmems.8.xml.out:18 @@ -3695,26 +3082,13 @@ msgstr "-g <_:replaceable-1/>" #. (itstool) path: refsect1/para #: groupmems.8.xml.out:62 -msgid "" -"The <_:command-1/> command allows a user to administer their own group " -"membership list without the requirement of superuser privileges. The <_:" -"command-2/> utility is for systems that configure its users to be in their " -"own name sake primary group (i.e., guest / guest)." -msgstr "" -"Comanda <_:command-1/> permite unui utilizator să își administreze propria " -"listă de membri ai grupului fără a necesita privilegii de superutilizator. " -"Instrumentul <_:command-2/> este destinat sistemelor care își configurează " -"utilizatorii să fie în propriul grup primar de „dragul” numelui (de exemplu, " -"guest / guest)." +msgid "The <_:command-1/> command allows a user to administer their own group membership list without the requirement of superuser privileges. The <_:command-2/> utility is for systems that configure its users to be in their own name sake primary group (i.e., guest / guest)." +msgstr "Comanda <_:command-1/> permite unui utilizator să își administreze propria listă de membri ai grupului fără a necesita privilegii de superutilizator. Instrumentul <_:command-2/> este destinat sistemelor care își configurează utilizatorii să fie în propriul grup primar de „dragul” numelui (de exemplu, guest / guest)." #. (itstool) path: refsect1/para #: groupmems.8.xml.out:70 -msgid "" -"Only the superuser, as administrator, can use <_:command-1/> to alter the " -"memberships of other groups." -msgstr "" -"Numai superutilizatorul, în calitate de administrator, poate utiliza <_:" -"command-1/> pentru a modifica apartenența la alte grupuri." +msgid "Only the superuser, as administrator, can use <_:command-1/> to alter the memberships of other groups." +msgstr "Numai superutilizatorul, în calitate de administrator, poate utiliza <_:command-1/> pentru a modifica apartenența la alte grupuri." #. (itstool) path: listitem/para #: groupmems.8.xml.out:85 @@ -3723,12 +3097,8 @@ msgstr "Adaugă un utilizator la lista de membri ai grupului." #. (itstool) path: listitem/para #: groupmems.8.xml.out:86 groupmems.8.xml.out:102 groupmems.8.xml.out:133 -msgid "" -"If the <_:filename-1/> file exist, and the group has no entry in the <_:" -"filename-2/> file, a new entry will be created." -msgstr "" -"Dacă fișierul <_:filename-1/> există, iar grupul nu are nicio intrare în " -"fișierul <_:filename-2/>, va fi creată o nouă intrare." +msgid "If the <_:filename-1/> file exist, and the group has no entry in the <_:filename-2/> file, a new entry will be created." +msgstr "Dacă fișierul <_:filename-1/> există, iar grupul nu are nicio intrare în fișierul <_:filename-2/>, va fi creată o nouă intrare." #. (itstool) path: listitem/para #: groupmems.8.xml.out:96 @@ -3737,12 +3107,8 @@ msgstr "Șterge un utilizator din lista de membri ai grupului." #. (itstool) path: listitem/para #: groupmems.8.xml.out:97 -msgid "" -"If the <_:filename-1/> file exist, the user will be removed from the list of " -"members and administrators of the group." -msgstr "" -"Dacă fișierul <_:filename-1/> există, utilizatorul va fi eliminat din lista " -"de membri și administratori ai grupului." +msgid "If the <_:filename-1/> file exist, the user will be removed from the list of members and administrators of the group." +msgstr "Dacă fișierul <_:filename-1/> există, utilizatorul va fi eliminat din lista de membri și administratori ai grupului." #. (itstool) path: term/option #: groupmems.8.xml.out:110 vipw.8.xml.out:90 @@ -3752,9 +3118,7 @@ msgstr "--group" #. (itstool) path: listitem/para #: groupmems.8.xml.out:112 msgid "The superuser can specify which group membership list to modify." -msgstr "" -"Superutilizatorul poate specifica ce listă de membri ai grupului să fie " -"modificată." +msgstr "Superutilizatorul poate specifica ce listă de membri ai grupului să fie modificată." #. (itstool) path: listitem/para #: groupmems.8.xml.out:126 @@ -3793,26 +3157,13 @@ msgstr "groups" #. (itstool) path: refsect1/para #: groupmems.8.xml.out:158 -msgid "" -"The <_:command-1/> executable should be in mode <_:literal-2/> as user <_:" -"emphasis-3/> and in group <_:emphasis-4/>. The system administrator can add " -"users to group <_:emphasis-5/> to allow or disallow them using the <_:" -"command-6/> utility to manage their own group membership list." -msgstr "" -"Executabilul <_:command-1/> trebuie să fie în modul <_:literal-2/> ca " -"utilizator <_:emphasis-3/> și în grupul <_:emphasis-4/>. Administratorul de " -"sistem poate adăuga utilizatori la grupul <_:emphasis-5/> pentru a le " -"permite sau a le interzice utilizarea instrumentului <_:command-6/> pentru a " -"gestiona propria listă de membri ai grupului." +msgid "The <_:command-1/> executable should be in mode <_:literal-2/> as user <_:emphasis-3/> and in group <_:emphasis-4/>. The system administrator can add users to group <_:emphasis-5/> to allow or disallow them using the <_:command-6/> utility to manage their own group membership list." +msgstr "Executabilul <_:command-1/> trebuie să fie în modul <_:literal-2/> ca utilizator <_:emphasis-3/> și în grupul <_:emphasis-4/>. Administratorul de sistem poate adăuga utilizatori la grupul <_:emphasis-5/> pentru a le permite sau a le interzice utilizarea instrumentului <_:command-6/> pentru a gestiona propria listă de membri ai grupului." #. (itstool) path: refsect1/programlisting #: groupmems.8.xml.out:167 -msgid "" -"$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ " -"groupmems -g groups -a gk4" -msgstr "" -"$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ " -"groupmems -g groups -a gk4" +msgid "$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ groupmems -g groups -a gk4" +msgstr "$ groupadd -r groups $ chmod 2710 groupmems $ chown root:groups groupmems $ groupmems -g groups -a gk4" #. (itstool) path: listitem/para #: groupmems.8.xml.out:199 @@ -3821,14 +3172,8 @@ msgstr "securizează informațiile contului de grup" #. (itstool) path: refsect1/para #: groupmems.8.xml.out:207 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>." #. (itstool) path: refnamediv/refpurpose #: groupmod.8.xml.out:42 @@ -3837,12 +3182,8 @@ msgstr "modifică definiția unui grup din sistem" #. (itstool) path: refsect1/para #: groupmod.8.xml.out:57 -msgid "" -"The <_:command-1/> command modifies the definition of the specified <_:" -"replaceable-2/> by modifying the appropriate entry in the group database." -msgstr "" -"Comanda <_:command-1/> modifică definiția <_:replaceable-2/> specificată " -"prin modificarea intrării corespunzătoare din baza de date a grupului." +msgid "The <_:command-1/> command modifies the definition of the specified <_:replaceable-2/> by modifying the appropriate entry in the group database." +msgstr "Comanda <_:command-1/> modifică definiția <_:replaceable-2/> specificată prin modificarea intrării corespunzătoare din baza de date a grupului." #. (itstool) path: term/option #: groupmod.8.xml.out:73 usermod.8.xml.out:78 @@ -3851,60 +3192,37 @@ msgstr "--append" #. (itstool) path: listitem/para #: groupmod.8.xml.out:76 -msgid "" -"If group members are specified with -U, append them to the existing member " -"list, rather than replacing it." -msgstr "" -"Dacă membrii grupului sunt specificați cu opțiunea „-U”, aceștia sunt " -"adăugați la lista de membri existentă, în loc să o înlocuiască." +msgid "If group members are specified with -U, append them to the existing member list, rather than replacing it." +msgstr "Dacă membrii grupului sunt specificați cu opțiunea „-U”, aceștia sunt adăugați la lista de membri existentă, în loc să o înlocuiască." #. (itstool) path: listitem/para #: groupmod.8.xml.out:85 -msgid "" -"The group ID of the given <_:replaceable-1/> will be changed to <_:" -"replaceable-2/>." -msgstr "" -"ID-ul grupului dat <_:replaceable-1/> va fi schimbat în <_:replaceable-2/>." +msgid "The group ID of the given <_:replaceable-1/> will be changed to <_:replaceable-2/>." +msgstr "ID-ul grupului dat <_:replaceable-1/> va fi schimbat în <_:replaceable-2/>." #. (itstool) path: listitem/para #: groupmod.8.xml.out:89 -msgid "" -"The value of <_:replaceable-1/> must be a non-negative decimal integer. This " -"value must be unique, unless the <_:option-2/> option is used." -msgstr "" -"Valoarea <_:replaceable-1/> trebuie să fie un număr întreg zecimal ne-" -"negativ. Această valoare trebuie să fie unică, cu excepția cazului în care " -"se utilizează opțiunea „<_:option-2/>”." +msgid "The value of <_:replaceable-1/> must be a non-negative decimal integer. This value must be unique, unless the <_:option-2/> option is used." +msgstr "Valoarea <_:replaceable-1/> trebuie să fie un număr întreg zecimal ne-negativ. Această valoare trebuie să fie unică, cu excepția cazului în care se utilizează opțiunea „<_:option-2/>”." #. (itstool) path: listitem/para #: groupmod.8.xml.out:95 -msgid "" -"Users who use the group as primary group will be updated to keep the group " -"as their primary group." -msgstr "" -"Utilizatorii care folosesc grupul ca grup principal vor fi actualizați " -"pentru a păstra grupul ca grup principal." +msgid "Users who use the group as primary group will be updated to keep the group as their primary group." +msgstr "Utilizatorii care folosesc grupul ca grup principal vor fi actualizați pentru a păstra grupul ca grup principal." #. (itstool) path: listitem/para #: groupmod.8.xml.out:99 -msgid "" -"Any files that have the old group ID and must continue to belong to <_:" -"replaceable-1/>, must have their group ID changed manually." -msgstr "" -"Orice fișiere care au vechiul ID de grup și care trebuie să aparțină în " -"continuare <_:replaceable-1/> trebuie să își schimbe manual ID-ul de grup." +msgid "Any files that have the old group ID and must continue to belong to <_:replaceable-1/>, must have their group ID changed manually." +msgstr "Orice fișiere care au vechiul ID de grup și care trebuie să aparțină în continuare <_:replaceable-1/> trebuie să își schimbe manual ID-ul de grup." #. (itstool) path: listitem/para #: groupmod.8.xml.out:105 usermod.8.xml.out:395 -msgid "" -"No checks will be performed with regard to the <_:option-1/>, <_:option-2/>, " -"<_:option-3/>, or <_:option-4/> from <_:filename-5/>." -msgstr "" -"Nu vor fi efectuate verificări cu privire la „<_:option-1/>”, „<_:option-2/" -">”, „<_:option-3/>” sau „<_:option-4/>” din <_:filename-5/>." +msgid "No checks will be performed with regard to the <_:option-1/>, <_:option-2/>, <_:option-3/>, or <_:option-4/> from <_:filename-5/>." +msgstr "Nu vor fi efectuate verificări cu privire la „<_:option-1/>”, „<_:option-2/>”, „<_:option-3/>” sau „<_:option-4/>” din <_:filename-5/>." #. (itstool) path: term/option #: groupmod.8.xml.out:121 passwd.1.xml.out:242 +#| msgid "-" msgid "-n" msgstr "-n" @@ -3921,21 +3239,13 @@ msgstr "GRUP_NOU" #. (itstool) path: listitem/para #: groupmod.8.xml.out:124 -msgid "" -"The name of the group will be changed from <_:replaceable-1/> to <_:" -"replaceable-2/> name." -msgstr "" -"Numele grupului va fi schimbat de la <_:replaceable-1/> la <_:replaceable-2/" -">." +msgid "The name of the group will be changed from <_:replaceable-1/> to <_:replaceable-2/> name." +msgstr "Numele grupului va fi schimbat de la <_:replaceable-1/> la <_:replaceable-2/>." #. (itstool) path: listitem/para #: groupmod.8.xml.out:135 -msgid "" -"When used with the <_:option-1/> option, allow to change the group <_:" -"replaceable-2/> to a non-unique value." -msgstr "" -"Atunci când este utilizată cu opțiunea „<_:option-1/>”, permite schimbarea " -"<_:replaceable-2/>-ului grupului cu o valoare neunică." +msgid "When used with the <_:option-1/> option, allow to change the group <_:replaceable-2/> to a non-unique value." +msgstr "Atunci când este utilizată cu opțiunea „<_:option-1/>”, permite schimbarea <_:replaceable-2/>-ului grupului cu o valoare neunică." #. (itstool) path: listitem/para #: groupmod.8.xml.out:146 @@ -3979,6 +3289,7 @@ msgstr "E_GRP_UPDATE: nu se poate actualiza fișierul de grup" #. (itstool) path: term/replaceable #: groupmod.8.xml.out:301 +#| msgid "1" msgid "11" msgstr "11" @@ -3995,23 +3306,18 @@ msgstr "12" #. (itstool) path: listitem/para #: groupmod.8.xml.out:309 msgid "E_PAM_USERNAME: can't determine your username for use with pam" -msgstr "" -"E_PAM_USERNAME: nu se poate determina numele dvs. de utilizator pentru " -"utilizarea cu PAM" +msgstr "E_PAM_USERNAME: nu se poate determina numele dvs. de utilizator pentru utilizarea cu PAM" #. (itstool) path: term/replaceable #: groupmod.8.xml.out:313 +#| msgid "1" msgid "13" msgstr "13" #. (itstool) path: listitem/para #: groupmod.8.xml.out:315 -msgid "" -"E_PAM_ERROR: pam returned an error, see syslog facility id groupmod for the " -"PAM error message" -msgstr "" -"E_PAM_ERROR: PAM a returnat o eroare, vedeți facilitatea „id groupmod” a " -"«syslog» pentru mesajul de eroare PAM" +msgid "E_PAM_ERROR: pam returned an error, see syslog facility id groupmod for the PAM error message" +msgstr "E_PAM_ERROR: PAM a returnat o eroare, vedeți facilitatea „id groupmod” a «syslog» pentru mesajul de eroare PAM" #. (itstool) path: refnamediv/refpurpose #: groups.1.xml.out:41 @@ -4020,19 +3326,12 @@ msgstr "afișează numele grupurilor curente" #. (itstool) path: refsect1/para #: groups.1.xml.out:55 -msgid "" -"The <_:command-1/> command displays the current group names or ID values. If " -"the value does not have a corresponding entry in <_:filename-2/>, the value " -"will be displayed as the numerical group value. The optional <_:" -"replaceable-3/> parameter will display the groups for the named user." -msgstr "" -"Comanda <_:command-1/> afișează numele grupului curent sau valorile ID. Dacă " -"valoarea nu are o intrare corespunzătoare în <_:filename-2/>, valoarea va fi " -"afișată ca valoare numerică a grupului. Parametrul opțional <_:replaceable-3/" -"> va afișa grupurile pentru utilizatorul numit." +msgid "The <_:command-1/> command displays the current group names or ID values. If the value does not have a corresponding entry in <_:filename-2/>, the value will be displayed as the numerical group value. The optional <_:replaceable-3/> parameter will display the groups for the named user." +msgstr "Comanda <_:command-1/> afișează numele grupului curent sau valorile ID. Dacă valoarea nu are o intrare corespunzătoare în <_:filename-2/>, valoarea va fi afișată ca valoare numerică a grupului. Parametrul opțional <_:replaceable-3/> va afișa grupurile pentru utilizatorul numit." #. (itstool) path: citerefentry/refentrytitle #: groups.1.xml.out:68 groups.1.xml.out:104 +#| msgid "/etc/group" msgid "initgroups" msgstr "initgroups" @@ -4049,16 +3348,8 @@ msgstr "sg" #. (itstool) path: refsect1/para #: groups.1.xml.out:66 -msgid "" -"Systems which do not support supplementary groups (see <_:citerefentry-1/>) " -"will have the information from <_:filename-2/> reported. The user must use " -"<_:command-3/> or <_:command-4/> to change his current real and effective " -"group ID." -msgstr "" -"Sistemele care nu acceptă grupuri suplimentare (a se vedea <_:citerefentry-1/" -">) vor raporta informațiile din <_:filename-2/>. Utilizatorul trebuie să " -"utilizeze <_:command-3/> sau <_:command-4/> pentru a-și schimba ID-ul de " -"grup real și efectiv." +msgid "Systems which do not support supplementary groups (see <_:citerefentry-1/>) will have the information from <_:filename-2/> reported. The user must use <_:command-3/> or <_:command-4/> to change his current real and effective group ID." +msgstr "Sistemele care nu acceptă grupuri suplimentare (a se vedea <_:citerefentry-1/>) vor raporta informațiile din <_:filename-2/>. Utilizatorul trebuie să utilizeze <_:command-3/> sau <_:command-4/> pentru a-și schimba ID-ul de grup real și efectiv." #. (itstool) path: citerefentry/refentrytitle #: groups.1.xml.out:95 @@ -4067,6 +3358,7 @@ msgstr "getgid" #. (itstool) path: citerefentry/refentrytitle #: groups.1.xml.out:98 +#| msgid "/etc/group" msgid "getgroups" msgstr "getgroups" @@ -4077,12 +3369,8 @@ msgstr "getuid" #. (itstool) path: refsect1/para #: groups.1.xml.out:90 gshadow.5.xml.out:151 pwck.8.xml.out:334 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>." #. (itstool) path: author/contrib #: grpck.8.xml.out:17 lastlog.8.xml.out:19 pwck.8.xml.out:24 @@ -4101,23 +3389,13 @@ msgstr "și <_:filename-1/>" #. (itstool) path: refsect1/para #: grpck.8.xml.out:59 -msgid "" -"The <_:command-1/> command verifies the integrity of the groups information. " -"It checks that all entries in <_:filename-2/> <_:phrase-3/> have the proper " -"format and contain valid data. The user is prompted to delete entries that " -"are improperly formatted or which have other uncorrectable errors." -msgstr "" -"Comanda <_:command-1/> verifică integritatea informațiilor grupurilor. " -"Aceasta verifică dacă toate intrările din <_:filename-2/> <_:phrase-3/> au " -"formatul corespunzător și conțin date valide. Utilizatorului i se solicită " -"să șteargă intrările care sunt formatate necorespunzător sau care au alte " -"erori care nu pot fi corectate." +msgid "The <_:command-1/> command verifies the integrity of the groups information. It checks that all entries in <_:filename-2/> <_:phrase-3/> have the proper format and contain valid data. The user is prompted to delete entries that are improperly formatted or which have other uncorrectable errors." +msgstr "Comanda <_:command-1/> verifică integritatea informațiilor grupurilor. Aceasta verifică dacă toate intrările din <_:filename-2/> <_:phrase-3/> au formatul corespunzător și conțin date valide. Utilizatorului i se solicită să șteargă intrările care sunt formatate necorespunzător sau care au alte erori care nu pot fi corectate." #. (itstool) path: refsect1/para #: grpck.8.xml.out:69 pwck.8.xml.out:82 msgid "Checks are made to verify that each entry has:" -msgstr "" -"Verificările sunt efectuate pentru a verifica dacă fiecare intrare are:" +msgstr "Verificările sunt efectuate pentru a verifica dacă fiecare intrare are:" #. (itstool) path: listitem/para #: grpck.8.xml.out:73 pwck.8.xml.out:85 @@ -4151,32 +3429,13 @@ msgstr "o listă validă de membri <_:phrase-1/>" #. (itstool) path: listitem/para #: grpck.8.xml.out:92 -msgid "" -"a corresponding entry in the <_:filename-1/> file (respectively <_:" -"filename-2/> for the <_:filename-3/> checks)" -msgstr "" -"o intrare care să corespundă în fișierul <_:filename-1/> (respectiv <_:" -"filename-2/> pentru verificările <_:filename-3/>)" +msgid "a corresponding entry in the <_:filename-1/> file (respectively <_:filename-2/> for the <_:filename-3/> checks)" +msgstr "o intrare care să corespundă în fișierul <_:filename-1/> (respectiv <_:filename-2/> pentru verificările <_:filename-3/>)" #. (itstool) path: refsect1/para #: grpck.8.xml.out:100 -msgid "" -"The checks for correct number of fields and unique group name are fatal. If " -"an entry has the wrong number of fields, the user will be prompted to delete " -"the entire line. If the user does not answer affirmatively, all further " -"checks are bypassed. An entry with a duplicated group name is prompted for " -"deletion, but the remaining checks will still be made. All other errors are " -"warnings and the user is encouraged to run the <_:command-1/> command to " -"correct the error." -msgstr "" -"Verificările privind numărul corect de câmpuri și numele unic al grupului " -"sunt fatale. Dacă o intrare are un număr greșit de câmpuri, utilizatorului i " -"se va cere să șteargă întreaga linie. Dacă utilizatorul nu răspunde " -"afirmativ, toate verificările ulterioare sunt ocolite. O intrare cu un nume " -"de grup duplicat este solicitată să fie ștearsă, dar celelalte verificări " -"vor fi totuși efectuate. Toate celelalte erori sunt avertismente și " -"utilizatorul este încurajat să execute comanda <_:command-1/> pentru a " -"corecta eroarea." +msgid "The checks for correct number of fields and unique group name are fatal. If an entry has the wrong number of fields, the user will be prompted to delete the entire line. If the user does not answer affirmatively, all further checks are bypassed. An entry with a duplicated group name is prompted for deletion, but the remaining checks will still be made. All other errors are warnings and the user is encouraged to run the <_:command-1/> command to correct the error." +msgstr "Verificările privind numărul corect de câmpuri și numele unic al grupului sunt fatale. Dacă o intrare are un număr greșit de câmpuri, utilizatorului i se va cere să șteargă întreaga linie. Dacă utilizatorul nu răspunde afirmativ, toate verificările ulterioare sunt ocolite. O intrare cu un nume de grup duplicat este solicitată să fie ștearsă, dar celelalte verificări vor fi totuși efectuate. Toate celelalte erori sunt avertismente și utilizatorul este încurajat să execute comanda <_:command-1/> pentru a corecta eroarea." #. (itstool) path: para/phrase #. (itstool) path: arg/replaceable @@ -4192,15 +3451,8 @@ msgstr "și <_:filename-1/> fișiere" #. (itstool) path: refsect1/para #: grpck.8.xml.out:111 -msgid "" -"The commands which operate on the <_:filename-1/> <_:phrase-2/><_:phrase-3/> " -"are not able to alter corrupted or duplicated entries. <_:command-4/> should " -"be used in those circumstances to remove the offending entries." -msgstr "" -"Comenzile care operează pe <_:filename-1/> <_:phrase-2/><_:phrase-3/> nu " -"sunt capabile să modifice intrările corupte sau duplicate. <_:command-4/> ar " -"trebui utilizat în aceste circumstanțe pentru a elimina intrările " -"problematice." +msgid "The commands which operate on the <_:filename-1/> <_:phrase-2/><_:phrase-3/> are not able to alter corrupted or duplicated entries. <_:command-4/> should be used in those circumstances to remove the offending entries." +msgstr "Comenzile care operează pe <_:filename-1/> <_:phrase-2/><_:phrase-3/> nu sunt capabile să modifice intrările corupte sau duplicate. <_:command-4/> ar trebui utilizat în aceste circumstanțe pentru a elimina intrările problematice." #. (itstool) path: refsect1/para #: grpck.8.xml.out:123 pwck.8.xml.out:154 @@ -4221,14 +3473,8 @@ msgstr "nu" #. (itstool) path: listitem/para #: grpck.8.xml.out:140 -msgid "" -"Execute the <_:command-1/> command in read-only mode. This causes all " -"questions regarding changes to be answered <_:emphasis-2/> without user " -"intervention." -msgstr "" -"Execută comanda <_:command-1/> în modul numai citire. Acest lucru face ca " -"răspunsul la toate întrebările privind modificările să fie <_:emphasis-2/> " -"fără intervenția utilizatorului." +msgid "Execute the <_:command-1/> command in read-only mode. This causes all questions regarding changes to be answered <_:emphasis-2/> without user intervention." +msgstr "Execută comanda <_:command-1/> în modul numai citire. Acest lucru face ca răspunsul la toate întrebările privind modificările să fie <_:emphasis-2/> fără intervenția utilizatorului." #. (itstool) path: term/option #: grpck.8.xml.out:161 pwck.8.xml.out:209 @@ -4244,6 +3490,7 @@ msgstr "Sortează intrările din <_:filename-1/> <_:phrase-2/> după GID." #. (itstool) path: para/option #: grpck.8.xml.out:172 lastlog.8.xml.out:117 passwd.1.xml.out:157 #: passwd.1.xml.out:302 +#| msgid "-" msgid "-S" msgstr "-S" @@ -4254,19 +3501,14 @@ msgstr "--silence-warnings" #. (itstool) path: para/filename #: grpck.8.xml.out:178 +#| msgid "/etc/gshadow" msgid "/etc/ghadow" msgstr "/etc/ghadow" #. (itstool) path: listitem/para #: grpck.8.xml.out:174 -msgid "" -"Suppress more controversial warnings, in particular warnings about " -"inconsistency between group members listed in <_:filename-1/> and <_:" -"filename-2/>." -msgstr "" -"Suprimă avertismentele mai controversate, în special avertismentele privind " -"inconsecvența dintre membrii grupului listați în <_:filename-1/> și <_:" -"filename-2/>." +msgid "Suppress more controversial warnings, in particular warnings about inconsistency between group members listed in <_:filename-1/> and <_:filename-2/>." +msgstr "Suprimă avertismentele mai controversate, în special avertismentele privind inconsecvența dintre membrii grupului listați în <_:filename-1/> și <_:filename-2/>." #. (itstool) path: para/phrase #: grpck.8.xml.out:189 @@ -4280,14 +3522,8 @@ msgstr "și parametrii <_:emphasis-1/>." #. (itstool) path: refsect1/para #: grpck.8.xml.out:183 -msgid "" -"By default, <_:command-1/> operates on <_:filename-2/> <_:phrase-3/>. The " -"user may select alternate files with the <_:emphasis-4/> <_:phrase-5/> <_:" -"phrase-6/>" -msgstr "" -"În mod implicit, <_:command-1/> operează pe <_:filename-2/> <_:phrase-3/>. " -"Utilizatorul poate selecta fișiere alternative cu <_:emphasis-4/> <_:" -"phrase-5/> <_:phrase-6/>" +msgid "By default, <_:command-1/> operates on <_:filename-2/> <_:phrase-3/>. The user may select alternate files with the <_:emphasis-4/> <_:phrase-5/> <_:phrase-6/>" +msgstr "În mod implicit, <_:command-1/> operează pe <_:filename-2/> <_:phrase-3/>. Utilizatorul poate selecta fișiere alternative cu <_:emphasis-4/> <_:phrase-5/> <_:phrase-6/>" #. (itstool) path: listitem/para #: grpck.8.xml.out:251 @@ -4316,12 +3552,8 @@ msgstr "<_:refentrytitle-1/><_:manvolnum-2/>," #. (itstool) path: refsect1/para #: grpck.8.xml.out:278 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>, " -"<_:citerefentry-5/>, <_:citerefentry-6/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>, " -"<_:citerefentry-5/>, <_:citerefentry-6/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:phrase-3/> <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." #. (itstool) path: author/contrib #: gshadow.5.xml.out:17 @@ -4336,25 +3568,17 @@ msgstr "fișier de grup criptat (shadowed)" #. (itstool) path: refsect1/para #: gshadow.5.xml.out:35 msgid "<_:filename-1/> contains the shadowed information for group accounts." -msgstr "" -"<_:filename-1/> conține informațiile criptate (shadowed) pentru conturile de " -"grup." +msgstr "<_:filename-1/> conține informațiile criptate (shadowed) pentru conturile de grup." #. (itstool) path: refsect1/para #: gshadow.5.xml.out:40 shadow.5.xml.out:52 -msgid "" -"This file must not be readable by regular users if password security is to " -"be maintained." -msgstr "" -"Acest fișier nu trebuie să poată fi citit de utilizatorii obișnuiți pentru a " -"menține securitatea parolei." +msgid "This file must not be readable by regular users if password security is to be maintained." +msgstr "Acest fișier nu trebuie să poată fi citit de utilizatorii obișnuiți pentru a menține securitatea parolei." #. (itstool) path: refsect1/para #: gshadow.5.xml.out:45 msgid "Each line of this file contains the following colon-separated fields:" -msgstr "" -"Fiecare linie a acestui fișier conține următoarele câmpuri separate prin " -"două puncte:" +msgstr "Fiecare linie a acestui fișier conține următoarele câmpuri separate prin două puncte:" #. (itstool) path: term/emphasis #: gshadow.5.xml.out:51 @@ -4374,59 +3598,33 @@ msgstr "parola criptată" #. (itstool) path: listitem/para #. (itstool) path: refsect1/para #: gshadow.5.xml.out:61 passwd.5.xml.out:102 shadow.5.xml.out:87 -msgid "" -"Refer to <_:citerefentry-1/> for details on how this string is interpreted." -msgstr "" -"Consultați <_:citerefentry-1/> pentru detalii privind modul în care este " -"interpretat acest șir." +msgid "Refer to <_:citerefentry-1/> for details on how this string is interpreted." +msgstr "Consultați <_:citerefentry-1/> pentru detalii privind modul în care este interpretat acest șir." #. (itstool) path: listitem/para #: gshadow.5.xml.out:66 -msgid "" -"If the password field contains some string that is not a valid result of <_:" -"citerefentry-1/>, for instance ! or *, users will not be able to use a unix " -"password to access the group (but group members do not need the password)." -msgstr "" -"Dacă câmpul parolei conține un șir care nu este un rezultat valid al <_:" -"citerefentry-1/>, de exemplu ! sau *, utilizatorii nu vor putea utiliza o " -"parolă unix pentru a accesa grupul (dar membrii grupului nu au nevoie de " -"parolă)." +msgid "If the password field contains some string that is not a valid result of <_:citerefentry-1/>, for instance ! or *, users will not be able to use a unix password to access the group (but group members do not need the password)." +msgstr "Dacă câmpul parolei conține un șir care nu este un rezultat valid al <_:citerefentry-1/>, de exemplu ! sau *, utilizatorii nu vor putea utiliza o parolă unix pentru a accesa grupul (dar membrii grupului nu au nevoie de parolă)." #. (itstool) path: listitem/para #: gshadow.5.xml.out:73 -msgid "" -"The password is used when a user who is not a member of the group wants to " -"gain the permissions of this group (see <_:citerefentry-1/>)." -msgstr "" -"Parola este utilizată atunci când un utilizator care nu este membru al " -"grupului dorește să obțină permisiunile acestui grup (a se vedea <_:" -"citerefentry-1/>)." +msgid "The password is used when a user who is not a member of the group wants to gain the permissions of this group (see <_:citerefentry-1/>)." +msgstr "Parola este utilizată atunci când un utilizator care nu este membru al grupului dorește să obțină permisiunile acestui grup (a se vedea <_:citerefentry-1/>)." #. (itstool) path: listitem/para #: gshadow.5.xml.out:79 -msgid "" -"This field may be empty, in which case only the group members can gain the " -"group permissions." -msgstr "" -"Acest câmp poate fi gol, caz în care numai membrii grupului pot obține " -"permisiunile grupului." +msgid "This field may be empty, in which case only the group members can gain the group permissions." +msgstr "Acest câmp poate fi gol, caz în care numai membrii grupului pot obține permisiunile grupului." #. (itstool) path: listitem/para #: gshadow.5.xml.out:83 shadow.5.xml.out:81 -msgid "" -"A password field which starts with an exclamation mark means that the " -"password is locked. The remaining characters on the line represent the " -"password field before the password was locked." -msgstr "" -"Un câmp al parolei care începe cu un semn al exclamării înseamnă că parola " -"este blocată. Caracterele rămase pe linie reprezintă câmpul parolei înainte " -"ca parola să fie blocată." +msgid "A password field which starts with an exclamation mark means that the password is locked. The remaining characters on the line represent the password field before the password was locked." +msgstr "Un câmp al parolei care începe cu un semn al exclamării înseamnă că parola este blocată. Caracterele rămase pe linie reprezintă câmpul parolei înainte ca parola să fie blocată." #. (itstool) path: listitem/para #: gshadow.5.xml.out:89 msgid "This password supersedes any password specified in <_:filename-1/>." -msgstr "" -"Această parolă înlocuiește orice parolă specificată în <_:filename-1/>." +msgstr "Această parolă înlocuiește orice parolă specificată în <_:filename-1/>." #. (itstool) path: term/emphasis #: gshadow.5.xml.out:97 @@ -4436,8 +3634,7 @@ msgstr "administratori" #. (itstool) path: listitem/para #: gshadow.5.xml.out:99 gshadow.5.xml.out:115 msgid "It must be a comma-separated list of user names." -msgstr "" -"Aceasta trebuie să fie o listă de nume de utilizator separate prin virgule." +msgstr "Aceasta trebuie să fie o listă de nume de utilizator separate prin virgule." #. (itstool) path: listitem/para #: gshadow.5.xml.out:102 @@ -4446,11 +3643,8 @@ msgstr "Administratorii pot modifica parola sau membrii grupului." #. (itstool) path: listitem/para #: gshadow.5.xml.out:106 -msgid "" -"Administrators also have the same permissions as the members (see below)." -msgstr "" -"Administratorii au, de asemenea, aceleași permisiuni ca și membrii (a se " -"vedea mai jos)." +msgid "Administrators also have the same permissions as the members (see below)." +msgstr "Administratorii au, de asemenea, aceleași permisiuni ca și membrii (a se vedea mai jos)." #. (itstool) path: term/emphasis #: gshadow.5.xml.out:113 @@ -4465,8 +3659,7 @@ msgstr "Membrii pot accesa grupul fără a li se solicita o parolă." #. (itstool) path: listitem/para #: gshadow.5.xml.out:122 msgid "You should use the same list of users as in <_:filename-1/>." -msgstr "" -"Trebuie să utilizați aceeași listă de utilizatori ca în <_:filename-1/>." +msgstr "Trebuie să utilizați aceeași listă de utilizatori ca în <_:filename-1/>." #. (itstool) path: citerefentry/refentrytitle #. (itstool) path: varlistentry/term @@ -4494,9 +3687,7 @@ msgstr "lastlog" #. (itstool) path: refnamediv/refpurpose #: lastlog.8.xml.out:43 msgid "reports the most recent login of all users or of a given user" -msgstr "" -"raportează cea mai recentă autentificare a tuturor utilizatorilor sau a unui " -"anumit utilizator" +msgstr "raportează cea mai recentă autentificare a tuturor utilizatorilor sau a unui anumit utilizator" #. (itstool) path: para/filename #. (itstool) path: term/filename @@ -4511,6 +3702,7 @@ msgstr "nume-utilizator" #. (itstool) path: para/emphasis #: lastlog.8.xml.out:60 +#| msgid "porttime" msgid "port" msgstr "port" @@ -4521,20 +3713,13 @@ msgstr "ora ultimei autentificări" #. (itstool) path: refsect1/para #: lastlog.8.xml.out:57 -msgid "" -"<_:command-1/> formats and prints the contents of the last login log <_:" -"filename-2/> file. The <_:emphasis-3/>, <_:emphasis-4/>, and <_:emphasis-5/> " -"will be printed. The default (no flags) causes lastlog entries to be " -"printed, sorted by their order in <_:filename-6/>." -msgstr "" -"<_:command-1/> formatează și afișează conținutul ultimului fișier jurnal de " -"autentificare <_:filename-2/>. Vor fi afișate <_:emphasis-3/>, <_:emphasis-4/" -"> și <_:emphasis-5/>. Valoarea implicită (fără opțiuni) face ca intrările " -"„lastlog” să fie afișate, sortate după ordinea lor în <_:filename-6/>." +msgid "<_:command-1/> formats and prints the contents of the last login log <_:filename-2/> file. The <_:emphasis-3/>, <_:emphasis-4/>, and <_:emphasis-5/> will be printed. The default (no flags) causes lastlog entries to be printed, sorted by their order in <_:filename-6/>." +msgstr "<_:command-1/> formatează și afișează conținutul ultimului fișier jurnal de autentificare <_:filename-2/>. Vor fi afișate <_:emphasis-3/>, <_:emphasis-4/> și <_:emphasis-5/>. Valoarea implicită (fără opțiuni) face ca intrările „lastlog” să fie afișate, sortate după ordinea lor în <_:filename-6/>." #. (itstool) path: term/option #: lastlog.8.xml.out:75 useradd.8.xml.out:118 useradd.8.xml.out:612 #: usermod.8.xml.out:89 +#| msgid "-" msgid "-b" msgstr "-b" @@ -4546,11 +3731,11 @@ msgstr "--before" #. (itstool) path: listitem/para #: lastlog.8.xml.out:78 msgid "Print only lastlog records older than <_:replaceable-1/>." -msgstr "" -"Afișează numai înregistrările „lastlog” mai vechi decât <_:replaceable-1/>." +msgstr "Afișează numai înregistrările „lastlog” mai vechi decât <_:replaceable-1/>." #. (itstool) path: term/option #: lastlog.8.xml.out:85 +#| msgid "-" msgid "-C" msgstr "-C" @@ -4561,12 +3746,8 @@ msgstr "--clear" #. (itstool) path: listitem/para #: lastlog.8.xml.out:88 -msgid "" -"Clear lastlog record of a user. This option can be used only together with " -"<_:option-1/> (<_:option-2/>))." -msgstr "" -"Șterge ultima înregistrare „lastlog” a unui utilizator. Această opțiune " -"poate fi utilizată numai împreună cu „<_:option-1/>” („<_:option-2/>”))." +msgid "Clear lastlog record of a user. This option can be used only together with <_:option-1/> (<_:option-2/>))." +msgstr "Șterge ultima înregistrare „lastlog” a unui utilizator. Această opțiune poate fi utilizată numai împreună cu „<_:option-1/>” („<_:option-2/>”))." #. (itstool) path: term/option #: lastlog.8.xml.out:117 @@ -4575,13 +3756,8 @@ msgstr "--set" #. (itstool) path: listitem/para #: lastlog.8.xml.out:120 -msgid "" -"Set lastlog record of a user to the current time. This option can be used " -"only together with <_:option-1/> (<_:option-2/>))." -msgstr "" -"Fixează ultima înregistrare „lastlog” a unui utilizator la ora curentă. " -"Această opțiune poate fi utilizată numai împreună cu „<_:option-1/>” („<_:" -"option-2/>”))." +msgid "Set lastlog record of a user to the current time. This option can be used only together with <_:option-1/> (<_:option-2/>))." +msgstr "Fixează ultima înregistrare „lastlog” a unui utilizator la ora curentă. Această opțiune poate fi utilizată numai împreună cu „<_:option-1/>” („<_:option-2/>”))." #. (itstool) path: listitem/para #: lastlog.8.xml.out:131 @@ -4600,22 +3776,13 @@ msgstr "** Nu s-a autentificat niciodată**" #. (itstool) path: refsect1/para #: lastlog.8.xml.out:157 -msgid "" -"If the user has never logged in the message <_:emphasis-1/> will be " -"displayed instead of the port and time." -msgstr "" -"Dacă utilizatorul nu s-a autentificat niciodată, mesajul <_:emphasis-1/> va " -"fi afișat în loc de port și oră." +msgid "If the user has never logged in the message <_:emphasis-1/> will be displayed instead of the port and time." +msgstr "Dacă utilizatorul nu s-a autentificat niciodată, mesajul <_:emphasis-1/> va fi afișat în loc de port și oră." #. (itstool) path: refsect1/para #: lastlog.8.xml.out:162 -msgid "" -"Only the entries for the current users of the system will be displayed. " -"Other entries may exist for users that were deleted previously." -msgstr "" -"Vor fi afișate numai intrările pentru utilizatorii actuali ai sistemului. " -"Este posibil să existe alte intrări pentru utilizatorii care au fost șterși " -"anterior." +msgid "Only the entries for the current users of the system will be displayed. Other entries may exist for users that were deleted previously." +msgstr "Vor fi afișate numai intrările pentru utilizatorii actuali ai sistemului. Este posibil să existe alte intrări pentru utilizatorii care au fost șterși anterior." #. (itstool) path: para/command #: lastlog.8.xml.out:175 @@ -4629,54 +3796,23 @@ msgstr "ls -s" #. (itstool) path: refsect1/para #: lastlog.8.xml.out:171 -msgid "" -"The <_:filename-1/> file is a database which contains info on the last login " -"of each user. You should not rotate it. It is a sparse file, so its size on " -"the disk is usually much smaller than the one shown by \"<_:command-2/" -">\" (which can indicate a really big file if you have in <_:filename-3/> " -"users with a high UID). You can display its real size with \"<_:command-4/" -">\"." -msgstr "" -"Fișierul <_:filename-1/> este o bază de date care conține informații privind " -"ultima autentificare a fiecărui utilizator. Nu trebuie să îl rotiți. Este un " -"fișier cu puține date, astfel încât dimensiunea sa pe disc este de obicei " -"mult mai mică decât cea afișată de „<_:command-2/>” (care poate indica un " -"fișier foarte mare dacă aveți în <_:filename-3/> utilizatori cu un UID " -"mare). Puteți afișa dimensiunea sa reală cu „<_:command-4/>”." +msgid "The <_:filename-1/> file is a database which contains info on the last login of each user. You should not rotate it. It is a sparse file, so its size on the disk is usually much smaller than the one shown by \"<_:command-2/>\" (which can indicate a really big file if you have in <_:filename-3/> users with a high UID). You can display its real size with \"<_:command-4/>\"." +msgstr "Fișierul <_:filename-1/> este o bază de date care conține informații privind ultima autentificare a fiecărui utilizator. Nu trebuie să îl rotiți. Este un fișier cu puține date, astfel încât dimensiunea sa pe disc este de obicei mult mai mică decât cea afișată de „<_:command-2/>” (care poate indica un fișier foarte mare dacă aveți în <_:filename-3/> utilizatori cu un UID mare). Puteți afișa dimensiunea sa reală cu „<_:command-4/>”." #. (itstool) path: listitem/para #: lastlog.8.xml.out:199 msgid "Database times of previous user logins." -msgstr "" -"Timpii (data-ora) bazei de date ai autentificărilor anterioare ale " -"utilizatorilor." +msgstr "Timpii (data-ora) bazei de date ai autentificărilor anterioare ale utilizatorilor." #. (itstool) path: refsect1/para #: lastlog.8.xml.out:207 -msgid "" -"Large gaps in UID numbers will cause the lastlog program to run longer with " -"no output to the screen (i.e. if in lastlog database there is no entries for " -"users with UID between 170 and 800 lastlog will appear to hang as it " -"processes entries with UIDs 171-799)." -msgstr "" -"Spațiile mari între numerele UID vor face ca programul «lastlog» să ruleze " -"mai mult timp fără a fi afișat pe ecran (de exemplu, dacă în baza de date " -"„lastlog” nu există intrări pentru utilizatorii cu UID între 170 și 800, " -"«lastlog» va părea că se blochează în timp ce procesează intrările cu UID " -"171-799)." +msgid "Large gaps in UID numbers will cause the lastlog program to run longer with no output to the screen (i.e. if in lastlog database there is no entries for users with UID between 170 and 800 lastlog will appear to hang as it processes entries with UIDs 171-799)." +msgstr "Spațiile mari între numerele UID vor face ca programul «lastlog» să ruleze mai mult timp fără a fi afișat pe ecran (de exemplu, dacă în baza de date „lastlog” nu există intrări pentru utilizatorii cu UID între 170 și 800, «lastlog» va părea că se blochează în timp ce procesează intrările cu UID 171-799)." #. (itstool) path: refsect1/para #: lastlog.8.xml.out:213 -msgid "" -"Having high UIDs can create problems when handling the <_:term-1/> with " -"external tools. Although the actual file is sparse and does not use too much " -"space, certain applications are not designed to identify sparse files by " -"default and may require a specific option to handle them." -msgstr "" -"UID-urile mari pot crea probleme la manipularea <_:term-1/> cu instrumente " -"externe. Deși fișierul real este dispers și nu utilizează prea mult spațiu, " -"anumite aplicații nu sunt concepute pentru a identifica implicit fișierele " -"disperse și pot necesita o opțiune specifică pentru a le gestiona." +msgid "Having high UIDs can create problems when handling the <_:term-1/> with external tools. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them." +msgstr "UID-urile mari pot crea probleme la manipularea <_:term-1/> cu instrumente externe. Deși fișierul real este dispers și nu utilizează prea mult spațiu, anumite aplicații nu sunt concepute pentru a identifica implicit fișierele disperse și pot necesita o opțiune specifică pentru a le gestiona." #. (itstool) path: author/firstname #: limits.5.xml.out:17 @@ -4718,25 +3854,13 @@ msgstr "config.h" #. (itstool) path: refsect1/para #: limits.5.xml.out:49 -msgid "" -"The <_:emphasis-1/> file (<_:filename-2/> by default or LIMITS_FILE defined " -"<_:filename-3/>) describes the resource limits you wish to impose. It should " -"be owned by root and readable by root account only." -msgstr "" -"Fișierul <_:emphasis-1/> (<_:filename-2/> implicit sau FIȘIERUL_LIMITE " -"definit <_:filename-3/>) descrie limitele de resurse pe care doriți să le " -"impuneți. Ar trebui să fie deținut de root și să poată fi citit numai de " -"contul root." +msgid "The <_:emphasis-1/> file (<_:filename-2/> by default or LIMITS_FILE defined <_:filename-3/>) describes the resource limits you wish to impose. It should be owned by root and readable by root account only." +msgstr "Fișierul <_:emphasis-1/> (<_:filename-2/> implicit sau FIȘIERUL_LIMITE definit <_:filename-3/>) descrie limitele de resurse pe care doriți să le impuneți. Ar trebui să fie deținut de root și să poată fi citit numai de contul root." #. (itstool) path: refsect1/para #: limits.5.xml.out:57 -msgid "" -"By default no quota is imposed on 'root'. In fact, there is no way to impose " -"limits via this procedure to root-equiv accounts (accounts with UID 0)." -msgstr "" -"În mod implicit, nicio cotă nu este impusă pentru „root”. De fapt, nu există " -"nicio modalitate de a impune limite prin această procedură conturilor " -"echivalente cu root (conturi cu UID 0)." +msgid "By default no quota is imposed on 'root'. In fact, there is no way to impose limits via this procedure to root-equiv accounts (accounts with UID 0)." +msgstr "În mod implicit, nicio cotă nu este impusă pentru „root”. De fapt, nu există nicio modalitate de a impune limite prin această procedură conturilor echivalente cu root (conturi cu UID 0)." #. (itstool) path: refsect1/para #: limits.5.xml.out:63 @@ -4765,13 +3889,8 @@ msgstr "ȘIR_LIMITE" #. (itstool) path: refsect1/para #: limits.5.xml.out:75 -msgid "" -"The <_:emphasis-1/> is a string of a concatenated list of resource limits. " -"Each limit consists of a letter identifier followed by a numerical limit." -msgstr "" -"<_:emphasis-1/> este un șir care conține o listă concatenată de limite de " -"resurse. Fiecare limită constă într-o literă de identificare urmată de o " -"limită numerică." +msgid "The <_:emphasis-1/> is a string of a concatenated list of resource limits. Each limit consists of a letter identifier followed by a numerical limit." +msgstr "<_:emphasis-1/> este un șir care conține o listă concatenată de limite de resurse. Fiecare limită constă într-o literă de identificare urmată de o limită numerică." #. (itstool) path: refsect1/para #: limits.5.xml.out:81 @@ -4811,8 +3930,7 @@ msgstr "K: masca de creare a fișierului, stabilită prin <_:citerefentry-1/>." #. (itstool) path: listitem/para #: limits.5.xml.out:93 msgid "I: max nice value (0..39 which translates to 20..-19)" -msgstr "" -"I: valoarea de curtoazie „nice” maximă (0..39 care se traduce prin 20..-19)" +msgstr "I: valoarea de curtoazie „nice” maximă (0..39 care se traduce prin 20..-19)" #. (itstool) path: listitem/para #: limits.5.xml.out:95 @@ -4871,12 +3989,8 @@ msgstr "L2D2048N5" #. (itstool) path: refsect1/para #: limits.5.xml.out:110 -msgid "" -"For example, <_:emphasis-1/> is a valid <_:emphasis-2/>. For reading " -"convenience, the following entries are equivalent:" -msgstr "" -"De exemplu, <_:emphasis-1/> este un <_:emphasis-2/> valid. Pentru " -"facilitarea lecturii, următoarele intrări sunt echivalente:" +msgid "For example, <_:emphasis-1/> is a valid <_:emphasis-2/>. For reading convenience, the following entries are equivalent:" +msgstr "De exemplu, <_:emphasis-1/> este un <_:emphasis-2/> valid. Pentru facilitarea lecturii, următoarele intrări sunt echivalente:" #. (itstool) path: refsect1/programlisting #: limits.5.xml.out:116 @@ -4896,14 +4010,8 @@ msgstr "nume-utilizator" #. (itstool) path: refsect1/para #: limits.5.xml.out:121 -msgid "" -"Be aware that after <_:emphasis-1/> the rest of the line is considered a " -"limit string, thus comments are not allowed. An invalid limits string will " -"be rejected (not considered) by the <_:command-2/> program." -msgstr "" -"Rețineți că după <_:emphasis-1/> restul liniei este considerat un șir de " -"limite, astfel încât comentariile nu sunt permise. Un șir de limite nevalid " -"va fi respins (nu va fi luat în considerare) de programul <_:command-2/>." +msgid "Be aware that after <_:emphasis-1/> the rest of the line is considered a limit string, thus comments are not allowed. An invalid limits string will be rejected (not considered) by the <_:command-2/> program." +msgstr "Rețineți că după <_:emphasis-1/> restul liniei este considerat un șir de limite, astfel încât comentariile nu sunt permise. Un șir de limite nevalid va fi respins (nu va fi luat în considerare) de programul <_:command-2/>." #. (itstool) path: para/emphasis #: limits.5.xml.out:129 @@ -4922,49 +4030,29 @@ msgstr "FIȘIER_LIMITE" #. (itstool) path: refsect1/para #: limits.5.xml.out:128 -msgid "" -"The default entry is denoted by username \"<_:emphasis-1/>\". If you have " -"multiple <_:emphasis-2/> entries in your <_:emphasis-3/>, then the last one " -"will be used as the default entry." -msgstr "" -"Intrarea implicită este indicată de numele de utilizator „<_:emphasis-1/>”. " -"Dacă aveți mai multe intrări <_:emphasis-2/> în <_:emphasis-3/>, atunci " -"ultima va fi utilizată ca intrare implicită." +msgid "The default entry is denoted by username \"<_:emphasis-1/>\". If you have multiple <_:emphasis-2/> entries in your <_:emphasis-3/>, then the last one will be used as the default entry." +msgstr "Intrarea implicită este indicată de numele de utilizator „<_:emphasis-1/>”. Dacă aveți mai multe intrări <_:emphasis-2/> în <_:emphasis-3/>, atunci ultima va fi utilizată ca intrare implicită." #. (itstool) path: para/replaceable #: limits.5.xml.out:136 limits.5.xml.out:148 +#| msgid "/etc/group" msgid "@group" msgstr "@group" #. (itstool) path: refsect1/para #: limits.5.xml.out:135 -msgid "" -"The limits specified in the form \"<_:replaceable-1/>\" apply to the members " -"of the specified <_:replaceable-2/>." -msgstr "" -"Limitele specificate în forma „<_:replaceable-1/>” se aplică membrilor din " -"<_:replaceable-2/> specificat." +msgid "The limits specified in the form \"<_:replaceable-1/>\" apply to the members of the specified <_:replaceable-2/>." +msgstr "Limitele specificate în forma „<_:replaceable-1/>” se aplică membrilor din <_:replaceable-2/> specificat." #. (itstool) path: refsect1/para #: limits.5.xml.out:141 -msgid "" -"If more than one line with limits for a user exist, only the first line for " -"this user will be considered." -msgstr "" -"Dacă există mai multe linii cu limite pentru un utilizator, va fi luată în " -"considerare numai prima linie pentru acest utilizator." +msgid "If more than one line with limits for a user exist, only the first line for this user will be considered." +msgstr "Dacă există mai multe linii cu limite pentru un utilizator, va fi luată în considerare numai prima linie pentru acest utilizator." #. (itstool) path: refsect1/para #: limits.5.xml.out:146 -msgid "" -"If no lines are specified for a user, the last <_:replaceable-1/> line " -"matching a group whose the user is a member of will be considered, or the " -"last line with default limits if no groups contain the user." -msgstr "" -"Dacă nu sunt specificate linii pentru un utilizator, va fi luată în " -"considerare ultima linie <_:replaceable-1/> care corespunde unui grup din " -"care face parte utilizatorul sau ultima linie cu limite implicite dacă " -"utilizatorul nu face parte din niciun grup." +msgid "If no lines are specified for a user, the last <_:replaceable-1/> line matching a group whose the user is a member of will be considered, or the last line with default limits if no groups contain the user." +msgstr "Dacă nu sunt specificate linii pentru un utilizator, va fi luată în considerare ultima linie <_:replaceable-1/> care corespunde unui grup din care face parte utilizatorul sau ultima linie cu limite implicite dacă utilizatorul nu face parte din niciun grup." #. (itstool) path: para/emphasis #. (itstool) path: para/replaceable @@ -4980,34 +4068,18 @@ msgstr "-" #. (itstool) path: refsect1/para #: limits.5.xml.out:153 -msgid "" -"To completely disable limits for a user, a single dash \"<_:emphasis-1/>\" " -"will do." -msgstr "" -"Pentru a dezactiva complet limitele pentru un utilizator, o singură liniuță " -"„<_:emphasis-1/>” va fi suficientă." +msgid "To completely disable limits for a user, a single dash \"<_:emphasis-1/>\" will do." +msgstr "Pentru a dezactiva complet limitele pentru un utilizator, o singură liniuță „<_:emphasis-1/>” va fi suficientă." #. (itstool) path: refsect1/para #: limits.5.xml.out:158 -msgid "" -"To disable a limit for a user, a single dash \"<_:replaceable-1/>\" can be " -"used instead of the numerical value for this limit." -msgstr "" -"Pentru a dezactiva o limită pentru un utilizator, o singură liniuță „<_:" -"replaceable-1/>” poate fi utilizată în locul valorii numerice pentru această " -"limită." +msgid "To disable a limit for a user, a single dash \"<_:replaceable-1/>\" can be used instead of the numerical value for this limit." +msgstr "Pentru a dezactiva o limită pentru un utilizator, o singură liniuță „<_:replaceable-1/>” poate fi utilizată în locul valorii numerice pentru această limită." #. (itstool) path: refsect1/para #: limits.5.xml.out:164 -msgid "" -"Also, please note that all limit settings are set PER LOGIN. They are not " -"global, nor are they permanent. Perhaps global limits will come, but for now " -"this will have to do ;)" -msgstr "" -"De asemenea, vă rugăm să rețineți că toate configurările de limite sunt " -"definite PER UTILIZATOR. Acestea nu sunt globale și nici permanente. Poate " -"că vor apărea limite globale, dar deocamdată acestea vor trebui să fie " -"suficiente ;)" +msgid "Also, please note that all limit settings are set PER LOGIN. They are not global, nor are they permanent. Perhaps global limits will come, but for now this will have to do ;)" +msgstr "De asemenea, vă rugăm să rețineți că toate configurările de limite sunt definite PER UTILIZATOR. Acestea nu sunt globale și nici permanente. Poate că vor apărea limite globale, dar deocamdată acestea vor trebui să fie suficiente ;)" #. (itstool) path: citerefentry/refentrytitle #: limits.5.xml.out:191 @@ -5051,51 +4123,18 @@ msgstr "exec login" #. (itstool) path: refsect1/para #: login.1.xml.out:102 -msgid "" -"The <_:command-1/> program is used to establish a new session with the " -"system. It is normally invoked automatically by responding to the <_:" -"emphasis-2/> prompt on the user's terminal. <_:command-3/> may be special to " -"the shell and may not be invoked as a sub-process. When called from a shell, " -"<_:command-4/> should be executed as <_:emphasis-5/> which will cause the " -"user to exit from the current shell (and thus will prevent the new logged in " -"user to return to the session of the caller). Attempting to execute <_:" -"command-6/> from any shell but the login shell will produce an error message." -msgstr "" -"Programul <_:command-1/> este utilizat pentru a stabili o nouă sesiune cu " -"sistemul. În mod normal, este invocat automat prin răspunsul la promptul <_:" -"emphasis-2/> din terminalul utilizatorului. <_:command-3/> poate fi special " -"pentru shell și nu poate fi invocat ca subproces. Atunci când este apelat " -"dintr-un shell, <_:command-4/> trebuie executat ca <_:emphasis-5/>, ceea ce " -"va determina ieșirea utilizatorului din shell-ul curent (și astfel va " -"împiedica noul utilizator autentificat să revină în sesiunea apelantului). " -"Încercarea de a executa <_:command-6/> din orice alt shell decât shell-ul de " -"autentificare va produce un mesaj de eroare." +msgid "The <_:command-1/> program is used to establish a new session with the system. It is normally invoked automatically by responding to the <_:emphasis-2/> prompt on the user's terminal. <_:command-3/> may be special to the shell and may not be invoked as a sub-process. When called from a shell, <_:command-4/> should be executed as <_:emphasis-5/> which will cause the user to exit from the current shell (and thus will prevent the new logged in user to return to the session of the caller). Attempting to execute <_:command-6/> from any shell but the login shell will produce an error message." +msgstr "Programul <_:command-1/> este utilizat pentru a stabili o nouă sesiune cu sistemul. În mod normal, este invocat automat prin răspunsul la promptul <_:emphasis-2/> din terminalul utilizatorului. <_:command-3/> poate fi special pentru shell și nu poate fi invocat ca subproces. Atunci când este apelat dintr-un shell, <_:command-4/> trebuie executat ca <_:emphasis-5/>, ceea ce va determina ieșirea utilizatorului din shell-ul curent (și astfel va împiedica noul utilizator autentificat să revină în sesiunea apelantului). Încercarea de a executa <_:command-6/> din orice alt shell decât shell-ul de autentificare va produce un mesaj de eroare." #. (itstool) path: refsect1/para #: login.1.xml.out:116 -msgid "" -"The user is then prompted for a password, where appropriate. Echoing is " -"disabled to prevent revealing the password. Only a small number of password " -"failures are permitted before <_:command-1/> exits and the communications " -"link is severed." -msgstr "" -"Utilizatorului i se solicită apoi o parolă, dacă este cazul. Afișarea " -"caracterelor tastate „ecoul”, este dezactivată pentru a preveni dezvăluirea " -"parolei. Înainte ca <_:command-1/> să iasă și legătura de comunicare să fie " -"întreruptă, este permis doar un număr mic de eșecuri ale parolei." +msgid "The user is then prompted for a password, where appropriate. Echoing is disabled to prevent revealing the password. Only a small number of password failures are permitted before <_:command-1/> exits and the communications link is severed." +msgstr "Utilizatorului i se solicită apoi o parolă, dacă este cazul. Afișarea caracterelor tastate „ecoul”, este dezactivată pentru a preveni dezvăluirea parolei. Înainte ca <_:command-1/> să iasă și legătura de comunicare să fie întreruptă, este permis doar un număr mic de eșecuri ale parolei." #. (itstool) path: refsect1/para #: login.1.xml.out:123 -msgid "" -"If password aging has been enabled for your account, you may be prompted for " -"a new password before proceeding. You will be forced to provide your old " -"password and the new password before continuing. Please refer to <_:" -"citerefentry-1/> for more information." -msgstr "" -"Dacă a fost activată expirarea parolei pentru contul dvs., este posibil să " -"vi se solicite o parolă nouă înainte de a continua. Veți fi obligat să " -"furnizați parola veche și parola nouă înainte de a continua. Vă rugăm să " -"consultați <_:citerefentry-1/> pentru mai multe informații." +msgid "If password aging has been enabled for your account, you may be prompted for a new password before proceeding. You will be forced to provide your old password and the new password before continuing. Please refer to <_:citerefentry-1/> for more information." +msgstr "Dacă a fost activată expirarea parolei pentru contul dvs., este posibil să vi se solicite o parolă nouă înainte de a continua. Veți fi obligat să furnizați parola veche și parola nouă înainte de a continua. Vă rugăm să consultați <_:citerefentry-1/> pentru mai multe informații." #. (itstool) path: para/filename #. (itstool) path: term/filename @@ -5125,20 +4164,8 @@ msgstr "Nu aveți corespondență." #. (itstool) path: refsect1/para #: login.1.xml.out:132 -msgid "" -"After a successful login, you will be informed of any system messages and " -"the presence of mail. You may turn off the printing of the system message " -"file, <_:filename-1/>, by creating a zero-length file <_:filename-2/> in " -"your login directory. The mail message will be one of \"<_:emphasis-3/>\", " -"\"<_:emphasis-4/>\", or \"<_:emphasis-5/>\" according to the condition of " -"your mailbox." -msgstr "" -"După o autentificare reușită, veți fi informat cu privire la orice mesaj de " -"sistem și la prezența corespondenței. Puteți dezactiva afișarea fișierului " -"de mesaje de sistem, <_:filename-1/>, prin crearea unui fișier de lungime " -"zero <_:filename-2/> în directorul dvs. de autentificare. Mesajul de poștă " -"electronică va fi unul dintre „<_:emphasis-3/>”, „<_:emphasis-4/>” sau „<_:" -"emphasis-5/>”, în funcție de starea căsuței poștale." +msgid "After a successful login, you will be informed of any system messages and the presence of mail. You may turn off the printing of the system message file, <_:filename-1/>, by creating a zero-length file <_:filename-2/> in your login directory. The mail message will be one of \"<_:emphasis-3/>\", \"<_:emphasis-4/>\", or \"<_:emphasis-5/>\" according to the condition of your mailbox." +msgstr "După o autentificare reușită, veți fi informat cu privire la orice mesaj de sistem și la prezența corespondenței. Puteți dezactiva afișarea fișierului de mesaje de sistem, <_:filename-1/>, prin crearea unui fișier de lungime zero <_:filename-2/> în directorul dvs. de autentificare. Mesajul de poștă electronică va fi unul dintre „<_:emphasis-3/>”, „<_:emphasis-4/>” sau „<_:emphasis-5/>”, în funcție de starea căsuței poștale." #. (itstool) path: para/envar #: login.1.xml.out:146 passwd.5.xml.out:126 su.1.xml.out:247 @@ -5169,18 +4196,8 @@ msgstr "$MAIL" #. (itstool) path: refsect1/para #: login.1.xml.out:143 -msgid "" -"Your user and group ID will be set according to their values in the <_:" -"filename-1/> file. The value for <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, " -"<_:envar-5/>, and <_:envar-6/> are set according to the appropriate fields " -"in the password entry. Ulimit, umask and nice values may also be set " -"according to entries in the GECOS field." -msgstr "" -"ID-ul dvs. de utilizator și de grup vor fi stabilite în funcție de valorile " -"lor din fișierul <_:filename-1/>. Valoarea pentru <_:envar-2/>, <_:envar-3/" -">, <_:envar-4/>, <_:envar-5/> și <_:envar-6/> sunt stabilite în funcție de " -"câmpurile corespunzătoare din intrarea parolei. Valorile Ulimit, umask și " -"nice pot fi, de asemenea, stabilite în funcție de intrările din câmpul GECOS." +msgid "Your user and group ID will be set according to their values in the <_:filename-1/> file. The value for <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, <_:envar-5/>, and <_:envar-6/> are set according to the appropriate fields in the password entry. Ulimit, umask and nice values may also be set according to entries in the GECOS field." +msgstr "ID-ul dvs. de utilizator și de grup vor fi stabilite în funcție de valorile lor din fișierul <_:filename-1/>. Valoarea pentru <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, <_:envar-5/> și <_:envar-6/> sunt stabilite în funcție de câmpurile corespunzătoare din intrarea parolei. Valorile Ulimit, umask și nice pot fi, de asemenea, stabilite în funcție de intrările din câmpul GECOS." #. (itstool) path: para/envar #: login.1.xml.out:154 su.1.xml.out:264 @@ -5195,37 +4212,18 @@ msgstr "/etc/ttytype" #. (itstool) path: refsect1/para #: login.1.xml.out:152 -msgid "" -"On some installations, the environmental variable <_:envar-1/> will be " -"initialized to the terminal type on your tty line, as specified in <_:" -"filename-2/>." -msgstr "" -"În unele sisteme, variabila de mediu <_:envar-1/> va fi inițializată la " -"tipul de terminal din linia dvs. tty, așa cum este specificat în fișierul <_:" -"filename-2/>." +msgid "On some installations, the environmental variable <_:envar-1/> will be initialized to the terminal type on your tty line, as specified in <_:filename-2/>." +msgstr "În unele sisteme, variabila de mediu <_:envar-1/> va fi inițializată la tipul de terminal din linia dvs. tty, așa cum este specificat în fișierul <_:filename-2/>." #. (itstool) path: refsect1/para #: login.1.xml.out:158 -msgid "" -"An initialization script for your command interpreter may also be executed. " -"Please see the appropriate manual section for more information on this " -"function." -msgstr "" -"De asemenea, poate fi executat un script de inițializare pentru interpretul " -"dvs. de comenzi. Vă rugăm să consultați secțiunea corespunzătoare din manual " -"pentru mai multe informații despre această funcție." +msgid "An initialization script for your command interpreter may also be executed. Please see the appropriate manual section for more information on this function." +msgstr "De asemenea, poate fi executat un script de inițializare pentru interpretul dvs. de comenzi. Vă rugăm să consultați secțiunea corespunzătoare din manual pentru mai multe informații despre această funcție." #. (itstool) path: refsect1/para #: login.1.xml.out:164 su.1.xml.out:112 -msgid "" -"A subsystem login is indicated by the presence of a \"*\" as the first " -"character of the login shell. The given home directory will be used as the " -"root of a new file system which the user is actually logged into." -msgstr "" -"O autentificare în subsistem este indicată de prezența unui „*” ca prim " -"caracter al shell-ului de autentificare. Directorul personal dat va fi " -"utilizat ca rădăcină a unui nou sistem de fișiere în care utilizatorul este " -"efectiv conectat." +msgid "A subsystem login is indicated by the presence of a \"*\" as the first character of the login shell. The given home directory will be used as the root of a new file system which the user is actually logged into." +msgstr "O autentificare în subsistem este indicată de prezența unui „*” ca prim caracter al shell-ului de autentificare. Directorul personal dat va fi utilizat ca rădăcină a unui nou sistem de fișiere în care utilizatorul este efectiv conectat." #. (itstool) path: citerefentry/refentrytitle #: login.1.xml.out:173 login.1.xml.out:249 login.1.xml.out:401 @@ -5244,20 +4242,8 @@ msgstr "exec" #. (itstool) path: refsect1/para #: login.1.xml.out:170 login.1.xml.out:246 -msgid "" -"The <_:command-1/> program is NOT responsible for removing users from the " -"utmp file. It is the responsibility of <_:citerefentry-2/> and <_:" -"citerefentry-3/> to clean up apparent ownership of a terminal session. If " -"you use <_:command-4/> from the shell prompt without <_:command-5/>, the " -"user you use will continue to appear to be logged in even after you log out " -"of the \"subsession\"." -msgstr "" -"Programul <_:command-1/> NU este responsabil pentru eliminarea " -"utilizatorilor din fișierul utmp. Este responsabilitatea programelor <_:" -"citerefentry-2/> și <_:citerefentry-3/> să curețe proprietarul aparent al " -"unei sesiuni de terminal. Dacă utilizați <_:command-4/> din promptul shell " -"fără <_:command-5/>, utilizatorul pe care îl utilizați va continua să pară " -"că este autentificat chiar și după ce vă ieșiți din „subsesiune”." +msgid "The <_:command-1/> program is NOT responsible for removing users from the utmp file. It is the responsibility of <_:citerefentry-2/> and <_:citerefentry-3/> to clean up apparent ownership of a terminal session. If you use <_:command-4/> from the shell prompt without <_:command-5/>, the user you use will continue to appear to be logged in even after you log out of the \"subsession\"." +msgstr "Programul <_:command-1/> NU este responsabil pentru eliminarea utilizatorilor din fișierul utmp. Este responsabilitatea programelor <_:citerefentry-2/> și <_:citerefentry-3/> să curețe proprietarul aparent al unei sesiuni de terminal. Dacă utilizați <_:command-4/> din promptul shell fără <_:command-5/>, utilizatorul pe care îl utilizați va continua să pară că este autentificat chiar și după ce vă ieșiți din „subsesiune”." #. (itstool) path: listitem/para #: login.1.xml.out:193 @@ -5286,43 +4272,23 @@ msgstr "Efectuează protocolul autologin pentru rlogin." #. (itstool) path: refsect1/para #: login.1.xml.out:228 -msgid "" -"The <_:option-1/>, <_:option-2/> and <_:option-3/> options are only used " -"when <_:command-4/> is invoked by root." -msgstr "" -"Opțiunile „<_:option-1/>”, „<_:option-2/>” și „<_:option-3/>” sunt utilizate " -"numai atunci când <_:command-4/> este invocat de root." +msgid "The <_:option-1/>, <_:option-2/> and <_:option-3/> options are only used when <_:command-4/> is invoked by root." +msgstr "Opțiunile „<_:option-1/>”, „<_:option-2/>” și „<_:option-3/>” sunt utilizate numai atunci când <_:command-4/> este invocat de root." #. (itstool) path: refsect1/para #: login.1.xml.out:237 su.1.xml.out:307 -msgid "" -"This version of <_:command-1/> has many compilation options, only some of " -"which may be in use at any particular site." -msgstr "" -"Această versiune a <_:command-1/> are multe opțiuni de compilare, dintre " -"care doar unele pot fi utilizate într-un anumit sistem." +msgid "This version of <_:command-1/> has many compilation options, only some of which may be in use at any particular site." +msgstr "Această versiune a <_:command-1/> are multe opțiuni de compilare, dintre care doar unele pot fi utilizate într-un anumit sistem." #. (itstool) path: refsect1/para #: login.1.xml.out:242 -msgid "" -"The location of files is subject to differences in system configuration." +msgid "The location of files is subject to differences in system configuration." msgstr "Locația fișierelor poate varia în funcție de configurația sistemului." #. (itstool) path: refsect1/para #: login.1.xml.out:258 -msgid "" -"As with any program, <_:command-1/>'s appearance can be faked. If non-" -"trusted users have physical access to a machine, an attacker could use this " -"to obtain the password of the next person coming to sit in front of the " -"machine. Under Linux, the SAK mechanism can be used by users to initiate a " -"trusted path and prevent this kind of attack." -msgstr "" -"Ca în cazul oricărui program, aspectul lui <_:command-1/> poate fi " -"falsificat. Dacă utilizatorii care nu sunt de încredere au acces fizic la o " -"mașină, un atacator ar putea folosi acest lucru pentru a obține parola " -"următoarei persoane care vine să se așeze în fața mașinii. În Linux, " -"mecanismul SAK poate fi utilizat de utilizatori pentru a iniția o procedură " -"de încredere și a preveni acest tip de atac." +msgid "As with any program, <_:command-1/>'s appearance can be faked. If non-trusted users have physical access to a machine, an attacker could use this to obtain the password of the next person coming to sit in front of the machine. Under Linux, the SAK mechanism can be used by users to initiate a trusted path and prevent this kind of attack." +msgstr "Ca în cazul oricărui program, aspectul lui <_:command-1/> poate fi falsificat. Dacă utilizatorii care nu sunt de încredere au acces fizic la o mașină, un atacator ar putea folosi acest lucru pentru a obține parola următoarei persoane care vine să se așeze în fața mașinii. În Linux, mecanismul SAK poate fi utilizat de utilizatori pentru a iniția o procedură de încredere și a preveni acest tip de atac." #. (itstool) path: term/filename #. (itstool) path: para/filename @@ -5443,37 +4409,18 @@ msgstr "tabel de control al accesului la autentificare" #. (itstool) path: refsect1/para #: login.access.5.xml.out:47 -msgid "" -"The <_:emphasis-1/> file specifies (user, host) combinations and/or (user, " -"tty) combinations for which a login will be either accepted or refused." -msgstr "" -"Fișierul <_:emphasis-1/> specifică combinațiile (utilizator, gazdă) și/sau " -"combinațiile (utilizator, tty) pentru care o autentificare va fi acceptată " -"sau refuzată." +msgid "The <_:emphasis-1/> file specifies (user, host) combinations and/or (user, tty) combinations for which a login will be either accepted or refused." +msgstr "Fișierul <_:emphasis-1/> specifică combinațiile (utilizator, gazdă) și/sau combinațiile (utilizator, tty) pentru care o autentificare va fi acceptată sau refuzată." #. (itstool) path: refsect1/para #: login.access.5.xml.out:53 -msgid "" -"When someone logs in, the <_:emphasis-1/> is scanned for the first entry " -"that matches the (user, host) combination, or, in case of non-networked " -"logins, the first entry that matches the (user, tty) combination. The " -"permissions field of that table entry determines whether the login will be " -"accepted or refused." -msgstr "" -"Atunci când cineva se autentifică, <_:emphasis-1/> este scanat pentru prima " -"intrare care corespunde combinației (utilizator, gazdă) sau, în cazul " -"autentificărilor fără rețea, prima intrare care corespunde combinației " -"(utilizator, tty). Câmpul permisiunilor din acea intrare din tabel determină " -"dacă autentificarea va fi acceptată sau refuzată." +msgid "When someone logs in, the <_:emphasis-1/> is scanned for the first entry that matches the (user, host) combination, or, in case of non-networked logins, the first entry that matches the (user, tty) combination. The permissions field of that table entry determines whether the login will be accepted or refused." +msgstr "Atunci când cineva se autentifică, <_:emphasis-1/> este scanat pentru prima intrare care corespunde combinației (utilizator, gazdă) sau, în cazul autentificărilor fără rețea, prima intrare care corespunde combinației (utilizator, tty). Câmpul permisiunilor din acea intrare din tabel determină dacă autentificarea va fi acceptată sau refuzată." #. (itstool) path: refsect1/para #: login.access.5.xml.out:61 -msgid "" -"Each line of the login access control table has three fields separated by a " -"\":\" character:" -msgstr "" -"Fiecare linie a tabelului de control al accesului la autentificare are trei " -"câmpuri separate de un caracter „:”:" +msgid "Each line of the login access control table has three fields separated by a \":\" character:" +msgstr "Fiecare linie a tabelului de control al accesului la autentificare are trei câmpuri separate de un caracter „:”:" #. (itstool) path: para/emphasis #: login.access.5.xml.out:67 @@ -5518,27 +4465,8 @@ msgstr "LOCAL" #. (itstool) path: refsect1/para #: login.access.5.xml.out:70 -msgid "" -"The first field should be a \"<_:emphasis-1/>\" (access granted) or \"<_:" -"emphasis-2/>\" (access denied) character. The second field should be a list " -"of one or more login names, group names, or <_:emphasis-3/> (always " -"matches). The third field should be a list of one or more tty names (for non-" -"networked logins), host names, domain names (begin with \"<_:literal-4/>\"), " -"host addresses, internet network numbers (end with \"<_:literal-5/>\"), <_:" -"emphasis-6/> (always matches) or <_:emphasis-7/> (matches any string that " -"does not contain a \"<_:literal-8/>\" character). If you run NIS you can use " -"@netgroupname in host or user patterns." -msgstr "" -"Primul câmp trebuie să fie un caracter „<_:emphasis-1/>” (acces permis) sau " -"„<_:emphasis-2/>” (acces refuzat). Al doilea câmp trebuie să fie o listă cu " -"unul sau mai multe nume de autentificare, nume de grup sau <_:emphasis-3/> " -"(se potrivește întotdeauna). Al treilea câmp trebuie să fie o listă cu unul " -"sau mai multe nume tty (pentru autentificări în afara rețelei), nume de " -"gazdă, nume de domeniu (începe cu „<_:literal-4/>”), adrese de gazdă, numere " -"de rețea internet (se termină cu „<_:literal-5/>”), <_:emphasis-6/> (se " -"potrivește întotdeauna) sau <_:emphasis-7/> (se potrivește oricărui șir care " -"nu conține un caracter „<_:literal-8/>”). Dacă executați NIS, puteți utiliza " -"@netgroupname în modelele de gazdă sau utilizator." +msgid "The first field should be a \"<_:emphasis-1/>\" (access granted) or \"<_:emphasis-2/>\" (access denied) character. The second field should be a list of one or more login names, group names, or <_:emphasis-3/> (always matches). The third field should be a list of one or more tty names (for non-networked logins), host names, domain names (begin with \"<_:literal-4/>\"), host addresses, internet network numbers (end with \"<_:literal-5/>\"), <_:emphasis-6/> (always matches) or <_:emphasis-7/> (matches any string that does not contain a \"<_:literal-8/>\" character). If you run NIS you can use @netgroupname in host or user patterns." +msgstr "Primul câmp trebuie să fie un caracter „<_:emphasis-1/>” (acces permis) sau „<_:emphasis-2/>” (acces refuzat). Al doilea câmp trebuie să fie o listă cu unul sau mai multe nume de autentificare, nume de grup sau <_:emphasis-3/> (se potrivește întotdeauna). Al treilea câmp trebuie să fie o listă cu unul sau mai multe nume tty (pentru autentificări în afara rețelei), nume de gazdă, nume de domeniu (începe cu „<_:literal-4/>”), adrese de gazdă, numere de rețea internet (se termină cu „<_:literal-5/>”), <_:emphasis-6/> (se potrivește întotdeauna) sau <_:emphasis-7/> (se potrivește oricărui șir care nu conține un caracter „<_:literal-8/>”). Dacă executați NIS, puteți utiliza @netgroupname în modelele de gazdă sau utilizator." #. (itstool) path: para/emphasis #: login.access.5.xml.out:85 @@ -5547,23 +4475,13 @@ msgstr "EXCEPT" #. (itstool) path: refsect1/para #: login.access.5.xml.out:84 -msgid "" -"The <_:emphasis-1/> operator makes it possible to write very compact rules." -msgstr "" -"Operatorul <_:emphasis-1/> face posibilă scrierea unor reguli foarte " -"compacte." +msgid "The <_:emphasis-1/> operator makes it possible to write very compact rules." +msgstr "Operatorul <_:emphasis-1/> face posibilă scrierea unor reguli foarte compacte." #. (itstool) path: refsect1/para #: login.access.5.xml.out:89 -msgid "" -"The group file is searched only when a name does not match that of the " -"logged-in user. Only groups are matched in which users are explicitly " -"listed: the program does not look at a user's primary group id value." -msgstr "" -"Fișierul grupului este căutat numai atunci când un nume nu corespunde cu cel " -"al utilizatorului conectat. Sunt comparate numai grupurile în care sunt " -"enumerați în mod explicit utilizatorii: programul nu se uită la valoarea ID-" -"ului grupului primar al unui utilizator." +msgid "The group file is searched only when a name does not match that of the logged-in user. Only groups are matched in which users are explicitly listed: the program does not look at a user's primary group id value." +msgstr "Fișierul grupului este căutat numai atunci când un nume nu corespunde cu cel al utilizatorului conectat. Sunt comparate numai grupurile în care sunt enumerați în mod explicit utilizatorii: programul nu se uită la valoarea ID-ului grupului primar al unui utilizator." #. (itstool) path: refsect1/para #: login.access.5.xml.out:110 porttime.5.xml.out:119 suauth.5.xml.out:199 @@ -5577,30 +4495,13 @@ msgstr "configurarea suitei pentru lucrul cu parole, «shadow»" #. (itstool) path: refsect1/para #: login.defs.5.xml.out:117 -msgid "" -"The <_:filename-1/> file defines the site-specific configuration for the " -"shadow password suite. This file is required. Absence of this file will not " -"prevent system operation, but will probably result in undesirable operation." -msgstr "" -"Fișierul <_:filename-1/> definește configurația specifică sitului pentru " -"suita instrumentelor pentru lucrul cu parole, «shadow». Acest fișier este " -"obligatoriu. Absența acestui fișier nu va împiedica funcționarea sistemului, " -"dar va duce probabil la o funcționare nedorită." +msgid "The <_:filename-1/> file defines the site-specific configuration for the shadow password suite. This file is required. Absence of this file will not prevent system operation, but will probably result in undesirable operation." +msgstr "Fișierul <_:filename-1/> definește configurația specifică sitului pentru suita instrumentelor pentru lucrul cu parole, «shadow». Acest fișier este obligatoriu. Absența acestui fișier nu va împiedica funcționarea sistemului, dar va duce probabil la o funcționare nedorită." #. (itstool) path: refsect1/para #: login.defs.5.xml.out:124 -msgid "" -"This file is a readable text file, each line of the file describing one " -"configuration parameter. The lines consist of a configuration name and " -"value, separated by whitespace. Blank lines and comment lines are ignored. " -"Comments are introduced with a \"#\" pound sign and the pound sign must be " -"the first non-white character of the line." -msgstr "" -"Acest fișier este un fișier de text în clar, fiecare linie a fișierului " -"descriind un parametru de configurare. Liniile constau dintr-un nume și o " -"valoare de configurare, separate prin spațiu alb. Liniile goale și liniile " -"de comentariu sunt ignorate. Comentariile sunt introduse cu semnul „#”, iar " -"semnul „#” trebuie să fie primul caracter al liniei de comentariu." +msgid "This file is a readable text file, each line of the file describing one configuration parameter. The lines consist of a configuration name and value, separated by whitespace. Blank lines and comment lines are ignored. Comments are introduced with a \"#\" pound sign and the pound sign must be the first non-white character of the line." +msgstr "Acest fișier este un fișier de text în clar, fiecare linie a fișierului descriind un parametru de configurare. Liniile constau dintr-un nume și o valoare de configurare, separate prin spațiu alb. Liniile goale și liniile de comentariu sunt ignorate. Comentariile sunt introduse cu semnul „#”, iar semnul „#” trebuie să fie primul caracter al liniei de comentariu." #. (itstool) path: para/replaceable #. (itstool) path: para/emphasis @@ -5611,30 +4512,14 @@ msgstr "da" #. (itstool) path: para/replaceable #: login.defs.5.xml.out:142 +#| msgid "0" msgid "0x" msgstr "0x" #. (itstool) path: refsect1/para #: login.defs.5.xml.out:132 -msgid "" -"Parameter values may be of four types: strings, booleans, numbers, and long " -"numbers. A string is comprised of any printable characters. A boolean should " -"be either the value <_:replaceable-1/> or <_:replaceable-2/>. An undefined " -"boolean parameter or one with a value other than these will be given a <_:" -"replaceable-3/> value. Numbers (both regular and long) may be either decimal " -"values, octal values (precede the value with <_:replaceable-4/>) or " -"hexadecimal values (precede the value with <_:replaceable-5/>). The maximum " -"value of the regular and long numeric parameters is machine-dependent." -msgstr "" -"Valorile parametrilor pot fi de patru tipuri: șiruri de caractere, booleene, " -"numere și numere lungi. Un șir de caractere este alcătuit din orice " -"caractere imprimabile. O valoare booleană trebuie să fie <_:replaceable-1/> " -"sau <_:replaceable-2/>. Un parametru boolean nedefinit sau unul cu o valoare " -"diferită de acestea va primi o valoare <_:replaceable-3/>. Numerele (atât " -"cele normale, cât și cele lungi) pot fi valori zecimale, valori octale " -"(precedând valoarea cu <_:replaceable-4/>) sau valori hexazecimale " -"(precedând valoarea cu <_:replaceable-5/>). Valoarea maximă a parametrilor " -"numerici normali și lungi depinde de mașină." +msgid "Parameter values may be of four types: strings, booleans, numbers, and long numbers. A string is comprised of any printable characters. A boolean should be either the value <_:replaceable-1/> or <_:replaceable-2/>. An undefined boolean parameter or one with a value other than these will be given a <_:replaceable-3/> value. Numbers (both regular and long) may be either decimal values, octal values (precede the value with <_:replaceable-4/>) or hexadecimal values (precede the value with <_:replaceable-5/>). The maximum value of the regular and long numeric parameters is machine-dependent." +msgstr "Valorile parametrilor pot fi de patru tipuri: șiruri de caractere, booleene, numere și numere lungi. Un șir de caractere este alcătuit din orice caractere imprimabile. O valoare booleană trebuie să fie <_:replaceable-1/> sau <_:replaceable-2/>. Un parametru boolean nedefinit sau unul cu o valoare diferită de acestea va primi o valoare <_:replaceable-3/>. Numerele (atât cele normale, cât și cele lungi) pot fi valori zecimale, valori octale (precedând valoarea cu <_:replaceable-4/>) sau valori hexazecimale (precedând valoarea cu <_:replaceable-5/>). Valoarea maximă a parametrilor numerici normali și lungi depinde de mașină." #. (itstool) path: refsect1/para #: login.defs.5.xml.out:147 @@ -5663,14 +4548,8 @@ msgstr "PASS_WARN_AGE" #. (itstool) path: variablelist/para #: login.defs.5.xml.out:195 -msgid "" -"<_:option-1/>, <_:option-2/> and <_:option-3/> are only used at the time of " -"account creation. Any changes to these settings won't affect existing " -"accounts." -msgstr "" -"„<_:option-1/>”, „<_:option-2/>” și „<_:option-3/>” sunt utilizate numai la " -"momentul creării contului. Orice modificare a acestor opțiuni nu va afecta " -"conturile existente." +msgid "<_:option-1/>, <_:option-2/> and <_:option-3/> are only used at the time of account creation. Any changes to these settings won't affect existing accounts." +msgstr "„<_:option-1/>”, „<_:option-2/>” și „<_:option-3/>” sunt utilizate numai la momentul creării contului. Orice modificare a acestor opțiuni nu va afecta conturile existente." #. (itstool) path: refsect1/title #: login.defs.5.xml.out:229 @@ -5679,12 +4558,8 @@ msgstr "REFERINȚE ÎNCRUCIȘATE" #. (itstool) path: refsect1/para #: login.defs.5.xml.out:230 -msgid "" -"The following cross references show which programs in the shadow password " -"suite use which parameters." -msgstr "" -"Următoarele referințe încrucișate arată ce programe din suita instrumentelor " -"pentru lucrul cu parole, «shadow» utilizează ce parametri." +msgid "The following cross references show which programs in the shadow password suite use which parameters." +msgstr "Următoarele referințe încrucișate arată ce programe din suita instrumentelor pentru lucrul cu parole, «shadow» utilizează ce parametri." #. (itstool) path: listitem/para #. (itstool) path: para/phrase @@ -5732,12 +4607,8 @@ msgstr "YESCRYPT_COST_FACTOR" #. (itstool) path: listitem/para #: login.defs.5.xml.out:255 login.defs.5.xml.out:292 -msgid "" -"<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:" -"phrase-2/> <_:phrase-3/>" -msgstr "" -"<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:" -"phrase-2/> <_:phrase-3/>" +msgid "<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-2/> <_:phrase-3/>" +msgstr "<_:phrase-1/> ENCRYPT_METHOD MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB <_:phrase-2/> <_:phrase-3/>" #. (itstool) path: para/phrase #: login.defs.5.xml.out:271 @@ -5792,6 +4663,7 @@ msgstr "FAILLOG_ENAB" #. (itstool) path: para/phrase #: login.defs.5.xml.out:366 +#| msgid "FILE" msgid "FTMP_FILE" msgstr "FTMP_FILE" @@ -5807,12 +4679,8 @@ msgstr "LASTLOG_ENAB LASTLOG_UID_MAX" #. (itstool) path: para/phrase #: login.defs.5.xml.out:374 -msgid "" -"MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE " -"PORTTIME_CHECKS_ENAB QUOTAS_ENAB" -msgstr "" -"MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE " -"PORTTIME_CHECKS_ENAB QUOTAS_ENAB" +msgid "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE PORTTIME_CHECKS_ENAB QUOTAS_ENAB" +msgstr "MAIL_CHECK_ENAB MAIL_DIR MAIL_FILE MOTD_FILE NOLOGINS_FILE PORTTIME_CHECKS_ENAB QUOTAS_ENAB" #. (itstool) path: para/phrase #: login.defs.5.xml.out:378 @@ -5821,18 +4689,8 @@ msgstr "ULIMIT UMASK" #. (itstool) path: listitem/para #: login.defs.5.xml.out:358 -msgid "" -"<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY " -"<_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR " -"<_:phrase-6/> LOGIN_RETRIES <_:phrase-7/> LOGIN_TIMEOUT LOG_OK_LOGINS " -"LOG_UNKFAIL_ENAB <_:phrase-8/> TTYGROUP TTYPERM TTYTYPE_FILE <_:phrase-9/> " -"USERGROUPS_ENAB" -msgstr "" -"<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY " -"<_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR " -"<_:phrase-6/> LOGIN_RETRIES <_:phrase-7/> LOGIN_TIMEOUT LOG_OK_LOGINS " -"LOG_UNKFAIL_ENAB <_:phrase-8/> TTYGROUP TTYPERM TTYTYPE_FILE <_:phrase-9/> " -"USERGROUPS_ENAB" +msgid "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY <_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR <_:phrase-6/> LOGIN_RETRIES <_:phrase-7/> LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB <_:phrase-8/> TTYGROUP TTYPERM TTYTYPE_FILE <_:phrase-9/> USERGROUPS_ENAB" +msgstr "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ERASECHAR FAIL_DELAY <_:phrase-3/> FAKE_SHELL <_:phrase-4/> HUSHLOGIN_FILE <_:phrase-5/> KILLCHAR <_:phrase-6/> LOGIN_RETRIES <_:phrase-7/> LOGIN_TIMEOUT LOG_OK_LOGINS LOG_UNKFAIL_ENAB <_:phrase-8/> TTYGROUP TTYPERM TTYTYPE_FILE <_:phrase-9/> USERGROUPS_ENAB" #. (itstool) path: varlistentry/term #: login.defs.5.xml.out:385 @@ -5846,29 +4704,13 @@ msgstr "SYSLOG_SG_ENAB" #. (itstool) path: listitem/para #: login.defs.5.xml.out:395 -msgid "" -"<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP " -"MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:" -"phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " -"SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " -"UMASK <_:phrase-3/>" -msgstr "" -"<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP " -"MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:" -"phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX " -"SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN " -"UMASK <_:phrase-3/>" +msgid "<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <_:phrase-3/>" +msgstr "<_:phrase-1/> ENCRYPT_METHOD GID_MAX GID_MIN MAX_MEMBERS_PER_GROUP MD5_CRYPT_ENAB HOME_MODE PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE <_:phrase-2/> SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <_:phrase-3/>" #. (itstool) path: listitem/para #: login.defs.5.xml.out:417 -msgid "" -"<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB " -"PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> " -"<_:phrase-3/>" -msgstr "" -"<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB " -"PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> " -"<_:phrase-3/>" +msgid "<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> <_:phrase-3/>" +msgstr "<_:phrase-1/> ENCRYPT_METHOD MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB PASS_ALWAYS_WARN PASS_CHANGE_TRIES PASS_MAX_LEN PASS_MIN_LEN <_:phrase-2/> <_:phrase-3/>" #. (itstool) path: para/phrase #: login.defs.5.xml.out:433 @@ -5923,12 +4765,8 @@ msgstr "SU_WHEEL_ONLY" #. (itstool) path: listitem/para #: login.defs.5.xml.out:457 -msgid "" -"<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH " -"<_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" -msgstr "" -"<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH " -"<_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" +msgid "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH <_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" +msgstr "<_:phrase-1/> CONSOLE_GROUPS DEFAULT_HOME <_:phrase-2/> ENV_PATH ENV_SUPATH <_:phrase-3/> SULOG_FILE SU_NAME <_:phrase-4/> SYSLOG_SU_ENAB <_:phrase-5/>" #. (itstool) path: varlistentry/term #. (itstool) path: citerefentry/refentrytitle @@ -5948,18 +4786,8 @@ msgstr "TCB_AUTH_GROUP TCB_SYMLINK USE_TCB" #. (itstool) path: listitem/para #: login.defs.5.xml.out:483 -msgid "" -"CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR " -"MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <_:" -"phrase-1/>" -msgstr "" -"CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR " -"MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE " -"SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN " -"SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <_:" -"phrase-1/>" +msgid "CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <_:phrase-1/>" +msgstr "CREATE_HOME GID_MAX GID_MIN HOME_MODE LASTLOG_UID_MAX MAIL_DIR MAX_MEMBERS_PER_GROUP PASS_MAX_DAYS PASS_MIN_DAYS PASS_WARN_AGE SUB_GID_COUNT SUB_GID_MAX SUB_GID_MIN SUB_UID_COUNT SUB_UID_MAX SUB_UID_MIN SYS_GID_MAX SYS_GID_MIN SYS_UID_MAX SYS_UID_MIN UID_MAX UID_MIN UMASK <_:phrase-1/>" #. (itstool) path: para/phrase #: login.defs.5.xml.out:504 login.defs.5.xml.out:514 @@ -5968,12 +4796,8 @@ msgstr "TCB_SYMLINKS USE_TCB" #. (itstool) path: listitem/para #: login.defs.5.xml.out:501 -msgid "" -"MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:" -"phrase-1/>" -msgstr "" -"MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:" -"phrase-1/>" +msgid "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:phrase-1/>" +msgstr "MAIL_DIR MAIL_FILE MAX_MEMBERS_PER_GROUP USERDEL_CMD USERGROUPS_ENAB <_:phrase-1/>" #. (itstool) path: listitem/para #: login.defs.5.xml.out:511 @@ -5997,31 +4821,19 @@ msgstr "ERORI" #. (itstool) path: refsect1/para #: login.defs.5.xml.out:531 -msgid "" -"Much of the functionality that used to be provided by the shadow password " -"suite is now handled by PAM. Thus, <_:filename-1/> is no longer used by <_:" -"citerefentry-2/>, or less used by <_:citerefentry-3/>, and <_:citerefentry-4/" -">. Please refer to the corresponding PAM configuration files instead." -msgstr "" -"O mare parte din funcționalitatea care era furnizată de suita de instrumente " -"pentru lucrul cu parole, «shadow» este acum gestionată de PAM. Astfel, <_:" -"filename-1/> nu mai este utilizat de <_:citerefentry-2/>, sau mai puțin " -"utilizat de <_:citerefentry-3/>, și <_:citerefentry-4/>. Vă rugăm să " -"consultați în schimb fișierele de configurare PAM corespunzătoare." +msgid "Much of the functionality that used to be provided by the shadow password suite is now handled by PAM. Thus, <_:filename-1/> is no longer used by <_:citerefentry-2/>, or less used by <_:citerefentry-3/>, and <_:citerefentry-4/>. Please refer to the corresponding PAM configuration files instead." +msgstr "O mare parte din funcționalitatea care era furnizată de suita de instrumente pentru lucrul cu parole, «shadow» este acum gestionată de PAM. Astfel, <_:filename-1/> nu mai este utilizat de <_:citerefentry-2/>, sau mai puțin utilizat de <_:citerefentry-3/>, și <_:citerefentry-4/>. Vă rugăm să consultați în schimb fișierele de configurare PAM corespunzătoare." #. (itstool) path: citerefentry/refentrytitle #: login.defs.5.xml.out:564 +#| msgid "pw_name" msgid "pam" msgstr "pam" #. (itstool) path: refsect1/para #: login.defs.5.xml.out:547 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>." #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname @@ -6046,25 +4858,14 @@ msgstr "/etc/porttime" #. (itstool) path: para/filename #: logoutd.8.xml.out:56 +#| msgid "/etc/group" msgid "/etc/rc" msgstr "/etc/rc" #. (itstool) path: refsect1/para #: logoutd.8.xml.out:52 -msgid "" -"<_:command-1/> enforces the login time and port restrictions specified in <_:" -"filename-2/>. <_:command-3/> should be started from <_:filename-4/>. The <_:" -"filename-5/> file is scanned periodically and each user name is checked to " -"see if the named user is permitted on the named port at the current time. " -"Any login session which is violating the restrictions in <_:filename-6/> is " -"terminated." -msgstr "" -"<_:command-1/> aplică restricțiile privind ora de conectare și portul " -"specificate în <_:filename-2/>. <_:command-3/> ar trebui să fie lansat de la " -"<_:filename-4/>. Fișierul <_:filename-5/> este scanat periodic și fiecare " -"nume de utilizator este verificat pentru a vedea dacă utilizatorul numit are " -"permisiunea de a se conecta la portul numit la ora curentă. Orice sesiune de " -"conectare care încalcă restricțiile din <_:filename-6/> este închisă." +msgid "<_:command-1/> enforces the login time and port restrictions specified in <_:filename-2/>. <_:command-3/> should be started from <_:filename-4/>. The <_:filename-5/> file is scanned periodically and each user name is checked to see if the named user is permitted on the named port at the current time. Any login session which is violating the restrictions in <_:filename-6/> is terminated." +msgstr "<_:command-1/> aplică restricțiile privind ora de conectare și portul specificate în <_:filename-2/>. <_:command-3/> ar trebui să fie lansat de la <_:filename-4/>. Fișierul <_:filename-5/> este scanat periodic și fiecare nume de utilizator este verificat pentru a vedea dacă utilizatorul numit are permisiunea de a se conecta la portul numit la ora curentă. Orice sesiune de conectare care încalcă restricțiile din <_:filename-6/> este închisă." #. (itstool) path: listitem/para #: logoutd.8.xml.out:70 porttime.5.xml.out:111 @@ -6078,52 +4879,18 @@ msgstr "autentificare într-un grup nou" #. (itstool) path: refsect1/para #: newgrp.1.xml.out:54 -msgid "" -"The <_:command-1/> command is used to change the current group ID during a " -"login session. If the optional <_:option-2/> flag is given, the user's " -"environment will be reinitialized as though the user had logged in, " -"otherwise the current environment, including current working directory, " -"remains unchanged." -msgstr "" -"Comanda <_:command-1/> este utilizată pentru a schimba ID-ul grupului curent " -"în timpul unei sesiuni de autentificare. Dacă se dă fanionul opțional „<_:" -"option-2/>”, mediul utilizatorului va fi reinițializat ca și cum " -"utilizatorul s-ar fi autentificat, altfel mediul curent, inclusiv directorul " -"curent de lucru, rămâne neschimbat." +msgid "The <_:command-1/> command is used to change the current group ID during a login session. If the optional <_:option-2/> flag is given, the user's environment will be reinitialized as though the user had logged in, otherwise the current environment, including current working directory, remains unchanged." +msgstr "Comanda <_:command-1/> este utilizată pentru a schimba ID-ul grupului curent în timpul unei sesiuni de autentificare. Dacă se dă fanionul opțional „<_:option-2/>”, mediul utilizatorului va fi reinițializat ca și cum utilizatorul s-ar fi autentificat, altfel mediul curent, inclusiv directorul curent de lucru, rămâne neschimbat." #. (itstool) path: refsect1/para #: newgrp.1.xml.out:62 -msgid "" -"<_:command-1/> changes the current real group ID to the named group, or to " -"the default group listed in <_:filename-2/> if no group name is given. <_:" -"command-3/> also tries to add the group to the user groupset. If not root, " -"the user will be prompted for a password if she does not have a password (in " -"<_:filename-4/> if this user has an entry in the shadowed password file, or " -"in <_:filename-5/> otherwise) and the group does, or if the user is not " -"listed as a member and the group has a password. The user will be denied " -"access if the group password is empty and the user is not listed as a member." -msgstr "" -"<_:command-1/> schimbă ID-ul actual al grupului real cu cel al grupului " -"numit sau cu cel al grupului implicit enumerat în <_:filename-2/> dacă nu " -"este dat niciun nume de grup. <_:command-3/> încearcă, de asemenea, să " -"adauge grupul la setul de grupuri al utilizatorului. Dacă nu este root, " -"utilizatorului i se va cere o parolă dacă nu are o parolă (în <_:filename-4/" -"> dacă acest utilizator are o intrare în fișierul de parole criptate " -"(shadowed), sau în <_:filename-5/> în caz contrar) și grupul are, sau dacă " -"utilizatorul nu este listat ca membru și grupul are o parolă. Utilizatorului " -"i se va refuza accesul dacă parola grupului este goală și utilizatorul nu " -"este listat ca membru." +msgid "<_:command-1/> changes the current real group ID to the named group, or to the default group listed in <_:filename-2/> if no group name is given. <_:command-3/> also tries to add the group to the user groupset. If not root, the user will be prompted for a password if she does not have a password (in <_:filename-4/> if this user has an entry in the shadowed password file, or in <_:filename-5/> otherwise) and the group does, or if the user is not listed as a member and the group has a password. The user will be denied access if the group password is empty and the user is not listed as a member." +msgstr "<_:command-1/> schimbă ID-ul actual al grupului real cu cel al grupului numit sau cu cel al grupului implicit enumerat în <_:filename-2/> dacă nu este dat niciun nume de grup. <_:command-3/> încearcă, de asemenea, să adauge grupul la setul de grupuri al utilizatorului. Dacă nu este root, utilizatorului i se va cere o parolă dacă nu are o parolă (în <_:filename-4/> dacă acest utilizator are o intrare în fișierul de parole criptate (shadowed), sau în <_:filename-5/> în caz contrar) și grupul are, sau dacă utilizatorul nu este listat ca membru și grupul are o parolă. Utilizatorului i se va refuza accesul dacă parola grupului este goală și utilizatorul nu este listat ca membru." #. (itstool) path: refsect1/para #: newgrp.1.xml.out:76 -msgid "" -"If there is an entry for this group in <_:filename-1/>, then the list of " -"members and the password of this group will be taken from this file, " -"otherwise, the entry in <_:filename-2/> is considered." -msgstr "" -"Dacă există o intrare pentru acest grup în <_:filename-1/>, atunci lista " -"membrilor și parola acestui grup vor fi preluate din acest fișier; în caz " -"contrar, este luată în considerare intrarea din <_:filename-2/>." +msgid "If there is an entry for this group in <_:filename-1/>, then the list of members and the password of this group will be taken from this file, otherwise, the entry in <_:filename-2/> is considered." +msgstr "Dacă există o intrare pentru acest grup în <_:filename-1/>, atunci lista membrilor și parola acestui grup vor fi preluate din acest fișier; în caz contrar, este luată în considerare intrarea din <_:filename-2/>." #. (itstool) path: citerefentry/refentrytitle #: newgrp.1.xml.out:130 sg.1.xml.out:119 @@ -6133,22 +4900,12 @@ msgstr "id" #. (itstool) path: refnamediv/refpurpose #: newusers.8.xml.out:59 msgid "update and create new users in batch" -msgstr "" -"actualizează și creează utilizatori noi în modul de procesare pe loturi" +msgstr "actualizează și creează utilizatori noi în modul de procesare pe loturi" #. (itstool) path: refsect1/para #: newusers.8.xml.out:76 -msgid "" -"The <_:command-1/> command reads a <_:replaceable-2/> (or the standard input " -"by default) and uses this information to update a set of existing users or " -"to create new users. Each line is in the same format as the standard " -"password file (see <_:citerefentry-3/>) with the exceptions explained below:" -msgstr "" -"Comanda <_:command-1/> citește un <_:replaceable-2/> (sau intrarea standard " -"în mod implicit) și utilizează aceste informații pentru a actualiza un set " -"de utilizatori existenți sau pentru a crea noi utilizatori. Fiecare linie " -"are același format ca fișierul standard de parole (a se vedea <_:" -"citerefentry-3/>), cu excepțiile explicate mai jos:" +msgid "The <_:command-1/> command reads a <_:replaceable-2/> (or the standard input by default) and uses this information to update a set of existing users or to create new users. Each line is in the same format as the standard password file (see <_:citerefentry-3/>) with the exceptions explained below:" +msgstr "Comanda <_:command-1/> citește un <_:replaceable-2/> (sau intrarea standard în mod implicit) și utilizează aceste informații pentru a actualiza un set de utilizatori existenți sau pentru a crea noi utilizatori. Fiecare linie are același format ca fișierul standard de parole (a se vedea <_:citerefentry-3/>), cu excepțiile explicate mai jos:" #. (itstool) path: refsect1/para #: newusers.8.xml.out:84 @@ -6167,15 +4924,8 @@ msgstr "Acesta este numele utilizatorului." #. (itstool) path: listitem/para #: newusers.8.xml.out:95 -msgid "" -"It can be the name of a new user or the name of an existing user (or a user " -"created before by <_:command-1/>). In case of an existing user, the user's " -"information will be changed, otherwise a new user will be created." -msgstr "" -"Acesta poate fi numele unui utilizator nou sau numele unui utilizator " -"existent (sau un utilizator creat anterior prin <_:command-1/>). În cazul " -"unui utilizator existent, informațiile utilizatorului vor fi modificate, în " -"caz contrar va fi creat un utilizator nou." +msgid "It can be the name of a new user or the name of an existing user (or a user created before by <_:command-1/>). In case of an existing user, the user's information will be changed, otherwise a new user will be created." +msgstr "Acesta poate fi numele unui utilizator nou sau numele unui utilizator existent (sau un utilizator creat anterior prin <_:command-1/>). În cazul unui utilizator existent, informațiile utilizatorului vor fi modificate, în caz contrar va fi creat un utilizator nou." #. (itstool) path: term/emphasis #: newusers.8.xml.out:106 @@ -6184,11 +4934,8 @@ msgstr "pw_passwd" #. (itstool) path: listitem/para #: newusers.8.xml.out:109 -msgid "" -"This field will be encrypted and used as the new value of the encrypted " -"password." -msgstr "" -"Acest câmp va fi criptat și utilizat ca noua valoare a parolei criptate." +msgid "This field will be encrypted and used as the new value of the encrypted password." +msgstr "Acest câmp va fi criptat și utilizat ca noua valoare a parolei criptate." #. (itstool) path: term/emphasis #: newusers.8.xml.out:117 @@ -6202,12 +4949,8 @@ msgstr "Acest câmp este utilizat pentru a defini UID-ul utilizatorului." #. (itstool) path: listitem/para #: newusers.8.xml.out:123 -msgid "" -"If the field is empty, a new (unused) UID will be defined automatically by " -"<_:command-1/>." -msgstr "" -"Dacă câmpul este gol, un UID nou (neutilizat) va fi definit automat de <_:" -"command-1/>." +msgid "If the field is empty, a new (unused) UID will be defined automatically by <_:command-1/>." +msgstr "Dacă câmpul este gol, un UID nou (neutilizat) va fi definit automat de <_:command-1/>." #. (itstool) path: listitem/para #: newusers.8.xml.out:127 @@ -6216,23 +4959,13 @@ msgstr "Dacă acest câmp conține un număr, acest număr va fi utilizat ca UID #. (itstool) path: listitem/para #: newusers.8.xml.out:131 -msgid "" -"If this field contains the name of an existing user (or the name of a user " -"created before by <_:command-1/>), the UID of the specified user will be " -"used." -msgstr "" -"Dacă acest câmp conține numele unui utilizator existent (sau numele unui " -"utilizator creat anterior prin <_:command-1/>), va fi utilizat UID-ul " -"utilizatorului specificat." +msgid "If this field contains the name of an existing user (or the name of a user created before by <_:command-1/>), the UID of the specified user will be used." +msgstr "Dacă acest câmp conține numele unui utilizator existent (sau numele unui utilizator creat anterior prin <_:command-1/>), va fi utilizat UID-ul utilizatorului specificat." #. (itstool) path: listitem/para #: newusers.8.xml.out:137 -msgid "" -"If the UID of an existing user is changed, the files ownership of the user's " -"file should be fixed manually." -msgstr "" -"În cazul în care UID-ul unui utilizator existent este modificat, " -"proprietarul fișierelor utilizatorului trebuie să fie stabilit manual." +msgid "If the UID of an existing user is changed, the files ownership of the user's file should be fixed manually." +msgstr "În cazul în care UID-ul unui utilizator existent este modificat, proprietarul fișierelor utilizatorului trebuie să fie stabilit manual." #. (itstool) path: term/emphasis #: newusers.8.xml.out:145 @@ -6242,55 +4975,27 @@ msgstr "pw_gid" #. (itstool) path: listitem/para #: newusers.8.xml.out:148 msgid "This field is used to define the primary group ID for the user." -msgstr "" -"Acest câmp este utilizat pentru a defini ID-ul grupului primar pentru " -"utilizator." +msgstr "Acest câmp este utilizat pentru a defini ID-ul grupului primar pentru utilizator." #. (itstool) path: listitem/para #: newusers.8.xml.out:151 -msgid "" -"If this field contains the name of an existing group (or a group created " -"before by <_:command-1/>), the GID of this group will be used as the primary " -"group ID for the user." -msgstr "" -"Dacă acest câmp conține numele unui grup existent (sau un grup creat " -"anterior prin <_:command-1/>), GID-ul acestui grup va fi utilizat ca ID de " -"grup primar pentru utilizator." +msgid "If this field contains the name of an existing group (or a group created before by <_:command-1/>), the GID of this group will be used as the primary group ID for the user." +msgstr "Dacă acest câmp conține numele unui grup existent (sau un grup creat anterior prin <_:command-1/>), GID-ul acestui grup va fi utilizat ca ID de grup primar pentru utilizator." #. (itstool) path: listitem/para #: newusers.8.xml.out:157 -msgid "" -"If this field is a number, this number will be used as the primary group ID " -"of the user. If no groups exist with this GID, a new group will be created " -"with this GID, and the name of the user." -msgstr "" -"Dacă acest câmp este un număr, acest număr va fi utilizat ca ID de grup " -"primar al utilizatorului. Dacă nu există grupuri cu acest GID, se va crea un " -"grup nou cu acest GID și cu numele utilizatorului." +msgid "If this field is a number, this number will be used as the primary group ID of the user. If no groups exist with this GID, a new group will be created with this GID, and the name of the user." +msgstr "Dacă acest câmp este un număr, acest număr va fi utilizat ca ID de grup primar al utilizatorului. Dacă nu există grupuri cu acest GID, se va crea un grup nou cu acest GID și cu numele utilizatorului." #. (itstool) path: listitem/para #: newusers.8.xml.out:163 -msgid "" -"If this field is empty, a new group will be created with the name of the " -"user and a GID will be automatically defined by <_:command-1/> to be used as " -"the primary group ID for the user and as the GID for the new group." -msgstr "" -"Dacă acest câmp este gol, se va crea un nou grup cu numele utilizatorului și " -"se va defini automat un GID prin <_:command-1/> pentru a fi utilizat ca ID " -"de grup primar pentru utilizator și ca GID pentru noul grup." +msgid "If this field is empty, a new group will be created with the name of the user and a GID will be automatically defined by <_:command-1/> to be used as the primary group ID for the user and as the GID for the new group." +msgstr "Dacă acest câmp este gol, se va crea un nou grup cu numele utilizatorului și se va defini automat un GID prin <_:command-1/> pentru a fi utilizat ca ID de grup primar pentru utilizator și ca GID pentru noul grup." #. (itstool) path: listitem/para #: newusers.8.xml.out:169 -msgid "" -"If this field contains the name of a group which does not exist (and was not " -"created before by <_:command-1/>), a new group will be created with the " -"specified name and a GID will be automatically defined by <_:command-2/> to " -"be used as the primary group ID for the user and GID for the new group." -msgstr "" -"Dacă acest câmp conține numele unui grup care nu există (și care nu a fost " -"creat anterior prin <_:command-1/>), se va crea un nou grup cu numele " -"specificat și se va defini automat un GID prin <_:command-2/> pentru a fi " -"utilizat ca ID de grup primar pentru utilizator și GID pentru noul grup." +msgid "If this field contains the name of a group which does not exist (and was not created before by <_:command-1/>), a new group will be created with the specified name and a GID will be automatically defined by <_:command-2/> to be used as the primary group ID for the user and GID for the new group." +msgstr "Dacă acest câmp conține numele unui grup care nu există (și care nu a fost creat anterior prin <_:command-1/>), se va crea un nou grup cu numele specificat și se va defini automat un GID prin <_:command-2/> pentru a fi utilizat ca ID de grup primar pentru utilizator și GID pentru noul grup." #. (itstool) path: term/emphasis #: newusers.8.xml.out:181 @@ -6310,9 +5015,7 @@ msgstr "pw_dir" #. (itstool) path: listitem/para #: newusers.8.xml.out:194 msgid "This field is used to define the home directory of the user." -msgstr "" -"Acest câmp este utilizat pentru a defini directorul personal al " -"utilizatorului." +msgstr "Acest câmp este utilizat pentru a defini directorul personal al utilizatorului." #. (itstool) path: para/emphasis #: newusers.8.xml.out:201 @@ -6321,36 +5024,13 @@ msgstr "«newusers» nu creează directoare părinte" #. (itstool) path: listitem/para #: newusers.8.xml.out:197 -msgid "" -"If this field does not specify an existing directory, the specified " -"directory is created, with ownership set to the user being created or " -"updated and its primary group. Note that <_:emphasis-1/> of the new user's " -"home directory. The newusers command will fail to create the home directory " -"if the parent directories do not exist, and will send a message to stderr " -"informing the user of the failure. The newusers command will not halt or " -"return a failure to the calling shell if it fails to create the home " -"directory, it will continue to process the batch of new users specified." -msgstr "" -"Dacă acest câmp nu specifică un director existent, directorul specificat " -"este creat, cu proprietarul stabilit la utilizatorul care este creat sau " -"actualizat și grupul său primar. Rețineți că <_:emphasis-1/> din directorul " -"personal al noului utilizator. Comanda «newusers» nu va reuși să creeze " -"directorul personal dacă directoarele părinte nu există și va trimite un " -"mesaj la ieșirea de eroare standard (stderr) informând utilizatorul despre " -"eșec. Comanda «newusers» nu se oprește și nu returnează un mesaj de eșec " -"către shell-ul apelant în cazul în care nu reușește să creeze directorul " -"personal, ci va continua să proceseze lotul de utilizatori noi specificat." +msgid "If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group. Note that <_:emphasis-1/> of the new user's home directory. The newusers command will fail to create the home directory if the parent directories do not exist, and will send a message to stderr informing the user of the failure. The newusers command will not halt or return a failure to the calling shell if it fails to create the home directory, it will continue to process the batch of new users specified." +msgstr "Dacă acest câmp nu specifică un director existent, directorul specificat este creat, cu proprietarul stabilit la utilizatorul care este creat sau actualizat și grupul său primar. Rețineți că <_:emphasis-1/> din directorul personal al noului utilizator. Comanda «newusers» nu va reuși să creeze directorul personal dacă directoarele părinte nu există și va trimite un mesaj la ieșirea de eroare standard (stderr) informând utilizatorul despre eșec. Comanda «newusers» nu se oprește și nu returnează un mesaj de eșec către shell-ul apelant în cazul în care nu reușește să creeze directorul personal, ci va continua să proceseze lotul de utilizatori noi specificat." #. (itstool) path: listitem/para #: newusers.8.xml.out:210 -msgid "" -"If the home directory of an existing user is changed, <_:command-1/> does " -"not move or copy the content of the old directory to the new location. This " -"should be done manually." -msgstr "" -"Dacă directorul personal al unui utilizator existent este modificat, <_:" -"command-1/> nu mută sau copiază conținutul vechiului director în noua " -"locație. Acest lucru trebuie făcut manual." +msgid "If the home directory of an existing user is changed, <_:command-1/> does not move or copy the content of the old directory to the new location. This should be done manually." +msgstr "Dacă directorul personal al unui utilizator existent este modificat, <_:command-1/> nu mută sau copiază conținutul vechiului director în noua locație. Acest lucru trebuie făcut manual." #. (itstool) path: term/emphasis #: newusers.8.xml.out:220 @@ -6359,49 +5039,23 @@ msgstr "pw_shell" #. (itstool) path: listitem/para #: newusers.8.xml.out:223 -msgid "" -"This field defines the shell of the user. No checks are performed on this " -"field." -msgstr "" -"Acest câmp definește shell-ul utilizatorului. Nu se efectuează nicio " -"verificare a acestui câmp." +msgid "This field defines the shell of the user. No checks are performed on this field." +msgstr "Acest câmp definește shell-ul utilizatorului. Nu se efectuează nicio verificare a acestui câmp." #. (itstool) path: refsect1/para #: newusers.8.xml.out:231 -msgid "" -"<_:command-1/> first tries to create or change all the specified users, and " -"then write these changes to the user or group databases. If an error occurs " -"(except in the final writes to the databases), no changes are committed to " -"the databases." -msgstr "" -"<_:command-1/> încearcă mai întâi să creeze sau să modifice toți " -"utilizatorii specificați și apoi să scrie aceste modificări în bazele de " -"date ale utilizatorilor sau grupurilor. Dacă apare o eroare (cu excepția " -"scrierii finale în bazele de date), nicio modificare nu este înregistrată în " -"bazele de date." +msgid "<_:command-1/> first tries to create or change all the specified users, and then write these changes to the user or group databases. If an error occurs (except in the final writes to the databases), no changes are committed to the databases." +msgstr "<_:command-1/> încearcă mai întâi să creeze sau să modifice toți utilizatorii specificați și apoi să scrie aceste modificări în bazele de date ale utilizatorilor sau grupurilor. Dacă apare o eroare (cu excepția scrierii finale în bazele de date), nicio modificare nu este înregistrată în bazele de date." #. (itstool) path: refsect1/para #: newusers.8.xml.out:237 -msgid "" -"During this first pass, users are created with a locked password (and " -"passwords are not changed for the users which are not created). A second " -"pass is used to update the passwords using PAM. Failures to update a " -"password are reported, but will not stop the other password updates." -msgstr "" -"În timpul acestei prime etape, utilizatorii sunt creați cu o parolă blocată " -"(iar parolele nu sunt modificate pentru utilizatorii care nu sunt creați). O " -"a doua etapă este utilizată pentru a actualiza parolele utilizând PAM. " -"Eșecurile în actualizarea unei parole sunt raportate, dar nu vor opri " -"celelalte actualizări ale parolelor." +msgid "During this first pass, users are created with a locked password (and passwords are not changed for the users which are not created). A second pass is used to update the passwords using PAM. Failures to update a password are reported, but will not stop the other password updates." +msgstr "În timpul acestei prime etape, utilizatorii sunt creați cu o parolă blocată (iar parolele nu sunt modificate pentru utilizatorii care nu sunt creați). O a doua etapă este utilizată pentru a actualiza parolele utilizând PAM. Eșecurile în actualizarea unei parole sunt raportate, dar nu vor opri celelalte actualizări ale parolelor." #. (itstool) path: refsect1/para #: newusers.8.xml.out:245 -msgid "" -"This command is intended to be used in a large system environment where many " -"accounts are updated at a single time." -msgstr "" -"Această comandă este concepută pentru a fi utilizată într-un mediu de sistem " -"mare, în care multe conturi sunt actualizate simultan." +msgid "This command is intended to be used in a large system environment where many accounts are updated at a single time." +msgstr "Această comandă este concepută pentru a fi utilizată într-un mediu de sistem mare, în care multe conturi sunt actualizate simultan." #. (itstool) path: term/option #: newusers.8.xml.out:259 pwck.8.xml.out:164 useradd.8.xml.out:108 @@ -6417,12 +5071,8 @@ msgstr "Permite nume care nu sunt conforme cu standardele." #. (itstool) path: listitem/para #: newusers.8.xml.out:273 -msgid "" -"The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc " -"support these methods." -msgstr "" -"Metodele disponibile sunt DES, MD5, NONE și SHA256 sau SHA512, dacă " -"biblioteca „libc” acceptă aceste metode." +msgid "The available methods are DES, MD5, NONE, and SHA256 or SHA512 if your libc support these methods." +msgstr "Metodele disponibile sunt DES, MD5, NONE și SHA256 sau SHA512, dacă biblioteca „libc” acceptă aceste metode." #. (itstool) path: listitem/para #: newusers.8.xml.out:292 useradd.8.xml.out:461 @@ -6455,52 +5105,28 @@ msgstr "UID_MAX" #. (itstool) path: listitem/para #: newusers.8.xml.out:295 useradd.8.xml.out:464 -msgid "" -"System users will be created with no aging information in <_:filename-1/>, " -"and their numeric identifiers are chosen in the <_:option-2/>-<_:option-3/> " -"range, defined in <_:filename-4/>, instead of <_:option-5/>-<_:option-6/> " -"(and their <_:option-7/> counterparts for the creation of groups)." -msgstr "" -"Utilizatorii sistemului vor fi creați fără informații de vechime (expirare) " -"în <_:filename-1/>, iar identificatorii lor numerici sunt aleși în " -"intervalul „<_:option-2/>”-„<_:option-3/>”, definit în <_:filename-4/>, în " -"loc de „<_:option-5/>”-<_:option-6/> (și omologii lor „<_:option-7/>” pentru " -"crearea grupurilor)." +msgid "System users will be created with no aging information in <_:filename-1/>, and their numeric identifiers are chosen in the <_:option-2/>-<_:option-3/> range, defined in <_:filename-4/>, instead of <_:option-5/>-<_:option-6/> (and their <_:option-7/> counterparts for the creation of groups)." +msgstr "Utilizatorii sistemului vor fi creați fără informații de vechime (expirare) în <_:filename-1/>, iar identificatorii lor numerici sunt aleși în intervalul „<_:option-2/>”-„<_:option-3/>”, definit în <_:filename-4/>, în loc de „<_:option-5/>”-<_:option-6/> (și omologii lor „<_:option-7/>” pentru crearea grupurilor)." #. (itstool) path: listitem/para #: newusers.8.xml.out:342 -msgid "" -"A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. " -"The default is 13." -msgstr "" -"O valoare minimă de 4 și o valoare maximă de 31 vor fi aplicate pentru " -"BCRYPT. Valoarea implicită este 13." +msgid "A minimal value of 4 and a maximal value of 31 will be enforced for BCRYPT. The default is 13." +msgstr "O valoare minimă de 4 și o valoare maximă de 31 vor fi aplicate pentru BCRYPT. Valoarea implicită este 13." #. (itstool) path: listitem/para #: newusers.8.xml.out:351 -msgid "" -"A minimal value of 1000 and a maximal value of 999,999,999 will be enforced " -"for SHA256 and SHA512. The default is 5000." -msgstr "" -"O valoare minimă de 1.000 și o valoare maximă de 999.999.999 vor fi aplicate " -"pentru SHA256 și SHA512. Valoarea implicită este 5.000." +msgid "A minimal value of 1000 and a maximal value of 999,999,999 will be enforced for SHA256 and SHA512. The default is 5000." +msgstr "O valoare minimă de 1.000 și o valoare maximă de 999.999.999 vor fi aplicate pentru SHA256 și SHA512. Valoarea implicită este 5.000." #. (itstool) path: listitem/para #: newusers.8.xml.out:359 -msgid "" -"A minimal value of 1 and a maximal value of 11 will be enforced for " -"YESCRYPT. The default is 5." -msgstr "" -"O valoare minimă de 1 și o valoare maximă de 11 vor fi aplicate pentru " -"YESCRYPT. Valoarea implicită este 5." +msgid "A minimal value of 1 and a maximal value of 11 will be enforced for YESCRYPT. The default is 5." +msgstr "O valoare minimă de 1 și o valoare maximă de 11 vor fi aplicate pentru YESCRYPT. Valoarea implicită este 5." #. (itstool) path: refsect1/para #: newusers.8.xml.out:370 -msgid "" -"The input file must be protected since it contains unencrypted passwords." -msgstr "" -"Fișierul de intrare trebuie să fie protejat deoarece conține parole " -"necriptate." +msgid "The input file must be protected since it contains unencrypted passwords." +msgstr "Fișierul de intrare trebuie să fie protejat deoarece conține parole necriptate." #. (itstool) path: term/filename #: newusers.8.xml.out:450 @@ -6534,12 +5160,14 @@ msgstr "ID-uri de utilizator subordonate per utilizator." #. (itstool) path: citerefentry/refentrytitle #: newusers.8.xml.out:481 useradd.8.xml.out:926 userdel.8.xml.out:335 #: usermod.8.xml.out:650 +#| msgid "/etc/subgid" msgid "subgid" msgstr "subgid" #. (itstool) path: citerefentry/refentrytitle #: newusers.8.xml.out:484 useradd.8.xml.out:929 userdel.8.xml.out:338 #: usermod.8.xml.out:653 +#| msgid "/etc/subuid" msgid "subuid" msgstr "subuid" @@ -6556,20 +5184,13 @@ msgstr "refuză în mod politicos o autentificare" #. (itstool) path: refsect1/para #: nologin.8.xml.out:41 -msgid "" -"The <_:command-1/> command displays a message that an account is not " -"available and exits non-zero. It is intended as a replacement shell field " -"for accounts that have been disabled." -msgstr "" -"Comanda <_:command-1/> afișează un mesaj care indică faptul că un cont nu " -"este disponibil și iese cu o valoare diferită de zero. Acesta este destinat " -"ca un câmp shell de înlocuire pentru conturile care au fost dezactivate." +msgid "The <_:command-1/> command displays a message that an account is not available and exits non-zero. It is intended as a replacement shell field for accounts that have been disabled." +msgstr "Comanda <_:command-1/> afișează un mesaj care indică faptul că un cont nu este disponibil și iese cu o valoare diferită de zero. Acesta este destinat ca un câmp shell de înlocuire pentru conturile care au fost dezactivate." #. (itstool) path: refsect1/para #: nologin.8.xml.out:46 msgid "To disable all logins, investigate <_:citerefentry-1/>." -msgstr "" -"Pentru a dezactiva toate autentificările, investigați <_:citerefentry-1/>." +msgstr "Pentru a dezactiva toate autentificările, investigați <_:citerefentry-1/>." #. (itstool) path: para/command #: nologin.8.xml.out:52 @@ -6598,17 +5219,8 @@ msgstr "schimbă parola utilizatorului" #. (itstool) path: refsect1/para #: passwd.1.xml.out:67 -msgid "" -"The <_:command-1/> command changes passwords for user accounts. A normal " -"user may only change the password for their own account, while the superuser " -"may change the password for any account. <_:command-2/> also changes the " -"account or associated password validity period." -msgstr "" -"Comanda <_:command-1/> modifică parolele pentru conturile de utilizator. Un " -"utilizator normal poate modifica doar parola pentru propriul cont, în timp " -"ce superutilizatorul poate modifica parola pentru orice cont. <_:command-2/> " -"modifică, de asemenea, perioada de valabilitate a contului sau a parolei " -"asociate." +msgid "The <_:command-1/> command changes passwords for user accounts. A normal user may only change the password for their own account, while the superuser may change the password for any account. <_:command-2/> also changes the account or associated password validity period." +msgstr "Comanda <_:command-1/> modifică parolele pentru conturile de utilizator. Un utilizator normal poate modifica doar parola pentru propriul cont, în timp ce superutilizatorul poate modifica parola pentru orice cont. <_:command-2/> modifică, de asemenea, perioada de valabilitate a contului sau a parolei asociate." #. (itstool) path: refsect2/title #: passwd.1.xml.out:76 @@ -6617,51 +5229,23 @@ msgstr "Schimbarea parolei" #. (itstool) path: refsect2/para #: passwd.1.xml.out:77 -msgid "" -"The user is first prompted for their old password, if one is present. This " -"password is then encrypted and compared against the stored password. The " -"user has only one chance to enter the correct password. The superuser is " -"permitted to bypass this step so that forgotten passwords may be changed." -msgstr "" -"Utilizatorului i se solicită mai întâi vechea sa parolă, dacă există una. " -"Această parolă este apoi criptată și comparată cu parola stocată. " -"Utilizatorul are o singură șansă de a introduce parola corectă. " -"Superutilizatorului îi este permis să ocolească această etapă, astfel încât " -"parolele uitate să poată fi schimbate." +msgid "The user is first prompted for their old password, if one is present. This password is then encrypted and compared against the stored password. The user has only one chance to enter the correct password. The superuser is permitted to bypass this step so that forgotten passwords may be changed." +msgstr "Utilizatorului i se solicită mai întâi vechea sa parolă, dacă există una. Această parolă este apoi criptată și comparată cu parola stocată. Utilizatorul are o singură șansă de a introduce parola corectă. Superutilizatorului îi este permis să ocolească această etapă, astfel încât parolele uitate să poată fi schimbate." #. (itstool) path: refsect2/para #: passwd.1.xml.out:85 -msgid "" -"After the password has been entered, password aging information is checked " -"to see if the user is permitted to change the password at this time. If not, " -"<_:command-1/> refuses to change the password and exits." -msgstr "" -"După introducerea parolei, se verifică informațiile privind vechimea parolei " -"pentru a vedea dacă utilizatorului îi este permis să schimbe parola în acest " -"moment. Dacă nu, <_:command-1/> refuză să schimbe parola și iese." +msgid "After the password has been entered, password aging information is checked to see if the user is permitted to change the password at this time. If not, <_:command-1/> refuses to change the password and exits." +msgstr "După introducerea parolei, se verifică informațiile privind vechimea parolei pentru a vedea dacă utilizatorului îi este permis să schimbe parola în acest moment. Dacă nu, <_:command-1/> refuză să schimbe parola și iese." #. (itstool) path: refsect2/para #: passwd.1.xml.out:92 -msgid "" -"The user is then prompted twice for a replacement password. The second entry " -"is compared against the first and both are required to match in order for " -"the password to be changed." -msgstr "" -"Utilizatorului i se solicită apoi de două ori să introducă o parolă de " -"înlocuire. A doua intrare este comparată cu prima și acestea trebuie să " -"corespundă pentru ca parola să poată fi schimbată." +msgid "The user is then prompted twice for a replacement password. The second entry is compared against the first and both are required to match in order for the password to be changed." +msgstr "Utilizatorului i se solicită apoi de două ori să introducă o parolă de înlocuire. A doua intrare este comparată cu prima și acestea trebuie să corespundă pentru ca parola să poată fi schimbată." #. (itstool) path: refsect2/para #: passwd.1.xml.out:98 -msgid "" -"Then, the password is tested for complexity. <_:command-1/> will reject any " -"password which is not suitably complex. Care must be taken not to include " -"the system default erase or kill characters." -msgstr "" -"Apoi, complexitatea parolei este testată. <_:command-1/> va respinge orice " -"parolă care nu este suficient de complexă. Trebuie să aveți grijă să nu " -"includeți caracterele implicite ale sistemului de ștergere „erase” sau " -"omorâre „kill”." +msgid "Then, the password is tested for complexity. <_:command-1/> will reject any password which is not suitably complex. Care must be taken not to include the system default erase or kill characters." +msgstr "Apoi, complexitatea parolei este testată. <_:command-1/> va respinge orice parolă care nu este suficient de complexă. Trebuie să aveți grijă să nu includeți caracterele implicite ale sistemului de ștergere „erase” sau omorâre „kill”." #. (itstool) path: refsect2/title #: passwd.1.xml.out:108 @@ -6675,81 +5259,33 @@ msgstr "UNIX" #. (itstool) path: refsect2/para #: passwd.1.xml.out:109 -msgid "" -"The security of a password depends upon the strength of the encryption " -"algorithm and the size of the key space. The legacy <_:emphasis-1/> System " -"encryption method is based on the NBS DES algorithm. More recent methods are " -"now recommended (see <_:option-2/>). The size of the key space depends upon " -"the randomness of the password which is selected." -msgstr "" -"Securitatea unei parole depinde de puterea algoritmului de criptare și de " -"dimensiunea spațiului de chei. Metoda de criptare a sistemului tradițional " -"<_:emphasis-1/> se bazează pe algoritmul NBS DES. În prezent sunt " -"recomandate metode mai recente (a se vedea „<_:option-2/>”). Dimensiunea " -"spațiului de chei depinde de gradul aleatoriu al parolei care este selectată." +msgid "The security of a password depends upon the strength of the encryption algorithm and the size of the key space. The legacy <_:emphasis-1/> System encryption method is based on the NBS DES algorithm. More recent methods are now recommended (see <_:option-2/>). The size of the key space depends upon the randomness of the password which is selected." +msgstr "Securitatea unei parole depinde de puterea algoritmului de criptare și de dimensiunea spațiului de chei. Metoda de criptare a sistemului tradițional <_:emphasis-1/> se bazează pe algoritmul NBS DES. În prezent sunt recomandate metode mai recente (a se vedea „<_:option-2/>”). Dimensiunea spațiului de chei depinde de gradul aleatoriu al parolei care este selectată." #. (itstool) path: refsect2/para #: passwd.1.xml.out:118 -msgid "" -"Compromises in password security normally result from careless password " -"selection or handling. For this reason, you should not select a password " -"which appears in a dictionary or which must be written down. The password " -"should also not be a proper name, your license number, birth date, or street " -"address. Any of these may be used as guesses to violate system security." -msgstr "" -"Compromisurile în ceea ce privește securitatea parolelor rezultă în mod " -"normal din selectarea sau manipularea neglijentă a parolelor. Din acest " -"motiv, nu trebuie să selectați o parolă care apare într-un dicționar sau " -"care trebuie scrisă. De asemenea, parola nu trebuie să fie un nume propriu, " -"numărul de înmatriculare, data nașterii sau adresa. Oricare dintre acestea " -"pot fi folosite ca presupuneri pentru a încălca securitatea sistemului." +msgid "Compromises in password security normally result from careless password selection or handling. For this reason, you should not select a password which appears in a dictionary or which must be written down. The password should also not be a proper name, your license number, birth date, or street address. Any of these may be used as guesses to violate system security." +msgstr "Compromisurile în ceea ce privește securitatea parolelor rezultă în mod normal din selectarea sau manipularea neglijentă a parolelor. Din acest motiv, nu trebuie să selectați o parolă care apare într-un dicționar sau care trebuie scrisă. De asemenea, parola nu trebuie să fie un nume propriu, numărul de înmatriculare, data nașterii sau adresa. Oricare dintre acestea pot fi folosite ca presupuneri pentru a încălca securitatea sistemului." #. (itstool) path: refsect2/para #: passwd.1.xml.out:127 -msgid "" -"As a general guideline, passwords should be long and random. It's fine to " -"use simple character sets, such as passwords consisting only of lowercase " -"letters, if that helps memorizing longer passwords. For a password " -"consisting only of lowercase English letters randomly chosen, and a length " -"of 32, there are 26^32 (approximately 2^150) different possible " -"combinations. Being an exponential equation, it's apparent that the exponent " -"(the length) is more important than the base (the size of the character set)." -msgstr "" -"Ca orientare generală, parolele trebuie să fie lungi și aleatorii. Este bine " -"să folosiți seturi simple de caractere, cum ar fi parole formate numai din " -"litere minuscule, dacă acest lucru ajută la memorarea parolelor mai lungi. " -"Pentru o parolă formată numai din litere engleze minuscule alese aleatoriu " -"și o lungime de 32, există 26^32 (aproximativ 2^150) combinații diferite " -"posibile. Fiind o ecuație exponențială, este evident că exponentul " -"(lungimea) este mai important decât baza (dimensiunea setului de caractere)." +msgid "As a general guideline, passwords should be long and random. It's fine to use simple character sets, such as passwords consisting only of lowercase letters, if that helps memorizing longer passwords. For a password consisting only of lowercase English letters randomly chosen, and a length of 32, there are 26^32 (approximately 2^150) different possible combinations. Being an exponential equation, it's apparent that the exponent (the length) is more important than the base (the size of the character set)." +msgstr "Ca orientare generală, parolele trebuie să fie lungi și aleatorii. Este bine să folosiți seturi simple de caractere, cum ar fi parole formate numai din litere minuscule, dacă acest lucru ajută la memorarea parolelor mai lungi. Pentru o parolă formată numai din litere engleze minuscule alese aleatoriu și o lungime de 32, există 26^32 (aproximativ 2^150) combinații diferite posibile. Fiind o ecuație exponențială, este evident că exponentul (lungimea) este mai important decât baza (dimensiunea setului de caractere)." #. (itstool) path: refsect2/para #: passwd.1.xml.out:138 -msgid "" -"You can find advice on how to choose a strong password on http://en." -"wikipedia.org/wiki/Password_strength" -msgstr "" -"Puteți găsi sfaturi despre cum să alegeți o parolă puternică la adresa " -"http://en.wikipedia.org/wiki/Password_strength" +msgid "You can find advice on how to choose a strong password on http://en.wikipedia.org/wiki/Password_strength" +msgstr "Puteți găsi sfaturi despre cum să alegeți o parolă puternică la adresa http://en.wikipedia.org/wiki/Password_strength" #. (itstool) path: listitem/para #: passwd.1.xml.out:156 -msgid "" -"This option can be used only with <_:option-1/> and causes show status for " -"all users." -msgstr "" -"Această opțiune poate fi utilizată numai cu „<_:option-1/>” și determină " -"afișarea stării pentru toți utilizatorii." +msgid "This option can be used only with <_:option-1/> and causes show status for all users." +msgstr "Această opțiune poate fi utilizată numai cu „<_:option-1/>” și determină afișarea stării pentru toți utilizatorii." #. (itstool) path: listitem/para #: passwd.1.xml.out:167 -msgid "" -"Delete a user's password (make it empty). This is a quick way to disable a " -"password for an account. It will set the named account passwordless." -msgstr "" -"Șterge parola unui utilizator („o face goală”). Aceasta este o modalitate " -"rapidă de a dezactiva o parolă pentru un cont. Acesta va configura contul " -"numit fără parolă." +msgid "Delete a user's password (make it empty). This is a quick way to disable a password for an account. It will set the named account passwordless." +msgstr "Șterge parola unui utilizator („o face goală”). Aceasta este o modalitate rapidă de a dezactiva o parolă pentru un cont. Acesta va configura contul numit fără parolă." #. (itstool) path: term/option #: passwd.1.xml.out:176 @@ -6758,29 +5294,18 @@ msgstr "--expire" #. (itstool) path: listitem/para #: passwd.1.xml.out:179 -msgid "" -"Immediately expire an account's password. This in effect can force a user to " -"change their password at the user's next login." -msgstr "" -"Expiră imediat parola unui cont. Acest lucru poate forța un utilizator să " -"își schimbe parola la următoarea autentificare." +msgid "Immediately expire an account's password. This in effect can force a user to change their password at the user's next login." +msgstr "Expiră imediat parola unui cont. Acest lucru poate forța un utilizator să își schimbe parola la următoarea autentificare." #. (itstool) path: listitem/para #: passwd.1.xml.out:196 -msgid "" -"This option is used to disable an account after the password has been " -"expired for a number of days. After a user account has had an expired " -"password for <_:replaceable-1/> days, the user may no longer sign on to the " -"account." -msgstr "" -"Această opțiune este utilizată pentru a dezactiva un cont după ce parola a " -"expirat timp de un anumit număr de zile. După ce un cont de utilizator are o " -"parolă expirată de <_:replaceable-1/> zile, utilizatorul nu se mai poate " -"conecta la cont." +msgid "This option is used to disable an account after the password has been expired for a number of days. After a user account has had an expired password for <_:replaceable-1/> days, the user may no longer sign on to the account." +msgstr "Această opțiune este utilizată pentru a dezactiva un cont după ce parola a expirat timp de un anumit număr de zile. După ce un cont de utilizator are o parolă expirată de <_:replaceable-1/> zile, utilizatorul nu se mai poate conecta la cont." #. (itstool) path: term/option #. (itstool) path: para/option #: passwd.1.xml.out:206 useradd.8.xml.out:280 useradd.8.xml.out:358 +#| msgid "-" msgid "-k" msgstr "-k" @@ -6791,14 +5316,8 @@ msgstr "--keep-tokens" #. (itstool) path: listitem/para #: passwd.1.xml.out:209 -msgid "" -"Indicate password change should be performed only for expired authentication " -"tokens (passwords). The user wishes to keep their non-expired tokens as " -"before." -msgstr "" -"Indică faptul că schimbarea parolei trebuie efectuată numai pentru jetoanele " -"de autentificare (parolele) expirate. Utilizatorul dorește să își păstreze " -"jetoanele neexpirate ca înainte." +msgid "Indicate password change should be performed only for expired authentication tokens (passwords). The user wishes to keep their non-expired tokens as before." +msgstr "Indică faptul că schimbarea parolei trebuie efectuată numai pentru jetoanele de autentificare (parolele) expirate. Utilizatorul dorește să își păstreze jetoanele neexpirate ca înainte." #. (itstool) path: term/option #: passwd.1.xml.out:218 usermod.8.xml.out:231 @@ -6807,14 +5326,8 @@ msgstr "--lock" #. (itstool) path: listitem/para #: passwd.1.xml.out:221 -msgid "" -"Lock the password of the named account. This option disables a password by " -"changing it to a value which matches no possible encrypted value (it adds a " -"´!´ at the beginning of the password)." -msgstr "" -"Blochează parola contului numit. Această opțiune dezactivează o parolă prin " -"schimbarea acesteia cu o valoare care nu se potrivește cu nicio valoare " -"criptată posibilă (adaugă un ´!´ la începutul parolei)." +msgid "Lock the password of the named account. This option disables a password by changing it to a value which matches no possible encrypted value (it adds a ´!´ at the beginning of the password)." +msgstr "Blochează parola contului numit. Această opțiune dezactivează o parolă prin schimbarea acesteia cu o valoare care nu se potrivește cu nicio valoare criptată posibilă (adaugă un ´!´ la începutul parolei)." #. (itstool) path: para/command #: passwd.1.xml.out:231 @@ -6823,26 +5336,17 @@ msgstr "usermod --expiredate 1" #. (itstool) path: listitem/para #: passwd.1.xml.out:227 -msgid "" -"Note that this does not disable the account. The user may still be able to " -"login using another authentication token (e.g. an SSH key). To disable the " -"account, administrators should use <_:command-1/> (this set the account's " -"expire date to Jan 2, 1970)." -msgstr "" -"Rețineți că acest lucru nu dezactivează contul. Utilizatorul poate fi în " -"continuare capabil să se conecteze folosind un alt jeton de autentificare " -"(de exemplu, o cheie SSH). Pentru a dezactiva contul, administratorii ar " -"trebui să utilizeze <_:command-1/> (aceasta stabilește data de expirare a " -"contului la 2 ianuarie 1970)." +msgid "Note that this does not disable the account. The user may still be able to login using another authentication token (e.g. an SSH key). To disable the account, administrators should use <_:command-1/> (this set the account's expire date to Jan 2, 1970)." +msgstr "Rețineți că acest lucru nu dezactivează contul. Utilizatorul poate fi în continuare capabil să se conecteze folosind un alt jeton de autentificare (de exemplu, o cheie SSH). Pentru a dezactiva contul, administratorii ar trebui să utilizeze <_:command-1/> (aceasta stabilește data de expirare a contului la 2 ianuarie 1970)." #. (itstool) path: listitem/para #: passwd.1.xml.out:234 msgid "Users with a locked password are not allowed to change their password." -msgstr "" -"Utilizatorilor cu o parolă blocată nu li se permite să își schimbe parola." +msgstr "Utilizatorilor cu o parolă blocată nu li se permite să își schimbe parola." #. (itstool) path: term/option #: passwd.1.xml.out:254 pwck.8.xml.out:179 vipw.8.xml.out:108 +#| msgid "-" msgid "-q" msgstr "-q" @@ -6879,23 +5383,8 @@ msgstr "--status" #. (itstool) path: listitem/para #: passwd.1.xml.out:305 -msgid "" -"Display account status information. The status information consists of 7 " -"fields. The first field is the user's login name. The second field indicates " -"if the user account has a locked password (L), has no password (NP), or has " -"a usable password (P). The third field gives the date of the last password " -"change. The next four fields are the minimum age, maximum age, warning " -"period, and inactivity period for the password. These ages are expressed in " -"days." -msgstr "" -"Afișează informații despre starea contului. Informațiile privind starea " -"contului sunt formate din 7 câmpuri. Primul câmp este numele de " -"autentificare al utilizatorului. Al doilea câmp indică dacă contul de " -"utilizator are o parolă blocată (L), nu are parolă (NP) sau are o parolă " -"utilizabilă (P). Al treilea câmp indică data ultimei schimbări a parolei. " -"Următoarele patru câmpuri sunt vârsta minimă, vârsta maximă, perioada de " -"avertizare și perioada de inactivitate pentru parolă. Aceste vârste sunt " -"exprimate în zile." +msgid "Display account status information. The status information consists of 7 fields. The first field is the user's login name. The second field indicates if the user account has a locked password (L), has no password (NP), or has a usable password (P). The third field gives the date of the last password change. The next four fields are the minimum age, maximum age, warning period, and inactivity period for the password. These ages are expressed in days." +msgstr "Afișează informații despre starea contului. Informațiile privind starea contului sunt formate din 7 câmpuri. Primul câmp este numele de autentificare al utilizatorului. Al doilea câmp indică dacă contul de utilizator are o parolă blocată (L), nu are parolă (NP) sau are o parolă utilizabilă (P). Al treilea câmp indică data ultimei schimbări a parolei. Următoarele patru câmpuri sunt vârsta minimă, vârsta maximă, perioada de avertizare și perioada de inactivitate pentru parolă. Aceste vârste sunt exprimate în zile." #. (itstool) path: term/option #: passwd.1.xml.out:320 usermod.8.xml.out:405 @@ -6904,40 +5393,24 @@ msgstr "--unlock" #. (itstool) path: listitem/para #: passwd.1.xml.out:323 -msgid "" -"Unlock the password of the named account. This option re-enables a password " -"by changing the password back to its previous value (to the value before " -"using the <_:option-1/> option)." -msgstr "" -"Deblochează parola contului numit. Această opțiune reactivează o parolă prin " -"schimbarea parolei la valoarea anterioară (la valoarea anterioară utilizării " -"opțiunii „<_:option-1/>”)." +msgid "Unlock the password of the named account. This option re-enables a password by changing the password back to its previous value (to the value before using the <_:option-1/> option)." +msgstr "Deblochează parola contului numit. Această opțiune reactivează o parolă prin schimbarea parolei la valoarea anterioară (la valoarea anterioară utilizării opțiunii „<_:option-1/>”)." #. (itstool) path: listitem/para #: passwd.1.xml.out:336 -msgid "" -"Set the number of days of warning before a password change is required. The " -"<_:replaceable-1/> option is the number of days prior to the password " -"expiring that a user will be warned that their password is about to expire." -msgstr "" -"Stabilește numărul de zile de avertizare înainte de a fi necesară schimbarea " -"parolei. Opțiunea <_:replaceable-1/> este numărul de zile înainte de " -"expirarea parolei în care un utilizator va fi avertizat că parola sa este pe " -"cale să expire." +msgid "Set the number of days of warning before a password change is required. The <_:replaceable-1/> option is the number of days prior to the password expiring that a user will be warned that their password is about to expire." +msgstr "Stabilește numărul de zile de avertizare înainte de a fi necesară schimbarea parolei. Opțiunea <_:replaceable-1/> este numărul de zile înainte de expirarea parolei în care un utilizator va fi avertizat că parola sa este pe cale să expire." #. (itstool) path: term/option #: passwd.1.xml.out:346 +#| msgid "-" msgid "-x" msgstr "-x" #. (itstool) path: listitem/para #: passwd.1.xml.out:349 -msgid "" -"Set the maximum number of days a password remains valid. After <_:" -"replaceable-1/>, the password is required to be changed." -msgstr "" -"Stabilește numărul maxim de zile în care o parolă rămâne valabilă. După <_:" -"replaceable-1/>, parola trebuie să fie schimbată." +msgid "Set the maximum number of days a password remains valid. After <_:replaceable-1/>, the password is required to be changed." +msgstr "Stabilește numărul maxim de zile în care o parolă rămâne valabilă. După <_:replaceable-1/>, parola trebuie să fie schimbată." #. (itstool) path: term/option #: passwd.1.xml.out:363 @@ -6946,39 +5419,23 @@ msgstr "--stdin" #. (itstool) path: listitem/para #: passwd.1.xml.out:366 -msgid "" -"This option is used to indicate that passwd should read the new password " -"from standard input, which can be a pipe." -msgstr "" -"Această opțiune este utilizată pentru a indica faptul că «passwd» ar trebui " -"să citească noua parolă de la intrarea standard, care poate fi o conductă." +msgid "This option is used to indicate that passwd should read the new password from standard input, which can be a pipe." +msgstr "Această opțiune este utilizată pentru a indica faptul că «passwd» ar trebui să citească noua parolă de la intrarea standard, care poate fi o conductă." #. (itstool) path: refsect1/para #: passwd.1.xml.out:377 -msgid "" -"Password complexity checking may vary from site to site. The user is urged " -"to select a password as complex as he or she feels comfortable with." -msgstr "" -"Verificarea complexității parolei poate varia de la mașină la mașină. " -"Utilizatorul este îndemnat să selecteze o parolă atât de complexă încât să " -"se simtă confortabil cu ea." +msgid "Password complexity checking may vary from site to site. The user is urged to select a password as complex as he or she feels comfortable with." +msgstr "Verificarea complexității parolei poate varia de la mașină la mașină. Utilizatorul este îndemnat să selecteze o parolă atât de complexă încât să se simtă confortabil cu ea." #. (itstool) path: refsect1/para #: passwd.1.xml.out:382 -msgid "" -"Users may not be able to change their password on a system if NIS is enabled " -"and they are not logged into the NIS server." -msgstr "" -"Este posibil ca utilizatorii să nu își poată schimba parola pe un sistem " -"dacă NIS este activat și nu sunt conectați la serverul NIS." +msgid "Users may not be able to change their password on a system if NIS is enabled and they are not logged into the NIS server." +msgstr "Este posibil ca utilizatorii să nu își poată schimba parola pe un sistem dacă NIS este activat și nu sunt conectați la serverul NIS." #. (itstool) path: refsect1/para #: passwd.1.xml.out:387 -msgid "" -"<_:command-1/> uses PAM to authenticate users and to change their passwords." -msgstr "" -"<_:command-1/> utilizează PAM pentru a autentifica utilizatorii și pentru a " -"le schimba parolele." +msgid "<_:command-1/> uses PAM to authenticate users and to change their passwords." +msgstr "<_:command-1/> utilizează PAM pentru a autentifica utilizatorii și pentru a le schimba parolele." #. (itstool) path: term/filename #: passwd.1.xml.out:433 @@ -7007,26 +5464,19 @@ msgstr "fișierul <_:filename-1/> este ocupat, încercați din nou" #. (itstool) path: citerefentry/refentrytitle #: passwd.1.xml.out:499 +#| msgid "passwd" msgid "makepasswd" msgstr "makepasswd" #. (itstool) path: refsect1/para #: passwd.1.xml.out:494 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:phrase-5/> <_:citerefentry-6/>." #. (itstool) path: refsect1/para #: passwd.1.xml.out:517 -msgid "" -"The following web page comically (yet correctly) compares the strength of " -"two different methods for choosing a password: \"https://xkcd.com/936/\"" -msgstr "" -"Următoarea pagină web compară în mod comic (dar corect) eficiența a două " -"metode diferite de alegere a unei parole: „https://xkcd.com/936/”" +msgid "The following web page comically (yet correctly) compares the strength of two different methods for choosing a password: \"https://xkcd.com/936/\"" +msgstr "Următoarea pagină web compară în mod comic (dar corect) eficiența a două metode diferite de alegere a unei parole: „https://xkcd.com/936/”" #. (itstool) path: refnamediv/refpurpose #: passwd.5.xml.out:41 @@ -7040,12 +5490,8 @@ msgstr ":" #. (itstool) path: refsect1/para #: passwd.5.xml.out:46 -msgid "" -"<_:filename-1/> contains one line for each user account, with seven fields " -"delimited by colons (<_:quote-2/>). These fields are:" -msgstr "" -"<_:filename-1/> conține o linie pentru fiecare cont de utilizator, cu șapte " -"câmpuri delimitate prin două puncte (<_:quote-2/>). Aceste câmpuri sunt:" +msgid "<_:filename-1/> contains one line for each user account, with seven fields delimited by colons (<_:quote-2/>). These fields are:" +msgstr "<_:filename-1/> conține o linie pentru fiecare cont de utilizator, cu șapte câmpuri delimitate prin două puncte (<_:quote-2/>). Aceste câmpuri sunt:" #. (itstool) path: listitem/para #. (itstool) path: term/emphasis @@ -7095,16 +5541,8 @@ msgstr "optional user command interpreter" #. (itstool) path: refsect1/para #: passwd.5.xml.out:76 -msgid "" -"If the <_:emphasis-1/> field is a lower-case <_:quote-2/>, then the " -"encrypted password is actually stored in the <_:citerefentry-3/> file " -"instead; there <_:emphasis-4/> be a corresponding line in the <_:filename-5/" -"> file, or else the user account is invalid." -msgstr "" -"Dacă câmpul <_:emphasis-1/> este un <_:quote-2/> minuscul, atunci parola " -"criptată este stocată de fapt în fișierul <_:citerefentry-3/>; trebuie să " -"existe <_:emphasis-4/> o linie corespunzătoare în fișierul <_:filename-5/>, " -"altfel contul de utilizator nu este valid." +msgid "If the <_:emphasis-1/> field is a lower-case <_:quote-2/>, then the encrypted password is actually stored in the <_:citerefentry-3/> file instead; there <_:emphasis-4/> be a corresponding line in the <_:filename-5/> file, or else the user account is invalid." +msgstr "Dacă câmpul <_:emphasis-1/> este un <_:quote-2/> minuscul, atunci parola criptată este stocată de fapt în fișierul <_:citerefentry-3/>; trebuie să existe <_:emphasis-4/> o linie corespunzătoare în fișierul <_:filename-5/>, altfel contul de utilizator nu este valid." #. (itstool) path: para/emphasis #: passwd.5.xml.out:90 @@ -7113,66 +5551,29 @@ msgstr "orice" #. (itstool) path: refsect1/para #: passwd.5.xml.out:85 -msgid "" -"The encrypted <_:emphasis-1/> field may be empty, in which case no password " -"is required to authenticate as the specified login name. However, some " -"applications which read the <_:filename-2/> file may decide not to permit <_:" -"emphasis-3/> access at all if the <_:emphasis-4/> field is blank." -msgstr "" -"Câmpul <_:emphasis-1/> criptat poate fi gol, caz în care nu este necesară " -"nicio parolă pentru autentificarea ca nume de utilizator specificat. Cu " -"toate acestea, unele aplicații care citesc fișierul <_:filename-2/> pot " -"decide să nu permită deloc accesul <_:emphasis-3/> dacă câmpul <_:emphasis-4/" -"> este gol." +msgid "The encrypted <_:emphasis-1/> field may be empty, in which case no password is required to authenticate as the specified login name. However, some applications which read the <_:filename-2/> file may decide not to permit <_:emphasis-3/> access at all if the <_:emphasis-4/> field is blank." +msgstr "Câmpul <_:emphasis-1/> criptat poate fi gol, caz în care nu este necesară nicio parolă pentru autentificarea ca nume de utilizator specificat. Cu toate acestea, unele aplicații care citesc fișierul <_:filename-2/> pot decide să nu permită deloc accesul <_:emphasis-3/> dacă câmpul <_:emphasis-4/> este gol." #. (itstool) path: refsect1/para #: passwd.5.xml.out:94 -msgid "" -"A <_:emphasis-1/> field which starts with an exclamation mark means that the " -"password is locked. The remaining characters on the line represent the <_:" -"emphasis-2/> field before the password was locked." -msgstr "" -"Un câmp <_:emphasis-1/> care începe cu un semn al exclamării înseamnă că " -"parola este blocată. Caracterele rămase pe linie reprezintă câmpul <_:" -"emphasis-2/> înainte ca parola să fie blocată." +msgid "A <_:emphasis-1/> field which starts with an exclamation mark means that the password is locked. The remaining characters on the line represent the <_:emphasis-2/> field before the password was locked." +msgstr "Un câmp <_:emphasis-1/> care începe cu un semn al exclamării înseamnă că parola este blocată. Caracterele rămase pe linie reprezintă câmpul <_:emphasis-2/> înainte ca parola să fie blocată." #. (itstool) path: refsect1/para #. (itstool) path: listitem/para #: passwd.5.xml.out:107 shadow.5.xml.out:92 -msgid "" -"If the password field contains some string that is not a valid result of <_:" -"citerefentry-1/>, for instance ! or *, the user will not be able to use a " -"unix password to log in (but the user may log in the system by other means)." -msgstr "" -"Dacă câmpul parolei conține un șir de caractere care nu este un rezultat " -"valid al <_:citerefentry-1/>, de exemplu ! sau *, utilizatorul nu va putea " -"utiliza o parolă unix pentru a se autentifica (dar utilizatorul se poate " -"autentifica în sistem prin alte mijloace)." +msgid "If the password field contains some string that is not a valid result of <_:citerefentry-1/>, for instance ! or *, the user will not be able to use a unix password to log in (but the user may log in the system by other means)." +msgstr "Dacă câmpul parolei conține un șir de caractere care nu este un rezultat valid al <_:citerefentry-1/>, de exemplu ! sau *, utilizatorul nu va putea utiliza o parolă unix pentru a se autentifica (dar utilizatorul se poate autentifica în sistem prin alte mijloace)." #. (itstool) path: refsect1/para #: passwd.5.xml.out:114 -msgid "" -"The comment field, also known as the gecos field, is used by various system " -"utilities, such as <_:citerefentry-1/>. The use of an ampersand here will be " -"replaced by the capitalised login name when the field is used or displayed " -"by such system utilities." -msgstr "" -"Câmpul comentariu, cunoscut și sub numele de câmp gecos, este utilizat de " -"diverse instrumente de sistem, cum ar fi <_:citerefentry-1/>. Folosirea unei " -"prescurtări aici va fi înlocuită de numele de autentificare cu majuscule " -"atunci când câmpul este utilizat sau afișat de astfel de instrumente de " -"sistem." +msgid "The comment field, also known as the gecos field, is used by various system utilities, such as <_:citerefentry-1/>. The use of an ampersand here will be replaced by the capitalised login name when the field is used or displayed by such system utilities." +msgstr "Câmpul comentariu, cunoscut și sub numele de câmp gecos, este utilizat de diverse instrumente de sistem, cum ar fi <_:citerefentry-1/>. Folosirea unei prescurtări aici va fi înlocuită de numele de autentificare cu majuscule atunci când câmpul este utilizat sau afișat de astfel de instrumente de sistem." #. (itstool) path: refsect1/para #: passwd.5.xml.out:123 -msgid "" -"The home directory field provides the name of the initial working directory. " -"The <_:command-1/> program uses this information to set the value of the <_:" -"envar-2/> environmental variable." -msgstr "" -"Câmpul directoriului personal furnizează numele directorului de lucru " -"inițial. Programul <_:command-1/> utilizează această informație pentru a " -"stabili valoarea variabilei de mediu <_:envar-2/>." +msgid "The home directory field provides the name of the initial working directory. The <_:command-1/> program uses this information to set the value of the <_:envar-2/> environmental variable." +msgstr "Câmpul directoriului personal furnizează numele directorului de lucru inițial. Programul <_:command-1/> utilizează această informație pentru a stabili valoarea variabilei de mediu <_:envar-2/>." #. (itstool) path: para/filename #: passwd.5.xml.out:134 sg.1.xml.out:61 su.1.xml.out:190 @@ -7181,18 +5582,8 @@ msgstr "/bin/sh" #. (itstool) path: refsect1/para #: passwd.5.xml.out:129 -msgid "" -"The command interpreter field provides the name of the user's command " -"language interpreter, or the name of the initial program to execute. The <_:" -"command-1/> program uses this information to set the value of the <_:envar-2/" -"> environmental variable. If this field is empty, it defaults to the value " -"<_:filename-3/>." -msgstr "" -"Câmpul comandă interpret furnizează numele interpretului limbajului de " -"comandă al utilizatorului sau numele programului inițial de executat. " -"Programul <_:command-1/> utilizează această informație pentru a stabili " -"valoarea variabilei de mediu <_:envar-2/>. Dacă acest câmp este gol, " -"valoarea implicită este <_:filename-3/>." +msgid "The command interpreter field provides the name of the user's command language interpreter, or the name of the initial program to execute. The <_:command-1/> program uses this information to set the value of the <_:envar-2/> environmental variable. If this field is empty, it defaults to the value <_:filename-3/>." +msgstr "Câmpul comandă interpret furnizează numele interpretului limbajului de comandă al utilizatorului sau numele programului inițial de executat. Programul <_:command-1/> utilizează această informație pentru a stabili valoarea variabilei de mediu <_:envar-2/>. Dacă acest câmp este gol, valoarea implicită este <_:filename-3/>." #. (itstool) path: listitem/para #: passwd.5.xml.out:150 @@ -7211,13 +5602,8 @@ msgstr "Fișier de copie de rezervă pentru „/etc/passwd”." #. (itstool) path: listitem/para #: passwd.5.xml.out:157 shadow.5.xml.out:249 -msgid "" -"Note that this file is used by the tools of the shadow toolsuite, but not by " -"all user and password management tools." -msgstr "" -"Rețineți că acest fișier este utilizat de instrumentele din suita de " -"instrumente «shadow», dar nu de toate instrumentele de gestionare a " -"utilizatorilor și parolelor." +msgid "Note that this file is used by the tools of the shadow toolsuite, but not by all user and password management tools." +msgstr "Rețineți că acest fișier este utilizat de instrumentele din suita de instrumente «shadow», dar nu de toate instrumentele de gestionare a utilizatorilor și parolelor." #. (itstool) path: citerefentry/refentrytitle #: passwd.5.xml.out:173 @@ -7231,16 +5617,8 @@ msgstr "getpwnam" #. (itstool) path: refsect1/para #: passwd.5.xml.out:168 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:" -"citerefentry-10/>, <_:citerefentry-11/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:" -"citerefentry-10/>, <_:citerefentry-11/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:citerefentry-10/>, <_:citerefentry-11/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:citerefentry-10/>, <_:citerefentry-11/>." #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname @@ -7256,30 +5634,13 @@ msgstr "fișier de timp de acces la port" #. (itstool) path: refsect1/para #: porttime.5.xml.out:46 -msgid "" -"<_:emphasis-1/> contains a list of tty devices, user names, and permitted " -"login times." -msgstr "" -"<_:emphasis-1/> conține o listă de dispozitive tty, nume de utilizator și " -"timpi de conectare permiși." +msgid "<_:emphasis-1/> contains a list of tty devices, user names, and permitted login times." +msgstr "<_:emphasis-1/> conține o listă de dispozitive tty, nume de utilizator și timpi de conectare permiși." #. (itstool) path: refsect1/para #: porttime.5.xml.out:51 -msgid "" -"Each entry consists of three colon separated fields. The first field is a " -"comma separated list of tty devices, or an asterisk to indicate that all tty " -"devices are matched by this entry. The second field is a comma separated " -"list of user names, or an asterisk to indicated that all user names are " -"matched by this entry. The third field is a comma separated list of " -"permitted access times." -msgstr "" -"Fiecare intrare constă din trei câmpuri separate prin două puncte. Primul " -"câmp este o listă de dispozitive tty separate prin virgule sau un asterisc " -"pentru a indica faptul că toate dispozitivele tty sunt compatibile cu " -"această intrare. Al doilea câmp este o listă de nume de utilizatori separate " -"prin virgule sau un asterisc pentru a indica faptul că toate numele de " -"utilizatori se potrivesc cu această intrare. Al treilea câmp este o listă de " -"perioade de acces permise, separate prin virgule." +msgid "Each entry consists of three colon separated fields. The first field is a comma separated list of tty devices, or an asterisk to indicate that all tty devices are matched by this entry. The second field is a comma separated list of user names, or an asterisk to indicated that all user names are matched by this entry. The third field is a comma separated list of permitted access times." +msgstr "Fiecare intrare constă din trei câmpuri separate prin două puncte. Primul câmp este o listă de dispozitive tty separate prin virgule sau un asterisc pentru a indica faptul că toate dispozitivele tty sunt compatibile cu această intrare. Al doilea câmp este o listă de nume de utilizatori separate prin virgule sau un asterisc pentru a indica faptul că toate numele de utilizatori se potrivesc cu această intrare. Al treilea câmp este o listă de perioade de acces permise, separate prin virgule." #. (itstool) path: para/emphasis #: porttime.5.xml.out:62 @@ -7328,21 +5689,8 @@ msgstr "Al" #. (itstool) path: refsect1/para #: porttime.5.xml.out:60 -msgid "" -"Each access time entry consists of zero or more days of the week, " -"abbreviated <_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/>, <_:emphasis-4/" -">, <_:emphasis-5/>, <_:emphasis-6/>, and <_:emphasis-7/>, followed by a pair " -"of times separated by a hyphen. The abbreviation <_:emphasis-8/> may be used " -"to represent Monday thru Friday, and <_:emphasis-9/> may be used to indicate " -"every day. If no days are given, <_:emphasis-10/> is assumed." -msgstr "" -"Fiecare intrare a orei de acces constă din zero sau mai multe zile ale " -"săptămânii, prescurtate <_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/>, " -"<_:emphasis-4/>, <_:emphasis-5/>, <_:emphasis-6/> și <_:emphasis-7/>, urmate " -"de o pereche de ore separate de o cratimă. Abrevierea <_:emphasis-8/> poate " -"fi utilizată pentru a reprezenta de luni până vineri, iar <_:emphasis-9/> " -"poate fi utilizată pentru a indica fiecare zi. Dacă nu se indică nicio zi, " -"se presupune <_:emphasis-10/>." +msgid "Each access time entry consists of zero or more days of the week, abbreviated <_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/>, <_:emphasis-4/>, <_:emphasis-5/>, <_:emphasis-6/>, and <_:emphasis-7/>, followed by a pair of times separated by a hyphen. The abbreviation <_:emphasis-8/> may be used to represent Monday thru Friday, and <_:emphasis-9/> may be used to indicate every day. If no days are given, <_:emphasis-10/> is assumed." +msgstr "Fiecare intrare a orei de acces constă din zero sau mai multe zile ale săptămânii, prescurtate <_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/>, <_:emphasis-4/>, <_:emphasis-5/>, <_:emphasis-6/> și <_:emphasis-7/>, urmate de o pereche de ore separate de o cratimă. Abrevierea <_:emphasis-8/> poate fi utilizată pentru a reprezenta de luni până vineri, iar <_:emphasis-9/> poate fi utilizată pentru a indica fiecare zi. Dacă nu se indică nicio zi, se presupune <_:emphasis-10/>." #. (itstool) path: refsect1/title #: porttime.5.xml.out:74 @@ -7356,12 +5704,8 @@ msgstr "jfh" #. (itstool) path: refsect1/para #: porttime.5.xml.out:75 -msgid "" -"The following entry allows access to user <_:emphasis-1/> on every port " -"during weekdays from 9am to 5pm." -msgstr "" -"Următoarea intrare permite accesul utilizatorului <_:emphasis-1/> la fiecare " -"port în timpul săptămânii de la 9am la 5pm." +msgid "The following entry allows access to user <_:emphasis-1/> on every port during weekdays from 9am to 5pm." +msgstr "Următoarea intrare permite accesul utilizatorului <_:emphasis-1/> la fiecare port în timpul săptămânii de la 9am la 5pm." #. (itstool) path: refsect1/para #: porttime.5.xml.out:81 @@ -7380,17 +5724,8 @@ msgstr "/dev/console" #. (itstool) path: refsect1/para #: porttime.5.xml.out:83 -msgid "" -"The following entries allow access only to the users <_:emphasis-1/> and <_:" -"emphasis-2/> on <_:filename-3/> at any time. This illustrates how the <_:" -"filename-4/> file is an ordered list of access times. Any other user would " -"match the second entry which does not permit access at any time." -msgstr "" -"Următoarele intrări permit accesul numai utilizatorilor <_:emphasis-1/> și " -"<_:emphasis-2/> pe <_:filename-3/> în orice moment. Acest lucru ilustrează " -"modul în care fișierul <_:filename-4/> este o listă ordonată a timpilor de " -"acces. Orice alt utilizator ar corespunde celei de-a doua intrări, care nu " -"permite accesul în niciun moment." +msgid "The following entries allow access only to the users <_:emphasis-1/> and <_:emphasis-2/> on <_:filename-3/> at any time. This illustrates how the <_:filename-4/> file is an ordered list of access times. Any other user would match the second entry which does not permit access at any time." +msgstr "Următoarele intrări permit accesul numai utilizatorilor <_:emphasis-1/> și <_:emphasis-2/> pe <_:filename-3/> în orice moment. Acest lucru ilustrează modul în care fișierul <_:filename-4/> este o listă ordonată a timpilor de acces. Orice alt utilizator ar corespunde celei de-a doua intrări, care nu permite accesul în niciun moment." #. (itstool) path: refsect1/programlisting #: porttime.5.xml.out:92 @@ -7404,12 +5739,8 @@ msgstr "adrian" #. (itstool) path: refsect1/para #: porttime.5.xml.out:97 -msgid "" -"The following entry allows access for the user <_:emphasis-1/> on any port " -"during non-working hours." -msgstr "" -"Următoarea intrare permite accesul utilizatorului <_:emphasis-1/> pe orice " -"port în afara orelor de lucru." +msgid "The following entry allows access for the user <_:emphasis-1/> on any port during non-working hours." +msgstr "Următoarea intrare permite accesul utilizatorului <_:emphasis-1/> pe orice port în afara orelor de lucru." #. (itstool) path: refsect1/para #: porttime.5.xml.out:102 @@ -7434,31 +5765,19 @@ msgstr "FIȘIER_SHADOW" #. (itstool) path: phrase/filename #: pwck.8.xml.out:75 pwck.8.xml.out:226 +#| msgid "/etc/subgid" msgid "/etc/tcb" msgstr "/etc/tcb" #. (itstool) path: para/phrase #: pwck.8.xml.out:74 msgid "(or the files in <_:filename-1/>, when <_:option-2/> is enabled)" -msgstr "" -"(sau fișierele din <_:filename-1/>, atunci când „<_:option-2/>” este " -"activată)" +msgstr "(sau fișierele din <_:filename-1/>, atunci când „<_:option-2/>” este activată)" #. (itstool) path: refsect1/para #: pwck.8.xml.out:70 -msgid "" -"The <_:command-1/> command verifies the integrity of the users and " -"authentication information. It checks that all entries in <_:filename-2/> " -"and <_:filename-3/> <_:phrase-4/> have the proper format and contain valid " -"data. The user is prompted to delete entries that are improperly formatted " -"or which have other uncorrectable errors." -msgstr "" -"Comanda <_:command-1/> verifică integritatea informațiilor privind " -"utilizatorii și autentificarea. Aceasta verifică dacă toate intrările din <_:" -"filename-2/> și <_:filename-3/> <_:phrase-4/> au formatul corespunzător și " -"conțin date valide. Utilizatorului i se solicită să șteargă intrările care " -"sunt formatate necorespunzător sau care au alte erori care nu pot fi " -"corectate." +msgid "The <_:command-1/> command verifies the integrity of the users and authentication information. It checks that all entries in <_:filename-2/> and <_:filename-3/> <_:phrase-4/> have the proper format and contain valid data. The user is prompted to delete entries that are improperly formatted or which have other uncorrectable errors." +msgstr "Comanda <_:command-1/> verifică integritatea informațiilor privind utilizatorii și autentificarea. Aceasta verifică dacă toate intrările din <_:filename-2/> și <_:filename-3/> <_:phrase-4/> au formatul corespunzător și conțin date valide. Utilizatorului i se solicită să șteargă intrările care sunt formatate necorespunzător sau care au alte erori care nu pot fi corectate." #. (itstool) path: listitem/para #: pwck.8.xml.out:88 @@ -7487,14 +5806,8 @@ msgstr "un shell de autentificare valid" #. (itstool) path: refsect1/para #: pwck.8.xml.out:104 -msgid "" -"Checks for shadowed password information are enabled when the second file " -"parameter <_:replaceable-1/> is specified or when <_:filename-2/> exists on " -"the system." -msgstr "" -"Verificările pentru informațiile de parolă ascunse (shadowed) sunt activate " -"atunci când al doilea parametru de fișier <_:replaceable-1/> este specificat " -"sau când <_:filename-2/> există în sistem." +msgid "Checks for shadowed password information are enabled when the second file parameter <_:replaceable-1/> is specified or when <_:filename-2/> exists on the system." +msgstr "Verificările pentru informațiile de parolă ascunse (shadowed) sunt activate atunci când al doilea parametru de fișier <_:replaceable-1/> este specificat sau când <_:filename-2/> există în sistem." #. (itstool) path: refsect1/para #: pwck.8.xml.out:109 @@ -7503,12 +5816,8 @@ msgstr "Aceste verificări sunt următoarele:" #. (itstool) path: listitem/para #: pwck.8.xml.out:114 -msgid "" -"every passwd entry has a matching shadow entry, and every shadow entry has a " -"matching passwd entry" -msgstr "" -"fiecare intrare „passwd” are o intrare „shadow” corespunzătoare, iar fiecare " -"intrare „shadow” are o intrare „passwd” corespunzătoare" +msgid "every passwd entry has a matching shadow entry, and every shadow entry has a matching passwd entry" +msgstr "fiecare intrare „passwd” are o intrare „shadow” corespunzătoare, iar fiecare intrare „shadow” are o intrare „passwd” corespunzătoare" #. (itstool) path: listitem/para #: pwck.8.xml.out:120 @@ -7532,43 +5841,18 @@ msgstr "ultimele modificări ale parolei nu sunt în viitor" #. (itstool) path: refsect1/para #: pwck.8.xml.out:133 -msgid "" -"The checks for correct number of fields and unique user name are fatal. If " -"the entry has the wrong number of fields, the user will be prompted to " -"delete the entire line. If the user does not answer affirmatively, all " -"further checks are bypassed. An entry with a duplicated user name is " -"prompted for deletion, but the remaining checks will still be made. All " -"other errors are warnings and the user is encouraged to run the <_:command-1/" -"> command to correct the error." -msgstr "" -"Verificările privind numărul corect de câmpuri și numele unic al " -"utilizatorului sunt fatale. Dacă intrarea are un număr greșit de câmpuri, " -"utilizatorului i se va cere să șteargă întreaga linie. Dacă utilizatorul nu " -"răspunde afirmativ, toate verificările ulterioare sunt ocolite. O intrare cu " -"un nume de utilizator duplicat este solicitată să fie ștearsă, dar celelalte " -"verificări vor fi efectuate în continuare. Toate celelalte erori sunt " -"avertismente și utilizatorul este încurajat să execute comanda <_:command-1/" -"> pentru a corecta eroarea." +msgid "The checks for correct number of fields and unique user name are fatal. If the entry has the wrong number of fields, the user will be prompted to delete the entire line. If the user does not answer affirmatively, all further checks are bypassed. An entry with a duplicated user name is prompted for deletion, but the remaining checks will still be made. All other errors are warnings and the user is encouraged to run the <_:command-1/> command to correct the error." +msgstr "Verificările privind numărul corect de câmpuri și numele unic al utilizatorului sunt fatale. Dacă intrarea are un număr greșit de câmpuri, utilizatorului i se va cere să șteargă întreaga linie. Dacă utilizatorul nu răspunde afirmativ, toate verificările ulterioare sunt ocolite. O intrare cu un nume de utilizator duplicat este solicitată să fie ștearsă, dar celelalte verificări vor fi efectuate în continuare. Toate celelalte erori sunt avertismente și utilizatorul este încurajat să execute comanda <_:command-1/> pentru a corecta eroarea." #. (itstool) path: refsect1/para #: pwck.8.xml.out:144 -msgid "" -"The commands which operate on the <_:filename-1/> file are not able to alter " -"corrupted or duplicated entries. <_:command-2/> should be used in those " -"circumstances to remove the offending entry." -msgstr "" -"Comenzile care operează asupra fișierului <_:filename-1/> nu sunt capabile " -"să modifice intrările corupte sau duplicate. <_:command-2/> ar trebui " -"utilizat în aceste circumstanțe pentru a elimina intrarea problematică." +msgid "The commands which operate on the <_:filename-1/> file are not able to alter corrupted or duplicated entries. <_:command-2/> should be used in those circumstances to remove the offending entry." +msgstr "Comenzile care operează asupra fișierului <_:filename-1/> nu sunt capabile să modifice intrările corupte sau duplicate. <_:command-2/> ar trebui utilizat în aceste circumstanțe pentru a elimina intrarea problematică." #. (itstool) path: listitem/para #: pwck.8.xml.out:181 -msgid "" -"Report errors only. The warnings which do not require any action from the " -"user won't be displayed." -msgstr "" -"Raportează numai erorile. Avertizările care nu necesită nicio acțiune din " -"partea utilizatorului nu vor fi afișate." +msgid "Report errors only. The warnings which do not require any action from the user won't be displayed." +msgstr "Raportează numai erorile. Avertizările care nu necesită nicio acțiune din partea utilizatorului nu vor fi afișate." #. (itstool) path: listitem/para #: pwck.8.xml.out:190 @@ -7583,9 +5867,7 @@ msgstr "Sortează intrările din <_:filename-1/> și <_:filename-2/> după UID." #. (itstool) path: listitem/para #: pwck.8.xml.out:215 msgid "This option has no effect when <_:option-1/> is enabled." -msgstr "" -"Această opțiune nu are niciun efect atunci când „<_:option-1/>” este " -"activată." +msgstr "Această opțiune nu are niciun efect atunci când „<_:option-1/>” este activată." #. (itstool) path: para/phrase #: pwck.8.xml.out:225 @@ -7594,25 +5876,13 @@ msgstr "(sau fișierele din <_:filename-1/>)" #. (itstool) path: refsect1/para #: pwck.8.xml.out:222 -msgid "" -"By default, <_:command-1/> operates on the files <_:filename-2/> and <_:" -"filename-3/><_:phrase-4/>. The user may select alternate files with the <_:" -"replaceable-5/> and <_:replaceable-6/> parameters." -msgstr "" -"În mod implicit, <_:command-1/> operează pe fișierele <_:filename-2/> și <_:" -"filename-3//><_:phrase-4/>. Utilizatorul poate selecta fișiere alternative " -"cu parametrii <_:replaceable-5/> și <_:replaceable-6/>." +msgid "By default, <_:command-1/> operates on the files <_:filename-2/> and <_:filename-3/><_:phrase-4/>. The user may select alternate files with the <_:replaceable-5/> and <_:replaceable-6/> parameters." +msgstr "În mod implicit, <_:command-1/> operează pe fișierele <_:filename-2/> și <_:filename-3//><_:phrase-4/>. Utilizatorul poate selecta fișiere alternative cu parametrii <_:replaceable-5/> și <_:replaceable-6/>." #. (itstool) path: refsect1/para #: pwck.8.xml.out:231 -msgid "" -"Note that when <_:option-1/> is enabled, you cannot specify an alternative " -"<_:replaceable-2/> file. In future releases, this parameter could be " -"replaced by an alternate TCB directory." -msgstr "" -"Rețineți că atunci când „<_:option-1/>” este activată, nu puteți specifica " -"un fișier alternativ <_:replaceable-2/>. În versiunile viitoare, acest " -"parametru ar putea fi înlocuit cu un director TCB alternativ." +msgid "Note that when <_:option-1/> is enabled, you cannot specify an alternative <_:replaceable-2/> file. In future releases, this parameter could be replaced by an alternate TCB directory." +msgstr "Rețineți că atunci când „<_:option-1/>” este activată, nu puteți specifica un fișier alternativ <_:replaceable-2/>. În versiunile viitoare, acest parametru ar putea fi înlocuit cu un director TCB alternativ." #. (itstool) path: listitem/para #: pwck.8.xml.out:301 @@ -7646,12 +5916,8 @@ msgstr "convertește în și din parolele și grupurile „shadow”" #. (itstool) path: refsect1/para #: pwconv.8.xml.out:82 pwconv.8.xml.out:112 -msgid "" -"The <_:command-1/> command creates <_:emphasis-2/> from <_:emphasis-3/> and " -"an optionally existing <_:emphasis-4/>." -msgstr "" -"Comanda <_:command-1/> creează <_:emphasis-2/> din <_:emphasis-3/> și un <_:" -"emphasis-4/> existent opțional." +msgid "The <_:command-1/> command creates <_:emphasis-2/> from <_:emphasis-3/> and an optionally existing <_:emphasis-4/>." +msgstr "Comanda <_:command-1/> creează <_:emphasis-2/> din <_:emphasis-3/> și un <_:emphasis-4/> existent opțional." #. (itstool) path: para/command #. (itstool) path: citerefentry/refentrytitle @@ -7661,27 +5927,13 @@ msgstr "tcb_convert" #. (itstool) path: refsect1/para #: pwconv.8.xml.out:87 -msgid "" -"<_:command-1/> does not work with <_:option-2/> enabled. To convert to tcb " -"passwords, you should first use <_:command-3/> to convert to shadowed " -"passwords by disabling <_:option-4/> in <_:filename-5/> and then convert to " -"tcb password using <_:command-6/> (and re-enable <_:option-7/> in <_:" -"filename-8/>.)" -msgstr "" -"<_:command-1/> nu funcționează cu „<_:option-2/>” activată. Pentru a " -"converti în parole tcb, trebuie să utilizați mai întâi <_:command-3/> pentru " -"a converti în parole „shadowed” (criptate) prin dezactivarea „<_:option-4/>” " -"în <_:filename-5/> și apoi convertiți în parolă tcb utilizând <_:command-6/> " -"(și reactivați „<_:option-7/>” în <_:filename-8/>)." +msgid "<_:command-1/> does not work with <_:option-2/> enabled. To convert to tcb passwords, you should first use <_:command-3/> to convert to shadowed passwords by disabling <_:option-4/> in <_:filename-5/> and then convert to tcb password using <_:command-6/> (and re-enable <_:option-7/> in <_:filename-8/>.)" +msgstr "<_:command-1/> nu funcționează cu „<_:option-2/>” activată. Pentru a converti în parole tcb, trebuie să utilizați mai întâi <_:command-3/> pentru a converti în parole „shadowed” (criptate) prin dezactivarea „<_:option-4/>” în <_:filename-5/> și apoi convertiți în parolă tcb utilizând <_:command-6/> (și reactivați „<_:option-7/>” în <_:filename-8/>)." #. (itstool) path: refsect1/para #: pwconv.8.xml.out:97 pwconv.8.xml.out:118 -msgid "" -"The <_:command-1/> command creates <_:emphasis-2/> from <_:emphasis-3/> and " -"<_:emphasis-4/> and then removes <_:emphasis-5/>." -msgstr "" -"Comanda <_:command-1/> creează <_:emphasis-2/> din <_:emphasis-3/> și <_:" -"emphasis-4/> și apoi elimină <_:emphasis-5/>." +msgid "The <_:command-1/> command creates <_:emphasis-2/> from <_:emphasis-3/> and <_:emphasis-4/> and then removes <_:emphasis-5/>." +msgstr "Comanda <_:command-1/> creează <_:emphasis-2/> din <_:emphasis-3/> și <_:emphasis-4/> și apoi elimină <_:emphasis-5/>." #. (itstool) path: para/command #. (itstool) path: citerefentry/refentrytitle @@ -7691,115 +5943,48 @@ msgstr "tcb_unconvert" #. (itstool) path: refsect1/para #: pwconv.8.xml.out:103 -msgid "" -"<_:command-1/> does not work with <_:option-2/> enabled. You should first " -"switch back from tcb to shadowed passwords using <_:command-3/>, and then " -"disable <_:option-4/> in <_:filename-5/> before using <_:command-6/>." -msgstr "" -"<_:command-1/> nu funcționează cu „<_:option-2/>” activată. Ar trebui mai " -"întâi să treceți de la tcb la parole „shadowed” utilizând <_:command-3/> și " -"apoi să dezactivați „<_:option-4/>” în <_:filename-5/> înainte de a utiliza " -"<_:command-6/>." +msgid "<_:command-1/> does not work with <_:option-2/> enabled. You should first switch back from tcb to shadowed passwords using <_:command-3/>, and then disable <_:option-4/> in <_:filename-5/> before using <_:command-6/>." +msgstr "<_:command-1/> nu funcționează cu „<_:option-2/>” activată. Ar trebui mai întâi să treceți de la tcb la parole „shadowed” utilizând <_:command-3/> și apoi să dezactivați „<_:option-4/>” în <_:filename-5/> înainte de a utiliza <_:command-6/>." #. (itstool) path: refsect1/para #: pwconv.8.xml.out:125 -msgid "" -"These four programs all operate on the normal and shadow password and group " -"files: <_:filename-1/>, <_:filename-2/>, <_:filename-3/>, and <_:filename-4/" -">." -msgstr "" -"Aceste patru programe operează toate asupra fișierelor normale și „shadow” " -"de parole și grupuri: <_:filename-1/>, <_:filename-2/>, <_:filename-3/> și " -"<_:filename-4/>." +msgid "These four programs all operate on the normal and shadow password and group files: <_:filename-1/>, <_:filename-2/>, <_:filename-3/>, and <_:filename-4/>." +msgstr "Aceste patru programe operează toate asupra fișierelor normale și „shadow” de parole și grupuri: <_:filename-1/>, <_:filename-2/>, <_:filename-3/> și <_:filename-4/>." #. (itstool) path: refsect1/para #: pwconv.8.xml.out:132 -msgid "" -"Each program acquires the necessary locks before conversion. <_:command-1/> " -"and <_:command-2/> are similar. First, entries in the shadowed file which " -"don't exist in the main file are removed. Then, shadowed entries which don't " -"have `x' as the password in the main file are updated. Any missing shadowed " -"entries are added. Finally, passwords in the main file are replaced with " -"`x'. These programs can be used for initial conversion as well to update the " -"shadowed file if the main file is edited by hand." -msgstr "" -"Fiecare program dobândește blocajele necesare înainte de conversie. <_:" -"command-1/> și <_:command-2/> sunt similare. În primul rând, intrările din " -"fișierul „shadowed” care nu există în fișierul principal sunt eliminate. " -"Apoi, se actualizează intrările „shadowed” care nu au „x” ca parolă în " -"fișierul principal. Se adaugă toate intrările „shadowed” care lipsesc. În " -"final, parolele din fișierul principal sunt înlocuite cu „x”. Aceste " -"programe pot fi utilizate pentru conversia inițială, precum și pentru " -"actualizarea fișierului „shadowed” în cazul în care fișierul principal este " -"editat manual." +msgid "Each program acquires the necessary locks before conversion. <_:command-1/> and <_:command-2/> are similar. First, entries in the shadowed file which don't exist in the main file are removed. Then, shadowed entries which don't have `x' as the password in the main file are updated. Any missing shadowed entries are added. Finally, passwords in the main file are replaced with `x'. These programs can be used for initial conversion as well to update the shadowed file if the main file is edited by hand." +msgstr "Fiecare program dobândește blocajele necesare înainte de conversie. <_:command-1/> și <_:command-2/> sunt similare. În primul rând, intrările din fișierul „shadowed” care nu există în fișierul principal sunt eliminate. Apoi, se actualizează intrările „shadowed” care nu au „x” ca parolă în fișierul principal. Se adaugă toate intrările „shadowed” care lipsesc. În final, parolele din fișierul principal sunt înlocuite cu „x”. Aceste programe pot fi utilizate pentru conversia inițială, precum și pentru actualizarea fișierului „shadowed” în cazul în care fișierul principal este editat manual." #. (itstool) path: refsect1/para #: pwconv.8.xml.out:143 -msgid "" -"<_:command-1/> will use the values of <_:emphasis-2/>, <_:emphasis-3/>, and " -"<_:emphasis-4/> from <_:filename-5/> when adding new entries to <_:" -"filename-6/>." -msgstr "" -"<_:command-1/> va utiliza valorile <_:emphasis-2/>, <_:emphasis-3/> și <_:" -"emphasis-4/> din <_:filename-5/> atunci când adaugă noi intrări la <_:" -"filename-6/>." +msgid "<_:command-1/> will use the values of <_:emphasis-2/>, <_:emphasis-3/>, and <_:emphasis-4/> from <_:filename-5/> when adding new entries to <_:filename-6/>." +msgstr "<_:command-1/> va utiliza valorile <_:emphasis-2/>, <_:emphasis-3/> și <_:emphasis-4/> din <_:filename-5/> atunci când adaugă noi intrări la <_:filename-6/>." #. (itstool) path: refsect1/para #: pwconv.8.xml.out:152 -msgid "" -"Likewise <_:command-1/> and <_:command-2/> are similar. Passwords in the " -"main file are updated from the shadowed file. Entries which exist in the " -"main file but not in the shadowed file are left alone. Finally, the shadowed " -"file is removed. Some password aging information is lost by <_:command-3/>. " -"It will convert what it can." -msgstr "" -"De asemenea, <_:command-1/> și <_:command-2/> sunt similare. Parolele din " -"fișierul principal sunt actualizate din fișierul „shadowed”. Înregistrările " -"care există în fișierul principal, dar nu și în fișierul „shadowed”, sunt " -"lăsate în pace. În cele din urmă, fișierul „shadowed” este eliminat. Unele " -"informații privind vechimea parolelor sunt pierdute de <_:command-3/>. " -"Acesta va converti ceea ce poate." +msgid "Likewise <_:command-1/> and <_:command-2/> are similar. Passwords in the main file are updated from the shadowed file. Entries which exist in the main file but not in the shadowed file are left alone. Finally, the shadowed file is removed. Some password aging information is lost by <_:command-3/>. It will convert what it can." +msgstr "De asemenea, <_:command-1/> și <_:command-2/> sunt similare. Parolele din fișierul principal sunt actualizate din fișierul „shadowed”. Înregistrările care există în fișierul principal, dar nu și în fișierul „shadowed”, sunt lăsate în pace. În cele din urmă, fișierul „shadowed” este eliminat. Unele informații privind vechimea parolelor sunt pierdute de <_:command-3/>. Acesta va converti ceea ce poate." #. (itstool) path: refsect1/para #: pwconv.8.xml.out:164 -msgid "" -"The options which apply to the <_:command-1/>, <_:command-2/>, <_:command-3/" -">, and <_:command-4/> commands are:" -msgstr "" -"Opțiunile care se aplică comenzilor <_:command-1/>, <_:command-2/>, <_:" -"command-3/> și <_:command-4/> sunt:" +msgid "The options which apply to the <_:command-1/>, <_:command-2/>, <_:command-3/>, and <_:command-4/> commands are:" +msgstr "Opțiunile care se aplică comenzilor <_:command-1/>, <_:command-2/>, <_:command-3/> și <_:command-4/> sunt:" #. (itstool) path: refsect1/para #: pwconv.8.xml.out:194 -msgid "" -"Errors in the password or group files (such as invalid or duplicate entries) " -"may cause these programs to loop forever or fail in other strange ways. " -"Please run <_:command-1/> and <_:command-2/> to correct any such errors " -"before converting to or from shadow passwords or groups." -msgstr "" -"Erorile din fișierele de parole sau de grupuri (cum ar fi intrările nevalide " -"sau duplicate) pot face ca aceste programe să se deruleze la nesfârșit sau " -"să eșueze în alte moduri ciudate. Vă rugăm să executați <_:command-1/> și <_:" -"command-2/> pentru a corecta orice astfel de erori înainte de a converti în " -"sau din parole sau grupuri „shadow”." +msgid "Errors in the password or group files (such as invalid or duplicate entries) may cause these programs to loop forever or fail in other strange ways. Please run <_:command-1/> and <_:command-2/> to correct any such errors before converting to or from shadow passwords or groups." +msgstr "Erorile din fișierele de parole sau de grupuri (cum ar fi intrările nevalide sau duplicate) pot face ca aceste programe să se deruleze la nesfârșit sau să eșueze în alte moduri ciudate. Vă rugăm să executați <_:command-1/> și <_:command-2/> pentru a corecta orice astfel de erori înainte de a converti în sau din parole sau grupuri „shadow”." #. (itstool) path: refsect1/para #: pwconv.8.xml.out:205 -msgid "" -"The following configuration variable in <_:filename-1/> changes the behavior " -"of <_:command-2/> and <_:command-3/>:" -msgstr "" -"Următoarea variabilă de configurare din <_:filename-1/> modifică " -"comportamentul <_:command-2/> și <_:command-3/>:" +msgid "The following configuration variable in <_:filename-1/> changes the behavior of <_:command-2/> and <_:command-3/>:" +msgstr "Următoarea variabilă de configurare din <_:filename-1/> modifică comportamentul <_:command-2/> și <_:command-3/>:" #. (itstool) path: refsect1/para #: pwconv.8.xml.out:213 -msgid "" -"The following configuration variables in <_:filename-1/> change the behavior " -"of <_:command-2/>:" -msgstr "" -"Următoarele variabile de configurare din <_:filename-1/> modifică " -"comportamentul <_:command-2/>:" +msgid "The following configuration variables in <_:filename-1/> change the behavior of <_:command-2/>:" +msgstr "Următoarele variabile de configurare din <_:filename-1/> modifică comportamentul <_:command-2/>:" #. (itstool) path: para/phrase #: pwconv.8.xml.out:249 @@ -7808,10 +5993,8 @@ msgstr ", <_:citerefentry-1/>, <_:citerefentry-2/>" #. (itstool) path: refsect1/para #: pwconv.8.xml.out:240 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/><_:phrase-4/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/><_:phrase-4/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/><_:phrase-4/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/><_:phrase-4/>." #. (itstool) path: refmeta/refmiscinfo #: shadow.3.xml.out:35 @@ -7922,31 +6105,13 @@ msgstr "#include" #. (itstool) path: refsect1/para #: shadow.3.xml.out:95 -msgid "" -"<_:emphasis-1/> manipulates the contents of the shadow password file, <_:" -"filename-2/>. The structure in the <_:emphasis-3/> file is:" -msgstr "" -"<_:emphasis-1/> manipulează conținutul fișierului de parole „shadow”, <_:" -"filename-2/>. Structura din fișierul <_:emphasis-3/> este următoarea:" +msgid "<_:emphasis-1/> manipulates the contents of the shadow password file, <_:filename-2/>. The structure in the <_:emphasis-3/> file is:" +msgstr "<_:emphasis-1/> manipulează conținutul fișierului de parole „shadow”, <_:filename-2/>. Structura din fișierul <_:emphasis-3/> este următoarea:" #. (itstool) path: refsect1/programlisting #: shadow.3.xml.out:100 -msgid "" -"struct spwd { char *sp_namp; /* user login name */ char *sp_pwdp; /* " -"encrypted password */ long int sp_lstchg; /* last password change */ long " -"int sp_min; /* days until change allowed. */ long int sp_max; /* days before " -"change required */ long int sp_warn; /* days warning for expiration */ long " -"int sp_inact; /* days before account inactive */ long int sp_expire; /* date " -"when account expires */ unsigned long int sp_flag; /* reserved for future " -"use */ }" -msgstr "" -"struct spwd { char *sp_namp; /* numele de autentificare al utilizatorului */ " -"char *sp_pwdp; /* parola criptată */ long int sp_lstchg; /* ultima schimbare " -"a parolei */ long int sp_min; /* zile până când este permisă schimbarea. */ " -"long int sp_max; /* zile înainte de schimbarea cerută */ long int sp_warn; /" -"* zile de avertizare pentru expirare */ long int sp_inact; /* zile înainte " -"de inactivarea contului */ long int sp_expire; /* data la care contul expiră " -"*/ unsigned long int sp_flag; /* rezervat pentru utilizare viitoare */ }" +msgid "struct spwd { char *sp_namp; /* user login name */ char *sp_pwdp; /* encrypted password */ long int sp_lstchg; /* last password change */ long int sp_min; /* days until change allowed. */ long int sp_max; /* days before change required */ long int sp_warn; /* days warning for expiration */ long int sp_inact; /* days before account inactive */ long int sp_expire; /* date when account expires */ unsigned long int sp_flag; /* reserved for future use */ }" +msgstr "struct spwd { char *sp_namp; /* numele de autentificare al utilizatorului */ char *sp_pwdp; /* parola criptată */ long int sp_lstchg; /* ultima schimbare a parolei */ long int sp_min; /* zile până când este permisă schimbarea. */ long int sp_max; /* zile înainte de schimbarea cerută */ long int sp_warn; /* zile de avertizare pentru expirare */ long int sp_inact; /* zile înainte de inactivarea contului */ long int sp_expire; /* data la care contul expiră */ unsigned long int sp_flag; /* rezervat pentru utilizare viitoare */ }" #. (itstool) path: refsect1/para #: shadow.3.xml.out:112 @@ -7966,9 +6131,7 @@ msgstr "sp_pwdp - indicator către parolă cu terminație nulă" #. (itstool) path: listitem/para #: shadow.3.xml.out:121 msgid "sp_lstchg - days since Jan 1, 1970 password was last changed" -msgstr "" -"sp_lstchg - zile de la ultima modificare a parolei începând de la 1 ianuarie " -"1970" +msgstr "sp_lstchg - zile de la ultima modificare a parolei începând de la 1 ianuarie 1970" #. (itstool) path: listitem/para #: shadow.3.xml.out:124 @@ -7982,21 +6145,13 @@ msgstr "sp_max - zile după care parola trebuie să fie schimbată" #. (itstool) path: listitem/para #: shadow.3.xml.out:130 -msgid "" -"sp_warn - days before password is to expire that user is warned of pending " -"password expiration" -msgstr "" -"sp_warn - cu câte zile înainte ca parola să expire, utilizatorul este " -"avertizat cu privire la expirarea viitoare a parolei" +msgid "sp_warn - days before password is to expire that user is warned of pending password expiration" +msgstr "sp_warn - cu câte zile înainte ca parola să expire, utilizatorul este avertizat cu privire la expirarea viitoare a parolei" #. (itstool) path: listitem/para #: shadow.3.xml.out:135 -msgid "" -"sp_inact - days after password expires that account is considered inactive " -"and disabled" -msgstr "" -"sp_inact - zile după expirarea parolei în care contul este considerat " -"inactiv și dezactivat" +msgid "sp_inact - days after password expires that account is considered inactive and disabled" +msgstr "sp_inact - zile după expirarea parolei în care contul este considerat inactiv și dezactivat" #. (itstool) path: listitem/para #: shadow.3.xml.out:140 @@ -8010,21 +6165,25 @@ msgstr "sp_flag - rezervat pentru utilizare viitoare" #. (itstool) path: para/emphasis #: shadow.3.xml.out:152 shadow.3.xml.out:155 +#| msgid "getspnam" msgid "getspent" msgstr "getspent" #. (itstool) path: para/emphasis #: shadow.3.xml.out:152 +#| msgid "getspnam" msgid "getspname" msgstr "getspname" #. (itstool) path: para/emphasis #: shadow.3.xml.out:153 shadow.3.xml.out:156 +#| msgid "getspnam" msgid "fgetspent" msgstr "fgetspent" #. (itstool) path: para/emphasis #: shadow.3.xml.out:153 shadow.3.xml.out:158 +#| msgid "getspnam" msgid "sgetspent" msgstr "sgetspent" @@ -8035,54 +6194,41 @@ msgstr "struct spwd" #. (itstool) path: para/emphasis #: shadow.3.xml.out:161 +#| msgid "pw_name" msgid "name" msgstr "nume" #. (itstool) path: refsect1/para #: shadow.3.xml.out:151 -msgid "" -"<_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/>, and <_:emphasis-4/> each " -"return a pointer to a <_:emphasis-5/>. <_:emphasis-6/> returns the next " -"entry from the file, and <_:emphasis-7/> returns the next entry from the " -"given stream, which is assumed to be a file of the proper format. <_:" -"emphasis-8/> returns a pointer to a <_:emphasis-9/> using the provided " -"string as input. <_:emphasis-10/> searches from the current position in the " -"file for an entry matching <_:emphasis-11/>." -msgstr "" -"<_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/> și <_:emphasis-4/> " -"returnează fiecare un pointer către un <_:emphasis-5/>. <_:emphasis-6/> " -"returnează următoarea intrare din fișier, iar <_:emphasis-7/> returnează " -"următoarea intrare din fluxul dat, care se presupune a fi un fișier cu " -"formatul adecvat. <_:emphasis-8/> returnează un indicator către un <_:" -"emphasis-9/> folosind șirul furnizat ca intrare. <_:emphasis-10/> caută din " -"poziția curentă în fișier o intrare care să corespundă cu <_:emphasis-11/>." +msgid "<_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/>, and <_:emphasis-4/> each return a pointer to a <_:emphasis-5/>. <_:emphasis-6/> returns the next entry from the file, and <_:emphasis-7/> returns the next entry from the given stream, which is assumed to be a file of the proper format. <_:emphasis-8/> returns a pointer to a <_:emphasis-9/> using the provided string as input. <_:emphasis-10/> searches from the current position in the file for an entry matching <_:emphasis-11/>." +msgstr "<_:emphasis-1/>, <_:emphasis-2/>, <_:emphasis-3/> și <_:emphasis-4/> returnează fiecare un pointer către un <_:emphasis-5/>. <_:emphasis-6/> returnează următoarea intrare din fișier, iar <_:emphasis-7/> returnează următoarea intrare din fluxul dat, care se presupune a fi un fișier cu formatul adecvat. <_:emphasis-8/> returnează un indicator către un <_:emphasis-9/> folosind șirul furnizat ca intrare. <_:emphasis-10/> caută din poziția curentă în fișier o intrare care să corespundă cu <_:emphasis-11/>." #. (itstool) path: para/emphasis #: shadow.3.xml.out:165 +#| msgid "void setspent();" msgid "setspent" msgstr "setspent" #. (itstool) path: para/emphasis #: shadow.3.xml.out:165 +#| msgid "void endspent();" msgid "endspent" msgstr "endspent" #. (itstool) path: refsect1/para #: shadow.3.xml.out:164 -msgid "" -"<_:emphasis-1/> and <_:emphasis-2/> may be used to begin and end, " -"respectively, access to the shadow password file." -msgstr "" -"<_:emphasis-1/> și <_:emphasis-2/> pot fi utilizate pentru a începe și, " -"respectiv, a încheia accesul la fișierul de parole „shadow”." +msgid "<_:emphasis-1/> and <_:emphasis-2/> may be used to begin and end, respectively, access to the shadow password file." +msgstr "<_:emphasis-1/> și <_:emphasis-2/> pot fi utilizate pentru a începe și, respectiv, a încheia accesul la fișierul de parole „shadow”." #. (itstool) path: para/emphasis #: shadow.3.xml.out:171 shadow.3.xml.out:173 shadow.3.xml.out:178 +#| msgid "int lckpwdf();" msgid "lckpwdf" msgstr "lckpwdf" #. (itstool) path: para/emphasis #: shadow.3.xml.out:171 +#| msgid "int ulckpwdf();" msgid "ulckpwdf" msgstr "ulckpwdf" @@ -8098,22 +6244,8 @@ msgstr "spw_lock" #. (itstool) path: refsect1/para #: shadow.3.xml.out:170 -msgid "" -"The <_:emphasis-1/> and <_:emphasis-2/> routines should be used to insure " -"exclusive access to the <_:filename-3/> file. <_:emphasis-4/> attempts to " -"acquire a lock using <_:emphasis-5/> for up to 15 seconds. It continues by " -"attempting to acquire a second lock using <_:emphasis-6/> for the remainder " -"of the initial 15 seconds. Should either attempt fail after a total of 15 " -"seconds, <_:emphasis-7/> returns -1. When both locks are acquired 0 is " -"returned." -msgstr "" -"Rutinele <_:emphasis-1/> și <_:emphasis-2/> trebuie utilizate pentru a " -"asigura accesul exclusiv la fișierul <_:filename-3/>. <_:emphasis-4/> " -"încearcă să obțină un blocaj folosind <_:emphasis-5/> timp de până la 15 " -"secunde. În continuare, încearcă să obțină o a doua blocare utilizând <_:" -"emphasis-6/> pentru restul celor 15 secunde inițiale. În cazul în care " -"ambele încercări eșuează după un total de 15 secunde, <_:emphasis-7/> " -"returnează -1. Atunci când ambele blocaje sunt obținute, se returnează 0." +msgid "The <_:emphasis-1/> and <_:emphasis-2/> routines should be used to insure exclusive access to the <_:filename-3/> file. <_:emphasis-4/> attempts to acquire a lock using <_:emphasis-5/> for up to 15 seconds. It continues by attempting to acquire a second lock using <_:emphasis-6/> for the remainder of the initial 15 seconds. Should either attempt fail after a total of 15 seconds, <_:emphasis-7/> returns -1. When both locks are acquired 0 is returned." +msgstr "Rutinele <_:emphasis-1/> și <_:emphasis-2/> trebuie utilizate pentru a asigura accesul exclusiv la fișierul <_:filename-3/>. <_:emphasis-4/> încearcă să obțină un blocaj folosind <_:emphasis-5/> timp de până la 15 secunde. În continuare, încearcă să obțină o a doua blocare utilizând <_:emphasis-6/> pentru restul celor 15 secunde inițiale. În cazul în care ambele încercări eșuează după un total de 15 secunde, <_:emphasis-7/> returnează -1. Atunci când ambele blocaje sunt obținute, se returnează 0." #. (itstool) path: refsect1/title #: shadow.3.xml.out:184 suauth.5.xml.out:189 @@ -8127,23 +6259,13 @@ msgstr "int" #. (itstool) path: refsect1/para #: shadow.3.xml.out:185 -msgid "" -"Routines return NULL if no more entries are available or if an error occurs " -"during processing. Routines which have <_:emphasis-1/> as the return value " -"return 0 for success and -1 for failure." -msgstr "" -"Rutinele returnează NULL dacă nu mai sunt disponibile alte intrări sau dacă " -"apare o eroare în timpul procesării. Rutinele care au <_:emphasis-1/> ca " -"valoare de returnare returnează 0 pentru succes și -1 pentru eșec." +msgid "Routines return NULL if no more entries are available or if an error occurs during processing. Routines which have <_:emphasis-1/> as the return value return 0 for success and -1 for failure." +msgstr "Rutinele returnează NULL dacă nu mai sunt disponibile alte intrări sau dacă apare o eroare în timpul procesării. Rutinele care au <_:emphasis-1/> ca valoare de returnare returnează 0 pentru succes și -1 pentru eșec." #. (itstool) path: refsect1/para #: shadow.3.xml.out:195 -msgid "" -"These routines may only be used by the superuser as access to the shadow " -"password file is restricted." -msgstr "" -"Aceste rutine pot fi utilizate numai de către superutilizator, deoarece " -"accesul la fișierul de parole „shadow” este restricționat." +msgid "These routines may only be used by the superuser as access to the shadow password file is restricted." +msgstr "Aceste rutine pot fi utilizate numai de către superutilizator, deoarece accesul la fișierul de parole „shadow” este restricționat." #. (itstool) path: citerefentry/refentrytitle #: shadow.3.xml.out:217 @@ -8157,21 +6279,13 @@ msgstr "fișier de parole „shadowed”" #. (itstool) path: refsect1/para #: shadow.5.xml.out:46 -msgid "" -"<_:filename-1/> is a file which contains the password information for the " -"system's accounts and optional aging information." -msgstr "" -"<_:filename-1/> este un fișier care conține informații privind parolele " -"pentru conturile sistemului și informații opționale privind expirarea." +msgid "<_:filename-1/> is a file which contains the password information for the system's accounts and optional aging information." +msgstr "<_:filename-1/> este un fișier care conține informații privind parolele pentru conturile sistemului și informații opționale privind expirarea." #. (itstool) path: refsect1/para #: shadow.5.xml.out:57 -msgid "" -"Each line of this file contains 9 fields, separated by colons (<_:quote-1/" -">), in the following order:" -msgstr "" -"Fiecare linie a acestui fișier conține 9 câmpuri, separate prin două puncte " -"(<_:quote-1/>), în următoarea ordine:" +msgid "Each line of this file contains 9 fields, separated by colons (<_:quote-1/>), in the following order:" +msgstr "Fiecare linie a acestui fișier conține 9 câmpuri, separate prin două puncte (<_:quote-1/>), în următoarea ordine:" #. (itstool) path: listitem/para #: shadow.5.xml.out:66 @@ -8180,16 +6294,8 @@ msgstr "Acesta trebuie să fie un nume de cont valid, care există în sistem." #. (itstool) path: listitem/para #: shadow.5.xml.out:74 -msgid "" -"This field may be empty, in which case no passwords are required to " -"authenticate as the specified login name. However, some applications which " -"read the <_:filename-1/> file may decide not to permit any access at all if " -"the password field is empty." -msgstr "" -"Acest câmp poate fi gol, caz în care nu este necesară nicio parolă pentru " -"autentificarea ca nume de utilizator specificat. Cu toate acestea, unele " -"aplicații care citesc fișierul <_:filename-1/> pot decide să nu permită " -"deloc accesul dacă câmpul parolei este gol." +msgid "This field may be empty, in which case no passwords are required to authenticate as the specified login name. However, some applications which read the <_:filename-1/> file may decide not to permit any access at all if the password field is empty." +msgstr "Acest câmp poate fi gol, caz în care nu este necesară nicio parolă pentru autentificarea ca nume de utilizator specificat. Cu toate acestea, unele aplicații care citesc fișierul <_:filename-1/> pot decide să nu permită deloc accesul dacă câmpul parolei este gol." #. (itstool) path: term/emphasis #: shadow.5.xml.out:103 @@ -8198,27 +6304,18 @@ msgstr "data ultimei schimbări a parolei" #. (itstool) path: listitem/para #: shadow.5.xml.out:106 -msgid "" -"The date of the last password change, expressed as the number of days since " -"Jan 1, 1970 00:00 UTC." -msgstr "" -"Data ultimei modificări a parolei, exprimată ca număr de zile de la 1 " -"ianuarie 1970 00:00 UTC." +msgid "The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC." +msgstr "Data ultimei modificări a parolei, exprimată ca număr de zile de la 1 ianuarie 1970 00:00 UTC." #. (itstool) path: listitem/para #: shadow.5.xml.out:110 -msgid "" -"The value 0 has a special meaning, which is that the user should change her " -"password the next time she will log in the system." -msgstr "" -"Valoarea 0 are o semnificație specială, și anume că utilizatorul trebuie să " -"își schimbe parola data viitoare când se va conecta la sistem." +msgid "The value 0 has a special meaning, which is that the user should change her password the next time she will log in the system." +msgstr "Valoarea 0 are o semnificație specială, și anume că utilizatorul trebuie să își schimbe parola data viitoare când se va conecta la sistem." #. (itstool) path: listitem/para #: shadow.5.xml.out:115 msgid "An empty field means that password aging features are disabled." -msgstr "" -"Un câmp gol înseamnă că funcțiile de expirare a parolei sunt dezactivate." +msgstr "Un câmp gol înseamnă că funcțiile de expirare a parolei sunt dezactivate." #. (itstool) path: term/emphasis #: shadow.5.xml.out:122 @@ -8227,18 +6324,13 @@ msgstr "vârsta minimă a parolei" #. (itstool) path: listitem/para #: shadow.5.xml.out:124 -msgid "" -"The minimum password age is the number of days the user will have to wait " -"before she will be allowed to change her password again." -msgstr "" -"Vârsta minimă a parolei este numărul de zile pe care utilizatorul va trebui " -"să le aștepte înainte de a i se permite să își schimbe din nou parola." +msgid "The minimum password age is the number of days the user will have to wait before she will be allowed to change her password again." +msgstr "Vârsta minimă a parolei este numărul de zile pe care utilizatorul va trebui să le aștepte înainte de a i se permite să își schimbe din nou parola." #. (itstool) path: listitem/para #: shadow.5.xml.out:129 msgid "An empty field and value 0 mean that there is no minimum password age." -msgstr "" -"Un câmp gol și valoarea 0 înseamnă că nu există o vârstă minimă a parolei." +msgstr "Un câmp gol și valoarea 0 înseamnă că nu există o vârstă minimă a parolei." #. (itstool) path: term/emphasis #: shadow.5.xml.out:136 @@ -8247,41 +6339,23 @@ msgstr "vârsta maximă a parolei" #. (itstool) path: listitem/para #: shadow.5.xml.out:138 -msgid "" -"The maximum password age is the number of days after which the user will " -"have to change her password." -msgstr "" -"Vârsta maximă a parolei este numărul de zile după care utilizatorul va " -"trebui să își schimbe parola." +msgid "The maximum password age is the number of days after which the user will have to change her password." +msgstr "Vârsta maximă a parolei este numărul de zile după care utilizatorul va trebui să își schimbe parola." #. (itstool) path: listitem/para #: shadow.5.xml.out:142 -msgid "" -"After this number of days is elapsed, the password may still be valid. The " -"user should be asked to change her password the next time she will log in." -msgstr "" -"După expirarea acestui număr de zile, parola poate fi încă valabilă. " -"Utilizatorului trebuie să i se ceară să își schimbe parola data viitoare " -"când se va conecta." +msgid "After this number of days is elapsed, the password may still be valid. The user should be asked to change her password the next time she will log in." +msgstr "După expirarea acestui număr de zile, parola poate fi încă valabilă. Utilizatorului trebuie să i se ceară să își schimbe parola data viitoare când se va conecta." #. (itstool) path: listitem/para #: shadow.5.xml.out:147 -msgid "" -"An empty field means that there are no maximum password age, no password " -"warning period, and no password inactivity period (see below)." -msgstr "" -"Un câmp gol înseamnă că nu există nicio vârstă maximă a parolei, nicio " -"perioadă de avertizare a parolei și nicio perioadă de inactivitate a parolei " -"(a se vedea mai jos)." +msgid "An empty field means that there are no maximum password age, no password warning period, and no password inactivity period (see below)." +msgstr "Un câmp gol înseamnă că nu există nicio vârstă maximă a parolei, nicio perioadă de avertizare a parolei și nicio perioadă de inactivitate a parolei (a se vedea mai jos)." #. (itstool) path: listitem/para #: shadow.5.xml.out:152 -msgid "" -"If the maximum password age is lower than the minimum password age, the user " -"cannot change her password." -msgstr "" -"Dacă vârsta maximă a parolei este mai mică decât vârsta minimă a parolei, " -"utilizatorul nu își poate schimba parola." +msgid "If the maximum password age is lower than the minimum password age, the user cannot change her password." +msgstr "Dacă vârsta maximă a parolei este mai mică decât vârsta minimă a parolei, utilizatorul nu își poate schimba parola." #. (itstool) path: term/emphasis #: shadow.5.xml.out:160 @@ -8290,20 +6364,13 @@ msgstr "perioada de avertizare pentru parolă" #. (itstool) path: listitem/para #: shadow.5.xml.out:163 -msgid "" -"The number of days before a password is going to expire (see the maximum " -"password age above) during which the user should be warned." -msgstr "" -"Numărul de zile înainte ca o parolă să expire (a se vedea vârsta maximă a " -"parolei de mai sus) în care utilizatorul ar trebui să fie avertizat." +msgid "The number of days before a password is going to expire (see the maximum password age above) during which the user should be warned." +msgstr "Numărul de zile înainte ca o parolă să expire (a se vedea vârsta maximă a parolei de mai sus) în care utilizatorul ar trebui să fie avertizat." #. (itstool) path: listitem/para #: shadow.5.xml.out:168 -msgid "" -"An empty field and value 0 mean that there are no password warning period." -msgstr "" -"Un câmp gol și valoarea 0 înseamnă că nu există nicio perioadă de avertizare " -"privind parola." +msgid "An empty field and value 0 mean that there are no password warning period." +msgstr "Un câmp gol și valoarea 0 înseamnă că nu există nicio perioadă de avertizare privind parola." #. (itstool) path: term/emphasis #: shadow.5.xml.out:176 @@ -8312,33 +6379,18 @@ msgstr "perioada de inactivitate a parolei" #. (itstool) path: listitem/para #: shadow.5.xml.out:179 -msgid "" -"The number of days after a password has expired (see the maximum password " -"age above) during which the password should still be accepted (and the user " -"should update her password during the next login)." -msgstr "" -"Numărul de zile după expirarea unei parole (a se vedea vârsta maximă a " -"parolei de mai sus) în care parola ar trebui să fie acceptată în continuare " -"(iar utilizatorul ar trebui să își actualizeze parola la următoarea " -"autentificare)." +msgid "The number of days after a password has expired (see the maximum password age above) during which the password should still be accepted (and the user should update her password during the next login)." +msgstr "Numărul de zile după expirarea unei parole (a se vedea vârsta maximă a parolei de mai sus) în care parola ar trebui să fie acceptată în continuare (iar utilizatorul ar trebui să își actualizeze parola la următoarea autentificare)." #. (itstool) path: listitem/para #: shadow.5.xml.out:185 -msgid "" -"After expiration of the password and this expiration period is elapsed, no " -"login is possible for the user. The user should contact her administrator." -msgstr "" -"După expirarea parolei și după expirarea acestei perioade de expirare, " -"utilizatorul nu se poate conecta. Utilizatorul trebuie să își contacteze " -"administratorul." +msgid "After expiration of the password and this expiration period is elapsed, no login is possible for the user. The user should contact her administrator." +msgstr "După expirarea parolei și după expirarea acestei perioade de expirare, utilizatorul nu se poate conecta. Utilizatorul trebuie să își contacteze administratorul." #. (itstool) path: listitem/para #: shadow.5.xml.out:190 -msgid "" -"An empty field means that there are no enforcement of an inactivity period." -msgstr "" -"Un câmp gol înseamnă că nu există nicio impunere a unei perioade de " -"inactivitate." +msgid "An empty field means that there are no enforcement of an inactivity period." +msgstr "Un câmp gol înseamnă că nu există nicio impunere a unei perioade de inactivitate." #. (itstool) path: term/emphasis #: shadow.5.xml.out:198 @@ -8347,24 +6399,13 @@ msgstr "data de expirare a contului" #. (itstool) path: listitem/para #: shadow.5.xml.out:201 -msgid "" -"The date of expiration of the account, expressed as the number of days since " -"Jan 1, 1970 00:00 UTC." -msgstr "" -"Data de expirare a contului, exprimată ca număr de zile de la 1 ianuarie " -"1970 00:00 UTC." +msgid "The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC." +msgstr "Data de expirare a contului, exprimată ca număr de zile de la 1 ianuarie 1970 00:00 UTC." #. (itstool) path: listitem/para #: shadow.5.xml.out:205 -msgid "" -"Note that an account expiration differs from a password expiration. In case " -"of an account expiration, the user shall not be allowed to login. In case of " -"a password expiration, the user is not allowed to login using her password." -msgstr "" -"Rețineți că expirarea unui cont diferă de expirarea unei parole. În cazul " -"expirării contului, utilizatorului nu i se permite să se conecteze. În cazul " -"expirării parolei, utilizatorului nu i se permite să se conecteze folosind " -"parola sa." +msgid "Note that an account expiration differs from a password expiration. In case of an account expiration, the user shall not be allowed to login. In case of a password expiration, the user is not allowed to login using her password." +msgstr "Rețineți că expirarea unui cont diferă de expirarea unei parole. În cazul expirării contului, utilizatorului nu i se permite să se conecteze. În cazul expirării parolei, utilizatorului nu i se permite să se conecteze folosind parola sa." #. (itstool) path: listitem/para #: shadow.5.xml.out:211 @@ -8373,12 +6414,8 @@ msgstr "Un câmp gol înseamnă că acel cont nu va expira niciodată." #. (itstool) path: listitem/para #: shadow.5.xml.out:214 -msgid "" -"The value 0 should not be used as it is interpreted as either an account " -"with no expiration, or as an expiration on Jan 1, 1970." -msgstr "" -"Valoarea 0 nu trebuie utilizată, deoarece este interpretată fie ca un cont " -"fără expirare, fie ca o expirare la 1 ianuarie 1970." +msgid "The value 0 should not be used as it is interpreted as either an account with no expiration, or as an expiration on Jan 1, 1970." +msgstr "Valoarea 0 nu trebuie utilizată, deoarece este interpretată fie ca un cont fără expirare, fie ca o expirare la 1 ianuarie 1970." #. (itstool) path: term/emphasis #: shadow.5.xml.out:222 @@ -8412,25 +6449,8 @@ msgstr "grup <_:arg-1/> comandă" #. (itstool) path: refsect1/para #: sg.1.xml.out:58 -msgid "" -"The <_:command-1/> command works similar to <_:command-2/> but accepts a " -"command. The command will be executed with the <_:filename-3/> shell. With " -"most shells you may run <_:command-4/> from, you need to enclose multi-word " -"commands in quotes. Another difference between <_:command-5/> and <_:" -"command-6/> is that some shells treat <_:command-7/> specially, replacing " -"themselves with a new instance of a shell that <_:command-8/> creates. This " -"doesn't happen with <_:command-9/>, so upon exit from a <_:command-10/> " -"command you are returned to your previous group ID." -msgstr "" -"Comanda <_:command-1/> funcționează similar cu <_:command-2/>, dar acceptă o " -"comandă. Comanda va fi executată cu shell-ul <_:filename-3/>. Cu majoritatea " -"shell-urilor din care puteți executa <_:command-4/>, trebuie să includeți " -"comenzile cu mai multe cuvinte între ghilimele. O altă diferență între <_:" -"command-5/> și <_:command-6/> este că unele shell-uri tratează <_:command-7/" -"> în mod special, înlocuindu-se cu o nouă instanță a unui shell pe care <_:" -"command-8/> îl creează. Acest lucru nu se întâmplă cu <_:command-9/>, astfel " -"încât la ieșirea dintr-o comandă <_:command-10/> vă întoarceți la ID-ul " -"grupului anterior." +msgid "The <_:command-1/> command works similar to <_:command-2/> but accepts a command. The command will be executed with the <_:filename-3/> shell. With most shells you may run <_:command-4/> from, you need to enclose multi-word commands in quotes. Another difference between <_:command-5/> and <_:command-6/> is that some shells treat <_:command-7/> specially, replacing themselves with a new instance of a shell that <_:command-8/> creates. This doesn't happen with <_:command-9/>, so upon exit from a <_:command-10/> command you are returned to your previous group ID." +msgstr "Comanda <_:command-1/> funcționează similar cu <_:command-2/>, dar acceptă o comandă. Comanda va fi executată cu shell-ul <_:filename-3/>. Cu majoritatea shell-urilor din care puteți executa <_:command-4/>, trebuie să includeți comenzile cu mai multe cuvinte între ghilimele. O altă diferență între <_:command-5/> și <_:command-6/> este că unele shell-uri tratează <_:command-7/> în mod special, înlocuindu-se cu o nouă instanță a unui shell pe care <_:command-8/> îl creează. Acest lucru nu se întâmplă cu <_:command-9/>, astfel încât la ieșirea dintr-o comandă <_:command-10/> vă întoarceți la ID-ul grupului anterior." #. (itstool) path: refnamediv/refpurpose #: su.1.xml.out:58 @@ -8444,51 +6464,24 @@ msgstr "argumente" #. (itstool) path: refsect1/para #: su.1.xml.out:80 -msgid "" -"The <_:command-1/> command is used to become another user during a login " -"session. Invoked without a <_:option-2/>, <_:command-3/> defaults to " -"becoming the superuser. The <_:option-4/> option may be used to provide an " -"environment similar to what the user would expect had the user logged in " -"directly. The <_:option-5/> option may be used to treat the next argument as " -"a command by most shells." -msgstr "" -"Comanda <_:command-1/> este utilizată pentru a deveni un alt utilizator în " -"timpul unei sesiuni de autentificare. Invocată fără „<_:option-2/>”, <_:" -"command-3/> devine în mod implicit superutilizator. Opțiunea „<_:option-4/>” " -"poate fi utilizată pentru a oferi un mediu similar cu cel la care " -"utilizatorul s-ar aștepta dacă s-ar conecta direct. Opțiunea „<_:option-5/>” " -"poate fi utilizată pentru a trata argumentul următor ca o comandă de către " -"majoritatea shell-urilor." +msgid "The <_:command-1/> command is used to become another user during a login session. Invoked without a <_:option-2/>, <_:command-3/> defaults to becoming the superuser. The <_:option-4/> option may be used to provide an environment similar to what the user would expect had the user logged in directly. The <_:option-5/> option may be used to treat the next argument as a command by most shells." +msgstr "Comanda <_:command-1/> este utilizată pentru a deveni un alt utilizator în timpul unei sesiuni de autentificare. Invocată fără „<_:option-2/>”, <_:command-3/> devine în mod implicit superutilizator. Opțiunea „<_:option-4/>” poate fi utilizată pentru a oferi un mediu similar cu cel la care utilizatorul s-ar aștepta dacă s-ar conecta direct. Opțiunea „<_:option-5/>” poate fi utilizată pentru a trata argumentul următor ca o comandă de către majoritatea shell-urilor." #. (itstool) path: para/option #: su.1.xml.out:92 su.1.xml.out:94 +#| msgid "-" msgid "--" msgstr "--" #. (itstool) path: refsect1/para #: su.1.xml.out:90 -msgid "" -"Options are recognized everywhere in the argument list. You can use the <_:" -"option-1/> argument to stop option parsing. The <_:option-2/> option is " -"special: it is also recognized after <_:option-3/>, but has to be placed " -"before <_:option-4/>." -msgstr "" -"Opțiunile sunt recunoscute oriunde în lista de argumente. Puteți utiliza " -"argumentul „<_:option-1/>” pentru a opri analizarea opțiunilor. Opțiunea „<_:" -"option-2/>” este specială: este recunoscută și după „<_:option-3/>”, dar " -"trebuie plasată înainte de „<_:option-4/>”." +msgid "Options are recognized everywhere in the argument list. You can use the <_:option-1/> argument to stop option parsing. The <_:option-2/> option is special: it is also recognized after <_:option-3/>, but has to be placed before <_:option-4/>." +msgstr "Opțiunile sunt recunoscute oriunde în lista de argumente. Puteți utiliza argumentul „<_:option-1/>” pentru a opri analizarea opțiunilor. Opțiunea „<_:option-2/>” este specială: este recunoscută și după „<_:option-3/>”, dar trebuie plasată înainte de „<_:option-4/>”." #. (itstool) path: refsect1/para #: su.1.xml.out:98 -msgid "" -"The user will be prompted for a password, if appropriate. Invalid passwords " -"will produce an error message. All attempts, both valid and invalid, are " -"logged to detect abuse of the system." -msgstr "" -"Utilizatorului i se va solicita o parolă, dacă este cazul. Parolele nevalide " -"vor produce un mesaj de eroare. Toate încercările, atât cele valide, cât și " -"cele nevalide, sunt înregistrate pentru a detecta utilizarea abuzivă a " -"sistemului." +msgid "The user will be prompted for a password, if appropriate. Invalid passwords will produce an error message. All attempts, both valid and invalid, are logged to detect abuse of the system." +msgstr "Utilizatorului i se va solicita o parolă, dacă este cazul. Parolele nevalide vor produce un mesaj de eroare. Toate încercările, atât cele valide, cât și cele nevalide, sunt înregistrate pentru a detecta utilizarea abuzivă a sistemului." #. (itstool) path: para/filename #: su.1.xml.out:105 @@ -8502,6 +6495,7 @@ msgstr "/sbin:/bin:/usr/sbin:/usr/bin" #. (itstool) path: para/option #: su.1.xml.out:108 su.1.xml.out:220 +#| msgid "$PATH" msgid "ENV_PATH" msgstr "ENV_PATH" @@ -8512,16 +6506,8 @@ msgstr "ENV_SUPATH" #. (itstool) path: refsect1/para #: su.1.xml.out:103 -msgid "" -"The current environment is passed to the new shell. The value of <_:envar-1/" -"> is reset to <_:filename-2/> for normal users, or <_:filename-3/> for the " -"superuser. This may be changed with the <_:option-4/> and <_:option-5/> " -"definitions in <_:filename-6/>." -msgstr "" -"Mediul curent este transmis noului shell. Valoarea lui <_:envar-1/> este " -"readusă la <_:filename-2/> pentru utilizatorii normali, sau <_:filename-3/> " -"pentru superutilizator. Aceasta poate fi modificată cu ajutorul definițiilor " -"„<_:option-4/>” și „<_:option-5/>” din <_:filename-6/>." +msgid "The current environment is passed to the new shell. The value of <_:envar-1/> is reset to <_:filename-2/> for normal users, or <_:filename-3/> for the superuser. This may be changed with the <_:option-4/> and <_:option-5/> definitions in <_:filename-6/>." +msgstr "Mediul curent este transmis noului shell. Valoarea lui <_:envar-1/> este readusă la <_:filename-2/> pentru utilizatorii normali, sau <_:filename-3/> pentru superutilizator. Aceasta poate fi modificată cu ajutorul definițiilor „<_:option-4/>” și „<_:option-5/>” din <_:filename-6/>." #. (itstool) path: term/option #: su.1.xml.out:126 @@ -8535,56 +6521,37 @@ msgstr "COMANDA" #. (itstool) path: listitem/para #: su.1.xml.out:129 -msgid "" -"Specify a command that will be invoked by the shell using its <_:option-1/>." -msgstr "" -"Specify a command that will be invoked by the shell using its „<_:option-1/" -">”." +msgid "Specify a command that will be invoked by the shell using its <_:option-1/>." +msgstr "Specify a command that will be invoked by the shell using its „<_:option-1/>”." #. (itstool) path: listitem/para #: su.1.xml.out:133 -msgid "" -"The executed command will have no controlling terminal. This option cannot " -"be used to execute interactive programs which need a controlling TTY." -msgstr "" -"Comanda executată nu va avea niciun terminal de control. Această opțiune nu " -"poate fi utilizată pentru a executa programe interactive care necesită un " -"TTY de control." +msgid "The executed command will have no controlling terminal. This option cannot be used to execute interactive programs which need a controlling TTY." +msgstr "Comanda executată nu va avea niciun terminal de control. Această opțiune nu poate fi utilizată pentru a executa programe interactive care necesită un TTY de control." #. (itstool) path: term/option #. (itstool) path: para/option #: su.1.xml.out:144 su.1.xml.out:156 su.1.xml.out:256 su.1.xml.out:263 #: su.1.xml.out:273 su.1.xml.out:286 usermod.8.xml.out:217 +#| msgid "nologin" msgid "--login" msgstr "--login" #. (itstool) path: varlistentry/term #: su.1.xml.out:143 su.1.xml.out:206 +#| msgid ", " msgid "<_:option-1/>, <_:option-2/>, <_:option-3/>" msgstr "„<_:option-1/>”, „<_:option-2/>”, „<_:option-3/>”" #. (itstool) path: listitem/para #: su.1.xml.out:147 -msgid "" -"Provide an environment similar to what the user would expect had the user " -"logged in directly." -msgstr "" -"Furnizează un mediu similar cu cel la care utilizatorul s-ar aștepta dacă s-" -"ar conecta direct." +msgid "Provide an environment similar to what the user would expect had the user logged in directly." +msgstr "Furnizează un mediu similar cu cel la care utilizatorul s-ar aștepta dacă s-ar conecta direct." #. (itstool) path: listitem/para #: su.1.xml.out:151 -msgid "" -"When <_:option-1/> is used, it must be specified before any <_:option-2/>. " -"For portability it is recommended to use it as last option, before any <_:" -"option-3/>. The other forms (<_:option-4/> and <_:option-5/>) do not have " -"this restriction." -msgstr "" -"Atunci când se utilizează „<_:option-1/>”, aceasta trebuie specificată " -"înaintea oricărei „<_:option-2/>”. Pentru portabilitate, se recomandă " -"utilizarea acesteia ca ultimă opțiune, înainte de orice „<_:option-3/>”. " -"Celelalte forme („<_:option-4/>” și „<_:option-5/>”) nu au această " -"restricție." +msgid "When <_:option-1/> is used, it must be specified before any <_:option-2/>. For portability it is recommended to use it as last option, before any <_:option-3/>. The other forms (<_:option-4/> and <_:option-5/>) do not have this restriction." +msgstr "Atunci când se utilizează „<_:option-1/>”, aceasta trebuie specificată înaintea oricărei „<_:option-2/>”. Pentru portabilitate, se recomandă utilizarea acesteia ca ultimă opțiune, înainte de orice „<_:option-3/>”. Celelalte forme („<_:option-4/>” și „<_:option-5/>”) nu au această restricție." #. (itstool) path: listitem/para #: su.1.xml.out:166 @@ -8604,57 +6571,33 @@ msgstr "--preserve-environment" #. (itstool) path: listitem/para #: su.1.xml.out:177 -msgid "" -"If <_:option-1/> is used, the shell specified by the <_:envar-2/> " -"environment variable." -msgstr "" -"Dacă se utilizează „<_:option-1/>”, shell-ul specificat de variabila de " -"mediu <_:envar-2/>." +msgid "If <_:option-1/> is used, the shell specified by the <_:envar-2/> environment variable." +msgstr "Dacă se utilizează „<_:option-1/>”, shell-ul specificat de variabila de mediu <_:envar-2/>." #. (itstool) path: listitem/para #: su.1.xml.out:184 msgid "The shell indicated in the <_:filename-1/> entry for the target user." -msgstr "" -"Shell-ul indicat în intrarea <_:filename-1/> pentru utilizatorul țintă." +msgstr "Shell-ul indicat în intrarea <_:filename-1/> pentru utilizatorul țintă." #. (itstool) path: listitem/para #: su.1.xml.out:190 msgid "<_:filename-1/> if a shell could not be found by any above method." -msgstr "" -"<_:filename-1/> dacă un shell nu a putut fi găsit prin niciuna dintre " -"metodele de mai sus." +msgstr "<_:filename-1/> dacă un shell nu a putut fi găsit prin niciuna dintre metodele de mai sus." #. (itstool) path: listitem/para #: su.1.xml.out:167 -msgid "" -"The invoked shell is chosen from (highest priority first): <_:variablelist-1/" -">" -msgstr "" -"Shell-ul invocat este ales din (prioritatea cea mai mare mai întâi): <_:" -"variablelist-1/>" +msgid "The invoked shell is chosen from (highest priority first): <_:variablelist-1/>" +msgstr "Shell-ul invocat este ales din (prioritatea cea mai mare mai întâi): <_:variablelist-1/>" #. (itstool) path: listitem/para #: su.1.xml.out:195 -msgid "" -"If the target user has a restricted shell (i.e. the shell field of this " -"user's entry in <_:filename-1/> is not listed in <_:filename-2/>), then the " -"<_:option-3/> option or the <_:envar-4/> environment variable won't be taken " -"into account, unless <_:command-5/> is called by root." -msgstr "" -"Dacă utilizatorul țintă are un shell restricționat (de exemplu, câmpul shell " -"al intrării acestui utilizator în <_:filename-1/> nu este listat în <_:" -"filename-2/>), atunci opțiunea „<_:option-3/>” sau variabila de mediu <_:" -"envar-4/> nu vor fi luate în considerare, cu excepția cazului în care <_:" -"command-5/> este apelat de root." +msgid "If the target user has a restricted shell (i.e. the shell field of this user's entry in <_:filename-1/> is not listed in <_:filename-2/>), then the <_:option-3/> option or the <_:envar-4/> environment variable won't be taken into account, unless <_:command-5/> is called by root." +msgstr "Dacă utilizatorul țintă are un shell restricționat (de exemplu, câmpul shell al intrării acestui utilizator în <_:filename-1/> nu este listat în <_:filename-2/>), atunci opțiunea „<_:option-3/>” sau variabila de mediu <_:envar-4/> nu vor fi luate în considerare, cu excepția cazului în care <_:command-5/> este apelat de root." #. (itstool) path: listitem/para #: su.1.xml.out:217 -msgid "" -"reset according to the <_:filename-1/> options <_:option-2/> or <_:option-3/" -"> (see below);" -msgstr "" -"redefinește în conformitate cu opțiunile <_:filename-1/> „<_:option-2/>” sau " -"„<_:option-3/>” (a se vedea mai jos);" +msgid "reset according to the <_:filename-1/> options <_:option-2/> or <_:option-3/> (see below);" +msgstr "redefinește în conformitate cu opțiunile <_:filename-1/> „<_:option-2/>” sau „<_:option-3/>” (a se vedea mai jos);" #. (itstool) path: term/envar #. (itstool) path: para/envar @@ -8679,13 +6622,8 @@ msgstr "Conservă mediul curent, cu excepția: <_:variablelist-1/>" #. (itstool) path: listitem/para #: su.1.xml.out:237 -msgid "" -"If the target user has a restricted shell, this option has no effect (unless " -"<_:command-1/> is called by root)." -msgstr "" -"Dacă utilizatorul țintă are un shell restricționat, această opțiune nu are " -"niciun efect (cu excepția cazului în care <_:command-1/> este apelat de " -"root)." +msgid "If the target user has a restricted shell, this option has no effect (unless <_:command-1/> is called by root)." +msgstr "Dacă utilizatorul țintă are un shell restricționat, această opțiune nu are niciun efect (cu excepția cazului în care <_:command-1/> este apelat de root)." #. (itstool) path: para/envar #: su.1.xml.out:248 @@ -8694,21 +6632,13 @@ msgstr "$USER" #. (itstool) path: listitem/para #: su.1.xml.out:246 -msgid "" -"The <_:envar-1/>, <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, <_:envar-5/>, " -"and <_:envar-6/> environment variables are reset." -msgstr "" -"Variabilele de mediu <_:envar-1/>, <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, " -"<_:envar-5/> și <_:envar-6/> sunt reinițializate." +msgid "The <_:envar-1/>, <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, <_:envar-5/>, and <_:envar-6/> environment variables are reset." +msgstr "Variabilele de mediu <_:envar-1/>, <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, <_:envar-5/> și <_:envar-6/> sunt reinițializate." #. (itstool) path: listitem/para #: su.1.xml.out:255 -msgid "" -"If <_:option-1/> is not used, the environment is copied, except for the " -"variables above." -msgstr "" -"Dacă „<_:option-1/>” nu este utilizată, mediul este copiat, cu excepția " -"variabilelor de mai sus." +msgid "If <_:option-1/> is not used, the environment is copied, except for the variables above." +msgstr "Dacă „<_:option-1/>” nu este utilizată, mediul este copiat, cu excepția variabilelor de mai sus." #. (itstool) path: para/envar #: su.1.xml.out:264 @@ -8727,12 +6657,8 @@ msgstr "$XAUTHORITY" #. (itstool) path: listitem/para #: su.1.xml.out:262 -msgid "" -"If <_:option-1/> is used, the <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, and " -"<_:envar-5/> environment variables are copied if they were set." -msgstr "" -"Dacă se utilizează „<_:option-1/>”, variabilele de mediu <_:envar-2/>, <_:" -"envar-3/>, <_:envar-4/> și <_:envar-5/> sunt copiate dacă au fost definite." +msgid "If <_:option-1/> is used, the <_:envar-2/>, <_:envar-3/>, <_:envar-4/>, and <_:envar-5/> environment variables are copied if they were set." +msgstr "Dacă se utilizează „<_:option-1/>”, variabilele de mediu <_:envar-2/>, <_:envar-3/>, <_:envar-4/> și <_:envar-5/> sunt copiate dacă au fost definite." #. (itstool) path: para/envar #: su.1.xml.out:274 @@ -8761,20 +6687,14 @@ msgstr "MAIL_DIR" #. (itstool) path: para/option #: su.1.xml.out:280 +#| msgid "FILE" msgid "MAIL_FILE" msgstr "MAIL_FILE" #. (itstool) path: listitem/para #: su.1.xml.out:272 -msgid "" -"If <_:option-1/> is used, the <_:envar-2/>, <_:envar-3/>, and <_:envar-4/> " -"environment variables are set according to the <_:filename-5/> options <_:" -"option-6/>, <_:option-7/>, <_:option-8/>, and <_:option-9/> (see below)." -msgstr "" -"Dacă se utilizează „<_:option-1/>”, variabilele de mediu <_:envar-2/>, <_:" -"envar-3/> și <_:envar-4/> sunt definite în conformitate cu opțiunile <_:" -"filename-5/> „<_:option-6/>”, „<_:option-7/>”, „<_:option-8/>” și „<_:" -"option-9/>” (a se vedea mai jos)." +msgid "If <_:option-1/> is used, the <_:envar-2/>, <_:envar-3/>, and <_:envar-4/> environment variables are set according to the <_:filename-5/> options <_:option-6/>, <_:option-7/>, <_:option-8/>, and <_:option-9/> (see below)." +msgstr "Dacă se utilizează „<_:option-1/>”, variabilele de mediu <_:envar-2/>, <_:envar-3/> și <_:envar-4/> sunt definite în conformitate cu opțiunile <_:filename-5/> „<_:option-6/>”, „<_:option-7/>”, „<_:option-8/>” și „<_:option-9/>” (a se vedea mai jos)." #. (itstool) path: para/option #: su.1.xml.out:288 @@ -8783,12 +6703,8 @@ msgstr "ENVIRON_FILE" #. (itstool) path: listitem/para #: su.1.xml.out:285 -msgid "" -"If <_:option-1/> is used, other environment variables might be set by the <_:" -"option-2/> file (see below)." -msgstr "" -"Dacă se utilizează „<_:option-1/>”, alte variabile de mediu pot fi definite " -"de fișierul „<_:option-2/>” (a se vedea mai jos)." +msgid "If <_:option-1/> is used, other environment variables might be set by the <_:option-2/> file (see below)." +msgstr "Dacă se utilizează „<_:option-1/>”, alte variabile de mediu pot fi definite de fișierul „<_:option-2/>” (a se vedea mai jos)." #. (itstool) path: listitem/para #: su.1.xml.out:293 @@ -8797,38 +6713,23 @@ msgstr "Alte medii pot fi definite de modulele PAM." #. (itstool) path: listitem/para #: su.1.xml.out:241 -msgid "" -"Note that the default behavior for the environment is the following: <_:" -"variablelist-1/>" -msgstr "" -"Rețineți că comportamentul implicit pentru mediu este următorul: <_:" -"variablelist-1/>" +msgid "Note that the default behavior for the environment is the following: <_:variablelist-1/>" +msgstr "Rețineți că comportamentul implicit pentru mediu este următorul: <_:variablelist-1/>" #. (itstool) path: refsect1/para #: su.1.xml.out:367 -msgid "" -"On success, <_:command-1/> returns the exit value of the command it executed." -msgstr "" -"În caz de succes, <_:command-1/> returnează valoarea de ieșire a comenzii " -"executate." +msgid "On success, <_:command-1/> returns the exit value of the command it executed." +msgstr "În caz de succes, <_:command-1/> returnează valoarea de ieșire a comenzii executate." #. (itstool) path: refsect1/para #: su.1.xml.out:371 -msgid "" -"If this command was terminated by a signal, <_:command-1/> returns the " -"number of this signal plus 128." -msgstr "" -"Dacă această comandă a fost terminată de un semnal, <_:command-1/> " -"returnează numărul acestui semnal plus 128." +msgid "If this command was terminated by a signal, <_:command-1/> returns the number of this signal plus 128." +msgstr "Dacă această comandă a fost terminată de un semnal, <_:command-1/> returnează numărul acestui semnal plus 128." #. (itstool) path: refsect1/para #: su.1.xml.out:375 -msgid "" -"If su has to kill the command (because it was asked to terminate, and the " -"command did not terminate in time), <_:command-1/> returns 255." -msgstr "" -"Dacă su trebuie să oprească comanda (deoarece i s-a cerut să se termine, iar " -"comanda nu s-a terminat la timp), <_:command-1/> returnează 255." +msgid "If su has to kill the command (because it was asked to terminate, and the command did not terminate in time), <_:command-1/> returns 255." +msgstr "Dacă su trebuie să oprească comanda (deoarece i s-a cerut să se termine, iar comanda nu s-a terminat la timp), <_:command-1/> returnează 255." #. (itstool) path: listitem/para #: su.1.xml.out:387 @@ -8862,21 +6763,13 @@ msgstr "Comanda solicitată nu a putut fi executată" #. (itstool) path: refsect1/para #: su.1.xml.out:380 -msgid "" -"Some exit values from <_:command-1/> are independent from the executed " -"command: <_:variablelist-2/>" -msgstr "" -"Unele valori de ieșire din <_:command-1/> sunt independente de comanda " -"executată: <_: variablelist-2/>" +msgid "Some exit values from <_:command-1/> are independent from the executed command: <_:variablelist-2/>" +msgstr "Unele valori de ieșire din <_:command-1/> sunt independente de comanda executată: <_: variablelist-2/>" #. (itstool) path: refsect1/para #: su.1.xml.out:414 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>." #. (itstool) path: refmeta/refentrytitle #. (itstool) path: refnamediv/refname @@ -8898,12 +6791,8 @@ msgstr "/etc/suauth" #. (itstool) path: refsect1/para #: suauth.5.xml.out:52 -msgid "" -"The file <_:filename-1/> is referenced whenever the su command is called. It " -"can change the behaviour of the su command, based upon:" -msgstr "" -"Fișierul <_:filename-1/> este referențiat ori de câte ori este apelată " -"comanda su. Acesta poate schimba comportamentul comenzii su, în funcție de:" +msgid "The file <_:filename-1/> is referenced whenever the su command is called. It can change the behaviour of the su command, based upon:" +msgstr "Fișierul <_:filename-1/> este referențiat ori de câte ori este apelată comanda su. Acesta poate schimba comportamentul comenzii su, în funcție de:" #. (itstool) path: refsect1/literallayout #: suauth.5.xml.out:59 @@ -8912,20 +6801,13 @@ msgstr "1) utilizatorul vizat de su" #. (itstool) path: refsect1/para #: suauth.5.xml.out:63 -msgid "" -"2) the user executing the su command (or any groups he might be a member of)" -msgstr "" -"2) utilizatorul care execută comanda su (sau orice grup din care ar putea " -"face parte)" +msgid "2) the user executing the su command (or any groups he might be a member of)" +msgstr "2) utilizatorul care execută comanda su (sau orice grup din care ar putea face parte)" #. (itstool) path: refsect1/para #: suauth.5.xml.out:68 -msgid "" -"The file is formatted like this, with lines starting with a # being treated " -"as comment lines and ignored;" -msgstr "" -"Fișierul este formatat astfel, liniile care încep cu un # fiind tratate ca " -"linii de comentariu și ignorate;" +msgid "The file is formatted like this, with lines starting with a # being treated as comment lines and ignored;" +msgstr "Fișierul este formatat astfel, liniile care încep cu un # fiind tratate ca linii de comentariu și ignorate;" #. (itstool) path: refsect1/literallayout #: suauth.5.xml.out:73 @@ -8939,14 +6821,8 @@ msgstr "ALL EXCEPT" #. (itstool) path: refsect1/para #: suauth.5.xml.out:77 -msgid "" -"Where to-id is either the word <_:emphasis-1/>, a list of usernames " -"delimited by \",\" or the words <_:emphasis-2/> followed by a list of " -"usernames delimited by \",\"." -msgstr "" -"Unde id-țintă este fie cuvântul <_:emphasis-1/>, o listă de nume de " -"utilizator delimitate prin „,” sau cuvintele <_:emphasis-2/> urmate de o " -"listă de nume de utilizator delimitate prin „,”." +msgid "Where to-id is either the word <_:emphasis-1/>, a list of usernames delimited by \",\" or the words <_:emphasis-2/> followed by a list of usernames delimited by \",\"." +msgstr "Unde id-țintă este fie cuvântul <_:emphasis-1/>, o listă de nume de utilizator delimitate prin „,” sau cuvintele <_:emphasis-2/> urmate de o listă de nume de utilizator delimitate prin „,”." #. (itstool) path: para/emphasis #: suauth.5.xml.out:85 @@ -8955,24 +6831,13 @@ msgstr "ALL EXCEPT GROUP" #. (itstool) path: refsect1/para #: suauth.5.xml.out:83 -msgid "" -"from-id is formatted the same as to-id except the extra word <_:emphasis-1/> " -"is recognized. <_:emphasis-2/> is perfectly valid too. Following <_:" -"emphasis-3/> appears one or more group names, delimited by \",\". It is not " -"sufficient to have primary group id of the relevant group, an entry in <_:" -"citerefentry-4/> is necessary." -msgstr "" -"id-sursă este formatat la fel ca id-țintă, cu excepția cuvântului " -"suplimentar <_:emphasis-1/> care este recunoscut. <_:emphasis-2/> este și el " -"perfect valabil. După <_:emphasis-3/> apar unul sau mai multe nume de " -"grupuri, delimitate prin „,”. Nu este suficient să aveți id-ul grupului " -"primar al grupului relevant, este necesară o intrare în <_:citerefentry-4/>." +msgid "from-id is formatted the same as to-id except the extra word <_:emphasis-1/> is recognized. <_:emphasis-2/> is perfectly valid too. Following <_:emphasis-3/> appears one or more group names, delimited by \",\". It is not sufficient to have primary group id of the relevant group, an entry in <_:citerefentry-4/> is necessary." +msgstr "id-sursă este formatat la fel ca id-țintă, cu excepția cuvântului suplimentar <_:emphasis-1/> care este recunoscut. <_:emphasis-2/> este și el perfect valabil. După <_:emphasis-3/> apar unul sau mai multe nume de grupuri, delimitate prin „,”. Nu este suficient să aveți id-ul grupului primar al grupului relevant, este necesară o intrare în <_:citerefentry-4/>." #. (itstool) path: refsect1/para #: suauth.5.xml.out:94 msgid "Action can be one only of the following currently supported options." -msgstr "" -"Acțiunea poate fi doar una dintre următoarele opțiuni acceptate în prezent." +msgstr "Acțiunea poate fi doar una dintre următoarele opțiuni acceptate în prezent." #. (itstool) path: term/emphasis #: suauth.5.xml.out:100 @@ -8991,11 +6856,8 @@ msgstr "NOPASS" #. (itstool) path: listitem/para #: suauth.5.xml.out:113 -msgid "" -"The attempt to su is automatically successful; no password is asked for." -msgstr "" -"Încercarea de a face su este automat reușită; nu este solicitată nicio " -"parolă." +msgid "The attempt to su is automatically successful; no password is asked for." +msgstr "Încercarea de a face su este automat reușită; nu este solicitată nicio parolă." #. (itstool) path: term/emphasis #: suauth.5.xml.out:121 @@ -9004,28 +6866,13 @@ msgstr "OWNPASS" #. (itstool) path: listitem/para #: suauth.5.xml.out:124 -msgid "" -"For the su command to be successful, the user must enter his or her own " -"password. They are told this." -msgstr "" -"Pentru ca comanda su să aibă succes, utilizatorul trebuie să își introducă " -"propria parolă. I se spune acest lucru." +msgid "For the su command to be successful, the user must enter his or her own password. They are told this." +msgstr "Pentru ca comanda su să aibă succes, utilizatorul trebuie să își introducă propria parolă. I se spune acest lucru." #. (itstool) path: refsect1/para #: suauth.5.xml.out:132 -msgid "" -"Note there are three separate fields delimited by a colon. No whitespace " -"must surround this colon. Also note that the file is examined sequentially " -"line by line, and the first applicable rule is used without examining the " -"file further. This makes it possible for a system administrator to exercise " -"as fine control as he or she wishes." -msgstr "" -"Observați că există trei câmpuri separate delimitate de două puncte. Aceste " -"două puncte nu trebuie să fie înconjurate de niciun spațiu alb. Rețineți, de " -"asemenea, că fișierul este examinat secvențial, linie cu linie, iar prima " -"regulă aplicabilă este utilizată fără a mai examina fișierul. Acest lucru " -"permite unui administrator de sistem să exercite un control atât de fin pe " -"cât dorește." +msgid "Note there are three separate fields delimited by a colon. No whitespace must surround this colon. Also note that the file is examined sequentially line by line, and the first applicable rule is used without examining the file further. This makes it possible for a system administrator to exercise as fine control as he or she wishes." +msgstr "Observați că există trei câmpuri separate delimitate de două puncte. Aceste două puncte nu trebuie să fie înconjurate de niciun spațiu alb. Rețineți, de asemenea, că fișierul este examinat secvențial, linie cu linie, iar prima regulă aplicabilă este utilizată fără a mai examina fișierul. Acest lucru permite unui administrator de sistem să exercite un control atât de fin pe cât dorește." #. (itstool) path: refsect1/title #: suauth.5.xml.out:142 @@ -9034,33 +6881,13 @@ msgstr "EXEMPLU" #. (itstool) path: refsect1/literallayout #: suauth.5.xml.out:143 -msgid "" -"# sample /etc/suauth file # # A couple of privileged usernames may # su to " -"root with their own password. # root:chris,birddog:OWNPASS # # Anyone else " -"may not su to root unless in # group wheel. This is how BSD does things. # " -"root:ALL EXCEPT GROUP wheel:DENY # # Perhaps terry and birddog are accounts " -"# owned by the same person. # Access can be arranged between them # with no " -"password. # terry:birddog:NOPASS birddog:terry:NOPASS #" -msgstr "" -"# Exemplu de fișier /etc/suauth # # Câteva nume de utilizator privilegiate " -"pot face # su la root cu propria lor parolă. # root:chris,birddog:OWNPASS # " -"# Oricine altcineva nu poate face su la root decât dacă este în # grupul " -"wheel. Acesta este modul în care BSD face lucrurile. # root:ALL EXCEPT GROUP " -"wheel:DENY # # Poate că terry și birddog sunt conturi # deținute de aceeași " -"persoană. # Accesul poate fi aranjat între ei # fără parolă. # terry:birddog:" -"NOPASS birddog:terry:NOPASS #" +msgid "# sample /etc/suauth file # # A couple of privileged usernames may # su to root with their own password. # root:chris,birddog:OWNPASS # # Anyone else may not su to root unless in # group wheel. This is how BSD does things. # root:ALL EXCEPT GROUP wheel:DENY # # Perhaps terry and birddog are accounts # owned by the same person. # Access can be arranged between them # with no password. # terry:birddog:NOPASS birddog:terry:NOPASS #" +msgstr "# Exemplu de fișier /etc/suauth # # Câteva nume de utilizator privilegiate pot face # su la root cu propria lor parolă. # root:chris,birddog:OWNPASS # # Oricine altcineva nu poate face su la root decât dacă este în # grupul wheel. Acesta este modul în care BSD face lucrurile. # root:ALL EXCEPT GROUP wheel:DENY # # Poate că terry și birddog sunt conturi # deținute de aceeași persoană. # Accesul poate fi aranjat între ei # fără parolă. # terry:birddog:NOPASS birddog:terry:NOPASS #" #. (itstool) path: refsect1/para #: suauth.5.xml.out:180 -msgid "" -"There could be plenty lurking. The file parser is particularly unforgiving " -"about syntax errors, expecting no spurious whitespace (apart from beginning " -"and end of lines), and a specific token delimiting different things." -msgstr "" -"Se pot ascunde multe. Analizatorul de fișiere este deosebit de neiertător în " -"ceea ce privește erorile de sintaxă, neașteptând niciun spațiu alb fals (în " -"afară de începutul și sfârșitul liniilor) și un simbol specific care " -"delimitează lucruri diferite." +msgid "There could be plenty lurking. The file parser is particularly unforgiving about syntax errors, expecting no spurious whitespace (apart from beginning and end of lines), and a specific token delimiting different things." +msgstr "Se pot ascunde multe. Analizatorul de fișiere este deosebit de neiertător în ceea ce privește erorile de sintaxă, neașteptând niciun spațiu alb fals (în afară de începutul și sfârșitul liniilor) și un simbol specific care delimitează lucruri diferite." #. (itstool) path: citerefentry/refentrytitle #: suauth.5.xml.out:192 @@ -9069,19 +6896,13 @@ msgstr "syslogd" #. (itstool) path: refsect1/para #: suauth.5.xml.out:190 -msgid "" -"An error parsing the file is reported using <_:citerefentry-1/> as level ERR " -"on facility AUTH." -msgstr "" -"O eroare de analiză a fișierului este raportată folosind <_:citerefentry-1/> " -"ca nivel ERR al facilității AUTH." +msgid "An error parsing the file is reported using <_:citerefentry-1/> as level ERR on facility AUTH." +msgstr "O eroare de analiză a fișierului este raportată folosind <_:citerefentry-1/> ca nivel ERR al facilității AUTH." #. (itstool) path: refnamediv/refpurpose #: useradd.8.xml.out:60 msgid "create a new user or update default new user information" -msgstr "" -"creează un utilizator nou sau actualizează informațiile implicite ale unui " -"utilizator nou" +msgstr "creează un utilizator nou sau actualizează informațiile implicite ale unui utilizator nou" #. (itstool) path: cmdsynopsis/arg #. (itstool) path: para/option @@ -9093,28 +6914,13 @@ msgstr "-D" #. (itstool) path: refsect1/para #: useradd.8.xml.out:85 -msgid "" -"When invoked without the <_:option-1/> option, the <_:command-2/> command " -"creates a new user account using the values specified on the command line " -"plus the default values from the system. Depending on command line options, " -"the <_:command-3/> command will update system files and may also create the " -"new user's home directory and copy initial files." -msgstr "" -"Atunci când este invocată fără opțiunea „<_:option-1/>”, comanda <_:" -"command-2/> creează un nou cont de utilizator folosind valorile specificate " -"în linia de comandă plus valorile implicite din sistem. În funcție de " -"opțiunile din linia de comandă, comanda <_:command-3/> va actualiza " -"fișierele de sistem și poate, de asemenea, să creeze directorul personal al " -"noului utilizator și să copieze fișierele inițiale." +msgid "When invoked without the <_:option-1/> option, the <_:command-2/> command creates a new user account using the values specified on the command line plus the default values from the system. Depending on command line options, the <_:command-3/> command will update system files and may also create the new user's home directory and copy initial files." +msgstr "Atunci când este invocată fără opțiunea „<_:option-1/>”, comanda <_:command-2/> creează un nou cont de utilizator folosind valorile specificate în linia de comandă plus valorile implicite din sistem. În funcție de opțiunile din linia de comandă, comanda <_:command-3/> va actualiza fișierele de sistem și poate, de asemenea, să creeze directorul personal al noului utilizator și să copieze fișierele inițiale." #. (itstool) path: refsect1/para #: useradd.8.xml.out:94 -msgid "" -"By default, a group will also be created for the new user (see <_:option-1/" -">, <_:option-2/>, <_:option-3/>, and <_:option-4/>)." -msgstr "" -"În mod implicit, va fi creat și un grup pentru noul utilizator (consultați " -"„<_:option-1/>”, „<_:option-2/>”, „<_:option-3/>” și „<_:option-4/>”)." +msgid "By default, a group will also be created for the new user (see <_:option-1/>, <_:option-2/>, <_:option-3/>, and <_:option-4/>)." +msgstr "În mod implicit, va fi creat și un grup pentru noul utilizator (consultați „<_:option-1/>”, „<_:option-2/>”, „<_:option-3/>” și „<_:option-4/>”)." #. (itstool) path: term/option #: useradd.8.xml.out:118 useradd.8.xml.out:612 @@ -9137,14 +6943,8 @@ msgstr "DIR_PERSONAL" #. (itstool) path: listitem/para #: useradd.8.xml.out:121 -msgid "" -"The default base directory for the system if <_:option-1/> <_:replaceable-2/" -"> is not specified. <_:replaceable-3/> is concatenated with the account name " -"to define the home directory." -msgstr "" -"Directorul de bază implicit pentru sistem dacă „<_:option-1/>” <_:" -"replaceable-2/> nu este specificat. <_:replaceable-3/> este concatenat cu " -"numele contului pentru a defini directorul personal." +msgid "The default base directory for the system if <_:option-1/> <_:replaceable-2/> is not specified. <_:replaceable-3/> is concatenated with the account name to define the home directory." +msgstr "Directorul de bază implicit pentru sistem dacă „<_:option-1/>” <_:replaceable-2/> nu este specificat. <_:replaceable-3/> este concatenat cu numele contului pentru a defini directorul personal." #. (itstool) path: para/option #: useradd.8.xml.out:131 useradd.8.xml.out:623 @@ -9169,14 +6969,8 @@ msgstr "/home" #. (itstool) path: listitem/para #: useradd.8.xml.out:128 -msgid "" -"If this option is not specified, <_:command-1/> will use the base directory " -"specified by the <_:option-2/> variable in <_:filename-3/>, or <_:filename-4/" -"> by default." -msgstr "" -"Dacă această opțiune nu este specificată, <_:command-1/> va utiliza " -"directorul de bază specificat de variabila „<_:option-2/>” în <_:filename-3/" -">, sau <_:filename-4/> în mod implicit." +msgid "If this option is not specified, <_:command-1/> will use the base directory specified by the <_:option-2/> variable in <_:filename-3/>, or <_:filename-4/> by default." +msgstr "Dacă această opțiune nu este specificată, <_:command-1/> va utiliza directorul de bază specificat de variabila „<_:option-2/>” în <_:filename-3/>, sau <_:filename-4/> în mod implicit." #. (itstool) path: term/option #: useradd.8.xml.out:139 usermod.8.xml.out:99 @@ -9190,12 +6984,8 @@ msgstr "COMENTARIU" #. (itstool) path: listitem/para #: useradd.8.xml.out:142 -msgid "" -"Any text string. It is generally a short description of the account, and is " -"currently used as the field for the user's full name." -msgstr "" -"Orice șir de text. În general, este o scurtă descriere a contului și este " -"utilizat în prezent ca câmp pentru numele complet al utilizatorului." +msgid "Any text string. It is generally a short description of the account, and is currently used as the field for the user's full name." +msgstr "Orice șir de text. În general, este o scurtă descriere a contului și este utilizat în prezent ca câmp pentru numele complet al utilizatorului." #. (itstool) path: term/option #: useradd.8.xml.out:151 @@ -9204,19 +6994,8 @@ msgstr "--home-dir" #. (itstool) path: listitem/para #: useradd.8.xml.out:154 -msgid "" -"The new user will be created using <_:replaceable-1/> as the value for the " -"user's login directory. The default is to append the <_:replaceable-2/> name " -"to <_:replaceable-3/> and use that as the login directory name. If the " -"directory <_:replaceable-4/> does not exist, then it will be created unless " -"the <_:option-5/> option is specified." -msgstr "" -"Noul utilizator va fi creat folosind <_:replaceable-1/> ca valoare pentru " -"directorul de conectare al utilizatorului. Valoarea implicită este adăugarea " -"numelui <_:replaceable-2/> la <_:replaceable-3/> și utilizarea acestuia ca " -"nume al directorului de conectare. Dacă directorul <_:replaceable-4/> nu " -"există, atunci acesta va fi creat, cu excepția cazului în care este " -"specificată opțiunea „<_:option-5/>”." +msgid "The new user will be created using <_:replaceable-1/> as the value for the user's login directory. The default is to append the <_:replaceable-2/> name to <_:replaceable-3/> and use that as the login directory name. If the directory <_:replaceable-4/> does not exist, then it will be created unless the <_:option-5/> option is specified." +msgstr "Noul utilizator va fi creat folosind <_:replaceable-1/> ca valoare pentru directorul de conectare al utilizatorului. Valoarea implicită este adăugarea numelui <_:replaceable-2/> la <_:replaceable-3/> și utilizarea acestuia ca nume al directorului de conectare. Dacă directorul <_:replaceable-4/> nu există, atunci acesta va fi creat, cu excepția cazului în care este specificată opțiunea „<_:option-5/>”." #. (itstool) path: term/option #: useradd.8.xml.out:169 @@ -9235,12 +7014,8 @@ msgstr "AAAA-LL-ZZ" #. (itstool) path: listitem/para #: useradd.8.xml.out:182 -msgid "" -"The date on which the user account will be disabled. The date is specified " -"in the format <_:emphasis-1/>." -msgstr "" -"Data la care contul de utilizator va fi dezactivat. Data este specificată în " -"formatul <_:emphasis-1/>." +msgid "The date on which the user account will be disabled. The date is specified in the format <_:emphasis-1/>." +msgstr "Data la care contul de utilizator va fi dezactivat. Data este specificată în formatul <_:emphasis-1/>." #. (itstool) path: para/option #: useradd.8.xml.out:188 useradd.8.xml.out:635 usermod.8.xml.out:418 @@ -9249,44 +7024,23 @@ msgstr "EXPIRĂ" #. (itstool) path: listitem/para #: useradd.8.xml.out:186 -msgid "" -"If not specified, <_:command-1/> will use the default expiry date specified " -"by the <_:option-2/> variable in <_:filename-3/>, or an empty string (no " -"expiry) by default." -msgstr "" -"Dacă nu este specificată, <_:command-1/> va utiliza data de expirare " -"implicită specificată de variabila „<_:option-2/>” din <_:filename-3/> sau " -"un șir gol (nicio expirare) în mod implicit." +msgid "If not specified, <_:command-1/> will use the default expiry date specified by the <_:option-2/> variable in <_:filename-3/>, or an empty string (no expiry) by default." +msgstr "Dacă nu este specificată, <_:command-1/> va utiliza data de expirare implicită specificată de variabila „<_:option-2/>” din <_:filename-3/> sau un șir gol (nicio expirare) în mod implicit." #. (itstool) path: listitem/para #: useradd.8.xml.out:199 -msgid "" -"defines the number of days after the password exceeded its maximum age where " -"the user is expected to replace this password. The value is stored in the " -"shadow password file. An input of 0 will disable an expired password with no " -"delay. An input of -1 will blank the respective field in the shadow password " -"file. See <_:citerefentry-1/>for more information." -msgstr "" -"definește numărul de zile de la depășirea vârstei maxime a parolei în care " -"se așteaptă ca utilizatorul să înlocuiască această parolă. Valoarea este " -"stocată în fișierul de parole „shadow”. O intrare de 0 va dezactiva o parolă " -"expirată fără întârziere. O intrare de -1 va goli câmpul respectiv din " -"fișierul de parole „shadow”. Consultați <_:citerefentry-1/> pentru mai multe " -"informații." +msgid "defines the number of days after the password exceeded its maximum age where the user is expected to replace this password. The value is stored in the shadow password file. An input of 0 will disable an expired password with no delay. An input of -1 will blank the respective field in the shadow password file. See <_:citerefentry-1/>for more information." +msgstr "definește numărul de zile de la depășirea vârstei maxime a parolei în care se așteaptă ca utilizatorul să înlocuiască această parolă. Valoarea este stocată în fișierul de parole „shadow”. O intrare de 0 va dezactiva o parolă expirată fără întârziere. O intrare de -1 va goli câmpul respectiv din fișierul de parole „shadow”. Consultați <_:citerefentry-1/> pentru mai multe informații." #. (itstool) path: listitem/para #: useradd.8.xml.out:208 -msgid "" -"If not specified, <_:command-1/> will use the default inactivity period " -"specified by the <_:option-2/> variable in <_:filename-3/>, or -1 by default." -msgstr "" -"Dacă nu este specificată, <_:command-1/> va utiliza perioada de inactivitate " -"implicită specificată de variabila „<_:option-2/>” din <_:filename-3/>, sau " -"implicit -1." +msgid "If not specified, <_:command-1/> will use the default inactivity period specified by the <_:option-2/> variable in <_:filename-3/>, or -1 by default." +msgstr "Dacă nu este specificată, <_:command-1/> va utiliza perioada de inactivitate implicită specificată de variabila „<_:option-2/>” din <_:filename-3/>, sau implicit -1." #. (itstool) path: term/option #. (itstool) path: para/option #: useradd.8.xml.out:218 useradd.8.xml.out:484 +#| msgid "-" msgid "-F" msgstr "-F" @@ -9297,22 +7051,13 @@ msgstr "--add-subids-for-system" #. (itstool) path: listitem/para #: useradd.8.xml.out:221 -msgid "" -"Update <_:filename-1/> and <_:filename-2/> even when creating a system " -"account with <_:option-3/> option." -msgstr "" -"Actualizează <_:filename-1/> și <_:filename-2/> chiar și la crearea unui " -"cont de sistem cu opțiunea „<_:option-3/>”." +msgid "Update <_:filename-1/> and <_:filename-2/> even when creating a system account with <_:option-3/> option." +msgstr "Actualizează <_:filename-1/> și <_:filename-2/> chiar și la crearea unui cont de sistem cu opțiunea „<_:option-3/>”." #. (itstool) path: listitem/para #: useradd.8.xml.out:233 -msgid "" -"The name or the number of the user's primary group. The group name must " -"exist. A group number must refer to an already existing group." -msgstr "" -"Numele sau numărul grupului primar al utilizatorului. Numele grupului " -"trebuie să existe. Un număr de grup trebuie să se refere la un grup deja " -"existent." +msgid "The name or the number of the user's primary group. The group name must exist. A group number must refer to an already existing group." +msgstr "Numele sau numărul grupului primar al utilizatorului. Numele grupului trebuie să existe. Un număr de grup trebuie să se refere la un grup deja existent." #. (itstool) path: para/option #: useradd.8.xml.out:243 @@ -9326,29 +7071,14 @@ msgstr "-N/--no-user-group" #. (itstool) path: listitem/para #: useradd.8.xml.out:238 -msgid "" -"If not specified, the behavior of <_:command-1/> will depend on the <_:" -"option-2/> variable in <_:filename-3/>. If this variable is set to <_:" -"replaceable-4/> (or <_:option-5/> is specified on the command line), a group " -"will be created for the user, with the same name as her loginname. If the " -"variable is set to <_:replaceable-6/> (or <_:option-7/> is specified on the " -"command line), useradd will set the primary group of the new user to the " -"value specified by the <_:option-8/> variable in <_:filename-9/>, or 1000 by " -"default." -msgstr "" -"Dacă nu este specificată, comportamentul <_:command-1/> va depinde de " -"variabila „<_:option-2/>” din <_:filename-3/>. Dacă această variabilă este " -"definită la <_:replaceable-4/> (sau „<_:option-5/>” este specificată în " -"linia de comandă), se va crea un grup pentru utilizator, cu același nume ca " -"numele său de utilizator. Dacă variabila este definită la <_:replaceable-6/> " -"(sau „<_:option-7/>” este specificată în linia de comandă), «useradd» va " -"defini grupul primar al noului utilizator la valoarea specificată de " -"variabila „<_:option-8/>” din <_:filename-9/>, sau 1000 implicit." +msgid "If not specified, the behavior of <_:command-1/> will depend on the <_:option-2/> variable in <_:filename-3/>. If this variable is set to <_:replaceable-4/> (or <_:option-5/> is specified on the command line), a group will be created for the user, with the same name as her loginname. If the variable is set to <_:replaceable-6/> (or <_:option-7/> is specified on the command line), useradd will set the primary group of the new user to the value specified by the <_:option-8/> variable in <_:filename-9/>, or 1000 by default." +msgstr "Dacă nu este specificată, comportamentul <_:command-1/> va depinde de variabila „<_:option-2/>” din <_:filename-3/>. Dacă această variabilă este definită la <_:replaceable-4/> (sau „<_:option-5/>” este specificată în linia de comandă), se va crea un grup pentru utilizator, cu același nume ca numele său de utilizator. Dacă variabila este definită la <_:replaceable-6/> (sau „<_:option-7/>” este specificată în linia de comandă), «useradd» va defini grupul primar al noului utilizator la valoarea specificată de variabila „<_:option-8/>” din <_:filename-9/>, sau 1000 implicit." #. (itstool) path: term/option #. (itstool) path: para/option #: useradd.8.xml.out:257 usermod.8.xml.out:83 usermod.8.xml.out:199 #: usermod.8.xml.out:322 +#| msgid "-" msgid "-G" msgstr "-G" @@ -9374,12 +7104,8 @@ msgstr ",GRUPN" #. (itstool) path: varlistentry/term #: useradd.8.xml.out:256 usermod.8.xml.out:198 -msgid "" -"<_:option-1/>, <_:option-2/> <_:replaceable-3/>[<_:emphasis-4/>[<_:" -"emphasis-5/>]]]" -msgstr "" -"„<_:option-1/>”, „<_:option-2/>” <_:replaceable-3/>[<_:emphasis-4/>[<_:" -"emphasis-5/>]]]" +msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>[<_:emphasis-4/>[<_:emphasis-5/>]]]" +msgstr "„<_:option-1/>”, „<_:option-2/>” <_:replaceable-3/>[<_:emphasis-4/>[<_:emphasis-5/>]]]" #. (itstool) path: para/option #: useradd.8.xml.out:267 @@ -9388,22 +7114,8 @@ msgstr "GROUPS" #. (itstool) path: listitem/para #: useradd.8.xml.out:260 -msgid "" -"A list of supplementary groups which the user is also a member of. Each " -"group is separated from the next by a comma, with no intervening whitespace. " -"The groups are subject to the same restrictions as the group given with the " -"<_:option-1/> option. The default is for the user to belong only to the " -"initial group. In addition to passing in the -G flag, you can add the option " -"<_:option-2/> to the file <_:filename-3/> which in turn will add all users " -"to those supplementary groups." -msgstr "" -"O listă de grupuri suplimentare din care face parte și utilizatorul. Fiecare " -"grup este separat de următorul de o virgulă, fără spațiu alb intermediar. " -"Grupurile sunt supuse acelorași restricții ca și grupul dat cu opțiunea „<_:" -"option-1/>”. În mod implicit, utilizatorul trebuie să aparțină numai " -"grupului inițial. În plus față de trecerea opțiunii „-G”, puteți adăuga " -"opțiunea „<_:option-2/>” la fișierul <_:filename-3/> care, la rândul său, va " -"adăuga toți utilizatorii la aceste grupuri suplimentare." +msgid "A list of supplementary groups which the user is also a member of. Each group is separated from the next by a comma, with no intervening whitespace. The groups are subject to the same restrictions as the group given with the <_:option-1/> option. The default is for the user to belong only to the initial group. In addition to passing in the -G flag, you can add the option <_:option-2/> to the file <_:filename-3/> which in turn will add all users to those supplementary groups." +msgstr "O listă de grupuri suplimentare din care face parte și utilizatorul. Fiecare grup este separat de următorul de o virgulă, fără spațiu alb intermediar. Grupurile sunt supuse acelorași restricții ca și grupul dat cu opțiunea „<_:option-1/>”. În mod implicit, utilizatorul trebuie să aparțină numai grupului inițial. În plus față de trecerea opțiunii „-G”, puteți adăuga opțiunea „<_:option-2/>” la fișierul <_:filename-3/> care, la rândul său, va adăuga toți utilizatorii la aceste grupuri suplimentare." #. (itstool) path: term/option #: useradd.8.xml.out:280 @@ -9417,14 +7129,8 @@ msgstr "DIR_SKEL" #. (itstool) path: listitem/para #: useradd.8.xml.out:283 -msgid "" -"The skeleton directory, which contains files and directories to be copied in " -"the user's home directory, when the home directory is created by <_:" -"command-1/>." -msgstr "" -"Directorul schelet, care conține fișiere și directoare ce urmează a fi " -"copiate în directorul personal al utilizatorului, atunci când directorul " -"personal este creat prin <_:command-1/>." +msgid "The skeleton directory, which contains files and directories to be copied in the user's home directory, when the home directory is created by <_:command-1/>." +msgstr "Directorul schelet, care conține fișiere și directoare ce urmează a fi copiate în directorul personal al utilizatorului, atunci când directorul personal este creat prin <_:command-1/>." #. (itstool) path: para/option #. (itstool) path: term/option @@ -9434,12 +7140,8 @@ msgstr "--create-home" #. (itstool) path: listitem/para #: useradd.8.xml.out:288 useradd.8.xml.out:592 usermod.8.xml.out:524 -msgid "" -"This option is only valid if the <_:option-1/> (or <_:option-2/>) option is " -"specified." -msgstr "" -"This option is only valid if the „<_:option-1/>” (or „<_:option-2/>”) option " -"is specified." +msgid "This option is only valid if the <_:option-1/> (or <_:option-2/>) option is specified." +msgstr "This option is only valid if the „<_:option-1/>” (or „<_:option-2/>”) option is specified." #. (itstool) path: para/option #: useradd.8.xml.out:294 @@ -9448,17 +7150,14 @@ msgstr "SKEL" #. (itstool) path: para/filename #: useradd.8.xml.out:296 +#| msgid "/etc/skel/" msgid "/etc/skel" msgstr "/etc/skel" #. (itstool) path: listitem/para #: useradd.8.xml.out:292 -msgid "" -"If this option is not set, the skeleton directory is defined by the <_:" -"option-1/> variable in <_:filename-2/> or, by default, <_:filename-3/>." -msgstr "" -"Dacă această opțiune nu este activată, directorul schelet este definit de " -"variabila „<_:option-1/>” în <_:filename-2/> sau, implicit, <_:filename-3/>." +msgid "If this option is not set, the skeleton directory is defined by the <_:option-1/> variable in <_:filename-2/> or, by default, <_:filename-3/>." +msgstr "Dacă această opțiune nu este activată, directorul schelet este definit de variabila „<_:option-1/>” în <_:filename-2/> sau, implicit, <_:filename-3/>." #. (itstool) path: listitem/para #: useradd.8.xml.out:298 @@ -9472,26 +7171,13 @@ msgstr "UMASK" #. (itstool) path: listitem/para #: useradd.8.xml.out:308 -msgid "" -"Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:" -"option-4/>, <_:option-5/> and others)." -msgstr "" -"Suprascrie valorile implicite <_:filename-1/> („<_:option-2/>”, „<_:option-3/" -">”, „<_:option-4/>”, „<_:option-5/>” și altele)." +msgid "Overrides <_:filename-1/> defaults (<_:option-2/>, <_:option-3/>, <_:option-4/>, <_:option-5/> and others)." +msgstr "Suprascrie valorile implicite <_:filename-1/> („<_:option-2/>”, „<_:option-3/>”, „<_:option-4/>”, „<_:option-5/>” și altele)." #. (itstool) path: listitem/para #: useradd.8.xml.out:314 -msgid "" -"Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used " -"when creating an account to turn off password aging. Multiple <_:option-4/> " -"options can be specified, e.g.: <_:option-5/> <_:replaceable-6/> =<_:" -"replaceable-7/> <_:option-8/> <_:replaceable-9/>=<_:replaceable-10/>" -msgstr "" -"Exemplu: „<_:option-1/>” <_:replaceable-2/>=<_:replaceable-3/> poate fi " -"utilizată la crearea unui cont pentru a dezactiva expirarea parolei. Pot fi " -"specificate mai multe opțiuni „<_:option-4/>”, de ex: „<_:option-5/>” <_:" -"replaceable-6/> =<_:replaceable-7/> „<_:option-8/>” <_:replaceable-9/>=<_:" -"replaceable-10/>" +msgid "Example: <_:option-1/> <_:replaceable-2/>=<_:replaceable-3/> can be used when creating an account to turn off password aging. Multiple <_:option-4/> options can be specified, e.g.: <_:option-5/> <_:replaceable-6/> =<_:replaceable-7/> <_:option-8/> <_:replaceable-9/>=<_:replaceable-10/>" +msgstr "Exemplu: „<_:option-1/>” <_:replaceable-2/>=<_:replaceable-3/> poate fi utilizată la crearea unui cont pentru a dezactiva expirarea parolei. Pot fi specificate mai multe opțiuni „<_:option-4/>”, de ex: „<_:option-5/>” <_:replaceable-6/> =<_:replaceable-7/> „<_:option-8/>” <_:replaceable-9/>=<_:replaceable-10/>" #. (itstool) path: term/option #: useradd.8.xml.out:332 @@ -9505,13 +7191,8 @@ msgstr "Nu adaugă utilizatorul la bazele de date „lastlog” și „faillog #. (itstool) path: listitem/para #: useradd.8.xml.out:337 -msgid "" -"By default, the user's entries in the lastlog and faillog databases are " -"reset to avoid reusing the entry from a previously deleted user." -msgstr "" -"În mod implicit, intrările utilizatorului în bazele de date „lastlog” și " -"„faillog” sunt reinițializate pentru a evita reutilizarea intrării unui " -"utilizator șters anterior." +msgid "By default, the user's entries in the lastlog and faillog databases are reset to avoid reusing the entry from a previously deleted user." +msgstr "În mod implicit, intrările utilizatorului în bazele de date „lastlog” și „faillog” sunt reinițializate pentru a evita reutilizarea intrării unui utilizator șters anterior." #. (itstool) path: para/option #: useradd.8.xml.out:344 @@ -9520,26 +7201,13 @@ msgstr "LOG_INIT" #. (itstool) path: listitem/para #: useradd.8.xml.out:342 -msgid "" -"If this option is not specified, <_:command-1/> will also consult the " -"variable <_:option-2/> in the <_:filename-3/> if set to no the user will not " -"be added to the lastlog and faillog databases." -msgstr "" -"Dacă această opțiune nu este specificată, <_:command-1/> va consulta, de " -"asemenea, variabila „<_:option-2/>” din <_:filename-3/> dacă este definită " -"la nu (no), utilizatorul nu va fi adăugat la bazele de date „lastlog” și " -"„faillog”." +msgid "If this option is not specified, <_:command-1/> will also consult the variable <_:option-2/> in the <_:filename-3/> if set to no the user will not be added to the lastlog and faillog databases." +msgstr "Dacă această opțiune nu este specificată, <_:command-1/> va consulta, de asemenea, variabila „<_:option-2/>” din <_:filename-3/> dacă este definită la nu (no), utilizatorul nu va fi adăugat la bazele de date „lastlog” și „faillog”." #. (itstool) path: listitem/para #: useradd.8.xml.out:355 -msgid "" -"Create the user's home directory if it does not exist. The files and " -"directories contained in the skeleton directory (which can be defined with " -"the <_:option-1/> option) will be copied to the home directory." -msgstr "" -"Creează directorul personal al utilizatorului dacă acesta nu există. " -"Fișierele și directoarele conținute în directorul schelet (care poate fi " -"definit cu opțiunea „<_:option-1/>”) vor fi copiate în directorul personal." +msgid "Create the user's home directory if it does not exist. The files and directories contained in the skeleton directory (which can be defined with the <_:option-1/> option) will be copied to the home directory." +msgstr "Creează directorul personal al utilizatorului dacă acesta nu există. Fișierele și directoarele conținute în directorul schelet (care poate fi definit cu opțiunea „<_:option-1/>”) vor fi copiate în directorul personal." #. (itstool) path: para/option #: useradd.8.xml.out:363 useradd.8.xml.out:381 useradd.8.xml.out:477 @@ -9548,24 +7216,13 @@ msgstr "CREATE_HOME" #. (itstool) path: listitem/para #: useradd.8.xml.out:361 -msgid "" -"By default, if this option is not specified and <_:option-1/> is not " -"enabled, no home directories are created." -msgstr "" -"În mod implicit, dacă această opțiune nu este specificată și „<_:option-1/>” " -"nu este activată, nu sunt create directoare personale." +msgid "By default, if this option is not specified and <_:option-1/> is not enabled, no home directories are created." +msgstr "În mod implicit, dacă această opțiune nu este specificată și „<_:option-1/>” nu este activată, nu sunt create directoare personale." #. (itstool) path: listitem/para #: useradd.8.xml.out:366 -msgid "" -"The directory where the user's home directory is created must exist and have " -"proper SELinux context and permissions. Otherwise the user's home directory " -"cannot be created or accessed." -msgstr "" -"Directorul în care este creat directorul personal al utilizatorului trebuie " -"să existe și să aibă contextul și permisiunile SELinux corespunzătoare. În " -"caz contrar, directorul personal al utilizatorului nu poate fi creat sau " -"accesat." +msgid "The directory where the user's home directory is created must exist and have proper SELinux context and permissions. Otherwise the user's home directory cannot be created or accessed." +msgstr "Directorul în care este creat directorul personal al utilizatorului trebuie să existe și să aibă contextul și permisiunile SELinux corespunzătoare. În caz contrar, directorul personal al utilizatorului nu poate fi creat sau accesat." #. (itstool) path: term/option #: useradd.8.xml.out:375 @@ -9574,13 +7231,8 @@ msgstr "--no-create-home" #. (itstool) path: listitem/para #: useradd.8.xml.out:378 -msgid "" -"Do not create the user's home directory, even if the system wide setting " -"from <_:filename-1/> (<_:option-2/>) is set to <_:replaceable-3/>." -msgstr "" -"Nu creează directorul personal al utilizatorului, chiar dacă opțiunea la " -"nivel de sistem de la <_:filename-1/> („<_:option-2/>”) este definită la <_:" -"replaceable-3/>." +msgid "Do not create the user's home directory, even if the system wide setting from <_:filename-1/> (<_:option-2/>) is set to <_:replaceable-3/>." +msgstr "Nu creează directorul personal al utilizatorului, chiar dacă opțiunea la nivel de sistem de la <_:filename-1/> („<_:option-2/>”) este definită la <_:replaceable-3/>." #. (itstool) path: term/option #: useradd.8.xml.out:388 @@ -9589,14 +7241,8 @@ msgstr "--no-user-group" #. (itstool) path: listitem/para #: useradd.8.xml.out:391 -msgid "" -"Do not create a group with the same name as the user, but add the user to " -"the group specified by the <_:option-1/> option or by the <_:option-2/> " -"variable in <_:filename-3/>." -msgstr "" -"Nu creează un grup cu același nume ca și utilizatorul, ci adaugă " -"utilizatorul la grupul specificat de opțiunea „<_:option-1/>” sau de " -"variabila „<_:option-2/>” în <_:filename-3/>." +msgid "Do not create a group with the same name as the user, but add the user to the group specified by the <_:option-1/> option or by the <_:option-2/> variable in <_:filename-3/>." +msgstr "Nu creează un grup cu același nume ca și utilizatorul, ci adaugă utilizatorul la grupul specificat de opțiunea „<_:option-1/>” sau de variabila „<_:option-2/>” în <_:filename-3/>." #. (itstool) path: listitem/para #: useradd.8.xml.out:410 @@ -9605,91 +7251,38 @@ msgstr "permite crearea unui cont cu un UID deja existent." #. (itstool) path: listitem/para #: useradd.8.xml.out:414 usermod.8.xml.out:277 -msgid "" -"This option is only valid in combination with the <_:option-1/> option. As a " -"user identity serves as key to map between users on one hand and " -"permissions, file ownerships and other aspects that determine the system's " -"behavior on the other hand, more than one login name will access the account " -"of the given UID." -msgstr "" -"Această opțiune este valabilă numai în combinație cu opțiunea „<_:option-1/" -">”. Deoarece o identitate de utilizator servește drept cheie pentru " -"corespondența dintre utilizatori, pe de o parte, și permisiuni, proprietatea " -"asupra fișierelor și alte aspecte care determină comportamentul sistemului, " -"pe de altă parte, mai multe nume de utilizator vor accesa contul UID-ului " -"dat." +msgid "This option is only valid in combination with the <_:option-1/> option. As a user identity serves as key to map between users on one hand and permissions, file ownerships and other aspects that determine the system's behavior on the other hand, more than one login name will access the account of the given UID." +msgstr "Această opțiune este valabilă numai în combinație cu opțiunea „<_:option-1/>”. Deoarece o identitate de utilizator servește drept cheie pentru corespondența dintre utilizatori, pe de o parte, și permisiuni, proprietatea asupra fișierelor și alte aspecte care determină comportamentul sistemului, pe de altă parte, mai multe nume de utilizator vor accesa contul UID-ului dat." #. (itstool) path: listitem/para #: useradd.8.xml.out:430 -msgid "" -"defines an initial password for the account. PASSWORD is expected to be " -"encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this " -"option allows to create efficiently batches of users." -msgstr "" -"definește o parolă inițială pentru cont. Se așteaptă ca parola de acces să " -"fie criptată, așa cum este returnată de <_:citerefentry-1/>. În cadrul unui " -"script shell, această opțiune permite crearea eficientă a loturilor de " -"utilizatori." +msgid "defines an initial password for the account. PASSWORD is expected to be encrypted, as returned by <_:citerefentry-1/>. Within a shell script, this option allows to create efficiently batches of users." +msgstr "definește o parolă inițială pentru cont. Se așteaptă ca parola de acces să fie criptată, așa cum este returnată de <_:citerefentry-1/>. În cadrul unui script shell, această opțiune permite crearea eficientă a loturilor de utilizatori." #. (itstool) path: listitem/para #: useradd.8.xml.out:437 -msgid "" -"Without this option, the new account will be locked and with no password " -"defined, i.e. a single exclamation mark in the respective field of <_:" -"filename-1/>. This is a state where the user won't be able to access the " -"account or to define a password himself." -msgstr "" -"Fără această opțiune, noul cont va fi blocat și fără parolă definită, adică " -"un singur semn de exclamare în câmpul respectiv din <_:filename-1/>. Aceasta " -"este o stare în care utilizatorul nu va putea să acceseze contul sau să " -"definească singur o parolă." +msgid "Without this option, the new account will be locked and with no password defined, i.e. a single exclamation mark in the respective field of <_:filename-1/>. This is a state where the user won't be able to access the account or to define a password himself." +msgstr "Fără această opțiune, noul cont va fi blocat și fără parolă definită, adică un singur semn de exclamare în câmpul respectiv din <_:filename-1/>. Aceasta este o stare în care utilizatorul nu va putea să acceseze contul sau să definească singur o parolă." #. (itstool) path: listitem/para #: useradd.8.xml.out:445 -msgid "" -"<_:emphasis-1/>Avoid this option on the command line because the password " -"(or encrypted password) will be visible by users listing the processes." -msgstr "" -"<_:emphasis-1/>Evitați această opțiune în linia de comandă deoarece parola " -"(sau parola criptată) va fi vizibilă de către utilizatorii care listează " -"procesele." +msgid "<_:emphasis-1/>Avoid this option on the command line because the password (or encrypted password) will be visible by users listing the processes." +msgstr "<_:emphasis-1/>Evitați această opțiune în linia de comandă deoarece parola (sau parola criptată) va fi vizibilă de către utilizatorii care listează procesele." #. (itstool) path: listitem/para #: useradd.8.xml.out:473 -msgid "" -"Note that <_:command-1/> will not create a home directory for such a user, " -"regardless of the default setting in <_:filename-2/> (<_:option-3/>). You " -"have to specify the <_:option-4/> options if you want a home directory for a " -"system account to be created." -msgstr "" -"Rețineți că <_:command-1/> nu va crea un director personal pentru un astfel " -"de utilizator, indiferent de opțiunea implicită din <_:filename-2/> („<_:" -"option-3/>”). Trebuie să specificați opțiunile „<_:option-4/>” dacă doriți " -"să fie creat un director personal pentru un cont de sistem." +msgid "Note that <_:command-1/> will not create a home directory for such a user, regardless of the default setting in <_:filename-2/> (<_:option-3/>). You have to specify the <_:option-4/> options if you want a home directory for a system account to be created." +msgstr "Rețineți că <_:command-1/> nu va crea un director personal pentru un astfel de utilizator, indiferent de opțiunea implicită din <_:filename-2/> („<_:option-3/>”). Trebuie să specificați opțiunile „<_:option-4/>” dacă doriți să fie creat un director personal pentru un cont de sistem." #. (itstool) path: listitem/para #: useradd.8.xml.out:481 -msgid "" -"Note that this option will not update <_:filename-1/> and <_:filename-2/>. " -"You have to specify the <_:option-3/> options if you want to update the " -"files for a system account to be created." -msgstr "" -"Rețineți că această opțiune nu va actualiza <_:filename-1/> și <_:filename-2/" -">. Trebuie să specificați opțiunile „<_:option-3/>” dacă doriți să " -"actualizați fișierele pentru un cont de sistem care urmează să fie creat." +msgid "Note that this option will not update <_:filename-1/> and <_:filename-2/>. You have to specify the <_:option-3/> options if you want to update the files for a system account to be created." +msgstr "Rețineți că această opțiune nu va actualiza <_:filename-1/> și <_:filename-2/>. Trebuie să specificați opțiunile „<_:option-3/>” dacă doriți să actualizați fișierele pentru un cont de sistem care urmează să fie creat." #. (itstool) path: listitem/para #: useradd.8.xml.out:522 -msgid "" -"sets the path to the user's login shell. Without this option, the system " -"will use the <_:option-1/> variable specified in <_:filename-2/>, or, if " -"that is as well not set, the field for the login shell in <_:filename-3/> " -"remains empty." -msgstr "" -"stabilește ruta către shell-ul de autentificare al utilizatorului. Fără " -"această opțiune, sistemul va utiliza variabila „<_:option-1/>” specificată " -"în <_:filename-2/> sau, dacă nici aceasta nu este definită, câmpul pentru " -"shell-ul de autentificare din <_:filename-3/> rămâne gol." +msgid "sets the path to the user's login shell. Without this option, the system will use the <_:option-1/> variable specified in <_:filename-2/>, or, if that is as well not set, the field for the login shell in <_:filename-3/> remains empty." +msgstr "stabilește ruta către shell-ul de autentificare al utilizatorului. Fără această opțiune, sistemul va utiliza variabila „<_:option-1/>” specificată în <_:filename-2/> sau, dacă nici aceasta nu este definită, câmpul pentru shell-ul de autentificare din <_:filename-3/> rămâne gol." #. (itstool) path: term/option #: useradd.8.xml.out:533 usermod.8.xml.out:369 @@ -9703,17 +7296,8 @@ msgstr "UID" #. (itstool) path: listitem/para #: useradd.8.xml.out:536 -msgid "" -"The numerical value of the user's ID. This value must be unique, unless the " -"<_:option-1/> option is used. The value must be non-negative. The default is " -"to use the smallest ID value greater than or equal to <_:option-2/> and " -"greater than every other user." -msgstr "" -"Valoarea numerică a ID-ului utilizatorului. Această valoare trebuie să fie " -"unică, cu excepția cazului în care se utilizează opțiunea „<_:option-1/>”. " -"Valoarea trebuie să fie ne-negativă. Valoarea implicită este de a utiliza " -"cea mai mică valoare ID mai mare sau egală cu „<_:option-2/>” și mai mare " -"decât orice alt utilizator." +msgid "The numerical value of the user's ID. This value must be unique, unless the <_:option-1/> option is used. The value must be non-negative. The default is to use the smallest ID value greater than or equal to <_:option-2/> and greater than every other user." +msgstr "Valoarea numerică a ID-ului utilizatorului. Această valoare trebuie să fie unică, cu excepția cazului în care se utilizează opțiunea „<_:option-1/>”. Valoarea trebuie să fie ne-negativă. Valoarea implicită este de a utiliza cea mai mică valoare ID mai mare sau egală cu „<_:option-2/>” și mai mare decât orice alt utilizator." #. (itstool) path: term/option #: useradd.8.xml.out:551 @@ -9722,17 +7306,14 @@ msgstr "--user-group" #. (itstool) path: listitem/para #: useradd.8.xml.out:554 -msgid "" -"Create a group with the same name as the user, and add the user to this " -"group." -msgstr "" -"Creează un grup cu același nume ca și utilizatorul și adaugă utilizatorul la " -"acest grup." +msgid "Create a group with the same name as the user, and add the user to this group." +msgstr "Creează un grup cu același nume ca și utilizatorul și adaugă utilizatorul la acest grup." #. (itstool) path: term/option #. (itstool) path: para/option #: useradd.8.xml.out:568 useradd.8.xml.out:593 userdel.8.xml.out:153 #: usermod.8.xml.out:501 usermod.8.xml.out:525 +#| msgid "-" msgid "-Z" msgstr "-Z" @@ -9755,15 +7336,8 @@ msgstr "semanage" #. (itstool) path: listitem/para #: useradd.8.xml.out:571 -msgid "" -"defines the SELinux user for the new account. Without this option, SELinux " -"uses the default user. Note that the shadow system doesn't store the selinux-" -"user, it uses <_:citerefentry-1/> for that." -msgstr "" -"definește utilizatorul SELinux pentru noul cont. Fără această opțiune, " -"SELinux utilizează utilizatorul implicit. Rețineți că sistemul «shadow» nu " -"stochează utilizatorul SELinux, ci utilizează <_:citerefentry-1/> pentru " -"aceasta." +msgid "defines the SELinux user for the new account. Without this option, SELinux uses the default user. Note that the shadow system doesn't store the selinux-user, it uses <_:citerefentry-1/> for that." +msgstr "definește utilizatorul SELinux pentru noul cont. Fără această opțiune, SELinux utilizează utilizatorul implicit. Rețineți că sistemul «shadow» nu stochează utilizatorul SELinux, ci utilizează <_:citerefentry-1/> pentru aceasta." #. (itstool) path: term/option #: useradd.8.xml.out:582 usermod.8.xml.out:515 @@ -9777,15 +7351,8 @@ msgstr "INTERVAL_SELinux" #. (itstool) path: listitem/para #: useradd.8.xml.out:585 -msgid "" -"defines the SELinux MLS range for the new account. Without this option, " -"SELinux uses the default range. Note that the shadow system doesn't store " -"the selinux-range, it uses <_:citerefentry-1/> for that." -msgstr "" -"definește intervalul MLS SELinux pentru noul cont. Fără această opțiune, " -"SELinux utilizează intervalul implicit. Rețineți că sistemul «shadow» nu " -"stochează intervalul SELinux, ci utilizează <_:citerefentry-1/> pentru " -"aceasta." +msgid "defines the SELinux MLS range for the new account. Without this option, SELinux uses the default range. Note that the shadow system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "definește intervalul MLS SELinux pentru noul cont. Fără această opțiune, SELinux utilizează intervalul implicit. Rețineți că sistemul «shadow» nu stochează intervalul SELinux, ci utilizează <_:citerefentry-1/> pentru aceasta." #. (itstool) path: refsect2/title #: useradd.8.xml.out:601 @@ -9794,65 +7361,34 @@ msgstr "Modificarea valorilor implicite" #. (itstool) path: refsect2/para #: useradd.8.xml.out:602 -msgid "" -"When invoked with only the <_:option-1/> option, <_:command-2/> will display " -"the current default values. When invoked with <_:option-3/> plus other " -"options, <_:command-4/> will update the default values for the specified " -"options. Valid default-changing options are:" -msgstr "" -"Atunci când este invocat doar cu opțiunea „<_:option-1/>”, <_:command-2/> va " -"afișa valorile implicite curente. Atunci când este invocat cu „<_:option-3/" -">” plus alte opțiuni, <_:command-4/> va actualiza valorile implicite pentru " -"opțiunile specificate. Opțiunile valide de modificare a valorilor implicite " -"sunt:" +msgid "When invoked with only the <_:option-1/> option, <_:command-2/> will display the current default values. When invoked with <_:option-3/> plus other options, <_:command-4/> will update the default values for the specified options. Valid default-changing options are:" +msgstr "Atunci când este invocat doar cu opțiunea „<_:option-1/>”, <_:command-2/> va afișa valorile implicite curente. Atunci când este invocat cu „<_:option-3/>” plus alte opțiuni, <_:command-4/> va actualiza valorile implicite pentru opțiunile specificate. Opțiunile valide de modificare a valorilor implicite sunt:" #. (itstool) path: listitem/para #: useradd.8.xml.out:615 -msgid "" -"sets the path prefix for a new user's home directory. The user's name will " -"be affixed to the end of <_:replaceable-1/> to form the new user's home " -"directory name, if the <_:option-2/> option is not used when creating a new " -"account." -msgstr "" -"stabilește prefixul rutei pentru directorul personal al unui utilizator nou. " -"Numele utilizatorului va fi atașat la sfârșitul <_:replaceable-1/> pentru a " -"forma numele directorului personal al noului utilizator, dacă opțiunea „<_:" -"option-2/>” nu este utilizată la crearea unui nou cont." +msgid "sets the path prefix for a new user's home directory. The user's name will be affixed to the end of <_:replaceable-1/> to form the new user's home directory name, if the <_:option-2/> option is not used when creating a new account." +msgstr "stabilește prefixul rutei pentru directorul personal al unui utilizator nou. Numele utilizatorului va fi atașat la sfârșitul <_:replaceable-1/> pentru a forma numele directorului personal al noului utilizator, dacă opțiunea „<_:option-2/>” nu este utilizată la crearea unui nou cont." #. (itstool) path: listitem/para #: useradd.8.xml.out:622 useradd.8.xml.out:634 useradd.8.xml.out:651 #: useradd.8.xml.out:667 useradd.8.xml.out:681 msgid "This option sets the <_:option-1/> variable in <_:filename-2/>." -msgstr "" -"Această opțiune definește variabila „<_:option-1/>” în <_:filename-2/>." +msgstr "Această opțiune definește variabila „<_:option-1/>” în <_:filename-2/>." #. (itstool) path: listitem/para #: useradd.8.xml.out:633 msgid "sets the date on which newly created user accounts are disabled." -msgstr "" -"stabilește data la care conturile de utilizator nou create sunt dezactivate." +msgstr "stabilește data la care conturile de utilizator nou create sunt dezactivate." #. (itstool) path: listitem/para #: useradd.8.xml.out:645 -msgid "" -"defines the number of days after the password exceeded its maximum age where " -"the user is expected to replace this password. See <_:citerefentry-1/>for " -"more information." -msgstr "" -"definește numărul de zile după ce parola și-a depășit vârsta maximă în care " -"se așteaptă ca utilizatorul să înlocuiască această parolă. Consultați <_:" -"citerefentry-1/>pentru mai multe informații." +msgid "defines the number of days after the password exceeded its maximum age where the user is expected to replace this password. See <_:citerefentry-1/>for more information." +msgstr "definește numărul de zile după ce parola și-a depășit vârsta maximă în care se așteaptă ca utilizatorul să înlocuiască această parolă. Consultați <_:citerefentry-1/>pentru mai multe informații." #. (itstool) path: listitem/para #: useradd.8.xml.out:662 -msgid "" -"sets the default primary group for newly created users, accepting group " -"names or a numerical group ID. The named group must exist, and the GID must " -"have an existing entry." -msgstr "" -"definește grupul primar implicit pentru utilizatorii nou creați, acceptând " -"nume de grup sau un ID numeric de grup. Grupul numit trebuie să existe, iar " -"GID-ul trebuie să aibă o intrare existentă." +msgid "sets the default primary group for newly created users, accepting group names or a numerical group ID. The named group must exist, and the GID must have an existing entry." +msgstr "definește grupul primar implicit pentru utilizatorii nou creați, acceptând nume de grup sau un ID numeric de grup. Grupul numit trebuie să existe, iar GID-ul trebuie să aibă o intrare existentă." #. (itstool) path: listitem/para #: useradd.8.xml.out:678 @@ -9872,33 +7408,18 @@ msgstr "/etc/skel/" #. (itstool) path: refsect1/para #: useradd.8.xml.out:694 -msgid "" -"The system administrator is responsible for placing the default user files " -"in the <_:filename-1/> directory (or any other skeleton directory specified " -"in <_:filename-2/> or on the command line)." -msgstr "" -"Administratorul de sistem este responsabil pentru plasarea fișierelor " -"implicite pentru utilizator în directorul <_:filename-1/> (sau în orice alt " -"director schelet specificat în <_:filename-2/> sau în linia de comandă)." +msgid "The system administrator is responsible for placing the default user files in the <_:filename-1/> directory (or any other skeleton directory specified in <_:filename-2/> or on the command line)." +msgstr "Administratorul de sistem este responsabil pentru plasarea fișierelor implicite pentru utilizator în directorul <_:filename-1/> (sau în orice alt director schelet specificat în <_:filename-2/> sau în linia de comandă)." #. (itstool) path: refsect1/para #: useradd.8.xml.out:703 -msgid "" -"You may not add a user to a NIS or LDAP group. This must be performed on the " -"corresponding server." -msgstr "" -"Nu puteți adăuga un utilizator la un grup NIS sau LDAP. Această operație " -"trebuie efectuată pe serverul corespunzător." +msgid "You may not add a user to a NIS or LDAP group. This must be performed on the corresponding server." +msgstr "Nu puteți adăuga un utilizator la un grup NIS sau LDAP. Această operație trebuie efectuată pe serverul corespunzător." #. (itstool) path: refsect1/para #: useradd.8.xml.out:708 -msgid "" -"Similarly, if the username already exists in an external user database such " -"as NIS or LDAP, <_:command-1/> will deny the user account creation request." -msgstr "" -"În mod similar, dacă numele de utilizator există deja într-o bază de date de " -"utilizator externă, cum ar fi NIS sau LDAP, <_:command-1/> va refuza " -"solicitarea de creare a contului de utilizator." +msgid "Similarly, if the username already exists in an external user database such as NIS or LDAP, <_:command-1/> will deny the user account creation request." +msgstr "În mod similar, dacă numele de utilizator există deja într-o bază de date de utilizator externă, cum ar fi NIS sau LDAP, <_:command-1/> va refuza solicitarea de creare a contului de utilizator." #. (itstool) path: para/command #: useradd.8.xml.out:722 @@ -9907,21 +7428,9 @@ msgstr "ls" #. (itstool) path: refsect1/para #: useradd.8.xml.out:714 -msgid "" -"Usernames may contain only lower and upper case letters, digits, " -"underscores, or dashes. They can end with a dollar sign. Dashes are not " -"allowed at the beginning of the username. Fully numeric usernames and " -"usernames . or .. are also disallowed. It is not recommended to use " -"usernames beginning with . character as their home directories will be " -"hidden in the <_:command-1/> output." +msgid "Usernames may contain only lower and upper case letters, digits, underscores, or dashes. They can end with a dollar sign. Dashes are not allowed at the beginning of the username. Fully numeric usernames and usernames . or .. are also disallowed. It is not recommended to use usernames beginning with . character as their home directories will be hidden in the <_:command-1/> output." msgstr "" -"Numele de utilizator pot conține numai litere minuscule și majuscule, cifre, " -"liniuțe de subliniere sau liniuțe de unire. Acestea se pot termina cu semnul " -"dolarului. Liniuțele de unire nu sunt permise la începutul numelui de " -"utilizator. De asemenea, numele de utilizator complet numerice și numele de " -"utilizator . sau .. nu sunt permise. Nu se recomandă utilizarea numelor de " -"utilizator care încep cu caracterul . deoarece directoarele lor de origine " -"vor fi ascunse în ieșirea <_:command-1/>.\n" +"Numele de utilizator pot conține numai litere minuscule și majuscule, cifre, liniuțe de subliniere sau liniuțe de unire. Acestea se pot termina cu semnul dolarului. Liniuțele de unire nu sunt permise la începutul numelui de utilizator. De asemenea, numele de utilizator complet numerice și numele de utilizator . sau .. nu sunt permise. Nu se recomandă utilizarea numelor de utilizator care încep cu caracterul . deoarece directoarele lor de origine vor fi ascunse în ieșirea <_:command-1/>.\n" "\n" "Translated with DeepL.com (free version)" @@ -9937,6 +7446,7 @@ msgstr "Valorile implicite pentru crearea contului." #. (itstool) path: term/filename #: useradd.8.xml.out:793 +#| msgid "/etc/default/useradd" msgid "/etc/shadow-maint/useradd-pre.d/*" msgstr "/etc/shadow-maint/useradd-pre.d/*" @@ -9962,29 +7472,20 @@ msgstr "SUBIECT" #. (itstool) path: para/filename #: useradd.8.xml.out:795 +#| msgid "useradd" msgid "useradd-pre.d" msgstr "useradd-pre.d" #. (itstool) path: para/filename #: useradd.8.xml.out:795 +#| msgid "useradd" msgid "useradd-post.d" msgstr "useradd-post.d" #. (itstool) path: listitem/para #: useradd.8.xml.out:795 -msgid "" -"Run-part files to execute during user addition. The environment variable <_:" -"command-1/> will be populated with useradd and <_:command-2/> with the <_:" -"command-3/>. <_:filename-4/> will be executed prior to any user addition. <_:" -"filename-5/> will execute after user addition. If a script exits non-zero " -"then execution will terminate." -msgstr "" -"Fișiere cu părți de execuție care se execută în timpul adăugării " -"utilizatorului. Variabila de mediu <_:command-1/> va fi populată cu useradd " -"și <_:command-2/> cu <_:command-3/>. <_:filename-4/> va fi executat înainte " -"de orice adăugare de utilizatori. <_:filename-5/> se va executa după " -"adăugarea utilizatorului. Dacă un script iese cu o valoare diferită de zero, " -"atunci execuția se va încheia." +msgid "Run-part files to execute during user addition. The environment variable <_:command-1/> will be populated with useradd and <_:command-2/> with the <_:command-3/>. <_:filename-4/> will be executed prior to any user addition. <_:filename-5/> will execute after user addition. If a script exits non-zero then execution will terminate." +msgstr "Fișiere cu părți de execuție care se execută în timpul adăugării utilizatorului. Variabila de mediu <_:command-1/> va fi populată cu useradd și <_:command-2/> cu <_:command-3/>. <_:filename-4/> va fi executat înainte de orice adăugare de utilizatori. <_:filename-5/> se va executa după adăugarea utilizatorului. Dacă un script iese cu o valoare diferită de zero, atunci execuția se va încheia." #. (itstool) path: listitem/para #: useradd.8.xml.out:801 @@ -10023,16 +7524,8 @@ msgstr "nu se poate actualiza asocierea utilizatorilor SELinux" #. (itstool) path: refsect1/para #: useradd.8.xml.out:896 usermod.8.xml.out:620 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:phrase-10/> " -"<_:citerefentry-11/>, <_:citerefentry-12/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:phrase-10/> " -"<_:citerefentry-11/>, <_:citerefentry-12/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:phrase-10/> <_:citerefentry-11/>, <_:citerefentry-12/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:citerefentry-9/>, <_:phrase-10/> <_:citerefentry-11/>, <_:citerefentry-12/>." #. (itstool) path: refnamediv/refpurpose #: userdel.8.xml.out:47 @@ -10041,44 +7534,18 @@ msgstr "șterge un cont de utilizator și fișierele aferente" #. (itstool) path: refsect1/para #: userdel.8.xml.out:61 -msgid "" -"The <_:command-1/> command modifies the system account files, deleting all " -"entries that refer to the user name <_:emphasis-2/>. The named user must " -"exist." -msgstr "" -"Comanda <_:command-1/> modifică fișierele contului de sistem, ștergând toate " -"intrările care se referă la numele de utilizator <_:emphasis-2/>. " -"Utilizatorul numit trebuie să existe." +msgid "The <_:command-1/> command modifies the system account files, deleting all entries that refer to the user name <_:emphasis-2/>. The named user must exist." +msgstr "Comanda <_:command-1/> modifică fișierele contului de sistem, ștergând toate intrările care se referă la numele de utilizator <_:emphasis-2/>. Utilizatorul numit trebuie să existe." #. (itstool) path: listitem/para #: userdel.8.xml.out:79 -msgid "" -"This option forces the removal of the user account, even if the user is " -"still logged in. It also forces <_:command-1/> to remove the user's home " -"directory and mail spool, even if another user uses the same home directory " -"or if the mail spool is not owned by the specified user. If <_:option-2/> is " -"defined to <_:emphasis-3/> in <_:filename-4/> and if a group exists with the " -"same name as the deleted user, then this group will be removed, even if it " -"is still the primary group of another user." -msgstr "" -"Această opțiune forțează eliminarea contului de utilizator, chiar dacă " -"utilizatorul este încă conectat. De asemenea, forțează <_:command-1/> să " -"elimine directorul personal al utilizatorului și colectorul de corespondență " -"(mail spool), chiar dacă un alt utilizator utilizează același director " -"personal sau dacă colectorul de corespondență nu este deținut de " -"utilizatorul specificat. Dacă „<_:option-2/>” este definită la <_:emphasis-3/" -"> în <_:filename-4/> și dacă există un grup cu același nume ca al " -"utilizatorului șters, atunci acest grup va fi eliminat, chiar dacă este încă " -"grupul primar al unui alt utilizator." +msgid "This option forces the removal of the user account, even if the user is still logged in. It also forces <_:command-1/> to remove the user's home directory and mail spool, even if another user uses the same home directory or if the mail spool is not owned by the specified user. If <_:option-2/> is defined to <_:emphasis-3/> in <_:filename-4/> and if a group exists with the same name as the deleted user, then this group will be removed, even if it is still the primary group of another user." +msgstr "Această opțiune forțează eliminarea contului de utilizator, chiar dacă utilizatorul este încă conectat. De asemenea, forțează <_:command-1/> să elimine directorul personal al utilizatorului și colectorul de corespondență (mail spool), chiar dacă un alt utilizator utilizează același director personal sau dacă colectorul de corespondență nu este deținut de utilizatorul specificat. Dacă „<_:option-2/>” este definită la <_:emphasis-3/> în <_:filename-4/> și dacă există un grup cu același nume ca al utilizatorului șters, atunci acest grup va fi eliminat, chiar dacă este încă grupul primar al unui alt utilizator." #. (itstool) path: listitem/para #: userdel.8.xml.out:92 -msgid "" -"<_:emphasis-1/> This option is dangerous and may leave your system in an " -"inconsistent state." -msgstr "" -"<_:emphasis-1/> Această opțiune este periculoasă și vă poate lăsa sistemul " -"într-o stare inconsistentă." +msgid "<_:emphasis-1/> This option is dangerous and may leave your system in an inconsistent state." +msgstr "<_:emphasis-1/> Această opțiune este periculoasă și vă poate lăsa sistemul într-o stare inconsistentă." #. (itstool) path: term/option #: userdel.8.xml.out:106 usermod.8.xml.out:317 @@ -10087,31 +7554,18 @@ msgstr "--remove" #. (itstool) path: listitem/para #: userdel.8.xml.out:109 -msgid "" -"Files in the user's home directory will be removed along with the home " -"directory itself and the user's mail spool. Files located in other file " -"systems will have to be searched for and deleted manually." -msgstr "" -"Fișierele din directorul personal al utilizatorului vor fi eliminate " -"împreună cu directorul personal în sine și colectorul de corespondență al " -"utilizatorului. Fișierele situate în alte sisteme de fișiere vor trebui " -"căutate și șterse manual." +msgid "Files in the user's home directory will be removed along with the home directory itself and the user's mail spool. Files located in other file systems will have to be searched for and deleted manually." +msgstr "Fișierele din directorul personal al utilizatorului vor fi eliminate împreună cu directorul personal în sine și colectorul de corespondență al utilizatorului. Fișierele situate în alte sisteme de fișiere vor trebui căutate și șterse manual." #. (itstool) path: listitem/para #: userdel.8.xml.out:115 -msgid "" -"The mail spool is defined by the <_:option-1/> variable in the <_:filename-2/" -"> file." -msgstr "" -"Colectorul de corespondență este definit de variabila „<_:option-1/>” din " -"fișierul <_:filename-2/>." +msgid "The mail spool is defined by the <_:option-1/> variable in the <_:filename-2/> file." +msgstr "Colectorul de corespondență este definit de variabila „<_:option-1/>” din fișierul <_:filename-2/>." #. (itstool) path: listitem/para #: userdel.8.xml.out:156 msgid "Remove any SELinux user mapping for the user's login." -msgstr "" -"Elimină orice asociere de utilizator SELinux pentru autentificarea " -"utilizatorului." +msgstr "Elimină orice asociere de utilizator SELinux pentru autentificarea utilizatorului." #. (itstool) path: term/filename #: userdel.8.xml.out:209 @@ -10125,29 +7579,20 @@ msgstr "/etc/shadow-maint/userdel-post.d/*" #. (itstool) path: para/filename #: userdel.8.xml.out:211 +#| msgid "userdel" msgid "userdel-pre.d" msgstr "userdel-pre.d" #. (itstool) path: para/filename #: userdel.8.xml.out:211 +#| msgid "userdel" msgid "userdel-post.d" msgstr "userdel-post.d" #. (itstool) path: listitem/para #: userdel.8.xml.out:211 -msgid "" -"Run-part files to execute during user deletion. The environment variable <_:" -"command-1/> will be populated with <_:command-2/> and <_:command-3/> with " -"the username. <_:filename-4/> will be executed prior to any user deletion. " -"<_:filename-5/> will execute after user deletion. If a script exits non-zero " -"then execution will terminate." -msgstr "" -"Fișiere cu părți de execuție pentru a fi executate în timpul ștergerii " -"utilizatorului. Variabila de mediu <_:command-1/> va fi populată cu <_:" -"command-2/> și <_:command-3/> cu numele de utilizator. <_:filename-4/> va fi " -"executat înainte de orice ștergere a utilizatorului. <_:filename-5/> se va " -"executa după ștergerea utilizatorului. Dacă un script iese cu o valoare " -"diferită de zero, atunci execuția se va încheia." +msgid "Run-part files to execute during user deletion. The environment variable <_:command-1/> will be populated with <_:command-2/> and <_:command-3/> with the username. <_:filename-4/> will be executed prior to any user deletion. <_:filename-5/> will execute after user deletion. If a script exits non-zero then execution will terminate." +msgstr "Fișiere cu părți de execuție pentru a fi executate în timpul ștergerii utilizatorului. Variabila de mediu <_:command-1/> va fi populată cu <_:command-2/> și <_:command-3/> cu numele de utilizator. <_:filename-4/> va fi executat înainte de orice ștergere a utilizatorului. <_:filename-5/> se va executa după ștergerea utilizatorului. Dacă un script iese cu o valoare diferită de zero, atunci execuția se va încheia." #. (itstool) path: listitem/para #: userdel.8.xml.out:255 @@ -10166,66 +7611,28 @@ msgstr "nu se poate elimina directorul personal" #. (itstool) path: refsect1/para #: userdel.8.xml.out:282 -msgid "" -"<_:command-1/> will not allow you to remove an account if there are running " -"processes which belong to this account. In that case, you may have to kill " -"those processes or lock the user's password or account and remove the " -"account later. The <_:option-2/> option can force the deletion of this " -"account." -msgstr "" -"<_:command-1/> nu vă va permite să eliminați un cont dacă există procese " -"care rulează și care aparțin acestui cont. În acest caz, este posibil să " -"trebuiască să opriți aceste procese sau să blocați parola sau contul " -"utilizatorului și să eliminați contul ulterior. Opțiunea „<_:option-2/>” " -"poate forța ștergerea acestui cont." +msgid "<_:command-1/> will not allow you to remove an account if there are running processes which belong to this account. In that case, you may have to kill those processes or lock the user's password or account and remove the account later. The <_:option-2/> option can force the deletion of this account." +msgstr "<_:command-1/> nu vă va permite să eliminați un cont dacă există procese care rulează și care aparțin acestui cont. În acest caz, este posibil să trebuiască să opriți aceste procese sau să blocați parola sau contul utilizatorului și să eliminați contul ulterior. Opțiunea „<_:option-2/>” poate forța ștergerea acestui cont." #. (itstool) path: refsect1/para #: userdel.8.xml.out:289 -msgid "" -"You should manually check all file systems to ensure that no files remain " -"owned by this user." -msgstr "" -"Ar trebui să verificați manual toate sistemele de fișiere pentru a vă " -"asigura că niciun fișier nu rămâne deținut de acest utilizator." +msgid "You should manually check all file systems to ensure that no files remain owned by this user." +msgstr "Ar trebui să verificați manual toate sistemele de fișiere pentru a vă asigura că niciun fișier nu rămâne deținut de acest utilizator." #. (itstool) path: refsect1/para #: userdel.8.xml.out:293 -msgid "" -"You may not remove any NIS attributes on a NIS client. This must be " -"performed on the NIS server." -msgstr "" -"Nu puteți elimina niciun atribut NIS de pe un client NIS. Această operație " -"trebuie efectuată pe serverul NIS." +msgid "You may not remove any NIS attributes on a NIS client. This must be performed on the NIS server." +msgstr "Nu puteți elimina niciun atribut NIS de pe un client NIS. Această operație trebuie efectuată pe serverul NIS." #. (itstool) path: refsect1/para #: userdel.8.xml.out:296 -msgid "" -"If <_:option-1/> is defined to <_:emphasis-2/> in <_:filename-3/>, <_:" -"command-4/> will delete the group with the same name as the user. To avoid " -"inconsistencies in the passwd and group databases, <_:command-5/> will check " -"that this group is not used as a primary group for another user, and will " -"just warn without deleting the group otherwise. The <_:option-6/> option can " -"force the deletion of this group." -msgstr "" -"Dacă „<_:option-1/>” este definită la <_:emphasis-2/> în <_:filename-3/>, <_:" -"command-4/> va șterge grupul cu același nume ca al utilizatorului. Pentru a " -"evita inconsecvențele în bazele de date passwd și group, <_:command-5/> va " -"verifica dacă acest grup nu este utilizat ca grup primar pentru un alt " -"utilizator și va avertiza doar fără a șterge grupul în caz contrar. Opțiunea " -"„<_:option-6/>” poate forța ștergerea acestui grup." +msgid "If <_:option-1/> is defined to <_:emphasis-2/> in <_:filename-3/>, <_:command-4/> will delete the group with the same name as the user. To avoid inconsistencies in the passwd and group databases, <_:command-5/> will check that this group is not used as a primary group for another user, and will just warn without deleting the group otherwise. The <_:option-6/> option can force the deletion of this group." +msgstr "Dacă „<_:option-1/>” este definită la <_:emphasis-2/> în <_:filename-3/>, <_:command-4/> va șterge grupul cu același nume ca al utilizatorului. Pentru a evita inconsecvențele în bazele de date passwd și group, <_:command-5/> va verifica dacă acest grup nu este utilizat ca grup primar pentru un alt utilizator și va avertiza doar fără a șterge grupul în caz contrar. Opțiunea „<_:option-6/>” poate forța ștergerea acestui grup." #. (itstool) path: refsect1/para #: userdel.8.xml.out:309 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:phrase-9/> <_:citerefentry-10/>, " -"<_:citerefentry-11/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>, <_:citerefentry-8/>, <_:phrase-9/> <_:citerefentry-10/>, " -"<_:citerefentry-11/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:phrase-9/> <_:citerefentry-10/>, <_:citerefentry-11/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>, <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>, <_:citerefentry-8/>, <_:phrase-9/> <_:citerefentry-10/>, <_:citerefentry-11/>." #. (itstool) path: refnamediv/refpurpose #: usermod.8.xml.out:48 @@ -10239,21 +7646,13 @@ msgstr "Comanda <_:command-1/> modifică fișierele contului de sistem." #. (itstool) path: listitem/para #: usermod.8.xml.out:81 -msgid "" -"Add the user to the supplementary group(s). Use only with the <_:option-1/> " -"option." -msgstr "" -"Adaugă utilizatorul la grupul (grupurile) suplimentar(e). Se utilizează " -"numai cu opțiunea „<_:option-1/>”." +msgid "Add the user to the supplementary group(s). Use only with the <_:option-1/> option." +msgstr "Adaugă utilizatorul la grupul (grupurile) suplimentar(e). Se utilizează numai cu opțiunea „<_:option-1/>”." #. (itstool) path: listitem/para #: usermod.8.xml.out:102 -msgid "" -"update the comment field of the user in <_:filename-1/>, which is normally " -"modified using the <_:citerefentry-2/> utility." -msgstr "" -"actualizează câmpul de comentarii al utilizatorului în <_:filename-1/>, care " -"este modificat în mod normal cu ajutorul instrumentului <_:citerefentry-2/>." +msgid "update the comment field of the user in <_:filename-1/>, which is normally modified using the <_:citerefentry-2/> utility." +msgstr "actualizează câmpul de comentarii al utilizatorului în <_:filename-1/>, care este modificat în mod normal cu ajutorul instrumentului <_:citerefentry-2/>." #. (itstool) path: term/option #. (itstool) path: para/option @@ -10268,92 +7667,43 @@ msgstr "Noul director de conectare al utilizatorului." #. (itstool) path: listitem/para #: usermod.8.xml.out:118 -msgid "" -"If the <_:option-1/> option is given, the contents of the current home " -"directory will be moved to the new home directory, which is created if it " -"does not already exist. If the current home directory does not exist the new " -"home directory will not be created." -msgstr "" -"Dacă este furnizată opțiunea „<_:option-1/>”, conținutul directorului " -"personal curent va fi mutat în noul director personal, care este creat dacă " -"nu există deja. Dacă directorul personal curent nu există, noul director " -"personal nu va fi creat." +msgid "If the <_:option-1/> option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist. If the current home directory does not exist the new home directory will not be created." +msgstr "Dacă este furnizată opțiunea „<_:option-1/>”, conținutul directorului personal curent va fi mutat în noul director personal, care este creat dacă nu există deja. Dacă directorul personal curent nu există, noul director personal nu va fi creat." #. (itstool) path: listitem/para #: usermod.8.xml.out:132 -msgid "" -"The date on which the user account will be disabled. The date is specified " -"in the format <_:emphasis-1/>. Integers as input are interpreted as days " -"after 1970-01-01." -msgstr "" -"Data la care contul de utilizator va fi dezactivat. Data este specificată în " -"formatul <_:emphasis-1/>. Numerele întregi introduse sunt interpretate ca " -"zile după 1970-01-01." +msgid "The date on which the user account will be disabled. The date is specified in the format <_:emphasis-1/>. Integers as input are interpreted as days after 1970-01-01." +msgstr "Data la care contul de utilizator va fi dezactivat. Data este specificată în formatul <_:emphasis-1/>. Numerele întregi introduse sunt interpretate ca zile după 1970-01-01." #. (itstool) path: listitem/para #: usermod.8.xml.out:138 -msgid "" -"An input of -1 or an empty string will blank the account expiration field in " -"the shadow password file. The account will remain available with no date " -"limit." -msgstr "" -"O intrare de -1 sau un șir de caractere gol va goli câmpul de expirare a " -"contului din fișierul de parole „shadow”. Contul va rămâne disponibil fără " -"limită de dată." +msgid "An input of -1 or an empty string will blank the account expiration field in the shadow password file. The account will remain available with no date limit." +msgstr "O intrare de -1 sau un șir de caractere gol va goli câmpul de expirare a contului din fișierul de parole „shadow”. Contul va rămâne disponibil fără limită de dată." #. (itstool) path: listitem/para #: usermod.8.xml.out:143 usermod.8.xml.out:165 -msgid "" -"This option requires a <_:filename-1/> file. A <_:filename-2/> entry will be " -"created if there were none." -msgstr "" -"Această opțiune necesită un fișier <_:filename-1/>. O intrare <_:filename-2/" -"> va fi creată dacă nu există niciuna." +msgid "This option requires a <_:filename-1/> file. A <_:filename-2/> entry will be created if there were none." +msgstr "Această opțiune necesită un fișier <_:filename-1/>. O intrare <_:filename-2/> va fi creată dacă nu există niciuna." #. (itstool) path: listitem/para #: usermod.8.xml.out:155 -msgid "" -"defines the number of days after the password exceeded its maximum age " -"during which the user may still login by immediately replacing the password. " -"This grace period before the account becomes inactive is stored in the " -"shadow password file. An input of 0 will disable an expired password with no " -"delay. An input of -1 will blank the respective field in the shadow password " -"file. See <_:citerefentry-1/> for more information." -msgstr "" -"definește numărul de zile de la depășirea vechimii maxime a parolei în care " -"utilizatorul se mai poate autentifica prin înlocuirea imediată a parolei. " -"Această perioadă de grație înainte ca contul să devină inactiv este stocată " -"în fișierul de parole „shadow”. O intrare de 0 va dezactiva o parolă " -"expirată fără întârziere. O intrare de -1 va șterge câmpul respectiv din " -"fișierul de parole „shadow”. Consultați <_:citerefentry-1/> pentru mai multe " -"informații." +msgid "defines the number of days after the password exceeded its maximum age during which the user may still login by immediately replacing the password. This grace period before the account becomes inactive is stored in the shadow password file. An input of 0 will disable an expired password with no delay. An input of -1 will blank the respective field in the shadow password file. See <_:citerefentry-1/> for more information." +msgstr "definește numărul de zile de la depășirea vechimii maxime a parolei în care utilizatorul se mai poate autentifica prin înlocuirea imediată a parolei. Această perioadă de grație înainte ca contul să devină inactiv este stocată în fișierul de parole „shadow”. O intrare de 0 va dezactiva o parolă expirată fără întârziere. O intrare de -1 va șterge câmpul respectiv din fișierul de parole „shadow”. Consultați <_:citerefentry-1/> pentru mai multe informații." #. (itstool) path: listitem/para #: usermod.8.xml.out:177 -msgid "" -"The name or numerical ID of the user's new primary group. The group must " -"exist." -msgstr "" -"Numele sau ID-ul numeric al noului grup primar al utilizatorului. Grupul " -"trebuie să existe." +msgid "The name or numerical ID of the user's new primary group. The group must exist." +msgstr "Numele sau ID-ul numeric al noului grup primar al utilizatorului. Grupul trebuie să existe." #. (itstool) path: listitem/para #: usermod.8.xml.out:181 -msgid "" -"Any file from the user's home directory owned by the previous primary group " -"of the user will be owned by this new group." -msgstr "" -"Orice fișier din directorul personal al utilizatorului deținut de grupul " -"primar anterior al utilizatorului va fi deținut de acest nou grup." +msgid "Any file from the user's home directory owned by the previous primary group of the user will be owned by this new group." +msgstr "Orice fișier din directorul personal al utilizatorului deținut de grupul primar anterior al utilizatorului va fi deținut de acest nou grup." #. (itstool) path: listitem/para #: usermod.8.xml.out:185 -msgid "" -"The group ownership of files outside of the user's home directory must be " -"fixed manually." -msgstr "" -"Grupul proprietar al fișierelor din afara directorului personal al " -"utilizatorului trebuie să fie stabilit manual." +msgid "The group ownership of files outside of the user's home directory must be fixed manually." +msgstr "Grupul proprietar al fișierelor din afara directorului personal al utilizatorului trebuie să fie stabilit manual." #. (itstool) path: para/filename #: usermod.8.xml.out:193 usermod.8.xml.out:393 @@ -10362,41 +7712,18 @@ msgstr "/" #. (itstool) path: listitem/para #: usermod.8.xml.out:189 -msgid "" -"The change of the group ownership of files inside of the user's home " -"directory is also not done if the home dir owner uid is different from the " -"current or new user id. This is a safety measure for special home " -"directories such as <_:filename-1/>." -msgstr "" -"De asemenea, schimbarea grupului proprietar al fișierelor din directorul " -"personal al utilizatorului nu se face dacă uid-ul proprietarului " -"directorului personal este diferit de id-ul utilizatorului curent sau nou. " -"Aceasta este o măsură de siguranță pentru directoarele personale speciale, " -"cum ar fi <_:filename-1/>." +msgid "The change of the group ownership of files inside of the user's home directory is also not done if the home dir owner uid is different from the current or new user id. This is a safety measure for special home directories such as <_:filename-1/>." +msgstr "De asemenea, schimbarea grupului proprietar al fișierelor din directorul personal al utilizatorului nu se face dacă uid-ul proprietarului directorului personal este diferit de id-ul utilizatorului curent sau nou. Aceasta este o măsură de siguranță pentru directoarele personale speciale, cum ar fi <_:filename-1/>." #. (itstool) path: listitem/para #: usermod.8.xml.out:202 -msgid "" -"A list of supplementary groups which the user is also a member of. Each " -"group is separated from the next by a comma, with no intervening whitespace. " -"The groups must exist." -msgstr "" -"O listă de grupuri suplimentare din care face parte și utilizatorul. Fiecare " -"grup este separat de următorul prin virgulă, fără spații albe intermediare. " -"Grupurile trebuie să existe." +msgid "A list of supplementary groups which the user is also a member of. Each group is separated from the next by a comma, with no intervening whitespace. The groups must exist." +msgstr "O listă de grupuri suplimentare din care face parte și utilizatorul. Fiecare grup este separat de următorul prin virgulă, fără spații albe intermediare. Grupurile trebuie să existe." #. (itstool) path: listitem/para #: usermod.8.xml.out:207 -msgid "" -"If the user is currently a member of a group which is not listed, the user " -"will be removed from the group. This behaviour can be changed via the <_:" -"option-1/> option, which appends the user to the current supplementary group " -"list." -msgstr "" -"Dacă utilizatorul este în prezent membru al unui grup care nu este listat, " -"utilizatorul va fi eliminat din grup. Acest comportament poate fi modificat " -"prin intermediul opțiunii „<_:option-1/>”, care adaugă utilizatorul la lista " -"suplimentară curentă a grupului." +msgid "If the user is currently a member of a group which is not listed, the user will be removed from the group. This behaviour can be changed via the <_:option-1/> option, which appends the user to the current supplementary group list." +msgstr "Dacă utilizatorul este în prezent membru al unui grup care nu este listat, utilizatorul va fi eliminat din grup. Acest comportament poate fi modificat prin intermediul opțiunii „<_:option-1/>”, care adaugă utilizatorul la lista suplimentară curentă a grupului." #. (itstool) path: term/replaceable #. (itstool) path: para/replaceable @@ -10406,42 +7733,25 @@ msgstr "NUME_NOU" #. (itstool) path: listitem/para #: usermod.8.xml.out:220 -msgid "" -"The name of the user will be changed from <_:replaceable-1/> to <_:" -"replaceable-2/>. Nothing else is changed. In particular, the user's home " -"directory or mail spool should probably be renamed manually to reflect the " -"new login name." -msgstr "" -"Numele utilizatorului va fi schimbat de la <_:replaceable-1/> la <_:" -"replaceable-2/>. Nimic altceva nu este schimbat. În special, directorul " -"personal al utilizatorului sau colectorul de corespondență ar trebui " -"probabil redenumit manual pentru a reflecta noul nume de autentificare." +msgid "The name of the user will be changed from <_:replaceable-1/> to <_:replaceable-2/>. Nothing else is changed. In particular, the user's home directory or mail spool should probably be renamed manually to reflect the new login name." +msgstr "Numele utilizatorului va fi schimbat de la <_:replaceable-1/> la <_:replaceable-2/>. Nimic altceva nu este schimbat. În special, directorul personal al utilizatorului sau colectorul de corespondență ar trebui probabil redenumit manual pentru a reflecta noul nume de autentificare." #. (itstool) path: term/option #. (itstool) path: para/option #: usermod.8.xml.out:231 usermod.8.xml.out:411 +#| msgid "-" msgid "-L" msgstr "-L" #. (itstool) path: listitem/para #: usermod.8.xml.out:234 -msgid "" -"Lock a user's password. This puts a '!' in front of the encrypted password, " -"effectively disabling the password. You can't use this option with <_:" -"option-1/> or <_:option-2/>." -msgstr "" -"Blochează parola unui utilizator. Aceasta pune un „!” în fața parolei " -"criptate, dezactivând efectiv parola. Nu puteți utiliza această opțiune cu " -"„<_:option-1/>” sau „<_:option-2/>”." +msgid "Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password. You can't use this option with <_:option-1/> or <_:option-2/>." +msgstr "Blochează parola unui utilizator. Aceasta pune un „!” în fața parolei criptate, dezactivând efectiv parola. Nu puteți utiliza această opțiune cu „<_:option-1/>” sau „<_:option-2/>”." #. (itstool) path: listitem/para #: usermod.8.xml.out:240 -msgid "" -"Note: if you wish to lock the account (not only access with a password), you " -"should also set the <_:replaceable-1/> to <_:replaceable-2/>." -msgstr "" -"Notă: dacă doriți să blocați contul (nu numai accesul cu o parolă), trebuie " -"să definiți și <_:replaceable-1/> la <_:replaceable-2/>." +msgid "Note: if you wish to lock the account (not only access with a password), you should also set the <_:replaceable-1/> to <_:replaceable-2/>." +msgstr "Notă: dacă doriți să blocați contul (nu numai accesul cu o parolă), trebuie să definiți și <_:replaceable-1/> la <_:replaceable-2/>." #. (itstool) path: term/option #: usermod.8.xml.out:250 @@ -10450,34 +7760,18 @@ msgstr "--move-home" #. (itstool) path: listitem/para #: usermod.8.xml.out:253 -msgid "" -"moves the content of the user's home directory to the new location. If the " -"current home directory does not exist the new home directory will not be " -"created." -msgstr "" -"mută conținutul directorului personal al utilizatorului în noua locație. " -"Dacă directorul personal curent nu există, noul director personal nu va fi " -"creat." +msgid "moves the content of the user's home directory to the new location. If the current home directory does not exist the new home directory will not be created." +msgstr "mută conținutul directorului personal al utilizatorului în noua locație. Dacă directorul personal curent nu există, noul director personal nu va fi creat." #. (itstool) path: listitem/para #: usermod.8.xml.out:258 -msgid "" -"This option is only valid in combination with the <_:option-1/> (or <_:" -"option-2/>) option." -msgstr "" -"Această opțiune este valabilă numai în combinație cu opțiunea „<_:option-1/" -">” (sau „<_:option-2/>”)." +msgid "This option is only valid in combination with the <_:option-1/> (or <_:option-2/>) option." +msgstr "Această opțiune este valabilă numai în combinație cu opțiunea „<_:option-1/>” (sau „<_:option-2/>”)." #. (itstool) path: listitem/para #: usermod.8.xml.out:262 -msgid "" -"<_:command-1/> will try to adapt the ownership of the files and to copy the " -"modes, ACL and extended attributes, but manual changes might be needed " -"afterwards." -msgstr "" -"<_:command-1/> va încerca să adapteze proprietatea fișierelor și să copieze " -"modurile, ACL și atributele extinse, dar ar putea fi necesare modificări " -"manuale după aceea." +msgid "<_:command-1/> will try to adapt the ownership of the files and to copy the modes, ACL and extended attributes, but manual changes might be needed afterwards." +msgstr "<_:command-1/> va încerca să adapteze proprietatea fișierelor și să copieze modurile, ACL și atributele extinse, dar ar putea fi necesare modificări manuale după aceea." #. (itstool) path: listitem/para #: usermod.8.xml.out:274 @@ -10486,68 +7780,33 @@ msgstr "permite schimbarea ID-ului utilizatorului cu o valoare non-unică." #. (itstool) path: listitem/para #: usermod.8.xml.out:293 -msgid "" -"defines a new password for the user. PASSWORD is expected to be encrypted, " -"as returned by <_:citerefentry-1/>." -msgstr "" -"definește o nouă parolă pentru utilizator. Se așteaptă ca PAROLA să fie " -"criptată, astfel cum este returnată de <_:citerefentry-1/>." +msgid "defines a new password for the user. PASSWORD is expected to be encrypted, as returned by <_:citerefentry-1/>." +msgstr "definește o nouă parolă pentru utilizator. Se așteaptă ca PAROLA să fie criptată, astfel cum este returnată de <_:citerefentry-1/>." #. (itstool) path: listitem/para #: usermod.8.xml.out:298 -msgid "" -"<_:emphasis-1/> Avoid this option on the command line because the password " -"(or encrypted password) will be visible by users listing the processes." -msgstr "" -"<_:emphasis-1/> Evitați această opțiune în linia de comandă deoarece parola " -"(sau parola criptată) va fi vizibilă de către utilizatorii care listează " -"procesele." +msgid "<_:emphasis-1/> Avoid this option on the command line because the password (or encrypted password) will be visible by users listing the processes." +msgstr "<_:emphasis-1/> Evitați această opțiune în linia de comandă deoarece parola (sau parola criptată) va fi vizibilă de către utilizatorii care listează procesele." #. (itstool) path: listitem/para #: usermod.8.xml.out:303 -msgid "" -"The password will be written in the local <_:filename-1/> or <_:filename-2/> " -"file. This might differ from the password database configured in your PAM " -"configuration." -msgstr "" -"Parola va fi scrisă în fișierul local <_:filename-1/> sau <_:filename-2/>. " -"Acest lucru poate diferi de baza de date de parole configurată în " -"configurația PAM." +msgid "The password will be written in the local <_:filename-1/> or <_:filename-2/> file. This might differ from the password database configured in your PAM configuration." +msgstr "Parola va fi scrisă în fișierul local <_:filename-1/> sau <_:filename-2/>. Acest lucru poate diferi de baza de date de parole configurată în configurația PAM." #. (itstool) path: listitem/para #: usermod.8.xml.out:320 -msgid "" -"Remove the user from named supplementary group(s). Use only with the <_:" -"option-1/> option." -msgstr "" -"Elimină utilizatorul din grupul (grupurile) suplimentar(e) numit(e). Se " -"utilizează numai cu opțiunea „<_:option-1/>”." +msgid "Remove the user from named supplementary group(s). Use only with the <_:option-1/> option." +msgstr "Elimină utilizatorul din grupul (grupurile) suplimentar(e) numit(e). Se utilizează numai cu opțiunea „<_:option-1/>”." #. (itstool) path: listitem/para #: usermod.8.xml.out:344 -msgid "" -"Apply changes within the directory tree starting with <_:replaceable-1/> and " -"use as well the configuration files located there. This option does not " -"chroot and is intended for preparing a cross-compilation target. Some " -"limitations: NIS and LDAP users/groups are not verified. PAM authentication " -"is using the host files. No SELINUX support." -msgstr "" -"Aplică modificările din arborele de directoare care începe cu <_:" -"replaceable-1/> și utilizează și fișierele de configurare situate acolo. " -"Această opțiune nu face chroot și este destinată pregătirii unei ținte de " -"multicompilare (cross-compilation). Unele limitări: utilizatorii/grupurile " -"NIS și LDAP nu sunt verificați. Autentificarea PAM utilizează fișierele " -"gazdă. Nu există suport pentru SELinux." +msgid "Apply changes within the directory tree starting with <_:replaceable-1/> and use as well the configuration files located there. This option does not chroot and is intended for preparing a cross-compilation target. Some limitations: NIS and LDAP users/groups are not verified. PAM authentication is using the host files. No SELINUX support." +msgstr "Aplică modificările din arborele de directoare care începe cu <_:replaceable-1/> și utilizează și fișierele de configurare situate acolo. Această opțiune nu face chroot și este destinată pregătirii unei ținte de multicompilare (cross-compilation). Unele limitări: utilizatorii/grupurile NIS și LDAP nu sunt verificați. Autentificarea PAM utilizează fișierele gazdă. Nu există suport pentru SELinux." #. (itstool) path: listitem/para #: usermod.8.xml.out:360 -msgid "" -"changes the user's login shell. An empty string for SHELL blanks the field " -"in <_:filename-1/> and logs the user into the system's default shell." -msgstr "" -"schimbă shell-ul de autentificare al utilizatorului. Un șir gol pentru SHELL " -"șterge câmpul din <_:filename-1/> și conectează utilizatorul în shell-ul " -"implicit al sistemului." +msgid "changes the user's login shell. An empty string for SHELL blanks the field in <_:filename-1/> and logs the user into the system's default shell." +msgstr "schimbă shell-ul de autentificare al utilizatorului. Un șir gol pentru SHELL șterge câmpul din <_:filename-1/> și conectează utilizatorul în shell-ul implicit al sistemului." #. (itstool) path: listitem/para #: usermod.8.xml.out:372 @@ -10556,56 +7815,28 @@ msgstr "Noua valoare a ID-ului utilizatorului." #. (itstool) path: listitem/para #: usermod.8.xml.out:375 -msgid "" -"This value must be unique, unless the <_:option-1/> option is used. The " -"value must be non-negative." -msgstr "" -"Această valoare trebuie să fie unică, cu excepția cazului în care este " -"utilizată opțiunea „<_:option-1/>”. Valoarea trebuie să fie ne-negativă." +msgid "This value must be unique, unless the <_:option-1/> option is used. The value must be non-negative." +msgstr "Această valoare trebuie să fie unică, cu excepția cazului în care este utilizată opțiunea „<_:option-1/>”. Valoarea trebuie să fie ne-negativă." #. (itstool) path: listitem/para #: usermod.8.xml.out:380 -msgid "" -"The user's mailbox, and any files which the user owns and which are located " -"in the user's home directory will have the file user ID changed " -"automatically." -msgstr "" -"Căsuța poștală a utilizatorului și orice fișiere pe care utilizatorul le " -"deține și care sunt localizate în directorul personal al utilizatorului vor " -"avea ID-ul de utilizator al fișierului modificat automat." +msgid "The user's mailbox, and any files which the user owns and which are located in the user's home directory will have the file user ID changed automatically." +msgstr "Căsuța poștală a utilizatorului și orice fișiere pe care utilizatorul le deține și care sunt localizate în directorul personal al utilizatorului vor avea ID-ul de utilizator al fișierului modificat automat." #. (itstool) path: listitem/para #: usermod.8.xml.out:385 -msgid "" -"The ownership of files outside of the user's home directory must be fixed " -"manually." -msgstr "" -"Proprietarul fișierelor din afara directorului personal al utilizatorului " -"trebuie să fie stabilit manual." +msgid "The ownership of files outside of the user's home directory must be fixed manually." +msgstr "Proprietarul fișierelor din afara directorului personal al utilizatorului trebuie să fie stabilit manual." #. (itstool) path: listitem/para #: usermod.8.xml.out:389 -msgid "" -"The change of the user ownership of files inside of the user's home " -"directory is also not done if the home dir owner uid is different from the " -"current or new user id. This is a safety measure for special home " -"directories such as <_:filename-1/>." -msgstr "" -"Schimbarea dreptului de proprietate al utilizatorului asupra fișierelor din " -"directorul personal al utilizatorului nu se efectuează nici în cazul în care " -"uid-ul proprietarului directorului personal este diferit de id-ul " -"utilizatorului curent sau nou. Aceasta este o măsură de siguranță pentru " -"directoarele personale speciale, cum ar fi <_:filename-1/>." +msgid "The change of the user ownership of files inside of the user's home directory is also not done if the home dir owner uid is different from the current or new user id. This is a safety measure for special home directories such as <_:filename-1/>." +msgstr "Schimbarea dreptului de proprietate al utilizatorului asupra fișierelor din directorul personal al utilizatorului nu se efectuează nici în cazul în care uid-ul proprietarului directorului personal este diferit de id-ul utilizatorului curent sau nou. Aceasta este o măsură de siguranță pentru directoarele personale speciale, cum ar fi <_:filename-1/>." #. (itstool) path: listitem/para #: usermod.8.xml.out:408 -msgid "" -"Unlock a user's password. This removes the '!' in front of the encrypted " -"password. You can't use this option with <_:option-1/> or <_:option-2/>." -msgstr "" -"Deblochează parola unui utilizator. Aceasta elimină „!” din fața parolei " -"criptate. Nu puteți utiliza această opțiune cu „<_:option-1/>” sau „<_:" -"option-2/>”." +msgid "Unlock a user's password. This removes the '!' in front of the encrypted password. You can't use this option with <_:option-1/> or <_:option-2/>." +msgstr "Deblochează parola unui utilizator. Aceasta elimină „!” din fața parolei criptate. Nu puteți utiliza această opțiune cu „<_:option-1/>” sau „<_:option-2/>”." #. (itstool) path: para/replaceable #: usermod.8.xml.out:417 @@ -10614,17 +7845,12 @@ msgstr "99999" #. (itstool) path: listitem/para #: usermod.8.xml.out:413 -msgid "" -"Note: if you wish to unlock the account (not only access with a password), " -"you should also set the <_:replaceable-1/> (for example to <_:replaceable-2/" -">, or to the <_:option-3/> value from <_:filename-4/>)." -msgstr "" -"Notă: dacă doriți să deblocați contul (nu numai accesul cu o parolă), " -"trebuie să definiți și <_:replaceable-1/> (de exemplu la <_:replaceable-2/>, " -"sau la valoarea „<_:option-3/>” din <_:filename-4/>)." +msgid "Note: if you wish to unlock the account (not only access with a password), you should also set the <_:replaceable-1/> (for example to <_:replaceable-2/>, or to the <_:option-3/> value from <_:filename-4/>)." +msgstr "Notă: dacă doriți să deblocați contul (nu numai accesul cu o parolă), trebuie să definiți și <_:replaceable-1/> (de exemplu la <_:replaceable-2/>, sau la valoarea „<_:option-3/>” din <_:filename-4/>)." #. (itstool) path: term/option #: usermod.8.xml.out:425 +#| msgid "-" msgid "-v" msgstr "-v" @@ -10659,12 +7885,8 @@ msgstr "Adaugă un interval de uid-uri subordonate la contul utilizatorului." #. (itstool) path: listitem/para #: usermod.8.xml.out:431 usermod.8.xml.out:469 -msgid "" -"This option may be specified multiple times to add multiple ranges to a " -"user's account." -msgstr "" -"Această opțiune poate fi specificată de mai multe ori pentru a adăuga mai " -"multe intervale la contul unui utilizator." +msgid "This option may be specified multiple times to add multiple ranges to a user's account." +msgstr "Această opțiune poate fi specificată de mai multe ori pentru a adăuga mai multe intervale la contul unui utilizator." #. (itstool) path: para/option #: usermod.8.xml.out:436 usermod.8.xml.out:456 @@ -10684,15 +7906,12 @@ msgstr "SUB_UID_COUNT" #. (itstool) path: listitem/para #: usermod.8.xml.out:434 usermod.8.xml.out:454 usermod.8.xml.out:472 #: usermod.8.xml.out:492 -msgid "" -"No checks will be performed with regard to <_:option-1/>, <_:option-2/>, or " -"<_:option-3/> from /etc/login.defs." -msgstr "" -"Nu vor fi efectuate verificări cu privire la „<_:option-1/>”, „<_:option-2/" -">” sau „<_:option-3/>” din „/etc/login.defs”." +msgid "No checks will be performed with regard to <_:option-1/>, <_:option-2/>, or <_:option-3/> from /etc/login.defs." +msgstr "Nu vor fi efectuate verificări cu privire la „<_:option-1/>”, „<_:option-2/>” sau „<_:option-3/>” din „/etc/login.defs”." #. (itstool) path: term/option #: usermod.8.xml.out:443 +#| msgid "-" msgid "-V" msgstr "-V" @@ -10709,17 +7928,8 @@ msgstr "Elimină un interval de uid-uri subordonate din contul utilizatorului." #. (itstool) path: listitem/para #: usermod.8.xml.out:449 -msgid "" -"This option may be specified multiple times to remove multiple ranges to a " -"user's account. When both <_:option-1/> and <_:option-2/> are specified, the " -"removal of all subordinate uid ranges happens before any subordinate uid " -"range is added." -msgstr "" -"Această opțiune poate fi specificată de mai multe ori pentru a elimina mai " -"multe intervale din contul unui utilizator. Atunci când sunt specificate " -"atât „<_:option-1/>”, cât și „<_:option-2/>”, eliminarea tuturor " -"intervalelor uid subordonate are loc înainte de adăugarea oricărui interval " -"uid subordonat." +msgid "This option may be specified multiple times to remove multiple ranges to a user's account. When both <_:option-1/> and <_:option-2/> are specified, the removal of all subordinate uid ranges happens before any subordinate uid range is added." +msgstr "Această opțiune poate fi specificată de mai multe ori pentru a elimina mai multe intervale din contul unui utilizator. Atunci când sunt specificate atât „<_:option-1/>”, cât și „<_:option-2/>”, eliminarea tuturor intervalelor uid subordonate are loc înainte de adăugarea oricărui interval uid subordonat." #. (itstool) path: term/option #. (itstool) path: para/option @@ -10760,55 +7970,23 @@ msgstr "Elimină un interval de gid-uri subordonate din contul utilizatorului." #. (itstool) path: listitem/para #: usermod.8.xml.out:487 -msgid "" -"This option may be specified multiple times to remove multiple ranges to a " -"user's account. When both <_:option-1/> and <_:option-2/> are specified, the " -"removal of all subordinate gid ranges happens before any subordinate gid " -"range is added." -msgstr "" -"Această opțiune poate fi specificată de mai multe ori pentru a elimina mai " -"multe intervale din contul unui utilizator. Atunci când sunt specificate " -"atât „<_:option-1/>”, cât și „<_:option-2/>”, eliminarea tuturor " -"intervalelor gid subordonate are loc înainte de adăugarea oricărui interval " -"gid subordonat." +msgid "This option may be specified multiple times to remove multiple ranges to a user's account. When both <_:option-1/> and <_:option-2/> are specified, the removal of all subordinate gid ranges happens before any subordinate gid range is added." +msgstr "Această opțiune poate fi specificată de mai multe ori pentru a elimina mai multe intervale din contul unui utilizator. Atunci când sunt specificate atât „<_:option-1/>”, cât și „<_:option-2/>”, eliminarea tuturor intervalelor gid subordonate are loc înainte de adăugarea oricărui interval gid subordonat." #. (itstool) path: listitem/para #: usermod.8.xml.out:504 -msgid "" -"defines the SELinux user to be mapped with <_:replaceable-1/>. An empty " -"string (\"\") will remove the respective entry (if any). Note that the " -"shadow system doesn't store the selinux-user, it uses semanage(8) for that." -msgstr "" -"definește utilizatorul SELinux care urmează să fie asociat cu <_:" -"replaceable-1/>. Un șir gol („”) va elimina intrarea respectivă (dacă " -"există). Rețineți că sistemul «shadow» nu stochează utilizatorul SELinux, " -"pentru aceasta utilizează semanage(8)." +msgid "defines the SELinux user to be mapped with <_:replaceable-1/>. An empty string (\"\") will remove the respective entry (if any). Note that the shadow system doesn't store the selinux-user, it uses semanage(8) for that." +msgstr "definește utilizatorul SELinux care urmează să fie asociat cu <_:replaceable-1/>. Un șir gol („”) va elimina intrarea respectivă (dacă există). Rețineți că sistemul «shadow» nu stochează utilizatorul SELinux, pentru aceasta utilizează semanage(8)." #. (itstool) path: listitem/para #: usermod.8.xml.out:518 -msgid "" -"defines the SELinux MLS range for the new account. Note that the shadow " -"system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." -msgstr "" -"definește intervalul SELinux MLS pentru noul cont. Rețineți că sistemul " -"«shadow» nu stochează intervalul SELinux, ci utilizează <_:citerefentry-1/> " -"pentru aceasta." +msgid "defines the SELinux MLS range for the new account. Note that the shadow system doesn't store the selinux-range, it uses <_:citerefentry-1/> for that." +msgstr "definește intervalul SELinux MLS pentru noul cont. Rețineți că sistemul «shadow» nu stochează intervalul SELinux, ci utilizează <_:citerefentry-1/> pentru aceasta." #. (itstool) path: refsect1/para #: usermod.8.xml.out:535 -msgid "" -"You must make certain that the named user is not executing any processes " -"when this command is being executed if the user's numerical user ID, the " -"user's name, or the user's home directory is being changed. <_:command-1/> " -"checks this on Linux. On other operating systems it only uses utmp to check " -"if the user is logged in." -msgstr "" -"Trebuie să vă asigurați că utilizatorul numit nu execută niciun proces " -"atunci când se execută această comandă, dacă se modifică ID-ul numeric al " -"utilizatorului, numele utilizatorului sau directorul inițial al " -"utilizatorului. <_:command-1/> verifică acest lucru în Linux. În alte " -"sisteme de operare utilizează doar utmp pentru a verifica dacă utilizatorul " -"este conectat." +msgid "You must make certain that the named user is not executing any processes when this command is being executed if the user's numerical user ID, the user's name, or the user's home directory is being changed. <_:command-1/> checks this on Linux. On other operating systems it only uses utmp to check if the user is logged in." +msgstr "Trebuie să vă asigurați că utilizatorul numit nu execută niciun proces atunci când se execută această comandă, dacă se modifică ID-ul numeric al utilizatorului, numele utilizatorului sau directorul inițial al utilizatorului. <_:command-1/> verifică acest lucru în Linux. În alte sisteme de operare utilizează doar utmp pentru a verifica dacă utilizatorul este conectat." #. (itstool) path: para/command #: usermod.8.xml.out:544 @@ -10822,18 +8000,13 @@ msgstr "at" #. (itstool) path: refsect1/para #: usermod.8.xml.out:543 -msgid "" -"You must change the owner of any <_:command-1/> files or <_:command-2/> jobs " -"manually." -msgstr "" -"Trebuie să schimbați manual proprietarul oricăror fișiere <_:command-1/> sau " -"lucrări <_:command-2/>." +msgid "You must change the owner of any <_:command-1/> files or <_:command-2/> jobs manually." +msgstr "Trebuie să schimbați manual proprietarul oricăror fișiere <_:command-1/> sau lucrări <_:command-2/>." #. (itstool) path: refsect1/para #: usermod.8.xml.out:547 msgid "You must make any changes involving NIS on the NIS server." -msgstr "" -"Trebuie să efectuați orice modificări care implică NIS pe serverul NIS." +msgstr "Trebuie să efectuați orice modificări care implică NIS pe serverul NIS." #. (itstool) path: listitem/para #: usermod.8.xml.out:576 @@ -10880,52 +8053,35 @@ msgstr "vigr" #. (itstool) path: refnamediv/refpurpose #: vipw.8.xml.out:44 msgid "edit the password, group, shadow-password or shadow-group file" -msgstr "" -"editează parola, grupul, fișierul de parole „shadow” sau fișierul de grupuri " -"„shadow”" +msgstr "editează parola, grupul, fișierul de parole „shadow” sau fișierul de grupuri „shadow”" #. (itstool) path: para/envar #: vipw.8.xml.out:75 +#| msgid "VISUAL" msgid "$VISUAL" msgstr "$VISUAL" #. (itstool) path: para/envar #: vipw.8.xml.out:76 +#| msgid "EDITOR" msgid "$EDITOR" msgstr "$EDITOR" #. (itstool) path: citerefentry/refentrytitle #: vipw.8.xml.out:77 vipw.8.xml.out:205 +#| msgid "vipw" msgid "vi" msgstr "vi" #. (itstool) path: refsect1/para #: vipw.8.xml.out:66 -msgid "" -"The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/" -"> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will " -"edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/" -">, respectively. The programs will set the appropriate locks to prevent file " -"corruption. When looking for an editor, the programs will first try the " -"environment variable <_:envar-8/>, then the environment variable <_:envar-9/" -">, and finally the default editor, <_:citerefentry-10/>." -msgstr "" -"Comenzile <_:command-1/> și <_:command-2/> editează fișierele <_:filename-3/" -"> și, respectiv, <_:filename-4/>. Cu opțiunea „<_:option-5/>”, acestea vor " -"edita versiunile „shadow” ale acestor fișiere, <_:filename-6/> și, " -"respectiv, <_:filename-7/>. Programele vor crea blocajele corespunzătoare " -"pentru a preveni coruperea fișierelor. Atunci când caută un editor, " -"programele vor încerca mai întâi variabila de mediu <_:envar-8/>, apoi " -"variabila de mediu <_:envar-9/> și în final editorul implicit, <_:" -"citerefentry-10/>." +msgid "The <_:command-1/> and <_:command-2/> commands edit the files <_:filename-3/> and <_:filename-4/>, respectively. With the <_:option-5/> flag, they will edit the shadow versions of those files, <_:filename-6/> and <_:filename-7/>, respectively. The programs will set the appropriate locks to prevent file corruption. When looking for an editor, the programs will first try the environment variable <_:envar-8/>, then the environment variable <_:envar-9/>, and finally the default editor, <_:citerefentry-10/>." +msgstr "Comenzile <_:command-1/> și <_:command-2/> editează fișierele <_:filename-3/> și, respectiv, <_:filename-4/>. Cu opțiunea „<_:option-5/>”, acestea vor edita versiunile „shadow” ale acestor fișiere, <_:filename-6/> și, respectiv, <_:filename-7/>. Programele vor crea blocajele corespunzătoare pentru a preveni coruperea fișierelor. Atunci când caută un editor, programele vor încerca mai întâi variabila de mediu <_:envar-8/>, apoi variabila de mediu <_:envar-9/> și în final editorul implicit, <_:citerefentry-10/>." #. (itstool) path: refsect1/para #: vipw.8.xml.out:84 -msgid "" -"The options which apply to the <_:command-1/> and <_:command-2/> commands " -"are:" -msgstr "" -"Opțiunile care se aplică comenzilor <_:command-1/> și <_:command-2/> sunt:" +msgid "The options which apply to the <_:command-1/> and <_:command-2/> commands are:" +msgstr "Opțiunile care se aplică comenzilor <_:command-1/> și <_:command-2/> sunt:" #. (itstool) path: listitem/para #: vipw.8.xml.out:92 @@ -10934,6 +8090,7 @@ msgstr "Editează baza de date a grupurilor." #. (itstool) path: term/option #: vipw.8.xml.out:102 +#| msgid "passwd" msgid "--passwd" msgstr "--passwd" @@ -10944,6 +8101,7 @@ msgstr "Editează baza de date „passwd”." #. (itstool) path: term/option #: vipw.8.xml.out:127 +#| msgid "shadow-utils" msgid "--shadow" msgstr "--shadow" @@ -10955,8 +8113,7 @@ msgstr "Editați baza de date „shadow” sau „gshadow”." #. (itstool) path: listitem/para #: vipw.8.xml.out:135 msgid "Indicates which user's tcb shadow file to edit." -msgstr "" -"Indică fișierul „shadow” tcb al utilizatorului care urmează să fie editat." +msgstr "Indică fișierul „shadow” tcb al utilizatorului care urmează să fie editat." #. (itstool) path: refsect1/title #: vipw.8.xml.out:154 @@ -10982,8 +8139,7 @@ msgstr "EDITOR" #. (itstool) path: listitem/para #: vipw.8.xml.out:165 msgid "Editor to be used if <_:option-1/> is not set." -msgstr "" -"Editor care urmează să fie utilizat dacă „<_:option-1/>” nu este definită." +msgstr "Editor care urmează să fie utilizat dacă „<_:option-1/>” nu este definită." #. (itstool) path: citerefentry/refentrytitle #: vipw.8.xml.out:220 @@ -10992,14 +8148,8 @@ msgstr "tcb" #. (itstool) path: refsect1/para #: vipw.8.xml.out:203 -msgid "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/> <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>." -msgstr "" -"<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/> <_:" -"citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:" -"citerefentry-7/>." +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/> <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>." +msgstr "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/> <_:citerefentry-4/>, <_:citerefentry-5/>, <_:citerefentry-6/>, <_:citerefentry-7/>." #~ msgid ", " #~ msgstr ", " @@ -11067,24 +8217,8 @@ msgstr "" #~ msgid ", " #~ msgstr ", " -#~ msgid "" -#~ "group5, grpck8, " -#~ "passwd5, shadow5, " -#~ "usermod8." -#~ msgstr "" -#~ "group5, grpck8, " -#~ "passwd5, shadow5, " -#~ "usermod8." +#~ msgid "group5, grpck8, passwd5, shadow5, usermod8." +#~ msgstr "group5, grpck8, passwd5, shadow5, usermod8." #~ msgid ", " #~ msgstr ", " diff --git a/man/pt_BR/Makefile.in b/man/pt_BR/Makefile.in index 7b8f7ed0..9276ed83 100644 --- a/man/pt_BR/Makefile.in +++ b/man/pt_BR/Makefile.in @@ -164,6 +164,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -192,7 +193,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -236,7 +236,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/pwck.8.xml b/man/pwck.8.xml index 4eb820d6..46bb59df 100644 --- a/man/pwck.8.xml +++ b/man/pwck.8.xml @@ -202,6 +202,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/pwconv.8.xml b/man/pwconv.8.xml index c4aedef6..fb2922c6 100644 --- a/man/pwconv.8.xml +++ b/man/pwconv.8.xml @@ -183,6 +183,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/ru/Makefile.in b/man/ru/Makefile.in index 94e5b649..b771df30 100644 --- a/man/ru/Makefile.in +++ b/man/ru/Makefile.in @@ -169,6 +169,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -197,7 +198,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -241,7 +241,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/ru/man1/chage.1 b/man/ru/man1/chage.1 index fe6c0488..4d52bc94 100644 --- a/man/ru/man1/chage.1 +++ b/man/ru/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "chage" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "chage" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -138,7 +138,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/ru/man1/chfn.1 b/man/ru/man1/chfn.1 index 1ada6a8c..7037a6b7 100644 --- a/man/ru/man1/chfn.1 +++ b/man/ru/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "chfn" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "chfn" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -87,7 +87,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. +directory\&. No SELINUX support\&. .RE .PP \fB\-u\fR, \fB\-\-help\fR diff --git a/man/ru/man1/chsh.1 b/man/ru/man1/chsh.1 index 0136fea3..8f06738b 100644 --- a/man/ru/man1/chsh.1 +++ b/man/ru/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "chsh" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "chsh" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -54,7 +54,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR @@ -72,13 +72,9 @@ marks\&. .SH "ЗАМЕЧАНИЕ" .PP The only restriction placed on the login shell is that the command name must be listed in -/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing -/bin/rsh -in -/etc/shells -is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +/etc/shells\&. .PP -For this reason, placing +If the invoker is the superuser any value may be added regardless what is defined in the configuration files\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh in /etc/shells diff --git a/man/ru/man1/expiry.1 b/man/ru/man1/expiry.1 index 2c17b025..9226a817 100644 --- a/man/ru/man1/expiry.1 +++ b/man/ru/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "expiry" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "expiry" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man1/gpasswd.1 b/man/ru/man1/gpasswd.1 index c23008dc..df9b565e 100644 --- a/man/ru/man1/gpasswd.1 +++ b/man/ru/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "gpasswd" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "gpasswd" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -98,7 +98,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-r\fR, \fB\-\-remove\-password\fR diff --git a/man/ru/man1/login.1 b/man/ru/man1/login.1 index a6ef4639..897d6733 100644 --- a/man/ru/man1/login.1 +++ b/man/ru/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "login" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "login" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -100,7 +100,7 @@ from the shell prompt without .RS 4 Не выполнять аутентификацию, пользователь уже прошёл проверку\&. .sp -Note: In that case, +Note: in that case, \fIusername\fR is mandatory\&. .RE diff --git a/man/ru/man1/newgrp.1 b/man/ru/man1/newgrp.1 index d40e2aa6..309d2a60 100644 --- a/man/ru/man1/newgrp.1 +++ b/man/ru/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "newgrp" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "newgrp" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man1/passwd.1 b/man/ru/man1/passwd.1 index e264525c..a70ada4c 100644 --- a/man/ru/man1/passwd.1 +++ b/man/ru/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "passwd" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "passwd" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/ru/man1/sg.1 b/man/ru/man1/sg.1 index 2790e692..ec8eb931 100644 --- a/man/ru/man1/sg.1 +++ b/man/ru/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "sg" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "sg" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- выполняет команду с правами другой группы .SH "СИНТАКСИС" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "ОПИСАНИЕ" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "ПАРАМЕТРЫ" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "НАСТРОЙКА" .PP The following configuration variables in diff --git a/man/ru/man1/su.1 b/man/ru/man1/su.1 index ea6ba8ec..da1267bf 100644 --- a/man/ru/man1/su.1 +++ b/man/ru/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "su" "1" "06/24/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "su" "1" "12/30/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man3/shadow.3 b/man/ru/man3/shadow.3 index 69f38a79..bfcd4876 100644 --- a/man/ru/man3/shadow.3 +++ b/man/ru/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: Library Calls -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "shadow" "3" "06/24/2025" "shadow\-utils 4\&.18\&.0" "Library Calls" +.TH "shadow" "3" "12/30/2025" "shadow\-utils 4\&.19\&.0" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/faillog.5 b/man/ru/man5/faillog.5 index aee6d547..75b94c9d 100644 --- a/man/ru/man5/faillog.5 +++ b/man/ru/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "faillog" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuratio" +.TH "faillog" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/gshadow.5 b/man/ru/man5/gshadow.5 index a9948742..36bea9b1 100644 --- a/man/ru/man5/gshadow.5 +++ b/man/ru/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "gshadow" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "gshadow" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/limits.5 b/man/ru/man5/limits.5 index 57575234..43b3fbbf 100644 --- a/man/ru/man5/limits.5 +++ b/man/ru/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "limits" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "limits" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/login.access.5 b/man/ru/man5/login.access.5 index 7eef5915..f5a934e9 100644 --- a/man/ru/man5/login.access.5 +++ b/man/ru/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "login\&.access" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "login\&.access" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/login.defs.5 b/man/ru/man5/login.defs.5 index 8cc10264..8e0c7386 100644 --- a/man/ru/man5/login.defs.5 +++ b/man/ru/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "login\&.defs" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "login\&.defs" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/passwd.5 b/man/ru/man5/passwd.5 index 846d7eaf..2b1ec996 100644 --- a/man/ru/man5/passwd.5 +++ b/man/ru/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "passwd" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "passwd" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,7 @@ environmental variable\&. If this field is empty, it defaults to the value .PP /etc/shadow .RS 4 -необязательный файл с шифрованными паролями +Optional encrypted password file\&. .RE .PP /etc/passwd\- diff --git a/man/ru/man5/porttime.5 b/man/ru/man5/porttime.5 index 0c79e676..eb659bb7 100644 --- a/man/ru/man5/porttime.5 +++ b/man/ru/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "porttime" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "porttime" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/shadow.5 b/man/ru/man5/shadow.5 index 19ae631d..e446b6fb 100644 --- a/man/ru/man5/shadow.5 +++ b/man/ru/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "shadow" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "shadow" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man5/suauth.5 b/man/ru/man5/suauth.5 index 46845fb4..0cc86fb3 100644 --- a/man/ru/man5/suauth.5 +++ b/man/ru/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "suauth" "5" "06/24/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "suauth" "5" "12/30/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man8/chgpasswd.8 b/man/ru/man8/chgpasswd.8 index d2ae81b3..5c4e678b 100644 --- a/man/ru/man8/chgpasswd.8 +++ b/man/ru/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "chgpasswd" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "chgpasswd" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -92,7 +92,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/ru/man8/chpasswd.8 b/man/ru/man8/chpasswd.8 index 3d653192..d2b1916e 100644 --- a/man/ru/man8/chpasswd.8 +++ b/man/ru/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "chpasswd" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "chpasswd" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -108,7 +108,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/ru/man8/faillog.8 b/man/ru/man8/faillog.8 index 94922e78..083098ca 100644 --- a/man/ru/man8/faillog.8 +++ b/man/ru/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "faillog" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "faillog" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -113,7 +113,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/ru/man8/groupadd.8 b/man/ru/man8/groupadd.8 index 8ac78b4f..2f8836af 100644 --- a/man/ru/man8/groupadd.8 +++ b/man/ru/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "groupadd" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "groupadd" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,7 +135,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/ru/man8/groupdel.8 b/man/ru/man8/groupdel.8 index 72a398a9..a55a7d4c 100644 --- a/man/ru/man8/groupdel.8 +++ b/man/ru/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "groupdel" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "groupdel" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/ru/man8/groupmems.8 b/man/ru/man8/groupmems.8 index 8a1035e8..43688ddf 100644 --- a/man/ru/man8/groupmems.8 +++ b/man/ru/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "groupmems" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "groupmems" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -107,7 +107,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "НАСТРОЙКА" .PP diff --git a/man/ru/man8/groupmod.8 b/man/ru/man8/groupmod.8 index 82127253..db82bf2c 100644 --- a/man/ru/man8/groupmod.8 +++ b/man/ru/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "groupmod" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "groupmod" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -117,7 +117,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/ru/man8/grpck.8 b/man/ru/man8/grpck.8 index 236c758d..e0b95f95 100644 --- a/man/ru/man8/grpck.8 +++ b/man/ru/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "grpck" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "grpck" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -148,7 +148,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/ru/man8/lastlog.8 b/man/ru/man8/lastlog.8 index f2740229..96fb2418 100644 --- a/man/ru/man8/lastlog.8 +++ b/man/ru/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "lastlog" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "lastlog" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ Print only lastlog records older than .RS 4 Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,14 +73,14 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/ru/man8/logoutd.8 b/man/ru/man8/logoutd.8 index 17b0cef3..a4463edb 100644 --- a/man/ru/man8/logoutd.8 +++ b/man/ru/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "logoutd" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "logoutd" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man8/newusers.8 b/man/ru/man8/newusers.8 index 6f509918..8222c2d8 100644 --- a/man/ru/man8/newusers.8 +++ b/man/ru/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "newusers" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "newusers" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -53,7 +53,7 @@ It can be the name of a new user or the name of an existing user (or a user crea .PP \fIpw_passwd\fR .RS 4 -Это поле будет зашифровано и использовано как новое значение шифрованного пароля\&. +If this field is not empty, it will be encrypted and used as the new value of the encrypted password\&. .RE .PP \fIpw_uid\fR @@ -161,7 +161,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/ru/man8/nologin.8 b/man/ru/man8/nologin.8 index 76bac9ef..7daf4bf1 100644 --- a/man/ru/man8/nologin.8 +++ b/man/ru/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "nologin" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "nologin" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man8/pwck.8 b/man/ru/man8/pwck.8 index acabe2c6..f66c0bae 100644 --- a/man/ru/man8/pwck.8 +++ b/man/ru/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "pwck" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "pwck" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -222,7 +222,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/ru/man8/pwconv.8 b/man/ru/man8/pwconv.8 index 224ea798..bc12460b 100644 --- a/man/ru/man8/pwconv.8 +++ b/man/ru/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "pwconv" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "pwconv" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -128,7 +128,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "ОШИБКИ РЕАЛИЗАЦИИ" .PP diff --git a/man/ru/man8/sulogin.8 b/man/ru/man8/sulogin.8 index 63a33a3b..a9d93e89 100644 --- a/man/ru/man8/sulogin.8 +++ b/man/ru/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "sulogin" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "sulogin" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ru/man8/useradd.8 b/man/ru/man8/useradd.8 index 7c6772c2..b159633c 100644 --- a/man/ru/man8/useradd.8 +++ b/man/ru/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "useradd" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "useradd" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -347,7 +347,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/ru/man8/userdel.8 b/man/ru/man8/userdel.8 index 58efac90..d0877fbf 100644 --- a/man/ru/man8/userdel.8 +++ b/man/ru/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "userdel" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "userdel" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,7 +74,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/ru/man8/usermod.8 b/man/ru/man8/usermod.8 index 2fab0da5..0e15e034 100644 --- a/man/ru/man8/usermod.8 +++ b/man/ru/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "usermod" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "usermod" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,7 +188,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/ru/man8/vipw.8 b/man/ru/man8/vipw.8 index 94e42b3b..1fc479ba 100644 --- a/man/ru/man8/vipw.8 +++ b/man/ru/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 06/24/2025 +.\" Date: 12/30/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Russian .\" -.TH "vipw" "8" "06/24/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "vipw" "8" "12/30/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/sg.1.xml b/man/sg.1.xml index 72bef700..54d9023b 100644 --- a/man/sg.1.xml +++ b/man/sg.1.xml @@ -45,10 +45,15 @@ sg - - - group - -c - command + + - + + + group + + + -c + command @@ -64,12 +69,43 @@ newgrp and sg is that some shells treat newgrp specially, replacing themselves with a new instance of a shell that newgrp creates. - This doesn't happen with sg, so upon exit from a + This doesn't happen with sg, so upon exit from an sg command you are returned to your previous group ID. + + OPTIONS + + The options which apply to the sg command are: + + + + , + + + Start the shell as a login shell. + + + + + + + + + + Specify a command that will be invoked by the shell using its + . + + + This is the default; for backward compatibility. + + + + + + CONFIGURATION diff --git a/man/sv/Makefile.in b/man/sv/Makefile.in index 0354d899..828a2ea3 100644 --- a/man/sv/Makefile.in +++ b/man/sv/Makefile.in @@ -169,6 +169,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -197,7 +198,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -241,7 +241,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/sv/man1/chage.1 b/man/sv/man1/chage.1 index 2ee9cf8a..1567b55f 100644 --- a/man/sv/man1/chage.1 +++ b/man/sv/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "CHAGE" "1" "24-06-2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHAGE" "1" "30-12-2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -138,7 +138,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/sv/man1/chsh.1 b/man/sv/man1/chsh.1 index 98ad9546..c7c8c6d6 100644 --- a/man/sv/man1/chsh.1 +++ b/man/sv/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "CHSH" "1" "24-06-2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHSH" "1" "30-12-2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -54,7 +54,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR @@ -72,13 +72,9 @@ marks\&. .SH "NOTERA" .PP The only restriction placed on the login shell is that the command name must be listed in -/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing -/bin/rsh -in -/etc/shells -is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +/etc/shells\&. .PP -For this reason, placing +If the invoker is the superuser any value may be added regardless what is defined in the configuration files\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh in /etc/shells diff --git a/man/sv/man1/expiry.1 b/man/sv/man1/expiry.1 index 8a9f0145..23e574fe 100644 --- a/man/sv/man1/expiry.1 +++ b/man/sv/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "EXPIRY" "1" "24-06-2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "EXPIRY" "1" "30-12-2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man1/newgrp.1 b/man/sv/man1/newgrp.1 index a24a8d6d..737b514f 100644 --- a/man/sv/man1/newgrp.1 +++ b/man/sv/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "NEWGRP" "1" "24-06-2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGRP" "1" "30-12-2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man1/passwd.1 b/man/sv/man1/passwd.1 index 858ef2da..1dc1b5df 100644 --- a/man/sv/man1/passwd.1 +++ b/man/sv/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "PASSWD" "1" "24-06-2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "PASSWD" "1" "30-12-2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/sv/man1/sg.1 b/man/sv/man1/sg.1 index 67c9ae45..d0fdcd68 100644 --- a/man/sv/man1/sg.1 +++ b/man/sv/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "SG" "1" "24-06-2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SG" "1" "30-12-2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- k\(:or kommando med annat grupp\-id .SH "SYNOPSIS" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "BESKRIVNING" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "FLAGGOR" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in diff --git a/man/sv/man3/shadow.3 b/man/sv/man3/shadow.3 index ef8db617..28010f30 100644 --- a/man/sv/man3/shadow.3 +++ b/man/sv/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: Library Calls -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "SHADOW" "3" "24-06-2025" "shadow\-utils 4\&.18\&.0" "Library Calls" +.TH "SHADOW" "3" "30-12-2025" "shadow\-utils 4\&.19\&.0" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man5/faillog.5 b/man/sv/man5/faillog.5 index 0cbc4f4d..785d2e61 100644 --- a/man/sv/man5/faillog.5 +++ b/man/sv/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "FAILLOG" "5" "24-06-2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuratio" +.TH "FAILLOG" "5" "30-12-2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man5/gshadow.5 b/man/sv/man5/gshadow.5 index 26db63a6..a16ca1f3 100644 --- a/man/sv/man5/gshadow.5 +++ b/man/sv/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "GSHADOW" "5" "24-06-2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "GSHADOW" "5" "30-12-2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man5/limits.5 b/man/sv/man5/limits.5 index a76b39e0..64b0765f 100644 --- a/man/sv/man5/limits.5 +++ b/man/sv/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "LIMITS" "5" "24-06-2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LIMITS" "5" "30-12-2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man5/passwd.5 b/man/sv/man5/passwd.5 index 5a3b8530..37ba7d73 100644 --- a/man/sv/man5/passwd.5 +++ b/man/sv/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "PASSWD" "5" "24-06-2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PASSWD" "5" "30-12-2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,7 @@ Anv\(:andarkontoinformation\&. .PP /etc/shadow .RS 4 -optional encrypted password file +Optional encrypted password file\&. .RE .PP /etc/passwd\- diff --git a/man/sv/man5/porttime.5 b/man/sv/man5/porttime.5 index 845fc5ce..ce8d224e 100644 --- a/man/sv/man5/porttime.5 +++ b/man/sv/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "PORTTIME" "5" "24-06-2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PORTTIME" "5" "30-12-2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man5/suauth.5 b/man/sv/man5/suauth.5 index 0a4077de..61d76d7b 100644 --- a/man/sv/man5/suauth.5 +++ b/man/sv/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "SUAUTH" "5" "24-06-2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUAUTH" "5" "30-12-2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man8/faillog.8 b/man/sv/man8/faillog.8 index ccccd800..c03ef33a 100644 --- a/man/sv/man8/faillog.8 +++ b/man/sv/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "FAILLOG" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "FAILLOG" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -113,7 +113,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/sv/man8/groupadd.8 b/man/sv/man8/groupadd.8 index 00a7989e..001a852b 100644 --- a/man/sv/man8/groupadd.8 +++ b/man/sv/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "GROUPADD" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPADD" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,7 +135,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/sv/man8/groupdel.8 b/man/sv/man8/groupdel.8 index 3b1c395b..bf39e627 100644 --- a/man/sv/man8/groupdel.8 +++ b/man/sv/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "GROUPDEL" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPDEL" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/sv/man8/groupmems.8 b/man/sv/man8/groupmems.8 index a514f1f5..1c0df0de 100644 --- a/man/sv/man8/groupmems.8 +++ b/man/sv/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "GROUPMEMS" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMEMS" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -107,7 +107,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "SETUP" .PP diff --git a/man/sv/man8/groupmod.8 b/man/sv/man8/groupmod.8 index 917dcbb9..1060e96d 100644 --- a/man/sv/man8/groupmod.8 +++ b/man/sv/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "GROUPMOD" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMOD" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -117,7 +117,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/sv/man8/grpck.8 b/man/sv/man8/grpck.8 index 84a83d14..775f1892 100644 --- a/man/sv/man8/grpck.8 +++ b/man/sv/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "GRPCK" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GRPCK" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -148,7 +148,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/sv/man8/lastlog.8 b/man/sv/man8/lastlog.8 index a787436c..94c2b2cd 100644 --- a/man/sv/man8/lastlog.8 +++ b/man/sv/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "LASTLOG" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LASTLOG" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ Print only lastlog records older than .RS 4 Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,14 +73,14 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/sv/man8/logoutd.8 b/man/sv/man8/logoutd.8 index 60ad9847..42713a85 100644 --- a/man/sv/man8/logoutd.8 +++ b/man/sv/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "LOGOUTD" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LOGOUTD" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man8/nologin.8 b/man/sv/man8/nologin.8 index 858d8730..2fdc0ea2 100644 --- a/man/sv/man8/nologin.8 +++ b/man/sv/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "NOLOGIN" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NOLOGIN" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/sv/man8/pwck.8 b/man/sv/man8/pwck.8 index c3916b6b..093bb996 100644 --- a/man/sv/man8/pwck.8 +++ b/man/sv/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "PWCK" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCK" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -222,7 +222,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/sv/man8/userdel.8 b/man/sv/man8/userdel.8 index 67c02dd7..b095dffa 100644 --- a/man/sv/man8/userdel.8 +++ b/man/sv/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "USERDEL" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERDEL" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,7 +74,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/sv/man8/vipw.8 b/man/sv/man8/vipw.8 index fbb7de41..5d40aa8c 100644 --- a/man/sv/man8/vipw.8 +++ b/man/sv/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24-06-2025 +.\" Date: 30-12-2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Swedish .\" -.TH "VIPW" "8" "24-06-2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "VIPW" "8" "30-12-2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/tr/Makefile.in b/man/tr/Makefile.in index ae185199..79c1e2f6 100644 --- a/man/tr/Makefile.in +++ b/man/tr/Makefile.in @@ -164,6 +164,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -192,7 +193,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -236,7 +236,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/uk/Makefile.in b/man/uk/Makefile.in index e0dd1ae6..de0584fc 100644 --- a/man/uk/Makefile.in +++ b/man/uk/Makefile.in @@ -169,6 +169,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -197,7 +198,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -241,7 +241,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/uk/man1/chage.1 b/man/uk/man1/chage.1 index c7c34d15..73ed585b 100644 --- a/man/uk/man1/chage.1 +++ b/man/uk/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "chage" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "chage" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -138,7 +138,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/uk/man1/chfn.1 b/man/uk/man1/chfn.1 index 946217ba..f659e470 100644 --- a/man/uk/man1/chfn.1 +++ b/man/uk/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "chfn" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "chfn" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -87,7 +87,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. +directory\&. No SELINUX support\&. .RE .PP \fB\-u\fR, \fB\-\-help\fR diff --git a/man/uk/man1/chsh.1 b/man/uk/man1/chsh.1 index ba79c0a7..c20dff8a 100644 --- a/man/uk/man1/chsh.1 +++ b/man/uk/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "chsh" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "chsh" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -54,7 +54,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR @@ -72,13 +72,9 @@ marks\&. .SH "ЗАУВАЖЕННЯ" .PP The only restriction placed on the login shell is that the command name must be listed in -/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing -/bin/rsh -in -/etc/shells -is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +/etc/shells\&. .PP -For this reason, placing +If the invoker is the superuser any value may be added regardless what is defined in the configuration files\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh in /etc/shells diff --git a/man/uk/man1/expiry.1 b/man/uk/man1/expiry.1 index 7b65c0d3..756c6b85 100644 --- a/man/uk/man1/expiry.1 +++ b/man/uk/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "expiry" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "expiry" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man1/gpasswd.1 b/man/uk/man1/gpasswd.1 index c1fa150c..c7c9e950 100644 --- a/man/uk/man1/gpasswd.1 +++ b/man/uk/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "gpasswd" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "gpasswd" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -98,7 +98,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-r\fR, \fB\-\-remove\-password\fR diff --git a/man/uk/man1/login.1 b/man/uk/man1/login.1 index 9543b67b..e512a5ad 100644 --- a/man/uk/man1/login.1 +++ b/man/uk/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "login" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "login" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -100,7 +100,7 @@ from the shell prompt without .RS 4 Не виконувати розпізнавання, користувача попередньо розпізнано\&. .sp -Note: In that case, +Note: in that case, \fIusername\fR is mandatory\&. .RE diff --git a/man/uk/man1/newgrp.1 b/man/uk/man1/newgrp.1 index 0cba2b52..c0c48ca1 100644 --- a/man/uk/man1/newgrp.1 +++ b/man/uk/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "newgrp" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "newgrp" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man1/passwd.1 b/man/uk/man1/passwd.1 index 7b910bbf..0958625b 100644 --- a/man/uk/man1/passwd.1 +++ b/man/uk/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "passwd" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "passwd" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/uk/man1/sg.1 b/man/uk/man1/sg.1 index 9646167c..2466ded4 100644 --- a/man/uk/man1/sg.1 +++ b/man/uk/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "sg" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "sg" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- виконання команди від імені іншого ідентифікатора групи .SH "КОРОТКИЙ ОГЛЯД" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "ОПИС" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "ПАРАМЕТРИ" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "НАЛАШТУВАННЯ" .PP The following configuration variables in diff --git a/man/uk/man1/su.1 b/man/uk/man1/su.1 index 7f73d0fa..a63fce1e 100644 --- a/man/uk/man1/su.1 +++ b/man/uk/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "su" "1" "24/06/2025" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "su" "1" "30/12/2025" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man3/shadow.3 b/man/uk/man3/shadow.3 index 327ddcca..cf13add3 100644 --- a/man/uk/man3/shadow.3 +++ b/man/uk/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: Library Calls -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "shadow" "3" "24/06/2025" "shadow\-utils 4\&.18\&.0" "Library Calls" +.TH "shadow" "3" "30/12/2025" "shadow\-utils 4\&.19\&.0" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man5/faillog.5 b/man/uk/man5/faillog.5 index 3af7bde3..3e1d9769 100644 --- a/man/uk/man5/faillog.5 +++ b/man/uk/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "faillog" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuratio" +.TH "faillog" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man5/gshadow.5 b/man/uk/man5/gshadow.5 index 3e0c857f..baa42c91 100644 --- a/man/uk/man5/gshadow.5 +++ b/man/uk/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "gshadow" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "gshadow" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man5/login.access.5 b/man/uk/man5/login.access.5 index b6bc74ee..854cfa87 100644 --- a/man/uk/man5/login.access.5 +++ b/man/uk/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "login\&.access" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "login\&.access" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man5/login.defs.5 b/man/uk/man5/login.defs.5 index ff345073..a95d5497 100644 --- a/man/uk/man5/login.defs.5 +++ b/man/uk/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "login\&.defs" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "login\&.defs" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man5/passwd.5 b/man/uk/man5/passwd.5 index 41e3e451..93539b15 100644 --- a/man/uk/man5/passwd.5 +++ b/man/uk/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "passwd" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "passwd" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,7 @@ environmental variable\&. If this field is empty, it defaults to the value .PP /etc/shadow .RS 4 -необов\*(Aqязковий файл шифрованих паролів +Optional encrypted password file\&. .RE .PP /etc/passwd\- diff --git a/man/uk/man5/porttime.5 b/man/uk/man5/porttime.5 index aba20d21..8d2090ad 100644 --- a/man/uk/man5/porttime.5 +++ b/man/uk/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "porttime" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "porttime" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man5/shadow.5 b/man/uk/man5/shadow.5 index 61e4e1d5..1d5a4afe 100644 --- a/man/uk/man5/shadow.5 +++ b/man/uk/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "shadow" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "shadow" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man5/suauth.5 b/man/uk/man5/suauth.5 index eda62c4f..b6cb6ae2 100644 --- a/man/uk/man5/suauth.5 +++ b/man/uk/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "suauth" "5" "24/06/2025" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "suauth" "5" "30/12/2025" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man8/chgpasswd.8 b/man/uk/man8/chgpasswd.8 index f09aa6c1..2f3233a2 100644 --- a/man/uk/man8/chgpasswd.8 +++ b/man/uk/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "chgpasswd" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "chgpasswd" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -92,7 +92,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/uk/man8/chpasswd.8 b/man/uk/man8/chpasswd.8 index df89254c..c00841c6 100644 --- a/man/uk/man8/chpasswd.8 +++ b/man/uk/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "chpasswd" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "chpasswd" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -108,7 +108,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/uk/man8/faillog.8 b/man/uk/man8/faillog.8 index 3db0ba32..9ecfc607 100644 --- a/man/uk/man8/faillog.8 +++ b/man/uk/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "faillog" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "faillog" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -113,7 +113,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/uk/man8/groupadd.8 b/man/uk/man8/groupadd.8 index de38181b..a350663c 100644 --- a/man/uk/man8/groupadd.8 +++ b/man/uk/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "groupadd" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "groupadd" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,7 +135,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/uk/man8/groupdel.8 b/man/uk/man8/groupdel.8 index 080a86aa..dcc33824 100644 --- a/man/uk/man8/groupdel.8 +++ b/man/uk/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "groupdel" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "groupdel" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/uk/man8/groupmems.8 b/man/uk/man8/groupmems.8 index 4520a0c8..6b679013 100644 --- a/man/uk/man8/groupmems.8 +++ b/man/uk/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "groupmems" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "groupmems" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -107,7 +107,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "КОНФІГУРАЦІЯ" .PP diff --git a/man/uk/man8/groupmod.8 b/man/uk/man8/groupmod.8 index fcf8d6b1..e118cadf 100644 --- a/man/uk/man8/groupmod.8 +++ b/man/uk/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "groupmod" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "groupmod" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -117,7 +117,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/uk/man8/grpck.8 b/man/uk/man8/grpck.8 index 45668b08..b350179d 100644 --- a/man/uk/man8/grpck.8 +++ b/man/uk/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "grpck" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "grpck" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -148,7 +148,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/uk/man8/lastlog.8 b/man/uk/man8/lastlog.8 index d64fe99b..9a90c545 100644 --- a/man/uk/man8/lastlog.8 +++ b/man/uk/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "lastlog" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "lastlog" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ Print only lastlog records older than .RS 4 Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,14 +73,14 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/uk/man8/logoutd.8 b/man/uk/man8/logoutd.8 index 914fa160..f73e61e1 100644 --- a/man/uk/man8/logoutd.8 +++ b/man/uk/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "logoutd" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "logoutd" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man8/newusers.8 b/man/uk/man8/newusers.8 index d38baecb..de2e69c1 100644 --- a/man/uk/man8/newusers.8 +++ b/man/uk/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "newusers" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "newusers" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -53,7 +53,7 @@ It can be the name of a new user or the name of an existing user (or a user crea .PP \fIpw_passwd\fR .RS 4 -Це поле буде зашифровано і використано як нове значення зашифрованого пароля\&. +If this field is not empty, it will be encrypted and used as the new value of the encrypted password\&. .RE .PP \fIpw_uid\fR @@ -161,7 +161,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/uk/man8/nologin.8 b/man/uk/man8/nologin.8 index 5f46f563..2e523ef9 100644 --- a/man/uk/man8/nologin.8 +++ b/man/uk/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "nologin" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "nologin" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man8/pwck.8 b/man/uk/man8/pwck.8 index a88233cc..58e8bc88 100644 --- a/man/uk/man8/pwck.8 +++ b/man/uk/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "pwck" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "pwck" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -222,7 +222,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/uk/man8/pwconv.8 b/man/uk/man8/pwconv.8 index 1f0ea9d0..78f904f6 100644 --- a/man/uk/man8/pwconv.8 +++ b/man/uk/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "pwconv" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "pwconv" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -128,7 +128,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "ВАДИ" .PP diff --git a/man/uk/man8/sulogin.8 b/man/uk/man8/sulogin.8 index 10e360c0..d1361bcf 100644 --- a/man/uk/man8/sulogin.8 +++ b/man/uk/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "sulogin" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "sulogin" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/uk/man8/useradd.8 b/man/uk/man8/useradd.8 index 6eea38f2..9997030b 100644 --- a/man/uk/man8/useradd.8 +++ b/man/uk/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "useradd" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "useradd" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -347,7 +347,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/uk/man8/userdel.8 b/man/uk/man8/userdel.8 index fd9b9611..3663803e 100644 --- a/man/uk/man8/userdel.8 +++ b/man/uk/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "userdel" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "userdel" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,7 +74,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/uk/man8/usermod.8 b/man/uk/man8/usermod.8 index 1df4445a..983e1b5c 100644 --- a/man/uk/man8/usermod.8 +++ b/man/uk/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "usermod" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "usermod" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,7 +188,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/uk/man8/vipw.8 b/man/uk/man8/vipw.8 index 1e45ab27..a69c95f7 100644 --- a/man/uk/man8/vipw.8 +++ b/man/uk/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 24/06/2025 +.\" Date: 30/12/2025 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Ukrainian .\" -.TH "vipw" "8" "24/06/2025" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "vipw" "8" "30/12/2025" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/useradd.8.xml b/man/useradd.8.xml index fd9ff697..e6db7f6d 100644 --- a/man/useradd.8.xml +++ b/man/useradd.8.xml @@ -515,6 +515,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/userdel.8.xml b/man/userdel.8.xml index 32851f11..e10a6af8 100644 --- a/man/userdel.8.xml +++ b/man/userdel.8.xml @@ -120,6 +120,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/usermod.8.xml b/man/usermod.8.xml index 61b5e3a9..2c704ab5 100644 --- a/man/usermod.8.xml +++ b/man/usermod.8.xml @@ -337,6 +337,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/vipw.8.xml b/man/vipw.8.xml index fb80582b..7888f0a6 100644 --- a/man/vipw.8.xml +++ b/man/vipw.8.xml @@ -120,6 +120,7 @@ directory and use the configuration files from the CHROOT_DIR directory. Only absolute paths are supported. + No SELINUX support. diff --git a/man/zh_CN/Makefile.in b/man/zh_CN/Makefile.in index 29257420..9bc98369 100644 --- a/man/zh_CN/Makefile.in +++ b/man/zh_CN/Makefile.in @@ -169,6 +169,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -197,7 +198,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -241,7 +241,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/man/zh_CN/man1/chage.1 b/man/zh_CN/man1/chage.1 index 79b2140a..ea6831f9 100644 --- a/man/zh_CN/man1/chage.1 +++ b/man/zh_CN/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "CHAGE" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHAGE" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -138,7 +138,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/zh_CN/man1/chfn.1 b/man/zh_CN/man1/chfn.1 index 76a47097..ef63016d 100644 --- a/man/zh_CN/man1/chfn.1 +++ b/man/zh_CN/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "CHFN" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHFN" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -87,7 +87,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. +directory\&. No SELINUX support\&. .RE .PP \fB\-u\fR, \fB\-\-help\fR diff --git a/man/zh_CN/man1/chsh.1 b/man/zh_CN/man1/chsh.1 index 2507d00f..80b877e1 100644 --- a/man/zh_CN/man1/chsh.1 +++ b/man/zh_CN/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "CHSH" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "CHSH" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -54,7 +54,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR @@ -72,13 +72,9 @@ marks\&. .SH "注意" .PP The only restriction placed on the login shell is that the command name must be listed in -/etc/shells, unless the invoker is the superuser, and then any value may be added\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing -/bin/rsh -in -/etc/shells -is discouraged since accidentally changing to a restricted shell would prevent the user from ever changing her login shell back to its original value\&. +/etc/shells\&. .PP -For this reason, placing +If the invoker is the superuser any value may be added regardless what is defined in the configuration files\&. An account with a restricted login shell may not change her login shell\&. For this reason, placing /bin/rsh in /etc/shells diff --git a/man/zh_CN/man1/expiry.1 b/man/zh_CN/man1/expiry.1 index a59839de..18186461 100644 --- a/man/zh_CN/man1/expiry.1 +++ b/man/zh_CN/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "EXPIRY" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "EXPIRY" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man1/gpasswd.1 b/man/zh_CN/man1/gpasswd.1 index af4af255..a0137eab 100644 --- a/man/zh_CN/man1/gpasswd.1 +++ b/man/zh_CN/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "GPASSWD" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "GPASSWD" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -98,7 +98,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-r\fR, \fB\-\-remove\-password\fR diff --git a/man/zh_CN/man1/login.1 b/man/zh_CN/man1/login.1 index 2f4f7705..4df788b0 100644 --- a/man/zh_CN/man1/login.1 +++ b/man/zh_CN/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "LOGIN" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "LOGIN" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -100,7 +100,7 @@ from the shell prompt without .RS 4 不要执行认证,用户已经预认证过。 .sp -Note: In that case, +Note: in that case, \fIusername\fR is mandatory\&. .RE diff --git a/man/zh_CN/man1/newgrp.1 b/man/zh_CN/man1/newgrp.1 index 1fed3ca7..c8d678a1 100644 --- a/man/zh_CN/man1/newgrp.1 +++ b/man/zh_CN/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "NEWGRP" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "NEWGRP" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man1/passwd.1 b/man/zh_CN/man1/passwd.1 index 7a6544bb..0eb3c219 100644 --- a/man/zh_CN/man1/passwd.1 +++ b/man/zh_CN/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "PASSWD" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "PASSWD" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/zh_CN/man1/sg.1 b/man/zh_CN/man1/sg.1 index b429f50d..c4b16260 100644 --- a/man/zh_CN/man1/sg.1 +++ b/man/zh_CN/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "SG" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SG" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -31,7 +31,7 @@ sg \- 以不同的组 ID 执行命令 .SH "大纲" .HP \w'\fBsg\fR\ 'u -\fBsg\fR [\-] [group\ [\-c\ ]\ command] +\fBsg\fR [\fI\-\fR] \fIgroup\fR [[\fI\-c\fR]\ \fIcommand\fR] .SH "描述" .PP The @@ -51,9 +51,27 @@ is that some shells treat specially, replacing themselves with a new instance of a shell that \fBnewgrp\fR creates\&. This doesn\*(Aqt happen with -\fBsg\fR, so upon exit from a +\fBsg\fR, so upon exit from an \fBsg\fR command you are returned to your previous group ID\&. +.SH "选项" +.PP +The options which apply to the +\fBsg\fR +command are: +.PP +\fB\-\fR, \fB\-l\fR +.RS 4 +Start the shell as a login shell\&. +.RE +.PP +\fB\-c\fR +.RS 4 +Specify a command that will be invoked by the shell using its +\fB\-c\fR\&. +.sp +This is the default; for backward compatibility\&. +.RE .SH "配置文件" .PP The following configuration variables in diff --git a/man/zh_CN/man1/su.1 b/man/zh_CN/man1/su.1 index 0f7a4c20..7e5b0d83 100644 --- a/man/zh_CN/man1/su.1 +++ b/man/zh_CN/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: User Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "SU" "1" "2025-06-24" "shadow\-utils 4\&.18\&.0" "User Commands" +.TH "SU" "1" "2025-12-30" "shadow\-utils 4\&.19\&.0" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man3/shadow.3 b/man/zh_CN/man3/shadow.3 index d9878721..574cfc10 100644 --- a/man/zh_CN/man3/shadow.3 +++ b/man/zh_CN/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: Library Calls -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "SHADOW" "3" "2025-06-24" "shadow\-utils 4\&.18\&.0" "Library Calls" +.TH "SHADOW" "3" "2025-12-30" "shadow\-utils 4\&.19\&.0" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/faillog.5 b/man/zh_CN/man5/faillog.5 index 0ad7874d..0cd39ed2 100644 --- a/man/zh_CN/man5/faillog.5 +++ b/man/zh_CN/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "FAILLOG" "5" "2025-06-24" "shadow\-utils 4\&.18\&.0" "File Formats and Configuratio" +.TH "FAILLOG" "5" "2025-12-30" "shadow\-utils 4\&.19\&.0" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/gshadow.5 b/man/zh_CN/man5/gshadow.5 index 1a3f5e77..e4a0f644 100644 --- a/man/zh_CN/man5/gshadow.5 +++ b/man/zh_CN/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "GSHADOW" "5" "2025-06-24" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "GSHADOW" "5" "2025-12-30" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/limits.5 b/man/zh_CN/man5/limits.5 index bd1acd12..cc4670ea 100644 --- a/man/zh_CN/man5/limits.5 +++ b/man/zh_CN/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "LIMITS" "5" "2025-06-24" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LIMITS" "5" "2025-12-30" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/login.access.5 b/man/zh_CN/man5/login.access.5 index 17ee8181..8d6d533a 100644 --- a/man/zh_CN/man5/login.access.5 +++ b/man/zh_CN/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "LOGIN\&.ACCESS" "5" "2025-06-24" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.ACCESS" "5" "2025-12-30" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/login.defs.5 b/man/zh_CN/man5/login.defs.5 index c579a0a7..efe5f5ec 100644 --- a/man/zh_CN/man5/login.defs.5 +++ b/man/zh_CN/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "LOGIN\&.DEFS" "5" "2025-06-24" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "LOGIN\&.DEFS" "5" "2025-12-30" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/passwd.5 b/man/zh_CN/man5/passwd.5 index 56bf941e..4e2f232f 100644 --- a/man/zh_CN/man5/passwd.5 +++ b/man/zh_CN/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "PASSWD" "5" "2025-06-24" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PASSWD" "5" "2025-12-30" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -169,7 +169,7 @@ environmental variable\&. If this field is empty, it defaults to the value .PP /etc/shadow .RS 4 -可选的加密后的密码文件 +Optional encrypted password file\&. .RE .PP /etc/passwd\- diff --git a/man/zh_CN/man5/porttime.5 b/man/zh_CN/man5/porttime.5 index 74ca8f7c..9ab4dae4 100644 --- a/man/zh_CN/man5/porttime.5 +++ b/man/zh_CN/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "PORTTIME" "5" "2025-06-24" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "PORTTIME" "5" "2025-12-30" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/shadow.5 b/man/zh_CN/man5/shadow.5 index a5f86c58..44ec7069 100644 --- a/man/zh_CN/man5/shadow.5 +++ b/man/zh_CN/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "SHADOW" "5" "2025-06-24" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SHADOW" "5" "2025-12-30" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/suauth.5 b/man/zh_CN/man5/suauth.5 index eb8e8488..bedc8b5d 100644 --- a/man/zh_CN/man5/suauth.5 +++ b/man/zh_CN/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: File Formats and Configuration Files -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "SUAUTH" "5" "2025-06-24" "shadow\-utils 4\&.18\&.0" "File Formats and Configuration" +.TH "SUAUTH" "5" "2025-12-30" "shadow\-utils 4\&.19\&.0" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/chgpasswd.8 b/man/zh_CN/man8/chgpasswd.8 index c76be30d..56710066 100644 --- a/man/zh_CN/man8/chgpasswd.8 +++ b/man/zh_CN/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "CHGPASSWD" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHGPASSWD" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -92,7 +92,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/zh_CN/man8/chpasswd.8 b/man/zh_CN/man8/chpasswd.8 index bb294269..f08d171e 100644 --- a/man/zh_CN/man8/chpasswd.8 +++ b/man/zh_CN/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "CHPASSWD" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "CHPASSWD" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -108,7 +108,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/zh_CN/man8/faillog.8 b/man/zh_CN/man8/faillog.8 index ed59abbf..47225aa6 100644 --- a/man/zh_CN/man8/faillog.8 +++ b/man/zh_CN/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "FAILLOG" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "FAILLOG" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -113,7 +113,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/zh_CN/man8/groupadd.8 b/man/zh_CN/man8/groupadd.8 index 6e53a168..90a6f753 100644 --- a/man/zh_CN/man8/groupadd.8 +++ b/man/zh_CN/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "GROUPADD" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPADD" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,7 +135,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/zh_CN/man8/groupdel.8 b/man/zh_CN/man8/groupdel.8 index 162d6957..07050fea 100644 --- a/man/zh_CN/man8/groupdel.8 +++ b/man/zh_CN/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "GROUPDEL" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPDEL" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -60,7 +60,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/zh_CN/man8/groupmems.8 b/man/zh_CN/man8/groupmems.8 index 235552b2..af469206 100644 --- a/man/zh_CN/man8/groupmems.8 +++ b/man/zh_CN/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "GROUPMEMS" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMEMS" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -107,7 +107,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "SETUP" .PP diff --git a/man/zh_CN/man8/groupmod.8 b/man/zh_CN/man8/groupmod.8 index 4a28385e..98a52618 100644 --- a/man/zh_CN/man8/groupmod.8 +++ b/man/zh_CN/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "GROUPMOD" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GROUPMOD" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -117,7 +117,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/zh_CN/man8/grpck.8 b/man/zh_CN/man8/grpck.8 index d61ab0cc..e4785dce 100644 --- a/man/zh_CN/man8/grpck.8 +++ b/man/zh_CN/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "GRPCK" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "GRPCK" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -148,7 +148,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/zh_CN/man8/lastlog.8 b/man/zh_CN/man8/lastlog.8 index 3eb9fd3b..8f478198 100644 --- a/man/zh_CN/man8/lastlog.8 +++ b/man/zh_CN/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "LASTLOG" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LASTLOG" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ Print only lastlog records older than .RS 4 Clear lastlog record of a user\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR @@ -73,14 +73,14 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-S\fR, \fB\-\-set\fR .RS 4 Set lastlog record of a user to the current time\&. This option can be used only together with \fB\-u\fR -(\fB\-\-user\fR))\&. +(\fB\-\-user\fR)\&. .RE .PP \fB\-t\fR, \fB\-\-time\fR\ \&\fIDAYS\fR diff --git a/man/zh_CN/man8/logoutd.8 b/man/zh_CN/man8/logoutd.8 index dba590b5..7f29ab36 100644 --- a/man/zh_CN/man8/logoutd.8 +++ b/man/zh_CN/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "LOGOUTD" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "LOGOUTD" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/newusers.8 b/man/zh_CN/man8/newusers.8 index c691bebf..397a1ae8 100644 --- a/man/zh_CN/man8/newusers.8 +++ b/man/zh_CN/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "NEWUSERS" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NEWUSERS" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -53,7 +53,7 @@ It can be the name of a new user or the name of an existing user (or a user crea .PP \fIpw_passwd\fR .RS 4 -此字段将被加密然后用于加密后密码的新值。 +If this field is not empty, it will be encrypted and used as the new value of the encrypted password\&. .RE .PP \fIpw_uid\fR @@ -161,7 +161,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sha\-rounds\fR diff --git a/man/zh_CN/man8/nologin.8 b/man/zh_CN/man8/nologin.8 index 3c23dd02..6c530dec 100644 --- a/man/zh_CN/man8/nologin.8 +++ b/man/zh_CN/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "NOLOGIN" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "NOLOGIN" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/pwck.8 b/man/zh_CN/man8/pwck.8 index 2f211362..0892e262 100644 --- a/man/zh_CN/man8/pwck.8 +++ b/man/zh_CN/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "PWCK" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCK" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -222,7 +222,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-sort\fR diff --git a/man/zh_CN/man8/pwconv.8 b/man/zh_CN/man8/pwconv.8 index 26a82fdd..29d835bb 100644 --- a/man/zh_CN/man8/pwconv.8 +++ b/man/zh_CN/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "PWCONV" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "PWCONV" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -128,7 +128,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .SH "缺陷" .PP diff --git a/man/zh_CN/man8/sulogin.8 b/man/zh_CN/man8/sulogin.8 index ca61d152..9a96404f 100644 --- a/man/zh_CN/man8/sulogin.8 +++ b/man/zh_CN/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "SULOGIN" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "SULOGIN" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/useradd.8 b/man/zh_CN/man8/useradd.8 index ed9cc9c3..1ad48d5c 100644 --- a/man/zh_CN/man8/useradd.8 +++ b/man/zh_CN/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "USERADD" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERADD" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -347,7 +347,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/zh_CN/man8/userdel.8 b/man/zh_CN/man8/userdel.8 index 62272147..ed76f417 100644 --- a/man/zh_CN/man8/userdel.8 +++ b/man/zh_CN/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "USERDEL" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERDEL" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -74,7 +74,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/zh_CN/man8/usermod.8 b/man/zh_CN/man8/usermod.8 index f35b8f58..b4a738c3 100644 --- a/man/zh_CN/man8/usermod.8 +++ b/man/zh_CN/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "USERMOD" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "USERMOD" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -188,7 +188,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-P\fR, \fB\-\-prefix\fR\ \&\fIPREFIX_DIR\fR diff --git a/man/zh_CN/man8/vipw.8 b/man/zh_CN/man8/vipw.8 index 998c9878..944866d8 100644 --- a/man/zh_CN/man8/vipw.8 +++ b/man/zh_CN/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets vsnapshot -.\" Date: 2025-06-24 +.\" Date: 2025-12-30 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.18.0 +.\" Source: shadow-utils 4.19.0 .\" Language: Chinese Simplified .\" -.TH "VIPW" "8" "2025-06-24" "shadow\-utils 4\&.18\&.0" "System Management Commands" +.TH "VIPW" "8" "2025-12-30" "shadow\-utils 4\&.19\&.0" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -86,7 +86,7 @@ Apply changes in the \fICHROOT_DIR\fR directory and use the configuration files from the \fICHROOT_DIR\fR -directory\&. Only absolute paths are supported\&. +directory\&. Only absolute paths are supported\&. No SELINUX support\&. .RE .PP \fB\-s\fR, \fB\-\-shadow\fR diff --git a/man/zh_TW/Makefile.in b/man/zh_TW/Makefile.in index 36bb9040..0a336c12 100644 --- a/man/zh_TW/Makefile.in +++ b/man/zh_TW/Makefile.in @@ -164,6 +164,7 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -192,7 +193,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -236,7 +236,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/po/POTFILES.in b/po/POTFILES.in index a925b235..8d8ae28a 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -21,13 +21,11 @@ lib/find_new_gid.c lib/find_new_sub_gids.c lib/find_new_sub_uids.c lib/find_new_uid.c -lib/fputsx.c lib/getdef.c lib/getgr_nam_gid.c lib/getrange.c lib/groupio.c lib/groupmem.c -lib/gshadow.c lib/hushed.c lib/idmapping.c lib/isexpired.c @@ -57,10 +55,9 @@ lib/selinux.c lib/semanage.c lib/setugid.c lib/setupenv.c -lib/sgetgrent.c -lib/sgetpwent.c -lib/sgetspent.c lib/sgroupio.c +lib/shadow/group/sgetgrent.c +lib/shadow/passwd/sgetpwent.c lib/shadowio.c lib/shadowmem.c lib/shell.c diff --git a/po/bs.po b/po/bs.po index 5b42b25f..3f418146 100644 --- a/po/bs.po +++ b/po/bs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2004-05-09 12:03+0100\n" "Last-Translator: Safir Šećerović \n" "Language-Team: Bosnian \n" @@ -889,6 +889,10 @@ msgstr "" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: grupa %s postoji\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: grupa %s postoji\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: grupa %s postoji\n" @@ -1131,7 +1135,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, c-format @@ -1259,6 +1265,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "" @@ -1559,7 +1570,7 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "" -msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "" #, fuzzy, c-format diff --git a/po/ca.gmo b/po/ca.gmo index 89875f28..d11c81b8 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index 578602c0..26457b44 100644 --- a/po/ca.po +++ b/po/ca.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2024-08-11 21:26+0100\n" "Last-Translator: Carles Pina i Estany \n" "Language-Team: Catalan \n" @@ -975,6 +975,11 @@ msgstr "%s: s'ha detectat un error, els canvis s'han ignorat\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (línia %d, usuari %s) contrasenya sense canviar\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (línia %d, usuari %s) contrasenya sense canviar\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1266,7 +1271,11 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system genera un compte del sistema\n" -msgid " -U, --users USERS list of user members of this group\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" " -U, --users USUARIS llista dels usuaris membres d'aquest grup\n" @@ -1415,6 +1424,14 @@ msgstr "" " -p, --password PASSWORD canvia la contrasenya per aquesta (xifrada)\n" " PASSWORD\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" +" -U, --users USUARIS llista dels usuaris membres d'aquest grup\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: el nom de grup «%s» no és vàlid\n" @@ -1757,7 +1774,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Forma d'ús: newgrp [-] [grup]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Forma d'ús: sg grup [[-c] ordre]\n" #, c-format diff --git a/po/cs.gmo b/po/cs.gmo index 5d0ba1ba..3856f63c 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index d2d8b058..dd34b255 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2014-08-24 15:07+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" @@ -965,6 +965,11 @@ msgstr "%s: chyba, změny budou ignorovány\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (řádek %d: uživatel %s) heslo nebylo změněno\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (řádek %d: uživatel %s) heslo nebylo změněno\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1242,7 +1247,9 @@ msgstr " -r, --system vytvoří systémový účet\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list vypíše členy skupiny\n" #, fuzzy, c-format @@ -1392,6 +1399,13 @@ msgid "" " PASSWORD\n" msgstr " -p, --password HESLO změní heslo na (šifrované) HESLO\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list vypíše členy skupiny\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: neplatné jméno skupiny „%s“\n" @@ -1734,7 +1748,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Použití: newgrp [-] [skupina]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Použití: sg skupina [[-c] příkaz]\n" #, c-format diff --git a/po/da.gmo b/po/da.gmo index d74e1b26..da736e61 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index d601c433..20666edd 100644 --- a/po/da.po +++ b/po/da.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2012-01-26 23:57+0100\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" @@ -986,6 +986,11 @@ msgstr "%s: Fejl opdaget, ændringerne blev ignoreret\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (Linje %d, bruger %s) adgangskode ikke ændret\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (Linje %d, bruger %s) adgangskode ikke ændret\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1265,7 +1270,9 @@ msgstr " -r, --system opret en systemkonto\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list vis medlemmer af gruppen\n" #, fuzzy, c-format @@ -1422,6 +1429,13 @@ msgstr "" " -p, --password ADGANGSKODE ændr adgangskoden til denne (krypteret)\n" " ADGANGSKODE\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list vis medlemmer af gruppen\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: Ugyldigt gruppenavn »%s«\n" @@ -1755,7 +1769,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Brug: newgrp [-] [gruppe]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Brug: sg gruppe [[-c] kommando]\n" #, fuzzy, c-format diff --git a/po/de.gmo b/po/de.gmo index 52dbcfb2..f2f997f5 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index a64e9fac..0594ca21 100644 --- a/po/de.po +++ b/po/de.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.2-2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2020-09-22 15:10+0200\n" "Last-Translator: Björn Esser \n" "Language-Team: German \n" @@ -997,6 +997,11 @@ msgstr "%s: Fehler entdeckt, Änderungen verworfen\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (Zeile %d, Benutzer %s) Passwort nicht geändert\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (Zeile %d, Benutzer %s) Passwort nicht geändert\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1288,7 +1293,9 @@ msgstr " -r, --system Ein Systemkonto erstellen\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list Die Mitglieder der Gruppe auflisten\n" #, fuzzy, c-format @@ -1449,6 +1456,13 @@ msgstr "" " -p, --password PASSWORT Das Passwort auf dieses (verschlüsselte)\n" " PASSWORT ändern\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list Die Mitglieder der Gruppe auflisten\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: Ungültiger Gruppenname »%s«\n" @@ -1792,7 +1806,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Aufruf: newgrp [-] [Gruppe]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Aufruf: sg Gruppe [[-c] Befehl]\n" #, fuzzy, c-format diff --git a/po/dz.gmo b/po/dz.gmo index 8515fc42..db1508d5 100644 Binary files a/po/dz.gmo and b/po/dz.gmo differ diff --git a/po/dz.po b/po/dz.po index 6e2b684a..59771609 100644 --- a/po/dz.po +++ b/po/dz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2006-06-01 15:28+0530\n" "Last-Translator: Jurmey Rabgay \n" "Language-Team: dzongkha \n" @@ -907,6 +907,10 @@ msgstr "%s: འཛོལ་བ་སྐྱོན་འཛིན་འབད་ msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: ལག་ལེན་པ་ %sའདི་ མེད།\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: ལག་ལེན་པ་ %sའདི་ མེད།\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: ལག་ལེན་པ་ %sའདི་ མེད།\n" @@ -1152,7 +1156,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1281,6 +1287,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "ནུས་མེད་སྡེཚན་གྱི་མིང་ '%s'\n" @@ -1591,7 +1602,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "ལག་ལེན་: newgrp [-][ སྡེ་ཚན་]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "ལག་ལེན་: sg group [[-c]བརྡ་བཀོད་ ]\n" #, fuzzy, c-format diff --git a/po/el.gmo b/po/el.gmo index 996263b1..a752125d 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index b787426d..b70fcb23 100644 --- a/po/el.po +++ b/po/el.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow_po_el\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2012-01-21 00:22+0200\n" "Last-Translator: Thomas Vasileiou \n" "Language-Team: Greek \n" @@ -1003,6 +1003,11 @@ msgstr "%s: Ανιχνεύτηκε σφάλμα, οι αλλαγές αγνοή msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (γραμμή %d, χρήστης %s) το συνθηματικό δεν άλλαξε\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (γραμμή %d, χρήστης %s) το συνθηματικό δεν άλλαξε\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1294,7 +1299,9 @@ msgstr " -r, --system δημιουργία λογαριασμ #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list λίστα όλων των μελών της ομάδας\n" #, fuzzy, c-format @@ -1450,6 +1457,13 @@ msgstr "" "(κρυπτογραφημένο)\n" " ΣΥΝΘΗΜΑΤΙΚΟ\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list λίστα όλων των μελών της ομάδας\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: μη έγκυρο όνομα ομάδας '%s'\n" @@ -1791,7 +1805,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Χρήση: newgrp [-] [ομάδα]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Χρήση: sg ομάδα [[-c] εντολή]\n" #, fuzzy, c-format diff --git a/po/es.gmo b/po/es.gmo index 790b20cd..fe6bb965 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 2c8e1f11..54863bfa 100644 --- a/po/es.po +++ b/po/es.po @@ -32,7 +32,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.4.2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2011-11-23 23:56+0100\n" "Last-Translator: Francisco Javier Cuadrado \n" "Language-Team: Debian l10n Spanish \n" @@ -1014,6 +1014,11 @@ msgstr "%s: error detectado, cambios ignorados\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (línea %d, usuario %s) la contraseña no ha cambiado\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (línea %d, usuario %s) la contraseña no ha cambiado\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1302,7 +1307,9 @@ msgstr " -r, --system crea una cuenta del sistema\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list lista los miembros del grupo\n" #, fuzzy, c-format @@ -1454,6 +1461,13 @@ msgid "" msgstr "" " -p, --password CONTRASEÑA cambia la contraseña a CONTRASEÑA (cifrada)\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list lista los miembros del grupo\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: nombre del grupo «%s» incorrecto\n" @@ -1793,7 +1807,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Modo de uso: newgrp [-] [grupo]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Modo de uso: sg grupo [[-c] orden]\n" #, fuzzy, c-format diff --git a/po/eu.gmo b/po/eu.gmo index e891d3e3..8a934368 100644 Binary files a/po/eu.gmo and b/po/eu.gmo differ diff --git a/po/eu.po b/po/eu.po index d93f5987..f78b0ea4 100644 --- a/po/eu.po +++ b/po/eu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: eu\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2011-11-26 19:42+0100\n" "Last-Translator: Piarres Beobide \n" "Language-Team: Euskara \n" @@ -955,6 +955,11 @@ msgstr "%s:errorea atzeman da, aldaketak alde batera utzi dira\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: `(%d lerroa, %s erabiltzailea) pasahitza ez da aldatu\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: `(%d lerroa, %s erabiltzailea) pasahitza ez da aldatu\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1235,7 +1240,9 @@ msgstr " -r, --system sistema kontu bat sortu\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list taldearen partaideak zerrendatu\n" #, fuzzy, c-format @@ -1388,6 +1395,13 @@ msgid "" " PASSWORD\n" msgstr "" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list taldearen partaideak zerrendatu\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: '%s' talde izen baliogabea\n" @@ -1725,7 +1739,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Erabilera: newgrp [-] [taldea]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Erabilera: sg taldea [[-c] komandoa]\n" #, fuzzy, c-format diff --git a/po/fi.gmo b/po/fi.gmo index f5bee29a..b32886b3 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index cb0440dd..94d4d1d7 100644 --- a/po/fi.po +++ b/po/fi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2007-11-24 22:54+0100\n" "Last-Translator: Tommi Vainikainen \n" "Language-Team: Finnish \n" @@ -903,6 +903,10 @@ msgstr "%s: virhe havaittu, muutokset ohitetaan\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: käyttäjää %s ei ole olemassa\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: käyttäjää %s ei ole olemassa\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: käyttäjää %s ei ole olemassa\n" @@ -1148,7 +1152,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1277,6 +1283,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "virheellinen ryhmänimi \"%s\"\n" @@ -1588,7 +1599,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Käyttö: newgrp [-] [ryhmä]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Käyttö: sg ryhmä [[-c] komento]\n" #, fuzzy, c-format diff --git a/po/fr.gmo b/po/fr.gmo index ea6893b8..04bd955c 100644 Binary files a/po/fr.gmo and b/po/fr.gmo differ diff --git a/po/fr.po b/po/fr.po index be99be8e..fd67eef0 100644 --- a/po/fr.po +++ b/po/fr.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow-man-pages 4.16.0\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2024-07-06 15:36+0200\n" "Last-Translator: bubu \n" "Language-Team: French \n" @@ -1019,6 +1019,11 @@ msgstr "%s : erreur détectée, changements ignorés\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s : (ligne %d, utilisateur %s) mot de passe inchangé\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s : (ligne %d, utilisateur %s) mot de passe inchangé\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1315,7 +1320,11 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system créer un compte système\n" -msgid " -U, --users USERS list of user members of this group\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" " -U, --users USERS liste des utilisateurs membres de ce groupe\n" @@ -1468,6 +1477,14 @@ msgstr "" " -p, --password PASSWORD changer le mot de passe par\n" " PASSWORD (chiffré)\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" +" -U, --users USERS liste des utilisateurs membres de ce groupe\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s : nom de groupe '%s' non valable\n" @@ -1816,7 +1833,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Utilisation : newgrp [-] [group]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Utilisation : sg group [[-c] commande]\n" #, c-format diff --git a/po/gl.gmo b/po/gl.gmo index c06f7be2..e4e7d502 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index 00c5ccff..1867313a 100644 --- a/po/gl.po +++ b/po/gl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2006-07-18 23:27+0200\n" "Last-Translator: Jacobo Tarrio \n" "Language-Team: Galician \n" @@ -903,6 +903,10 @@ msgstr "%s: detectouse un erro, ignóranse os cambios\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: o usuario %s non existe\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: o usuario %s non existe\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: o usuario %s non existe\n" @@ -1148,7 +1152,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1277,6 +1283,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "nome de grupo \"%s\" non válido\n" @@ -1587,7 +1598,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Emprego: newgrp [-] [grupo]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Emprego: sg grupo [[-c] orde]\n" #, fuzzy, c-format diff --git a/po/he.po b/po/he.po index 1b7ebaed..1648c78d 100644 --- a/po/he.po +++ b/po/he.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2004-07-21 23:59+0300\n" "Last-Translator: Lior Kaplan \n" "Language-Team: Hebrew \n" @@ -896,6 +896,10 @@ msgstr "%s: שגיאה זוהתה, מתעלם משינויים\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: שורה %d: משתמש לא מוכר %s\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: שורה %d: משתמש לא מוכר %s\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: שורה %d: משתמש לא מוכר %s\n" @@ -1138,7 +1142,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1266,6 +1272,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: שם לא חוקי: \"%s\"\n" @@ -1570,7 +1581,7 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "" -msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "" #, fuzzy, c-format diff --git a/po/hu.gmo b/po/hu.gmo index a06ca2fb..b3b7590a 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index 71c5beb6..e7bf22a7 100644 --- a/po/hu.po +++ b/po/hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2007-11-25 20:56+0100\n" "Last-Translator: SZERVÁC Attila \n" "Language-Team: Hungarian \n" @@ -898,6 +898,10 @@ msgstr "%s: hibákat észleltem, a változások elvetve\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: %s felhasználó nem létezik\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: %s felhasználó nem létezik\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: %s felhasználó nem létezik\n" @@ -1143,7 +1147,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1272,6 +1278,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "érvénytelen csoportnév: `%s'\n" @@ -1582,7 +1593,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Használat: newgrp [-] [csoport]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Használat: sg csoport [[-c] parancs]\n" #, fuzzy, c-format diff --git a/po/id.gmo b/po/id.gmo index fe6d6370..80973454 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index 89ef26da..da1ac775 100644 --- a/po/id.po +++ b/po/id.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.15\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2007-11-25 20:58+0100\n" "Last-Translator: Parlin Imanuel Toh \n" "Language-Team: Debian Indonesia \n" @@ -897,6 +897,10 @@ msgstr "%s: kesalahan terdeteksi, perubahan diabaikan\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: pengguna %s tak ada\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: pengguna %s tak ada\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: pengguna %s tak ada\n" @@ -1142,7 +1146,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1271,6 +1277,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "nama grup `%s' tidak sah\n" @@ -1581,7 +1592,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Penggunaan: newgrp [-] [grup]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Penggunaan: sg grup [[-c] perintah]\n" #, fuzzy, c-format diff --git a/po/it.gmo b/po/it.gmo index b7943e0c..2b9b2b6b 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index 19fa8444..4b9cb3e8 100644 --- a/po/it.po +++ b/po/it.po @@ -25,7 +25,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2008-03-27 14:40+0100\n" "Last-Translator: Danilo Piazzalunga \n" "Language-Team: Italian \n" @@ -946,6 +946,10 @@ msgstr "%s: rilevato un errore; le modifiche vengono ignorate\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: l'utente «%s» non esiste\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: l'utente «%s» non esiste\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: l'utente «%s» non esiste\n" @@ -1204,8 +1208,13 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +#, fuzzy +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" +" -s, --sha-rounds il numero di passaggi SHA per gli\n" +" algoritmi di cifratura SHA*\n" #, fuzzy, c-format #| msgid "invalid user name '%s'\n" @@ -1341,6 +1350,14 @@ msgid "" " PASSWORD\n" msgstr "" +#, fuzzy +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" +" -s, --sha-rounds il numero di passaggi SHA per gli\n" +" algoritmi di cifratura SHA*\n" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: nome di gruppo «%s» non valido\n" @@ -1656,7 +1673,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Uso: newgrp [-] [GRUPPO]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Uso: sg GRUPPO [[-c] COMANDO]\n" #, fuzzy, c-format diff --git a/po/ja.gmo b/po/ja.gmo index 45829fb3..12af60f2 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index bb18c7d3..426e3302 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.5\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2012-05-21 02:52+0900\n" "Last-Translator: NAKANO Takeo \n" "Language-Team: Japanese \n" @@ -968,6 +968,11 @@ msgstr "%s: エラーが検出されました。変更は行いません\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (%d 行目, ユーザ %s) パスワードは変更されませんでした\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (%d 行目, ユーザ %s) パスワードは変更されませんでした\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1247,7 +1252,9 @@ msgstr " -r, --system システムアカウントを作成し #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list グループのメンバーを表示します。\n" #, fuzzy, c-format @@ -1398,6 +1405,13 @@ msgstr "" " -p, --password PASSWORD パスワードをこの (暗号化された) PASSWORD\n" " に変更する\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list グループのメンバーを表示します。\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s '%s' はグループ名として正しくありません\n" @@ -1730,7 +1744,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "使い方: newgrp [-] [グループ]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "使い方: sg グループ [[-c] コマンド]\n" #, fuzzy, c-format diff --git a/po/ka.gmo b/po/ka.gmo index 3e24ed9b..393f49cb 100644 Binary files a/po/ka.gmo and b/po/ka.gmo differ diff --git a/po/ka.po b/po/ka.po index 04dd0cfb..81076fd0 100644 --- a/po/ka.po +++ b/po/ka.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow-utils\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2024-02-08 06:13+0100\n" "Last-Translator: Temuri Doghonadze \n" "Language-Team: Georgian <(nothing)>\n" @@ -960,6 +960,11 @@ msgstr "%s: ნაპოვნია შეცდომა. ცვლილე msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (ხაზი %d, მომხმარებელი %s) პაროლი არ შეცვლილა\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (ხაზი %d, მომხმარებელი %s) პაროლი არ შეცვლილა\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1242,7 +1247,11 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system სისტემური ანგარიშის შექმნა\n" -msgid " -U, --users USERS list of user members of this group\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -U, --users USERS ამ ჯგუფის წევრების სია\n" #, c-format @@ -1393,6 +1402,13 @@ msgstr "" " -p, --password PASSWORD მითითებული დაშიფრული \n" " პაროლის გამოყენება\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -U, --users USERS ამ ჯგუფის წევრების სია\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: არასწორი ჯგუფის სახელი \"%s\"\n" @@ -1738,7 +1754,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "გამოყენება: newgrp [-] [ჯგუფი]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "გამოყენება: sg ჯგუფი [[-c] ბრძანება]\n" #, c-format diff --git a/po/kk.gmo b/po/kk.gmo index 803efcf8..9189eced 100644 Binary files a/po/kk.gmo and b/po/kk.gmo differ diff --git a/po/kk.po b/po/kk.po index 97329ea5..60cb95cd 100644 --- a/po/kk.po +++ b/po/kk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadowutils\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2017-02-07 17:09+0500\n" "Last-Translator: Baurzhan Muftakhidinov \n" "Language-Team: Kazakh \n" @@ -977,6 +977,11 @@ msgstr "%s: қателер орын алды, өзгерістер сақтал msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (жол %d, пайдаланушы %s) пароль өзгертілмеген\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (жол %d, пайдаланушы %s) пароль өзгертілмеген\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1261,7 +1266,9 @@ msgstr " -r, --system жүйелік тіркелгіні жа #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list топ мүшелердің тізімін шығару\n" #, fuzzy, c-format @@ -1413,6 +1420,13 @@ msgid "" msgstr "" " -p, --password ПАРОЛЬ парольді осы ПАРОЛЬге (шифрленген) оранту\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list топ мүшелердің тізімін шығару\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: қате топ аты '%s'\n" @@ -1756,7 +1770,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Қолданылуы: newgrp [-] [топ]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Қолданылуы: sg топ [[-c] командасы]\n" #, c-format diff --git a/po/km.gmo b/po/km.gmo index 103e3549..1357645d 100644 Binary files a/po/km.gmo and b/po/km.gmo differ diff --git a/po/km.po b/po/km.po index 3db5b1d1..513f2849 100644 --- a/po/km.po +++ b/po/km.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow_po_km\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2006-06-28 10:08+0700\n" "Last-Translator: Khoem Sokhem \n" "Language-Team: Khmer \n" @@ -914,6 +914,10 @@ msgstr "%s ៖ បានរកឃើញ​កំហុស មិនអើពើ msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s ៖ មិនទាន់មានអ្នក​ប្រើ​ %s ទេ​\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s ៖ មិនទាន់មានអ្នក​ប្រើ​ %s ទេ​\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s ៖ មិនទាន់មានអ្នក​ប្រើ​ %s ទេ​\n" @@ -1159,7 +1163,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1288,6 +1294,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "ឈ្មោះ​ក្រុម​ '%s' មិនត្រឹមត្រូវ\n" @@ -1606,7 +1617,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "របៀបប្រើ ៖ newgrp [-] [group]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "របៀបប្រើ​ ៖ ក្រុម sg [[-c] command]\n" #, fuzzy, c-format diff --git a/po/ko.gmo b/po/ko.gmo index ce6928b2..353bfa90 100644 Binary files a/po/ko.gmo and b/po/ko.gmo differ diff --git a/po/ko.po b/po/ko.po index 6289a91a..980c30f3 100644 --- a/po/ko.po +++ b/po/ko.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2009-04-19 21:32+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: Korean \n" @@ -916,6 +916,10 @@ msgstr "%s: 오류 발견, 바뀐 내역은 무시합니다\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: %d번 줄: '%s' 사용자가 없습니다\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: %d번 줄: '%s' 사용자가 없습니다\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1168,8 +1172,11 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" -msgstr "" +#, fuzzy +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" +msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라운드 수\n" #, fuzzy, c-format #| msgid "invalid user name '%s'\n" @@ -1299,6 +1306,12 @@ msgid "" " PASSWORD\n" msgstr "" +#, fuzzy +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라운드 수\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: '%s' 그룹 이름은 쓸 수 없습니다\n" @@ -1611,7 +1624,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "사용법: newgrp [-] [그룹]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "사용법: sg group [[-c] 명령]\n" #, fuzzy, c-format diff --git a/po/nb.gmo b/po/nb.gmo index fdc77548..ba33dedb 100644 Binary files a/po/nb.gmo and b/po/nb.gmo differ diff --git a/po/nb.po b/po/nb.po index 8201237e..670c6719 100644 --- a/po/nb.po +++ b/po/nb.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2018-03-05 12:33+0100\n" "Last-Translator: Åka Sikrom \n" "Language-Team: Norwegian Bokmål \n" @@ -1009,6 +1009,12 @@ msgstr "%s: fant feil, endringer ble ikke utført\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (linje %d: bruker %s) passordet er ikke endret\n" +# , c-format +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (linje %d: bruker %s) passordet er ikke endret\n" + # , c-format #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" @@ -1303,7 +1309,9 @@ msgstr " -r, --system lag en systemkonto\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list vis gruppemedlemmer\n" #, fuzzy, c-format @@ -1467,6 +1475,13 @@ msgstr "" " -p, --password PASSORD endre passordet til valgt (kryptert)\n" " PASSORD\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list vis gruppemedlemmer\n" + # , c-format #, c-format msgid "%s: invalid group name '%s'\n" @@ -1812,7 +1827,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Bruk: newgrp [-] [gruppe]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Bruk: sg group [[-c] command]\n" # , c-format diff --git a/po/ne.gmo b/po/ne.gmo index 9aa9874e..eeff5c3a 100644 Binary files a/po/ne.gmo and b/po/ne.gmo differ diff --git a/po/ne.po b/po/ne.po index babe425a..08f423fa 100644 --- a/po/ne.po +++ b/po/ne.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2006-06-16 14:30+0545\n" "Last-Translator: Shiva Pokharel \n" "Language-Team: Nepali \n" @@ -904,6 +904,10 @@ msgstr "%s: त्रुटि पत्ता लाग्यो, परिव msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: प्रयोगकर्ता %s अवस्थित छैन\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: प्रयोगकर्ता %s अवस्थित छैन\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: प्रयोगकर्ता %s अवस्थित छैन\n" @@ -1149,7 +1153,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1278,6 +1284,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "अवैध समूह नाम '%s'\n" @@ -1588,7 +1599,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "उपयोग: newgrp [-] [group]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "उपयोग: sg group [[-c] आदेश]\n" #, fuzzy, c-format diff --git a/po/nl.gmo b/po/nl.gmo index 012b0e1e..4f5fc688 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index 9730899b..f2ffd7fa 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,22 +1,22 @@ # dutch po-file for shadow # Copyright (C) 2004 Free Software Foundation, Inc. # Bart Cornelis , 2004, 2006. -# Frans Spiesschaert , 2014-2024. +# Frans Spiesschaert , 2014-2025. # msgid "" msgstr "" -"Project-Id-Version: shadow 4.15.1\n" +"Project-Id-Version: shadow 4.19.0\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" -"PO-Revision-Date: 2024-05-09 12:30+0200\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" +"PO-Revision-Date: 2025-12-07 23:31+0100\n" "Last-Translator: Frans Spiesschaert \n" "Language-Team: Debian Dutch l10n Team \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.6\n" #, c-format msgid "Warning: unknown group %s\n" @@ -879,10 +879,9 @@ msgstr "%s: '%s' bevat niet-ASCII tekens\n" msgid "%s: '%s' contains illegal characters\n" msgstr "%s: '%s' bevat ongeldige tekens\n" -#, fuzzy, c-format -#| msgid "%s: '%s' is not a valid group name\n" +#, c-format msgid "%s: Provided user name is not a valid name\n" -msgstr "%s: '%s' is geen geldige groepsnaam\n" +msgstr "%s: De opgegeven gebruikersnaam is geen geldige naam\n" #, c-format msgid "%s: user '%s' does not exist\n" @@ -940,15 +939,13 @@ msgstr "%s: de vlaggen -c, -e, en -m zijn exclusief\n" msgid "%s: unsupported crypt method: %s\n" msgstr "%s: niet-ondersteunde encryptiemethode: %s\n" -#, fuzzy, c-format -#| msgid "%s: line %d: line too long\n" +#, c-format msgid "%s: line %jd: line too long\n" -msgstr "%s: regel %d: regel is te lang\n" +msgstr "%s: regel %jd: regel is te lang\n" -#, fuzzy, c-format -#| msgid "%s: line %d: missing new password\n" +#, c-format msgid "%s: line %jd: missing new password\n" -msgstr "%s: regel %d: nieuw wachtwoord ontbreekt\n" +msgstr "%s: regel %jd: nieuw wachtwoord ontbreekt\n" #, c-format msgid "%s: failed to crypt password with salt '%s': %s\n" @@ -956,29 +953,29 @@ msgstr "" "%s: mislukte versleuteling van het wachtwoord met toegevoegde willekeurige " "bits (salt) '%s': %s\n" -#, fuzzy, c-format -#| msgid "%s: line %d: group '%s' does not exist\n" +#, c-format msgid "%s: line %jd: group '%s' does not exist\n" -msgstr "%s: regel %d: groep '%s' bestaan niet\n" +msgstr "%s: regel %jd: groep '%s' bestaan niet\n" -#, fuzzy, c-format -#| msgid "%s: line %d: failed to prepare the new %s entry '%s'\n" +#, c-format msgid "%s: line %jd: failed to prepare the new %s entry '%s'\n" -msgstr "%s: regel %d: kon het nieuwe %s-item '%s' niet voorbereiden\n" +msgstr "%s: regel %jd: kon het nieuwe %s-item '%s' niet voorbereiden\n" #, c-format msgid "%s: error detected, changes ignored\n" msgstr "%s: fout gevonden, aanpassingen genegeerd\n" -#, fuzzy, c-format -#| msgid "%s: (line %d, user %s) password not changed\n" +#, c-format msgid "%s: (line %jd, user %s) password not changed\n" -msgstr "%s: (regel %d, gebruiker %s) wachtwoord niet gewijzigd\n" +msgstr "%s: (regel %jd, gebruiker %s) wachtwoord niet gewijzigd\n" -#, fuzzy, c-format -#| msgid "%s: line %d: user '%s' does not exist\n" +#, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (regel %jd, gebruiker %s) ongeldige wachtwoord-hash\n" + +#, c-format msgid "%s: line %jd: user '%s' does not exist\n" -msgstr "%s: regel %d: gebruiker '%s' bestaat niet\n" +msgstr "%s: regel %jd: gebruiker '%s' bestaat niet\n" msgid " -s, --shell SHELL new login shell for the user account\n" msgstr "" @@ -1257,9 +1254,13 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system een systeem-account aanmaken\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" -" -U, --users GEBRUIKERS lijst van leden-gebruikers van deze groep\n" +" -U, --users GEBRUIKERS door komma's gescheiden lijst\n" +" met gebruikers die als leden van\n" +" deze groep moeten worden toegevoegd\n" #, c-format msgid "Invalid member username %s\n" @@ -1405,6 +1406,14 @@ msgstr "" "(versleuteld)\n" " WACHTWOORD\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" +" -U, --users GEBRUIKERS door komma's gescheiden lijst\n" +" met gebruikers die als leden van\n" +" deze groep moeten worden toegevoegd\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: ongeldige groepsnaam '%s'\n" @@ -1552,14 +1561,12 @@ msgid "" msgstr "" " -u, --user GEBRUIKER lastlog-informatie over GEBRUIKER tonen\n" -#, fuzzy -#| msgid "" -#| " -a, --all display faillog records for all users\n" msgid "" " -a, --active print lastlog excluding '**Never logged " "in**' users" msgstr "" -" -a, --all aanmeldingsfouten van alle gebruikers tonen\n" +" -a, --active lastlog tonen zonder '**Nooit ingelogde**' " +"gebruikers" #, c-format msgid "Username Port From%*sLatest\n" @@ -1731,10 +1738,9 @@ msgstr "%s: setgroups opzoeken mislukte: %s\n" msgid "%s: failed to setgroups %s policy: %s\n" msgstr "%s: setgroups-beleid %s mislukte: %s\n" -#, fuzzy, c-format -#| msgid "%s: Could not stat directory for target process\n" +#, c-format msgid "%s: Could not stat directory for target process: %s\n" -msgstr "%s: Kon status van map voor doelproces niet opvragen\n" +msgstr "%s: Kon status van map voor doelproces niet opvragen: %s\n" #, c-format msgid "" @@ -1747,7 +1753,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Gebruik: newgrp [-] [groep]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Gebruik: sg groep [[-c] commando]\n" #, c-format @@ -1763,10 +1771,9 @@ msgstr "Ongeldig wachtwoord.\n" msgid "%s: failure forking: %s\n" msgstr "%s: nieuw proces beginnen is mislukt: %s\n" -#, fuzzy, c-format -#| msgid "%s: '%s' is not a valid group name\n" +#, c-format msgid "%s: provided group is not a valid group name\n" -msgstr "%s: '%s' is geen geldige groepsnaam\n" +msgstr "%s: opgegeven groep is geen geldige groepsnaam\n" #, c-format msgid "%s: GID '%lu' does not exist\n" @@ -1802,19 +1809,17 @@ msgstr "%s: ongeldig gebruikers-ID '%s'\n" msgid "%s: invalid user name '%s': use --badname to ignore\n" msgstr "%s: ongeldige gebruikersnaam '%s': gebruik --badname om te negeren\n" -#, fuzzy, c-format -#| msgid "%s: invalid user ID '%s'\n" +#, c-format msgid "%s: invalid user name '%s'\n" -msgstr "%s: ongeldig gebruikers-ID '%s'\n" +msgstr "%s: ongeldig gebruikersnaam '%s'\n" #, c-format msgid "%s: Provide '--crypt-method' before number of rounds\n" msgstr "%s: Geef '--crypt-method' op vóór het aantal rondes\n" -#, fuzzy, c-format -#| msgid "%s: line %d: invalid line\n" +#, c-format msgid "%s: line %jd: invalid line\n" -msgstr "%s: regel %d: ongeldige regel\n" +msgstr "%s: regel %jd: ongeldige regel\n" #, c-format msgid "%s: cannot update the entry of user %s (not in the passwd database)\n" @@ -1822,50 +1827,41 @@ msgstr "" "%s: kan gegevens over gebruiker %s niet bijwerken (niet in de passwd-" "database)\n" -#, fuzzy, c-format -#| msgid "%s: line %d: can't create user\n" +#, c-format msgid "%s: line %jd: can't create user\n" -msgstr "%s: regel %d: kan de gebruiker niet aanmaken\n" +msgstr "%s: regel %jd: kan de gebruiker niet aanmaken\n" -#, fuzzy, c-format -#| msgid "%s: line %d: can't create group\n" +#, c-format msgid "%s: line %jd: can't create group\n" -msgstr "%s: regel %d: kan de groep niet aanmaken\n" +msgstr "%s: regel %jd: kan de groep niet aanmaken\n" -#, fuzzy, c-format -#| msgid "%s: line %d: user '%s' does not exist in %s\n" +#, c-format msgid "%s: line %jd: user '%s' does not exist in %s\n" -msgstr "%s: regel %d: gebruiker '%s' bestaat niet in %s\n" +msgstr "%s: regel %jd: gebruiker '%s' bestaat niet in %s\n" -#, fuzzy, c-format -#| msgid "%s: line %d: %s\n" +#, c-format msgid "%s: line %jd: %s\n" -msgstr "%s: regel: %d: %s\n" +msgstr "%s: regel: %jd: %s\n" -#, fuzzy, c-format -#| msgid "%s: line %d: can't update password\n" +#, c-format msgid "%s: line %jd: can't update password\n" -msgstr "%s: regel %d: kan wachtwoord niet bijwerken\n" +msgstr "%s: regel %jd: kan wachtwoord niet bijwerken\n" -#, fuzzy, c-format -#| msgid "%s: line %d: homedir must be an absolute path\n" +#, c-format msgid "%s: line %jd: homedir must be an absolute path\n" -msgstr "%s: regel %d: thuismap moet een absoluut pad zijn\n" +msgstr "%s: regel %jd: thuismap moet een absoluut pad zijn\n" -#, fuzzy, c-format -#| msgid "%s: line %d: mkdir %s failed: %s\n" +#, c-format msgid "%s: line %jd: mkdir %s failed: %s\n" -msgstr "%s: regel %d: mkdir %s is mislukt: %s\n" +msgstr "%s: regel %jd: mkdir %s is mislukt: %s\n" -#, fuzzy, c-format -#| msgid "%s: line %d: chown %s failed: %s\n" +#, c-format msgid "%s: line %jd: chown %s failed: %s\n" -msgstr "%s: regel %d: chown %s is mislukt: %s\n" +msgstr "%s: regel %jd: chown %s is mislukt: %s\n" -#, fuzzy, c-format -#| msgid "%s: line %d: can't update entry\n" +#, c-format msgid "%s: line %jd: can't update entry\n" -msgstr "%s: regel %d: kan element niet bijwerken\n" +msgstr "%s: regel %jd: kan element niet bijwerken\n" #, c-format msgid "%s: can't find subordinate user range\n" @@ -2089,10 +2085,9 @@ msgstr "identieke regel in wachtwoordbestand" msgid "invalid user name '%s': use --badname to ignore\n" msgstr "ongeldige gebruikersnaam '%s': gebruik --badname om te negeren\n" -#, fuzzy, c-format -#| msgid "invalid group name '%s'\n" +#, c-format msgid "invalid user name '%s'\n" -msgstr "ongeldige groepsnaam '%s'\n" +msgstr "ongeldige gebruikersnaam '%s'\n" #, c-format msgid "invalid user ID '%lu'\n" @@ -2308,21 +2303,17 @@ msgstr "Systeemonderhoudsmodus wordt opgestart" msgid "%s: %s was created, but could not be removed\n" msgstr "%s: %s was aangemaakt, maar kon niet verwijderd worden\n" -#, fuzzy, c-format -#| msgid "%s: the %s configuration in %s will be ignored\n" +#, c-format msgid "%s: the %s= configuration in %s will be ignored\n" -msgstr "%s: de %s-instellingen in %s zullen genegeerd worden\n" +msgstr "%s: de configuratie %s= in %s zullen genegeerd worden\n" -#, fuzzy, c-format -#| msgid "" -#| "%s: the '%s' configuration in %s has an invalid group, ignoring the bad " -#| "group\n" +#, c-format msgid "" "%s: the '%s=' configuration in %s has an invalid group, ignoring the bad " "group\n" msgstr "" -"%s: de configuratie van '%s' in %s heeft een ongeldige groep, deze groep " -"wordt genegeerd\n" +"%s: de configuratie '%s=' in %s heeft een ongeldige groep, deze groep wordt " +"genegeerd\n" #, c-format msgid "%s: cannot create new defaults file: %s\n" @@ -3031,25 +3022,21 @@ msgstr "aanpassen van de postvak-eigenaar is mislukt" msgid "failed to rename mailbox" msgstr "hernoemen van het postvak is mislukt" -#, fuzzy, c-format -#| msgid "%s: failed to remove uid range %lu-%lu from '%s'\n" +#, c-format msgid "%s: failed to remove uid range %ju-%ju from '%s'\n" -msgstr "%s: verwijderen van UID-bereik %lu-%lu van '%s' is mislukt\n" +msgstr "%s: verwijderen van UID-bereik %ju-%ju van '%s' is mislukt\n" -#, fuzzy, c-format -#| msgid "%s: failed to add uid range %lu-%lu to '%s'\n" +#, c-format msgid "%s: failed to add uid range %ju-%ju to '%s'\n" -msgstr "%s: toevoegen van UID-bereik %lu-%lu aan '%s' is mislukt\n" +msgstr "%s: toevoegen van UID-bereik %ju-%ju aan '%s' is mislukt\n" -#, fuzzy, c-format -#| msgid "%s: failed to remove gid range %lu-%lu from '%s'\n" +#, c-format msgid "%s: failed to remove gid range %ju-%ju from '%s'\n" -msgstr "%s: verwijderen van GID-bereik %lu-%lu van '%s' is mislukt\n" +msgstr "%s: verwijderen van GID-bereik %ju-%ju van '%s' is mislukt\n" -#, fuzzy, c-format -#| msgid "%s: failed to add gid range %lu-%lu to '%s'\n" +#, c-format msgid "%s: failed to add gid range %ju-%ju to '%s'\n" -msgstr "%s: toevoegen van GID-bereik %lu-%lu aan '%s' is mislukt\n" +msgstr "%s: toevoegen van GID-bereik %ju-%ju aan '%s' is mislukt\n" #, c-format msgid "" @@ -3126,10 +3113,8 @@ msgstr "ontkoppelen van initieel bestand is mislukt" msgid "failed to stat edited file" msgstr "opvragen van status van bewerkt bestand is mislukt" -#, fuzzy -#| msgid "asprintf(3) failed" msgid "aprintf() failed" -msgstr "asprintf(3) is mislukt" +msgstr "aprintf() is mislukt" msgid "failed to create backup file" msgstr "maken van reservekopie is mislukt" @@ -3141,66 +3126,3 @@ msgstr "%s: kan %s niet herstellen: %s (uw aanpassingen staan in %s)\n" #, c-format msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: tcb-map van %s vinden is mislukt\n" - -#~ msgid "Warning: too many groups\n" -#~ msgstr "Waarschuwing: te veel groepen\n" - -#~ msgid "Environment overflow\n" -#~ msgstr "Omgeving wordt te groot\n" - -#, c-format -#~ msgid "%s: Suspiciously long symlink: %s\n" -#~ msgstr "%s: verdacht lange symbolische koppeling: %s\n" - -#, c-format -#~ msgid "%s: cannot change user '%s' on NIS client.\n" -#~ msgstr "%s: kan gebruiker '%s' niet veranderen op NIS-client.\n" - -#, c-format -#~ msgid "%s: '%s' is the NIS master for this client.\n" -#~ msgstr "%s: '%s' is de NIS-master voor deze client.\n" - -#, c-format -#~ msgid "%s: group '%s' is a NIS group\n" -#~ msgstr "%s: groep '%s' is een NIS-groep\n" - -#, c-format -#~ msgid "%s: %s is the NIS master\n" -#~ msgstr "%s: %s is de NIS-master\n" - -#, c-format -#~ msgid "%s: group %s is a NIS group\n" -#~ msgstr "%s: groep %s is een NIS-groep\n" - -#, c-format -#~ msgid "%s: unknown user %s\n" -#~ msgstr "%s: onbekende gebruiker %s\n" - -#~ msgid "Usage: id [-a]\n" -#~ msgstr "Gebruik: id [-a]\n" - -#~ msgid " groups=" -#~ msgstr " groepen=" - -#, c-format -#~ msgid " %s [-p] -r host\n" -#~ msgstr " %s [-p] -r computer\n" - -#, c-format -#~ msgid "%s: Could not stat directory for process\n" -#~ msgstr "%s: Kon status van map voor proces niet opvragen\n" - -#~ msgid "too many groups\n" -#~ msgstr "te veel groepen\n" - -#, c-format -#~ msgid "%s: cannot create new defaults file\n" -#~ msgstr "%s: kan geen nieuw bestand met standaardwaarden aanmaken\n" - -#, c-format -#~ msgid "%s: group '%s' is a NIS group.\n" -#~ msgstr "%s: groep '%s' is een NIS-groep.\n" - -#, c-format -#~ msgid "%s: user %s is a NIS user\n" -#~ msgstr "%s: gebruiker %s is een NIS-gebruiker\n" diff --git a/po/nn.gmo b/po/nn.gmo index 88d46883..48d3e53c 100644 Binary files a/po/nn.gmo and b/po/nn.gmo differ diff --git a/po/nn.po b/po/nn.po index 503efcc3..60b7b537 100644 --- a/po/nn.po +++ b/po/nn.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2004-06-03 21:41+0200\n" "Last-Translator: Håvard Korsvoll \n" "Language-Team: Norwegian (Nynorsk) \n" @@ -904,6 +904,10 @@ msgstr "%s: feil funne, endringar er ikkje utført\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: brukar %s finst ikkje\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: brukar %s finst ikkje\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: brukar %s finst ikkje\n" @@ -1149,7 +1153,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1278,6 +1284,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "ugyldig gruppenamn «%s»\n" @@ -1591,7 +1602,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Bruk: newgrp [-] [gruppe]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Bruk: sg gruppe [[-c] kommando]\n" #, fuzzy, c-format diff --git a/po/pl.gmo b/po/pl.gmo index 30b423d0..f9e39b6e 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index ddd03b6f..b4b3d2c1 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2007-11-25 20:53+0100\n" "Last-Translator: Tomasz Kłoczko \n" "Language-Team: Polish \n" @@ -908,6 +908,10 @@ msgstr "%s: wykryto błąd, zignorowano modyfikacje\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: użytkownik %s nie istnieje\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: użytkownik %s nie istnieje\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: użytkownik %s nie istnieje\n" @@ -1153,7 +1157,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1282,6 +1288,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "nieprawidłowa nazwa grupy '%s'\n" @@ -1594,7 +1605,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Użycie: newgrp [-] [grupa]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Użycie: sg grupa [[-c] polecenie]\n" #, fuzzy, c-format diff --git a/po/pt.gmo b/po/pt.gmo index 28396742..98b2d000 100644 Binary files a/po/pt.gmo and b/po/pt.gmo differ diff --git a/po/pt.po b/po/pt.po index 421d4353..d075176b 100644 --- a/po/pt.po +++ b/po/pt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2012-01-14 12:41+0000\n" "Last-Translator: Miguel Figueiredo \n" "Language-Team: Portuguese \n" @@ -996,6 +996,11 @@ msgstr "%s: foi detectado um erro, as alterações foram ignoradas\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (linha %d, utilizador %s) palavra passe não mudou\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (linha %d, utilizador %s) palavra passe não mudou\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1280,7 +1285,9 @@ msgstr " -r, --system criar uma conta de sistema\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list listar os membros do grupo\n" #, fuzzy, c-format @@ -1435,6 +1442,13 @@ msgstr "" "PALAVRAPASSE\n" " (encriptada)\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list listar os membros do grupo\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: nome de grupo '%s' inválido\n" @@ -1774,7 +1788,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Utilização: newgrp [-] [grupo]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Utilização: sg grupo [[-c] comando]\n" #, fuzzy, c-format diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index aa1d2100..c64f4ce6 100644 Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ diff --git a/po/pt_BR.po b/po/pt_BR.po index 12cdd529..e1e2c6a8 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.15\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2011-11-25 20:20+0100\n" "Last-Translator: Fred Ulisses Maranhão \n" "Language-Team: Debian-BR Project \n" @@ -973,6 +973,11 @@ msgstr "%s : erro detectado, mudanças ignoradas\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (linha %d, usuário %s) senha inalterada\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (linha %d, usuário %s) senha inalterada\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1252,7 +1257,9 @@ msgstr " -r, --system cria uma conta de sistema\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list lista os membros do grupo\n" #, fuzzy, c-format @@ -1405,6 +1412,13 @@ msgstr "" " -p, --password SENHA muda a senha para esta SENHA " "(criptografada)\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list lista os membros do grupo\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: nome de grupo '%s' inválido\n" @@ -1743,7 +1757,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Uso : newgrp [-] [grupo]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Uso : sg group [[-c] comando]\n" #, fuzzy, c-format diff --git a/po/ro.gmo b/po/ro.gmo index f1b898cc..52c68a0f 100644 Binary files a/po/ro.gmo and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po index b492c2c0..a29b5597 100644 --- a/po/ro.po +++ b/po/ro.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.16.0\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2024-08-29 20:23+0200\n" "Last-Translator: Remus-Gabriel Chelu \n" "Language-Team: Romanian \n" @@ -998,6 +998,11 @@ msgstr "%s: a fost detectată o eroare, schimbările sunt ignorate\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (linia %d, utilizatorul %s) parola nu a fost schimbată\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (linia %d, utilizatorul %s) parola nu a fost schimbată\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1292,7 +1297,11 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system creează un cont de sistem\n" -msgid " -U, --users USERS list of user members of this group\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" " -U, --users UTILIZATORI listează utilizatorii membri ai acestui " "grup\n" @@ -1447,6 +1456,15 @@ msgstr "" " -p, --password PAROLA schimbă parola în această parolă (criptată) " "PAROLA\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" +" -U, --users UTILIZATORI listează utilizatorii membri ai acestui " +"grup\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: nume de grup nevalid „%s”\n" @@ -1795,7 +1813,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Utilizare: newgrp [-] [grup]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Utilizare: sg grup [[-c] comanda]\n" #, c-format diff --git a/po/ru.gmo b/po/ru.gmo index c5fd4f86..c9986365 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index e10232d4..e4f86e5e 100644 --- a/po/ru.po +++ b/po/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.5.1-1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2017-03-05 11:14+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" @@ -1000,6 +1000,11 @@ msgstr "%s: обнаружена ошибка, изменения не были msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (строка %d, пользователь %s) пароль не изменён\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (строка %d, пользователь %s) пароль не изменён\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1291,7 +1296,9 @@ msgstr " -r, --system создавать системную г #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list перечислить всех членов группы\n" #, fuzzy, c-format @@ -1443,6 +1450,13 @@ msgstr "" " -p, --password ПАРОЛЬ изменить пароль на заданный (шифрованный)\n" " ПАРОЛЬ\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list перечислить всех членов группы\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: неверное имя группы «%s»\n" @@ -1784,7 +1798,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Использование: newgrp [-] [группа]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Использование: sg группа [[-c] команда]\n" #, c-format diff --git a/po/shadow.pot b/po/shadow.pot index 7f3379d5..66606034 100644 --- a/po/shadow.pot +++ b/po/shadow.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: shadow 4.18.0\n" +"Project-Id-Version: shadow 4.19.0\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -885,6 +885,10 @@ msgstr "" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "" +#, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "" + #, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "" @@ -1127,7 +1131,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, c-format @@ -1255,6 +1261,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "" @@ -1554,7 +1565,7 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "" -msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "" #, c-format diff --git a/po/sk.gmo b/po/sk.gmo index d05980b6..f1478467 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index 3f8f62fe..1e5850a6 100644 --- a/po/sk.po +++ b/po/sk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2011-11-26 22:06+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" @@ -947,6 +947,10 @@ msgstr "%s: zistená chyba, zmeny budú zamietnuté\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: riadok %d: používateľ „%s“ neexistuje\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: riadok %d: používateľ „%s“ neexistuje\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1219,7 +1223,9 @@ msgstr " -r, --system vytvorí systémový účet\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list vypísať členov skupiny\n" #, fuzzy, c-format @@ -1363,6 +1369,13 @@ msgid "" " PASSWORD\n" msgstr "" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list vypísať členov skupiny\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: chybné pomenovanie skupiny „%s“\n" @@ -1692,7 +1705,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Použitie: newgrp [-] [skupina]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Použitie: sg skupina [[-c] príkaz]\n" #, fuzzy, c-format diff --git a/po/sq.po b/po/sq.po index a0498d03..796c1175 100644 --- a/po/sq.po +++ b/po/sq.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.3\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2004-11-20 03:28+0100\n" "Last-Translator: Elian Myftiu \n" "Language-Team: Albanian \n" @@ -888,6 +888,10 @@ msgstr "" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "Kujdes: grup i panjohur %s\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "Kujdes: grup i panjohur %s\n" @@ -1130,7 +1134,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, c-format @@ -1258,6 +1264,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "" @@ -1558,7 +1569,7 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "" -msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "" #, fuzzy, c-format diff --git a/po/sv.gmo b/po/sv.gmo index 06915fad..9291206b 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index 197c3a7c..e7d79859 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2011-11-25 22:08+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -968,6 +968,11 @@ msgstr "%s: ett fel upptäcktes, ändringar ignorerade\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (rad %d, användare %s) lösenordet har inte ändrats\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (rad %d, användare %s) lösenordet har inte ändrats\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1242,7 +1247,9 @@ msgstr " -r, --system skapa ett systemkonto\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list lista medlemmarna av gruppen\n" #, fuzzy, c-format @@ -1399,6 +1406,13 @@ msgstr "" " -p, --password LÖSENORD ändra lösenordet till detta (krypterade)\n" " LÖSENORD\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list lista medlemmarna av gruppen\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: ogiltigt gruppnamn \"%s\"\n" @@ -1735,7 +1749,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Användning: newgrp [-] [grupp]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Användning: sg grupp [[-c] kommando]\n" #, fuzzy, c-format diff --git a/po/tl.gmo b/po/tl.gmo index 879e1ca3..b2268df2 100644 Binary files a/po/tl.gmo and b/po/tl.gmo differ diff --git a/po/tl.po b/po/tl.po index 3df937e6..35b87bda 100644 --- a/po/tl.po +++ b/po/tl.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2007-11-26 21:34+0100\n" "Last-Translator: Eric Pareja \n" "Language-Team: Tagalog \n" @@ -911,6 +911,10 @@ msgstr "%s: may error na naganap, di pinansin ang mga pagbabago\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: walang gumagamit na nagngangalang %s\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: walang gumagamit na nagngangalang %s\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: walang gumagamit na nagngangalang %s\n" @@ -1156,7 +1160,9 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" #, fuzzy, c-format @@ -1285,6 +1291,11 @@ msgid "" " PASSWORD\n" msgstr "" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "hindi tanggap na pangalan ng grupo '%s'\n" @@ -1595,7 +1606,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Pag-gamit: newgrp [-] [grupo]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Pag-gamit: sg grupo [[-c] utos]\n" #, fuzzy, c-format diff --git a/po/tr.gmo b/po/tr.gmo index d3f761a8..be0b7161 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index 2f5f7b63..271b6c51 100644 --- a/po/tr.po +++ b/po/tr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2008-03-29 20:31+0200\n" "Last-Translator: Mehmet Türker \n" "Language-Team: Türkçe \n" @@ -924,6 +924,10 @@ msgstr "%s: hata algılandı, değişiklikler görmezden gelindi\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: kullanıcı `%s' mevcut değil\n" +#, fuzzy, c-format +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: kullanıcı `%s' mevcut değil\n" + #, fuzzy, c-format msgid "%s: line %jd: user '%s' does not exist\n" msgstr "%s: kullanıcı `%s' mevcut değil\n" @@ -1178,8 +1182,13 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -U, --users USERS list of user members of this group\n" +#, fuzzy +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" +" -s, --sha-rounds SHA* kripto algoritmaları için kullanılacak\n" +" SHA yuvarlamaları sayısı\n" #, fuzzy, c-format #| msgid "invalid user name '%s'\n" @@ -1315,6 +1324,14 @@ msgid "" " PASSWORD\n" msgstr "" +#, fuzzy +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" +" -s, --sha-rounds SHA* kripto algoritmaları için kullanılacak\n" +" SHA yuvarlamaları sayısı\n" + #, fuzzy, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: geçersiz grup adı `%s'\n" @@ -1628,7 +1645,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Kullanım: newgrp [-] [grup]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Kullanım: sg grup [[-c] komut]\n" #, fuzzy, c-format diff --git a/po/uk.gmo b/po/uk.gmo index 15be043c..bdf7a083 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index 18950183..e8056b00 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2022-05-16 19:32+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" @@ -977,6 +977,11 @@ msgstr "%s: виявлено помилку, зміни проігнорован msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (рядок %d, користувач %s) пароль не змінено\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (рядок %d, користувач %s) пароль не змінено\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1260,7 +1265,11 @@ msgid " -r, --system create a system account\n" msgstr "" " -r, --system створити загальносистемний обліковий запис\n" -msgid " -U, --users USERS list of user members of this group\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr "" " -U, --users КОРИСТУВАЧІ список користувачів-учасників цієї групи\n" @@ -1410,6 +1419,14 @@ msgstr "" " -p, --password ПАРОЛЬ змінити пароль на цей (шифрований)\n" " ПАРОЛЬ\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr "" +" -U, --users КОРИСТУВАЧІ список користувачів-учасників цієї групи\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: некоректна назва групи «%s»\n" @@ -1764,7 +1781,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "Користування: newgrp [-] [група]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "Користування: sg група [[-c] команда]\n" #, c-format diff --git a/po/vi.gmo b/po/vi.gmo index 9f925efd..3c5c6318 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index 2c3706fc..1b9c5104 100644 --- a/po/vi.po +++ b/po/vi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow master\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2016-10-04 07:07+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -987,6 +987,11 @@ msgstr "%s: gặp lỗi nên bỏ qua các thay đổi\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s: (dòng %d, người dùng %s) mật khẩu chưa thay đổi\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s: (dòng %d, người dùng %s) mật khẩu chưa thay đổi\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1274,7 +1279,9 @@ msgstr " -r, --system tạo một tài khoản hệ thống\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list liệt kê những người trong nhóm\n" #, fuzzy, c-format @@ -1425,6 +1432,13 @@ msgstr "" " -p, --password MẬT_KHẨU thay đổi mật khẩu thành MẬT_KHẨU (đã mật mã) " "này\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list liệt kê những người trong nhóm\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s: tên nhóm không hợp lệ “%s”\n" @@ -1769,7 +1783,9 @@ msgstr "" "Cách dùng: newgrp [-] [nhóm]\n" "[newgrp: nhóm mới]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "" "Cách dùng: sg group [[-c] lệnh]\n" "[group: nhóm]\n" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 716ae9a4..cf687d04 100644 Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ diff --git a/po/zh_CN.po b/po/zh_CN.po index 5c3b93ef..d1efe715 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.15\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2022-07-27 23:04+0800\n" "Last-Translator: Celeste Liu \n" "Language-Team: Chinese (simplified) \n" @@ -932,6 +932,11 @@ msgstr "%s:发现错误,忽略改动\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s:(第 %d 行,用户 %s) 密码未更改\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s:(第 %d 行,用户 %s) 密码未更改\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1190,7 +1195,11 @@ msgstr " -p, --password PASSWORD 为新组使用此加密过的密码\n" msgid " -r, --system create a system account\n" msgstr " -r, --system 创建一个系统账户\n" -msgid " -U, --users USERS list of user members of this group\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list 该组的用户成员列表\n" #, c-format @@ -1325,6 +1334,13 @@ msgid "" " PASSWORD\n" msgstr " -p, --password PASSWORD 将密码更改为(加密过的) PASSWORD\n" +#, fuzzy +#| msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list 该组的用户成员列表\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s:无效的组名“%s”\n" @@ -1648,7 +1664,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "用法:newgrp [-] [组]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "用法:sg 组 [[-c] 命令]\n" #, c-format diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 00ab3900..43909859 100644 Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ diff --git a/po/zh_TW.po b/po/zh_TW.po index a380663b..be5782cf 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.9\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2025-06-24 20:28+0000\n" +"POT-Creation-Date: 2025-12-30 14:17+0100\n" "PO-Revision-Date: 2022-07-27 23:04+0800\n" "Last-Translator: Celeste Liu \n" "Language-Team: Chinese \n" @@ -951,6 +951,11 @@ msgstr "%s:偵測到錯誤,忽略變更\n" msgid "%s: (line %jd, user %s) password not changed\n" msgstr "%s:(第 %d 行,使用者 %s)密碼未變更\n" +#, fuzzy, c-format +#| msgid "%s: (line %d, user %s) password not changed\n" +msgid "%s: (line %jd, user %s) invalid password hash\n" +msgstr "%s:(第 %d 行,使用者 %s)密碼未變更\n" + #, fuzzy, c-format #| msgid "%s: line %d: user '%s' does not exist\n" msgid "%s: line %jd: user '%s' does not exist\n" @@ -1214,7 +1219,9 @@ msgstr " -r, --system 建立系統帳號\n" #, fuzzy #| msgid " -l, --list list the members of the group\n" -msgid " -U, --users USERS list of user members of this group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +"\t members of this group\n" msgstr " -l, --list 列出群組成員\n" #, fuzzy, c-format @@ -1359,6 +1366,13 @@ msgid "" " PASSWORD\n" msgstr " -p, --password 密碼 將密碼變更成此(已加密)<密碼>\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid "" +" -U, --users USERS comma-separated list of users to add as\n" +" members of this group\n" +msgstr " -l, --list 列出群組成員\n" + #, c-format msgid "%s: invalid group name '%s'\n" msgstr "%s:群組名稱「%s」無效\n" @@ -1696,7 +1710,9 @@ msgstr "" msgid "Usage: newgrp [-] [group]\n" msgstr "用法:newgrp [-] [群組]\n" -msgid "Usage: sg group [[-c] command]\n" +#, fuzzy +#| msgid "Usage: sg group [[-c] command]\n" +msgid "Usage: sg [-] group [[-c] command]\n" msgstr "用法:sg 群組 [[-c] 命令]\n" #, c-format diff --git a/src/Makefile.in b/src/Makefile.in index 1f07de96..5e64cb74 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -362,7 +362,7 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/chage.Po \ ./$(DEPDIR)/check_subid_range-check_subid_range.Po \ @@ -444,11 +444,13 @@ am__define_uniq_tagged_files = \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -477,7 +479,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -521,7 +522,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ diff --git a/src/chage.c b/src/chage.c index 4b9c96d6..fffd22b9 100644 --- a/src/chage.c +++ b/src/chage.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -21,7 +21,7 @@ #include #include -#include "atoi/a2i/a2s.h" +#include "atoi/a2i.h" #include "defines.h" #include "fields.h" #include "prototypes.h" @@ -32,7 +32,7 @@ #include "string/sprintf/snprintf.h" #include "string/strcmp/streq.h" #include "string/strcpy/strtcpy.h" -#include "string/strdup/xstrdup.h" +#include "string/strerrno.h" #include "string/strftime.h" #include "time/day_to_str.h" /*@-exitarg@*/ @@ -42,6 +42,10 @@ #include "tcbfuncs.h" #endif +struct option_flags { + bool chroot; + bool prefix; +}; /* * Global variables @@ -79,29 +83,29 @@ NORETURN static void usage (int status); static int new_fields (void); static void print_day_as_date (long day); static void list_fields (void); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); static void check_flags (int argc, int opt_index); -static void check_perms (void); -static void open_files (bool readonly); -static void close_files (void); -NORETURN static void fail_exit (int code); +static void check_perms(const struct option_flags *flags); +static void open_files(bool readonly, const struct option_flags *flags); +static void close_files(const struct option_flags *flags); +NORETURN static void fail_exit (int code, bool process_selinux); /* * fail_exit - do some cleanup and exit with the given error code */ NORETURN static void -fail_exit (int code) +fail_exit (int code, bool process_selinux) { if (spw_locked) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ } } if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -111,7 +115,7 @@ fail_exit (int code) #ifdef WITH_AUDIT if (E_SUCCESS != code) { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "change-age", user_name, user_uid, SHADOW_AUDIT_FAILURE); } #endif @@ -166,22 +170,22 @@ static int new_fields (void) (void) puts (_("Enter the new value, or press ENTER for the default")); (void) puts (""); - SNPRINTF(buf, "%ld", mindays); - change_field (buf, sizeof buf, _("Minimum Password Age")); + stprintf_a(buf, "%ld", mindays); + change_field(buf, sizeof(buf), _("Minimum Password Age")); if (a2sl(&mindays, buf, NULL, 0, -1, LONG_MAX) == -1) return 0; - SNPRINTF(buf, "%ld", maxdays); - change_field (buf, sizeof buf, _("Maximum Password Age")); + stprintf_a(buf, "%ld", maxdays); + change_field(buf, sizeof(buf), _("Maximum Password Age")); if (a2sl(&maxdays, buf, NULL, 0, -1, LONG_MAX) == -1) return 0; if (-1 == lstchgdate || lstchgdate > LONG_MAX / DAY) strcpy(buf, "-1"); else - DAY_TO_STR(buf, lstchgdate); + day_to_str_a(buf, lstchgdate); - change_field (buf, sizeof buf, _("Last Password Change (YYYY-MM-DD)")); + change_field(buf, sizeof(buf), _("Last Password Change (YYYY-MM-DD)")); if (streq(buf, "-1")) { lstchgdate = -1; @@ -192,22 +196,22 @@ static int new_fields (void) } } - SNPRINTF(buf, "%ld", warndays); - change_field (buf, sizeof buf, _("Password Expiration Warning")); + stprintf_a(buf, "%ld", warndays); + change_field(buf, sizeof(buf), _("Password Expiration Warning")); if (a2sl(&warndays, buf, NULL, 0, -1, LONG_MAX) == -1) return 0; - SNPRINTF(buf, "%ld", inactdays); - change_field (buf, sizeof buf, _("Password Inactive")); + stprintf_a(buf, "%ld", inactdays); + change_field(buf, sizeof(buf), _("Password Inactive")); if (a2sl(&inactdays, buf, NULL, 0, -1, LONG_MAX) == -1) return 0; if (-1 == expdate || LONG_MAX / DAY < expdate) strcpy(buf, "-1"); else - DAY_TO_STR(buf, expdate); + day_to_str_a(buf, expdate); - change_field (buf, sizeof buf, + change_field(buf, sizeof(buf), _("Account Expiration Date (YYYY-MM-DD)")); if (streq(buf, "-1")) { @@ -244,7 +248,7 @@ print_day_as_date(long day) return; } - if (STRFTIME(buf, iflg ? "%F" : "%b %d, %Y", &tm) == 0) { + if (strftime_a(buf, iflg ? "%F" : "%b %d, %Y", &tm) == 0) { puts(_("future")); return; } @@ -281,7 +285,6 @@ static void list_fields (void) if (lstchgdate == 0) { (void) puts (_("password must be changed")); } else if ( (lstchgdate < 0) - || (maxdays >= 10000) || (maxdays < 0) || (LONG_MAX - lstchgdate < maxdays)) { @@ -301,7 +304,6 @@ static void list_fields (void) (void) puts (_("password must be changed")); } else if ( (lstchgdate < 0) || (inactdays < 0) - || (maxdays >= 10000) || (maxdays < 0) || (LONG_MAX - inactdays < maxdays) || (LONG_MAX - lstchgdate < maxdays + inactdays)) @@ -338,7 +340,7 @@ static void list_fields (void) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { /* * Parse the command line options. @@ -419,8 +421,10 @@ static void process_flags (int argc, char **argv) } break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 'P': /* no-op, handled in process_prefix_flag () */ + flags->prefix = true; break; case 'W': Wflg = true; @@ -472,8 +476,12 @@ static void check_flags (int argc, int opt_index) * * It will not return if the user is not allowed. */ -static void check_perms (void) +static void check_perms(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + /* * An unprivileged user can ask for their own aging information, but * only root can change it, or list another user's aging @@ -482,7 +490,7 @@ static void check_perms (void) if (!amroot && !lflg) { fprintf (stderr, _("%s: Permission denied.\n"), Prog); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } } @@ -492,8 +500,12 @@ static void check_perms (void) * In read-only mode, the databases are not locked and are opened * only for reading. */ -static void open_files (bool readonly) +static void open_files(bool readonly, const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + /* * Lock and open the password file. This loads all of the password * file entries into memory. Then we get a pointer to the password @@ -504,14 +516,14 @@ static void open_files (bool readonly) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } pw_locked = true; } if (pw_open (readonly ? O_RDONLY: O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_WARN, "cannot open %s", pw_dbname ())); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } /* @@ -525,7 +537,7 @@ static void open_files (bool readonly) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, spw_dbname ()); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } spw_locked = true; } @@ -533,42 +545,46 @@ static void open_files (bool readonly) fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_WARN, "cannot open %s", spw_dbname ())); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } } /* * close_files - close and unlock the password/shadow databases */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + /* * Now close the shadow password file, which will cause all of the * entries to be re-written. */ - if (spw_close () == 0) { + if (spw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } /* * Close the password file. If any entries were modified, the file * will be re-written. */ - if (pw_close () == 0) { + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ } spw_locked = false; - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -582,7 +598,8 @@ static void close_files (void) * It will not return in case of error */ static void update_age (/*@null@*/const struct spwd *sp, - /*@notnull@*/const struct passwd *pw) + /*@notnull@*/const struct passwd *pw, + bool process_selinux) { struct spwd spwent; @@ -594,20 +611,20 @@ static void update_age (/*@null@*/const struct spwd *sp, if (NULL == sp) { struct passwd pwent = *pw; - memzero (&spwent, sizeof spwent); - spwent.sp_namp = xstrdup (pwent.pw_name); - spwent.sp_pwdp = xstrdup (pwent.pw_passwd); + memzero(&spwent, sizeof(spwent)); + spwent.sp_namp = pwent.pw_name; + spwent.sp_pwdp = pwent.pw_passwd; spwent.sp_flag = SHADOW_SP_FLAG_UNSET; pwent.pw_passwd = SHADOW_PASSWD_STRING; /* XXX warning: const */ if (pw_update (&pwent) == 0) { fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, pw_dbname (), pwent.pw_name); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } } else { - spwent.sp_namp = xstrdup (sp->sp_namp); - spwent.sp_pwdp = xstrdup (sp->sp_pwdp); + spwent.sp_namp = sp->sp_namp; + spwent.sp_pwdp = sp->sp_pwdp; spwent.sp_flag = sp->sp_flag; } @@ -626,7 +643,7 @@ static void update_age (/*@null@*/const struct spwd *sp, if (spw_update (&spwent) == 0) { fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, spw_dbname (), spwent.sp_namp); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } } @@ -712,6 +729,8 @@ int main (int argc, char **argv) uid_t ruid; gid_t rgid; const struct passwd *pw; + struct option_flags flags = {.chroot = false, .prefix = false}; + bool process_selinux; sanitize_env (); check_fds (); @@ -740,9 +759,10 @@ int main (int argc, char **argv) } #endif - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot && !flags.prefix; - check_perms (); + check_perms (&flags); if (!spw_file_present ()) { fprintf (stderr, @@ -753,13 +773,13 @@ int main (int argc, char **argv) exit (E_SHADOW_NOTFOUND); } - open_files (lflg); + open_files (lflg, &flags); /* Drop privileges */ if (lflg && ( (setregid (rgid, rgid) != 0) || (setreuid (ruid, ruid) != 0))) { fprintf (stderr, _("%s: failed to drop privileges (%s)\n"), - Prog, strerror (errno)); - fail_exit (E_NOPERM); + Prog, strerrno()); + fail_exit (E_NOPERM, process_selinux); } pw = pw_locate (argv[optind]); @@ -767,13 +787,13 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: user '%s' does not exist in %s\n"), Prog, argv[optind], pw_dbname ()); closelog (); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } - STRTCPY(user_name, pw->pw_name); + strtcpy_a(user_name, pw->pw_name); #ifdef WITH_TCB if (shadowtcb_set_user (pw->pw_name) == SHADOWTCB_FAILURE) { - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } #endif user_uid = pw->pw_uid; @@ -788,11 +808,11 @@ int main (int argc, char **argv) if (lflg) { if (!amroot && (ruid != user_uid)) { fprintf (stderr, _("%s: Permission denied.\n"), Prog); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } /* Displaying fields is not of interest to audit */ list_fields (); - fail_exit (E_SUCCESS); + fail_exit (E_SUCCESS, process_selinux); } /* @@ -805,11 +825,11 @@ int main (int argc, char **argv) if (new_fields () == 0) { fprintf (stderr, _("%s: error changing fields\n"), Prog); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } #ifdef WITH_AUDIT else { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "change-all-aging-information", user_name, user_uid, SHADOW_AUDIT_SUCCESS); } @@ -817,39 +837,39 @@ int main (int argc, char **argv) } else { #ifdef WITH_AUDIT if (Mflg) { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "change-max-age", user_name, user_uid, SHADOW_AUDIT_SUCCESS); } if (mflg) { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "change-min-age", user_name, user_uid, 1); } if (dflg) { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "change-last-change-date", user_name, user_uid, 1); } if (Wflg) { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "change-passwd-warning", user_name, user_uid, 1); } if (Iflg) { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "change-inactive-days", user_name, user_uid, 1); } if (Eflg) { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "change-passwd-expiration", user_name, user_uid, 1); } #endif } - update_age (sp, pw); + update_age (sp, pw, process_selinux); - close_files (); + close_files (&flags); SYSLOG ((LOG_INFO, "changed password expiry for %s", user_name)); diff --git a/src/check_subid_range.c b/src/check_subid_range.c index cc40ed82..f8d620d0 100644 --- a/src/check_subid_range.c +++ b/src/check_subid_range.c @@ -3,7 +3,7 @@ // Exits 0 if owner has subid range starting start, of size count // Exits 1 otherwise. -#include +#include "config.h" #include #include #include @@ -12,8 +12,8 @@ #include #include +#include "atoi/a2i.h" #include "atoi/getnum.h" -#include "atoi/str2i.h" #include "defines.h" #include "idmapping.h" #include "prototypes.h" diff --git a/src/chfn.c b/src/chfn.c index 58502929..81e2a31b 100644 --- a/src/chfn.c +++ b/src/chfn.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -32,13 +33,16 @@ #include "pwauth.h" #include "pwio.h" #include "shadowlog.h" +#include "sizeof.h" #include "sssd.h" -#include "string/sprintf/snprintf.h" +#include "string/sprintf/stpeprintf.h" #include "string/strcmp/streq.h" #include "string/strcpy/strtcpy.h" -#include "string/strdup/xstrdup.h" -#include "string/strtok/stpsep.h" +#include "string/strdup/strdup.h" +struct option_flags { + bool chroot; +}; /* * Global variables. @@ -48,7 +52,7 @@ static char fullnm[BUFSIZ]; static char roomno[BUFSIZ]; static char workph[BUFSIZ]; static char homeph[BUFSIZ]; -static char slop[BUFSIZ + 1 + 80]; +static char slop[BUFSIZ]; static bool amroot; /* Flags */ static bool fflg = false; /* -f - set full name */ @@ -63,23 +67,22 @@ static bool pw_locked = false; */ /* local function prototypes */ -NORETURN static void fail_exit (int code); +NORETURN static void fail_exit (int code, bool process_selinux); NORETURN static void usage (int status); static bool may_change_field (int); static void new_fields (void); -static char *copy_field (char *, char *, char *); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); static void check_perms (const struct passwd *pw); -static void update_gecos (const char *user, char *gecos); +static void update_gecos(const char *user, char *gecos, const struct option_flags *flags); static void get_old_fields (const char *gecos); /* * fail_exit - exit with an error and do some cleanup */ -static void fail_exit (int code) +static void fail_exit (int code, bool process_selinux) { if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -160,9 +163,8 @@ static bool may_change_field (int field) cp = "frwh"; } - if (strchr (cp, field) != NULL) { + if (strchr(cp, field)) return true; - } return false; } @@ -178,79 +180,40 @@ static void new_fields (void) puts (_("Enter the new value, or press ENTER for the default")); if (may_change_field ('f')) { - change_field (fullnm, sizeof fullnm, _("Full Name")); + change_field(fullnm, sizeof(fullnm), _("Full Name")); } else { printf (_("\t%s: %s\n"), _("Full Name"), fullnm); } if (may_change_field ('r')) { - change_field (roomno, sizeof roomno, _("Room Number")); + change_field(roomno, sizeof(roomno), _("Room Number")); } else { printf (_("\t%s: %s\n"), _("Room Number"), roomno); } if (may_change_field ('w')) { - change_field (workph, sizeof workph, _("Work Phone")); + change_field(workph, sizeof(workph), _("Work Phone")); } else { printf (_("\t%s: %s\n"), _("Work Phone"), workph); } if (may_change_field ('h')) { - change_field (homeph, sizeof homeph, _("Home Phone")); + change_field(homeph, sizeof(homeph), _("Home Phone")); } else { printf (_("\t%s: %s\n"), _("Home Phone"), homeph); } if (amroot) { - change_field (slop, sizeof slop, _("Other")); + change_field(slop, sizeof(slop), _("Other")); } } -/* - * copy_field - get the next field from the gecos field - * - * copy_field copies the next field from the gecos field, returning a - * pointer to the field which follows, or NULL if there are no more fields. - * - * in - the current GECOS field - * out - where to copy the field to - * extra - fields with '=' get copied here - */ -static char *copy_field (char *in, char *out, char *extra) -{ - char *next = NULL; - - while (NULL != in) { - const char *f; - - f = in; - next = stpsep(in, ","); - - if (strchr(f, '=') == NULL) - break; - - if (NULL != extra) { - if (!streq(extra, "")) { - strcat (extra, ","); - } - - strcat(extra, f); - } - in = next; - } - if ((NULL != in) && (NULL != out)) { - strcpy (out, in); - } - - return next; -} - /* * process_flags - parse the command line options * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; /* flag currently being processed */ static struct option long_options[] = { @@ -281,7 +244,7 @@ static void process_flags (int argc, char **argv) exit (E_NOPERM); } fflg = true; - STRTCPY(fullnm, optarg); + strtcpy_a(fullnm, optarg); break; case 'h': if (!may_change_field ('h')) { @@ -290,7 +253,7 @@ static void process_flags (int argc, char **argv) exit (E_NOPERM); } hflg = true; - STRTCPY(homeph, optarg); + strtcpy_a(homeph, optarg); break; case 'o': if (!amroot) { @@ -304,7 +267,7 @@ static void process_flags (int argc, char **argv) _("%s: fields too long\n"), Prog); exit (E_NOPERM); } - STRTCPY(slop, optarg); + strtcpy_a(slop, optarg); break; case 'r': if (!may_change_field ('r')) { @@ -313,9 +276,10 @@ static void process_flags (int argc, char **argv) exit (E_NOPERM); } rflg = true; - STRTCPY(roomno, optarg); + strtcpy_a(roomno, optarg); break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 'u': usage (E_SUCCESS); @@ -327,7 +291,7 @@ static void process_flags (int argc, char **argv) exit (E_NOPERM); } wflg = true; - STRTCPY(workph, optarg); + strtcpy_a(workph, optarg); break; default: usage (E_USAGE); @@ -383,7 +347,7 @@ static void check_perms (const struct passwd *pw) * --marekm */ if (!amroot && getdef_bool ("CHFN_AUTH")) { - passwd_check (pw->pw_name, pw->pw_passwd, Prog); + passwd_check(pw->pw_name, pw->pw_passwd); } #else /* !USE_PAM */ @@ -423,10 +387,13 @@ static void check_perms (const struct passwd *pw) * * Commit the user's entry after changing her gecos field. */ -static void update_gecos (const char *user, char *gecos) +static void update_gecos(const char *user, char *gecos, const struct option_flags *flags) { const struct passwd *pw; /* The user's password file entry */ struct passwd pwent; /* modified password file entry */ + bool process_selinux; + + process_selinux = !flags->chroot; /* * Before going any further, raise the ulimit to prevent colliding @@ -437,7 +404,7 @@ static void update_gecos (const char *user, char *gecos) if (setuid (0) != 0) { fputs (_("Cannot change ID to root.\n"), stderr); SYSLOG ((LOG_ERR, "can't setuid(0)")); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } pwd_init (); @@ -449,13 +416,13 @@ static void update_gecos (const char *user, char *gecos) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } pw_locked = true; if (pw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } /* @@ -469,7 +436,7 @@ static void update_gecos (const char *user, char *gecos) fprintf (stderr, _("%s: user '%s' does not exist in %s\n"), Prog, user, pw_dbname ()); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } /* @@ -487,18 +454,18 @@ static void update_gecos (const char *user, char *gecos) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, pw_dbname (), pwent.pw_name); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } /* * Changes have all been made, so commit them and unlock the file. */ - if (pw_close () == 0) { + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -512,49 +479,32 @@ static void update_gecos (const char *user, char *gecos) */ static void get_old_fields (const char *gecos) { - char *cp; /* temporary character pointer */ - char old_gecos[BUFSIZ]; /* buffer for old GECOS fields */ + char *p; + char old_gecos[BUFSIZ]; + const char *f; - STRTCPY(old_gecos, gecos); + strtcpy_a(old_gecos, gecos); + p = old_gecos; - /* - * Now get the full name. It is the first comma separated field in - * the GECOS field. - */ - cp = copy_field (old_gecos, fflg ? NULL : fullnm, slop); + f = strsep(&p, ","); + if (!fflg) + strcpy(fullnm, f ?: ""); - /* - * Now get the room number. It is the next comma separated field, - * if there is indeed one. - */ - if (NULL != cp) { - cp = copy_field (cp, rflg ? NULL : roomno, slop); - } + f = strsep(&p, ","); + if (!rflg) + strcpy(roomno, f ?: ""); - /* - * Now get the work phone number. It is the third field. - */ - if (NULL != cp) { - cp = copy_field (cp, wflg ? NULL : workph, slop); - } + f = strsep(&p, ","); + if (!wflg) + strcpy(workph, f ?: ""); - /* - * Now get the home phone number. It is the fourth field. - */ - if (NULL != cp) { - cp = copy_field (cp, hflg ? NULL : homeph, slop); - } + f = strsep(&p, ","); + if (!hflg) + strcpy(homeph, f ?: ""); - /* - * Anything left over is "slop". - */ - if ((NULL != cp) && !oflg) { - if (!streq(slop, "")) { - strcat (slop, ","); - } - - strcat (slop, cp); - } + /* Anything left over is "slop". */ + if (!oflg) + strcpy(slop, p ?: ""); } /* @@ -562,7 +512,7 @@ static void get_old_fields (const char *gecos) * * It will not return if a field is not valid. */ -static void check_fields (void) +static void check_fields (bool process_selinux) { int err; err = valid_field (fullnm, ":,=\n"); @@ -570,7 +520,7 @@ static void check_fields (void) fprintf (stderr, _("%s: name with non-ASCII characters: '%s'\n"), Prog, fullnm); } else if (err < 0) { fprintf (stderr, _("%s: invalid name: '%s'\n"), Prog, fullnm); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } err = valid_field (roomno, ":,=\n"); if (err > 0) { @@ -578,17 +528,17 @@ static void check_fields (void) } else if (err < 0) { fprintf (stderr, _("%s: invalid room number: '%s'\n"), Prog, roomno); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } if (valid_field (workph, ":,=\n") != 0) { fprintf (stderr, _("%s: invalid work phone: '%s'\n"), Prog, workph); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } if (valid_field (homeph, ":,=\n") != 0) { fprintf (stderr, _("%s: invalid home phone: '%s'\n"), Prog, homeph); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } err = valid_field (slop, ":\n"); if (err > 0) { @@ -597,7 +547,7 @@ static void check_fields (void) fprintf (stderr, _("%s: '%s' contains illegal characters\n"), Prog, slop); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } } @@ -619,9 +569,11 @@ static void check_fields (void) */ int main (int argc, char **argv) { - char new_gecos[BUFSIZ]; - char *user; + char new_gecos[80]; + char *user, *p, *e; const struct passwd *pw; + struct option_flags flags = {.chroot = false}; + bool process_selinux; sanitize_env (); check_fds (); @@ -644,7 +596,8 @@ int main (int argc, char **argv) OPENLOG (Prog); /* parse the command line options */ - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; /* * Get the name of the user to check. It is either the command line @@ -653,14 +606,14 @@ int main (int argc, char **argv) if (optind < argc) { if (!is_valid_user_name (argv[optind])) { fprintf (stderr, _("%s: Provided user name is not a valid name\n"), Prog); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } user = argv[optind]; pw = xgetpwnam (user); if (NULL == pw) { fprintf (stderr, _("%s: user '%s' does not exist\n"), Prog, user); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } } else { pw = get_my_pwent (); @@ -670,7 +623,7 @@ int main (int argc, char **argv) Prog); SYSLOG ((LOG_WARN, "Cannot determine the user name of the caller (UID %lu)", (unsigned long) getuid ())); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } user = xstrdup (pw->pw_name); } @@ -695,23 +648,25 @@ int main (int argc, char **argv) /* * Check all of the fields for valid information */ - check_fields (); + check_fields (process_selinux); - /* - * Build the new GECOS field by plastering all the pieces together, - * if they will fit ... - */ - if ((strlen (fullnm) + strlen (roomno) + strlen (workph) + - strlen (homeph) + strlen (slop)) > (unsigned int) 80) { + /* Build the new GECOS field by plastering all the pieces together. */ + p = new_gecos; + e = new_gecos + countof(new_gecos); + p = stpeprintf(p, e, "%s", fullnm); + p = stpeprintf(p, e, ",%s", roomno); + p = stpeprintf(p, e, ",%s", workph); + p = stpeprintf(p, e, ",%s", homeph); + if (!streq(slop, "")) + p = stpeprintf(p, e, ",%s", slop); + + if (p == e || p == NULL) { fprintf (stderr, _("%s: fields too long\n"), Prog); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } - SNPRINTF(new_gecos, "%s,%s,%s,%s%s%s", - fullnm, roomno, workph, homeph, - (!streq(slop, "")) ? "," : "", slop); /* Rewrite the user's gecos in the passwd file */ - update_gecos (user, new_gecos); + update_gecos (user, new_gecos, &flags); SYSLOG ((LOG_INFO, "changed user '%s' information", user)); diff --git a/src/chgpasswd.c b/src/chgpasswd.c index e7759657..38e9eae1 100644 --- a/src/chgpasswd.c +++ b/src/chgpasswd.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -23,7 +23,7 @@ #include "pam_defs.h" #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "defines.h" #include "nscd.h" #include "sssd.h" @@ -34,10 +34,18 @@ #endif /*@-exitarg@*/ #include "exitcodes.h" +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "string/strcmp/streq.h" +#include "string/strerrno.h" #include "string/strtok/stpsep.h" +/* + * Structures + */ +struct option_flags { + bool chroot; +}; /* * Global variables @@ -68,21 +76,21 @@ static bool sgr_locked = false; static bool gr_locked = false; /* local function prototypes */ -NORETURN static void fail_exit (int code); +NORETURN static void fail_exit (int code, bool process_selinux); NORETURN static void usage (int status); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); static void check_flags (void); static void check_perms (void); -static void open_files (void); -static void close_files (void); +static void open_files (bool process_selinux); +static void close_files(const struct option_flags *flags); /* * fail_exit - exit with a failure code after unlocking the files */ -static void fail_exit (int code) +static void fail_exit (int code, bool process_selinux) { if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -91,7 +99,7 @@ static void fail_exit (int code) #ifdef SHADOWGRP if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -149,7 +157,7 @@ usage (int status) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) @@ -187,11 +195,12 @@ static void process_flags (int argc, char **argv) md5flg = true; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) case 's': sflg = true; - bad_s = 0; + bad_s = 0; if (!crypt_method) { fprintf (stderr, @@ -202,22 +211,22 @@ static void process_flags (int argc, char **argv) #if defined(USE_SHA_CRYPT) if ( ( (streq(crypt_method, "SHA256") || streq(crypt_method, "SHA512")) && (-1 == str2sl(&sha_rounds, optarg)))) { - bad_s = 1; - } + bad_s = 1; + } #endif /* USE_SHA_CRYPT */ #if defined(USE_BCRYPT) - if (( streq(crypt_method, "BCRYPT") + if ( ( streq(crypt_method, "BCRYPT") && (-1 == str2sl(&bcrypt_rounds, optarg)))) { - bad_s = 1; - } + bad_s = 1; + } #endif /* USE_BCRYPT */ #if defined(USE_YESCRYPT) - if (( streq(crypt_method, "YESCRYPT") + if ( ( streq(crypt_method, "YESCRYPT") && (-1 == str2sl(&yescrypt_cost, optarg)))) { - bad_s = 1; - } + bad_s = 1; + } #endif /* USE_YESCRYPT */ - if (bad_s != 0) { + if (bad_s != 0) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); @@ -336,7 +345,7 @@ static void check_perms (void) /* * open_files - lock and open the group databases */ -static void open_files (void) +static void open_files (bool process_selinux) { /* * Lock the group file and open it for reading and writing. This will @@ -346,13 +355,13 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } gr_locked = true; if (gr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } #ifdef SHADOWGRP @@ -362,13 +371,13 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sgr_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } sgr_locked = true; if (sgr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } } #endif @@ -377,18 +386,21 @@ static void open_files (void) /* * close_files - close and unlock the group databases */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot; #ifdef SHADOWGRP if (is_shadow_grp) { - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); - fail_exit (1); + fail_exit (1, process_selinux); } - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -397,14 +409,14 @@ static void close_files (void) } #endif - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); - fail_exit (1); + fail_exit (1, process_selinux); } - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -428,6 +440,8 @@ int main (int argc, char **argv) struct group newgr; bool errors = false; intmax_t line = 0; + struct option_flags flags = {.chroot = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -444,7 +458,8 @@ int main (int argc, char **argv) process_root_flag ("-R", argc, argv); - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; OPENLOG (Prog); @@ -454,14 +469,14 @@ int main (int argc, char **argv) is_shadow_grp = sgr_file_present (); #endif - open_files (); + open_files (process_selinux); /* * Read each line, separating the group name from the password. The * group entry for each group will be looked up in the appropriate * file (gshadow or group) and the password changed. */ - while (fgets (buf, (int) sizeof buf, stdin) != NULL) { + while (fgets(buf, sizeof(buf), stdin) != NULL) { line++; if (stpsep(buf, "\n") == NULL) { fprintf (stderr, _("%s: line %jd: line too long\n"), @@ -522,8 +537,8 @@ int main (int argc, char **argv) if (NULL == cp) { fprintf (stderr, _("%s: failed to crypt password with salt '%s': %s\n"), - Prog, salt, strerror (errno)); - fail_exit (1); + Prog, salt, strerrno()); + fail_exit (1, process_selinux); } } @@ -624,10 +639,10 @@ int main (int argc, char **argv) if (errors) { fprintf (stderr, _("%s: error detected, changes ignored\n"), Prog); - fail_exit (1); + fail_exit (1, process_selinux); } - close_files (); + close_files (&flags); nscd_flush_cache ("group"); sssd_flush_cache (SSSD_DB_GROUP); diff --git a/src/chpasswd.c b/src/chpasswd.c index 315e91ce..ea96dc74 100644 --- a/src/chpasswd.c +++ b/src/chpasswd.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -17,11 +17,13 @@ #include #include #include +#include #ifdef USE_PAM #include "pam_defs.h" #endif /* USE_PAM */ -#include "atoi/str2i.h" +#include "atoi/a2i.h" +#include "chkhash.h" #include "defines.h" #include "nscd.h" #include "sssd.h" @@ -33,11 +35,17 @@ #include "exitcodes.h" #include "shadowlog.h" #include "string/strcmp/streq.h" +#include "string/strerrno.h" #include "string/strtok/stpsep.h" #define IS_CRYPT_METHOD(str) ((crypt_method != NULL && streq(crypt_method, str)) ? true : false) +struct option_flags { + bool chroot; + bool prefix; +}; + /* * Global variables */ @@ -67,21 +75,21 @@ static bool pw_locked = false; static bool spw_locked = false; /* local function prototypes */ -NORETURN static void fail_exit (int code); +NORETURN static void fail_exit (int code, bool process_selinux); NORETURN static void usage (int status); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); static void check_flags (void); static void check_perms (void); -static void open_files (void); -static void close_files (void); +static void open_files(const struct option_flags *flags); +static void close_files(const struct option_flags *flags); /* * fail_exit - exit with a failure code after unlocking the files */ -static void fail_exit (int code) +static void fail_exit (int code, bool process_selinux) { if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -89,7 +97,7 @@ static void fail_exit (int code) } if (spw_locked) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ @@ -147,11 +155,11 @@ usage (int status) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) - int bad_s; + int bad_s; #endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ static struct option long_options[] = { {"crypt-method", required_argument, NULL, 'c'}, @@ -187,32 +195,34 @@ static void process_flags (int argc, char **argv) md5flg = true; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 'P': /* no-op, handled in process_prefix_flag () */ + flags->prefix = true; break; #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) case 's': sflg = true; - bad_s = 0; + bad_s = 0; #if defined(USE_SHA_CRYPT) if ((IS_CRYPT_METHOD("SHA256") || IS_CRYPT_METHOD("SHA512")) && (-1 == str2sl(&sha_rounds, optarg))) { - bad_s = 1; - } + bad_s = 1; + } #endif /* USE_SHA_CRYPT */ #if defined(USE_BCRYPT) - if (IS_CRYPT_METHOD("BCRYPT") + if (IS_CRYPT_METHOD("BCRYPT") && (-1 == str2sl(&bcrypt_rounds, optarg))) { - bad_s = 1; - } + bad_s = 1; + } #endif /* USE_BCRYPT */ #if defined(USE_YESCRYPT) - if (IS_CRYPT_METHOD("YESCRYPT") + if (IS_CRYPT_METHOD("YESCRYPT") && (-1 == str2sl(&yescrypt_cost, optarg))) { - bad_s = 1; - } + bad_s = 1; + } #endif /* USE_YESCRYPT */ - if (bad_s != 0) { + if (bad_s != 0) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); @@ -335,8 +345,12 @@ static void check_perms (void) /* * open_files - lock and open the password databases */ -static void open_files (void) +static void open_files(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + /* * Lock the password file and open it for reading and writing. This * will bring all of the entries into memory where they may be updated. @@ -345,13 +359,13 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } pw_locked = true; if (pw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } /* Do the same for the shadowed database, if it exist */ @@ -360,14 +374,14 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, spw_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } spw_locked = true; if (spw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } } } @@ -375,17 +389,21 @@ static void open_files (void) /* * close_files - close and unlock the password databases */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + if (is_shadow_pwd) { - if (spw_close () == 0) { + if (spw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); - fail_exit (1); + fail_exit (1, process_selinux); } - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ @@ -393,14 +411,14 @@ static void close_files (void) spw_locked = false; } - if (pw_close () == 0) { + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (1); + fail_exit (1, process_selinux); } - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -454,6 +472,8 @@ int main (int argc, char **argv) bool errors = false; intmax_t line = 0; + struct option_flags flags = {.chroot = false, .prefix = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -468,7 +488,8 @@ int main (int argc, char **argv) } #endif /* WITH_SELINUX */ - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot && !flags.prefix; salt = get_salt(); process_root_flag ("-R", argc, argv); @@ -490,7 +511,7 @@ int main (int argc, char **argv) { is_shadow_pwd = spw_file_present (); - open_files (); + open_files (&flags); } /* @@ -501,18 +522,16 @@ int main (int argc, char **argv) * last change date is set in the age only if aging information is * present. */ - while (fgets (buf, sizeof buf, stdin) != NULL) { + while (fgets(buf, sizeof(buf), stdin) != NULL) { char *cp; line++; if (stpsep(buf, "\n") == NULL) { if (feof (stdin) == 0) { // Drop all remaining characters on this line. - while (fgets (buf, sizeof buf, stdin) != NULL) { - cp = strchr (buf, '\n'); - if (cp != NULL) { + while (fgets(buf, sizeof(buf), stdin) != NULL) { + if (strchr(buf, '\n')) break; - } } fprintf (stderr, @@ -554,6 +573,21 @@ int main (int argc, char **argv) } else #endif /* USE_PAM */ { + + /* + * Prevent adding a non valid hash to /etc/shadow and + * potentialy lock account + */ + + if (eflg) { + if (!is_valid_hash(newpwd)) { + fprintf (stderr, + _("%s: (line %jd, user %s) invalid password hash\n"), + Prog, line, name); + errors = true; + continue; + } + } const struct spwd *sp; struct spwd newsp; const struct passwd *pw; @@ -564,8 +598,8 @@ int main (int argc, char **argv) if (NULL == cp) { fprintf (stderr, _("%s: failed to crypt password with salt '%s': %s\n"), - Prog, salt, strerror (errno)); - fail_exit (1); + Prog, salt, strerrno()); + fail_exit (1, process_selinux); } } @@ -680,7 +714,7 @@ int main (int argc, char **argv) _("%s: error detected, changes ignored\n"), Prog); } - fail_exit (1); + fail_exit (1, process_selinux); } #ifdef USE_PAM @@ -688,7 +722,7 @@ int main (int argc, char **argv) #endif /* USE_PAM */ { /* Save the changes */ - close_files (); + close_files (&flags); } nscd_flush_cache ("passwd"); diff --git a/src/chsh.c b/src/chsh.c index 236ff784..0cfe26ee 100644 --- a/src/chsh.c +++ b/src/chsh.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -34,7 +34,7 @@ #include "sssd.h" #include "string/strcmp/streq.h" #include "string/strcpy/strtcpy.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" #ifndef SHELLS_FILE @@ -47,6 +47,9 @@ #define ETCDIR "/etc" #endif +struct option_flags { + bool chroot; +}; /* * Global variables @@ -61,24 +64,25 @@ static bool pw_locked = false; /* external identifiers */ /* local function prototypes */ -NORETURN static void fail_exit (int code); +NORETURN static void fail_exit (int code, bool process_selinux); NORETURN static void usage (int status); static void new_fields (void); -static bool shell_is_listed (const char *); -static bool is_restricted_shell (const char *); -static void process_flags (int argc, char **argv); -static void check_perms (const struct passwd *pw); -static void update_shell (const char *user, char *loginsh); +static bool shell_is_listed (const char *, bool process_selinux); +static bool is_restricted_shell (const char *, bool process_selinux); +static void process_flags (int argc, char **argv, struct option_flags *flags); +static void check_perms(const struct passwd *pw, const struct option_flags *flags); +static void update_shell (const char *user, char *loginsh, + const struct option_flags *flags); /* * fail_exit - do some cleanup and exit with the given error code */ NORETURN static void -fail_exit (int code) +fail_exit (int code, bool process_selinux) { if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -119,21 +123,21 @@ usage (int status) static void new_fields (void) { puts (_("Enter the new value, or press ENTER for the default")); - change_field (loginsh, sizeof loginsh, _("Login Shell")); + change_field(loginsh, sizeof(loginsh), _("Login Shell")); } /* * is_restricted_shell - return true if the shell is restricted * */ -static bool is_restricted_shell (const char *sh) +static bool is_restricted_shell (const char *sh, bool process_selinux) { /* * Shells not listed in /etc/shells are considered to be restricted. * Changed this to avoid confusion with "rc" (the plan9 shell - not * restricted despite the name starting with 'r'). --marekm */ - return !shell_is_listed (sh); + return !shell_is_listed (sh, process_selinux); } /* @@ -148,7 +152,7 @@ static bool is_restricted_shell (const char *sh) */ #ifdef HAVE_VENDORDIR -static bool shell_is_listed (const char *sh) +static bool shell_is_listed (const char *sh, bool process_selinux) { bool found = false; @@ -168,7 +172,7 @@ static bool shell_is_listed (const char *sh) fprintf (stderr, _("Cannot parse shell files: %s"), econf_errString(error)); - fail_exit (1); + fail_exit (1, process_selinux); } error = econf_getKeys(key_file, NULL, &size, &keys); @@ -177,7 +181,7 @@ static bool shell_is_listed (const char *sh) _("Cannot evaluate entries in shell files: %s"), econf_errString(error)); econf_free (key_file); - fail_exit (1); + fail_exit (1, process_selinux); } for (size_t i = 0; i < size; i++) { @@ -194,7 +198,7 @@ static bool shell_is_listed (const char *sh) #else /* without HAVE_VENDORDIR */ -static bool shell_is_listed (const char *sh) +static bool shell_is_listed (const char *sh, bool) { bool found = false; char *cp; @@ -217,7 +221,7 @@ static bool shell_is_listed (const char *sh) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; static struct option long_options[] = { @@ -234,10 +238,11 @@ static void process_flags (int argc, char **argv) usage (E_SUCCESS); /*@notreached@*/break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 's': sflg = true; - STRTCPY(loginsh, optarg); + strtcpy_a(loginsh, optarg); break; default: usage (E_USAGE); @@ -263,13 +268,16 @@ static void process_flags (int argc, char **argv) * * It will not return if the user is not allowed. */ -static void check_perms (const struct passwd *pw) +static void check_perms(const struct passwd *pw, const struct option_flags *flags) { #ifdef USE_PAM pam_handle_t *pamh = NULL; int retval; struct passwd *pampw; #endif + bool process_selinux; + + process_selinux = !flags->chroot; /* * Non-privileged users are only allowed to change the shell if the @@ -280,19 +288,19 @@ static void check_perms (const struct passwd *pw) fprintf (stderr, _("You may not change the shell for '%s'.\n"), pw->pw_name); - fail_exit (1); + fail_exit (1, process_selinux); } /* * Non-privileged users are only allowed to change the shell if it * is not a restricted one. */ - if (!amroot && is_restricted_shell (pw->pw_shell)) { + if (!amroot && is_restricted_shell (pw->pw_shell, process_selinux)) { SYSLOG ((LOG_WARN, "can't change shell for '%s'", pw->pw_name)); fprintf (stderr, _("You may not change the shell for '%s'.\n"), pw->pw_name); - fail_exit (1); + fail_exit (1, process_selinux); } #ifdef WITH_SELINUX /* @@ -305,7 +313,7 @@ static void check_perms (const struct passwd *pw) fprintf (stderr, _("You may not change the shell for '%s'.\n"), pw->pw_name); - fail_exit (1); + fail_exit (1, process_selinux); } #endif @@ -317,8 +325,8 @@ static void check_perms (const struct passwd *pw) * chfn/chsh. --marekm */ if (!amroot && getdef_bool ("CHSH_AUTH")) { - passwd_check (pw->pw_name, pw->pw_passwd, Prog); - } + passwd_check(pw->pw_name, pw->pw_passwd); + } #else /* !USE_PAM */ pampw = getpwuid (getuid ()); /* local, no need for xgetpwuid */ @@ -359,10 +367,13 @@ static void check_perms (const struct passwd *pw) * * It will not return in case of error. */ -static void update_shell (const char *user, char *newshell) +static void update_shell (const char *user, char *newshell, const struct option_flags *flags) { const struct passwd *pw; /* Password entry from /etc/passwd */ struct passwd pwent; /* New password entry */ + bool process_selinux; + + process_selinux = !flags->chroot; /* * Before going any further, raise the ulimit to prevent @@ -373,7 +384,7 @@ static void update_shell (const char *user, char *newshell) if (setuid (0) != 0) { SYSLOG ((LOG_ERR, "can't setuid(0)")); fputs (_("Cannot change ID to root.\n"), stderr); - fail_exit (1); + fail_exit (1, process_selinux); } pwd_init (); @@ -384,13 +395,13 @@ static void update_shell (const char *user, char *newshell) if (pw_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } pw_locked = true; if (pw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_WARN, "cannot open %s", pw_dbname ())); - fail_exit (1); + fail_exit (1, process_selinux); } /* @@ -404,7 +415,7 @@ static void update_shell (const char *user, char *newshell) fprintf (stderr, _("%s: user '%s' does not exist in %s\n"), Prog, user, pw_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } /* @@ -422,18 +433,18 @@ static void update_shell (const char *user, char *newshell) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, pw_dbname (), pwent.pw_name); - fail_exit (1); + fail_exit (1, process_selinux); } /* * Changes have all been made, so commit them and unlock the file. */ - if (pw_close () == 0) { + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (1); + fail_exit (1, process_selinux); } - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -451,6 +462,8 @@ int main (int argc, char **argv) { char *user; /* User name */ const struct passwd *pw; /* Password entry from /etc/passwd */ + struct option_flags flags = {.chroot = false}; + bool process_selinux; sanitize_env (); check_fds (); @@ -472,7 +485,8 @@ int main (int argc, char **argv) OPENLOG (Prog); /* parse the command line options */ - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; /* * Get the name of the user to check. It is either the command line @@ -481,14 +495,14 @@ int main (int argc, char **argv) if (optind < argc) { if (!is_valid_user_name (argv[optind])) { fprintf (stderr, _("%s: Provided user name is not a valid name\n"), Prog); - fail_exit (1); + fail_exit (1, process_selinux); } user = argv[optind]; pw = xgetpwnam (user); if (NULL == pw) { fprintf (stderr, _("%s: user '%s' does not exist\n"), Prog, user); - fail_exit (1); + fail_exit (1, process_selinux); } } else { pw = get_my_pwent (); @@ -498,19 +512,19 @@ int main (int argc, char **argv) Prog); SYSLOG ((LOG_WARN, "Cannot determine the user name of the caller (UID %lu)", (unsigned long) getuid ())); - fail_exit (1); + fail_exit (1, process_selinux); } user = xstrdup (pw->pw_name); } - check_perms (pw); + check_perms (pw, &flags); /* * Now get the login shell. Either get it from the password * file, or use the value from the command line. */ if (!sflg) { - STRTCPY(loginsh, pw->pw_shell); + strtcpy_a(loginsh, pw->pw_shell); } /* @@ -530,18 +544,18 @@ int main (int argc, char **argv) */ if (valid_field (loginsh, ":,=\n") != 0) { fprintf (stderr, _("%s: Invalid entry: %s\n"), Prog, loginsh); - fail_exit (1); + fail_exit (1, process_selinux); } if (!streq(loginsh, "") && (loginsh[0] != '/' - || is_restricted_shell (loginsh) + || is_restricted_shell (loginsh, process_selinux) || (access (loginsh, X_OK) != 0))) { if (amroot) { fprintf (stderr, _("%s: Warning: %s is an invalid shell\n"), Prog, loginsh); } else { fprintf (stderr, _("%s: %s is an invalid shell\n"), Prog, loginsh); - fail_exit (1); + fail_exit (1, process_selinux); } } @@ -555,7 +569,7 @@ int main (int argc, char **argv) } } - update_shell (user, loginsh); + update_shell (user, loginsh, &flags); SYSLOG ((LOG_INFO, "changed user '%s' shell to '%s'", user, loginsh)); diff --git a/src/expiry.c b/src/expiry.c index 12647a23..8da89bdf 100644 --- a/src/expiry.c +++ b/src/expiry.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -29,14 +29,15 @@ static const char Prog[] = "expiry"; static bool cflg = false; /* local function prototypes */ -static void catch_signals (MAYBE_UNUSED int sig); +static void catch_signals(int); NORETURN static void usage (int status); static void process_flags (int argc, char **argv); /* * catch_signals - signal catcher */ -static void catch_signals (MAYBE_UNUSED int sig) +static void +catch_signals(int) { _exit (10); } diff --git a/src/faillog.c b/src/faillog.c index ae0ea3d9..2224a50d 100644 --- a/src/faillog.c +++ b/src/faillog.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -19,7 +19,7 @@ #include #include -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "defines.h" #include "faillog.h" #include "prototypes.h" @@ -27,6 +27,7 @@ #include "exitcodes.h" #include "shadowlog.h" #include "string/memset/memzero.h" +#include "string/strerrno.h" #include "string/strftime.h" @@ -172,7 +173,7 @@ static void print_one (/*@null@*/const struct passwd *pw, bool force) fprintf (stderr, "Cannot read time from faillog.\n"); return; } - STRFTIME(ptime, "%D %H:%M:%S %z", tm); + strftime_a(ptime, "%D %H:%M:%S %z", tm); cp = ptime; printf ("%-9s %5d %5d ", @@ -244,7 +245,7 @@ static bool reset_one (uid_t uid) fl.fail_cnt = 0; if ( (fseeko (fail, offset, SEEK_SET) == 0) - && (fwrite (&fl, sizeof (fl), 1, fail) == 1)) { + && (fwrite(&fl, sizeof(fl), 1, fail) == 1)) { (void) fflush (fail); return false; } @@ -265,7 +266,7 @@ static void reset (void) /* There is no need to reset outside of the faillog * database. */ - uid_t uidmax = statbuf.st_size / sizeof (struct faillog); + uid_t uidmax = statbuf.st_size / sizeof(struct faillog); if (uidmax > 1) { uidmax--; } @@ -340,7 +341,7 @@ static bool setmax_one (uid_t uid, short max) fl.fail_max = max; if ( (fseeko (fail, offset, SEEK_SET) == 0) - && (fwrite (&fl, sizeof (fl), 1, fail) == 1)) { + && (fwrite(&fl, sizeof(fl), 1, fail) == 1)) { (void) fflush (fail); return false; } @@ -371,7 +372,7 @@ static void setmax (short max) /* The default umax value is based on the size of the * faillog database. */ - uid_t uidmax = statbuf.st_size / sizeof (struct faillog); + uid_t uidmax = statbuf.st_size / sizeof(struct faillog); if (uidmax > 1) { uidmax--; } @@ -438,7 +439,7 @@ static bool set_locktime_one (uid_t uid, long locktime) fl.fail_locktime = locktime; if ( (fseeko (fail, offset, SEEK_SET) == 0) - && (fwrite (&fl, sizeof (fl), 1, fail) == 1)) { + && (fwrite(&fl, sizeof(fl), 1, fail) == 1)) { (void) fflush (fail); return false; } @@ -469,7 +470,7 @@ static void set_locktime (long locktime) /* The default umax value is based on the size of the * faillog database. */ - uid_t uidmax = statbuf.st_size / sizeof (struct faillog); + uid_t uidmax = statbuf.st_size / sizeof(struct faillog); if (uidmax > 1) { uidmax--; } @@ -638,7 +639,7 @@ int main (int argc, char **argv) if (NULL == fail) { fprintf (stderr, _("%s: Cannot open %s: %s\n"), - Prog, FAILLOG_FILE, strerror (errno)); + Prog, FAILLOG_FILE, strerrno()); exit (E_NOPERM); } @@ -646,7 +647,7 @@ int main (int argc, char **argv) if (fstat (fileno (fail), &statbuf) != 0) { fprintf (stderr, _("%s: Cannot get the size of %s: %s\n"), - Prog, FAILLOG_FILE, strerror (errno)); + Prog, FAILLOG_FILE, strerrno()); exit (E_NOPERM); } @@ -673,7 +674,7 @@ int main (int argc, char **argv) || (fclose (fail) != 0)) { fprintf (stderr, _("%s: Failed to write %s: %s\n"), - Prog, FAILLOG_FILE, strerror (errno)); + Prog, FAILLOG_FILE, strerrno()); (void) fclose (fail); errors = true; } diff --git a/src/free_subid_range.c b/src/free_subid_range.c index 4bdacfb7..c3e94d5d 100644 --- a/src/free_subid_range.c +++ b/src/free_subid_range.c @@ -4,7 +4,7 @@ #include #include -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "subid.h" #include "stdlib.h" #include "prototypes.h" diff --git a/src/get_subid_owners.c b/src/get_subid_owners.c index abb42ba8..ca6cf99c 100644 --- a/src/get_subid_owners.c +++ b/src/get_subid_owners.c @@ -4,6 +4,7 @@ #include #include "atoi/getnum.h" +#include "attr.h" #include "prototypes.h" #include "shadowlog.h" #include "stdlib.h" @@ -14,13 +15,8 @@ static const char Prog[] = "get_subid_owners"; -static void usage(void) -{ - fprintf(stderr, "Usage: [-g] %s subuid\n", Prog); - fprintf(stderr, " list uids who own the given subuid\n"); - fprintf(stderr, " pass -g to query a subgid\n"); - exit(EXIT_FAILURE); -} +NORETURN static void usage(void); + int main(int argc, char *argv[]) { @@ -52,3 +48,13 @@ int main(int argc, char *argv[]) free(uids); return 0; } + + +static void +usage(void) +{ + fprintf(stderr, "Usage: [-g] %s subuid\n", Prog); + fprintf(stderr, " list uids who own the given subuid\n"); + fprintf(stderr, " pass -g to query a subgid\n"); + exit(EXIT_FAILURE); +} diff --git a/src/getsubids.c b/src/getsubids.c index 739792e9..9e29879f 100644 --- a/src/getsubids.c +++ b/src/getsubids.c @@ -4,6 +4,7 @@ #include #include +#include "attr.h" #include "prototypes.h" #include "shadowlog.h" #include "string/strcmp/streq.h" @@ -11,13 +12,9 @@ static const char Prog[] = "getsubids"; -static void usage(void) -{ - fprintf(stderr, "Usage: %s [-g] user\n", Prog); - fprintf(stderr, " list subuid ranges for user\n"); - fprintf(stderr, " pass -g to list subgid ranges\n"); - exit(EXIT_FAILURE); -} + +NORETURN static void usage(void); + int main(int argc, char *argv[]) { @@ -49,3 +46,13 @@ int main(int argc, char *argv[]) subid_free(ranges); return 0; } + + +static void +usage(void) +{ + fprintf(stderr, "Usage: %s [-g] user\n", Prog); + fprintf(stderr, " list subuid ranges for user\n"); + fprintf(stderr, " pass -g to list subgid ranges\n"); + exit(EXIT_FAILURE); +} diff --git a/src/gpasswd.c b/src/gpasswd.c index 460bd14c..14c8f4f6 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -21,7 +21,7 @@ #include #include "agetpass.h" -#include "alloc/x/xmalloc.h" +#include "alloc/malloc.h" #include "attr.h" #include "defines.h" /*@-exitarg@*/ @@ -32,15 +32,21 @@ #ifdef SHADOWGRP #include "sgroupio.h" #endif +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "sssd.h" #include "string/memset/memzero.h" #include "string/sprintf/snprintf.h" #include "string/strcmp/streq.h" #include "string/strcpy/strtcpy.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" +#include "string/strerrno.h" +struct option_flags { + bool chroot; +}; + /* * Global variables */ @@ -87,30 +93,30 @@ NORETURN static void failure(void); static void usage (int status); static void catch_signals (int killed); static bool is_valid_user_list (const char *users); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); static void check_flags (int argc, int opt_index); -static void open_files (void); -static void close_files (void); +static void open_files(const struct option_flags *flags); +static void close_files(const struct option_flags *flags); #ifdef SHADOWGRP -static void get_group (struct group *gr, struct sgrp *sg); -static void check_perms (const struct group *gr, const struct sgrp *sg); +static void get_group(struct group *gr, struct sgrp *sg, const struct option_flags *flags); +static void check_perms(const struct sgrp *sg); static void update_group (struct group *gr, struct sgrp *sg); static void change_passwd (struct group *gr, struct sgrp *sg); #else -static void get_group (struct group *gr); -static void check_perms (const struct group *gr); +static void get_group(struct group *gr, const struct option_flags *flags); +static void check_perms(void); static void update_group (struct group *gr); static void change_passwd (struct group *gr); #endif static void log_gpasswd_failure (const char *suffix); -static void log_gpasswd_failure_system (/*@null@*/MAYBE_UNUSED void *arg); -static void log_gpasswd_failure_group (/*@null@*/MAYBE_UNUSED void *arg); +static void log_gpasswd_failure_system (/*@null@*/void *); +static void log_gpasswd_failure_group (/*@null@*/void *); #ifdef SHADOWGRP -static void log_gpasswd_failure_gshadow (/*@null@*/MAYBE_UNUSED void *arg); +static void log_gpasswd_failure_gshadow (/*@null@*/void *); #endif static void log_gpasswd_success (const char *suffix); -static void log_gpasswd_success_system (/*@null@*/MAYBE_UNUSED void *arg); -static void log_gpasswd_success_group (/*@null@*/MAYBE_UNUSED void *arg); +static void log_gpasswd_success_system (/*@null@*/void *); +static void log_gpasswd_success_group(/*@null@*/void *); /* * usage - display usage message @@ -211,7 +217,7 @@ static void failure(void) /* * process_flags - process the command line options and arguments */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; static struct option long_options[] = { @@ -272,6 +278,7 @@ static void process_flags (int argc, char **argv) Mflg = true; break; case 'Q': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 'r': /* remove group password */ rflg = true; @@ -331,15 +338,19 @@ static void check_flags (int argc, int opt_index) * * It will call exit in case of error. */ -static void open_files (void) +static void open_files(const struct option_flags *flags) { + static bool process_selinux; + + process_selinux = !flags->chroot; + if (gr_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); exit (E_NOPERM); } - add_cleanup (cleanup_unlock_group, NULL); + add_cleanup (cleanup_unlock_group, &process_selinux); #ifdef SHADOWGRP if (is_shadowgrp) { @@ -349,7 +360,7 @@ static void open_files (void) Prog, sgr_dbname ()); exit (E_NOPERM); } - add_cleanup (cleanup_unlock_gshadow, NULL); + add_cleanup (cleanup_unlock_gshadow, &process_selinux); } #endif /* SHADOWGRP */ @@ -460,25 +471,28 @@ static void log_gpasswd_failure (const char *suffix) } } -static void log_gpasswd_failure_system (MAYBE_UNUSED void *arg) +static void +log_gpasswd_failure_system(void *) { log_gpasswd_failure (""); } -static void log_gpasswd_failure_group (MAYBE_UNUSED void *arg) +static void +log_gpasswd_failure_group(void *) { char buf[1024]; - SNPRINTF(buf, " in %s", gr_dbname()); + stprintf_a(buf, " in %s", gr_dbname()); log_gpasswd_failure (buf); } #ifdef SHADOWGRP -static void log_gpasswd_failure_gshadow (MAYBE_UNUSED void *arg) +static void +log_gpasswd_failure_gshadow(void *) { char buf[1024]; - SNPRINTF(buf, " in %s", sgr_dbname()); + stprintf_a(buf, " in %s", sgr_dbname()); log_gpasswd_failure (buf); } #endif /* SHADOWGRP */ @@ -514,7 +528,7 @@ static void log_gpasswd_success (const char *suffix) "password of group %s removed by %s%s", group, myname, suffix)); #ifdef WITH_AUDIT - SNPRINTF(buf, "password of group %s removed by %s%s", + stprintf_a(buf, "password of group %s removed by %s%s", group, myname, suffix); audit_logger_with_group (AUDIT_GRP_CHAUTHTOK, "delete-group-password", @@ -526,7 +540,7 @@ static void log_gpasswd_success (const char *suffix) "access to group %s restricted by %s%s", group, myname, suffix)); #ifdef WITH_AUDIT - SNPRINTF(buf, "access to group %s restricted by %s%s", + stprintf_a(buf, "access to group %s restricted by %s%s", group, myname, suffix); audit_logger_with_group (AUDIT_GRP_MGMT, "restrict-group", @@ -571,16 +585,18 @@ static void log_gpasswd_success (const char *suffix) } } -static void log_gpasswd_success_system (MAYBE_UNUSED void *arg) +static void +log_gpasswd_success_system(void *) { log_gpasswd_success (""); } -static void log_gpasswd_success_group (MAYBE_UNUSED void *arg) +static void +log_gpasswd_success_group(void *) { char buf[1024]; - SNPRINTF(buf, " in %s", gr_dbname()); + stprintf_a(buf, " in %s", gr_dbname()); log_gpasswd_success (buf); } @@ -591,9 +607,13 @@ static void log_gpasswd_success_group (MAYBE_UNUSED void *arg) * * It will call exit in case of error. */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { - if (gr_close () == 0) { + bool process_selinux; + + process_selinux = !flags->chroot; + + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); @@ -602,12 +622,12 @@ static void close_files (void) add_cleanup (log_gpasswd_success_group, NULL); del_cleanup (log_gpasswd_failure_group); - cleanup_unlock_group (NULL); + cleanup_unlock_group (&process_selinux); del_cleanup (cleanup_unlock_group); #ifdef SHADOWGRP if (is_shadowgrp) { - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); @@ -615,7 +635,7 @@ static void close_files (void) } del_cleanup (log_gpasswd_failure_gshadow); - cleanup_unlock_gshadow (NULL); + cleanup_unlock_gshadow (&process_selinux); del_cleanup (cleanup_unlock_gshadow); } #endif /* SHADOWGRP */ @@ -631,9 +651,9 @@ static void close_files (void) * It only returns if the user is allowed. */ #ifdef SHADOWGRP -static void check_perms (const struct group *gr, const struct sgrp *sg) +static void check_perms (const struct sgrp *sg) #else -static void check_perms (const struct group *gr) +static void check_perms (void) #endif { /* @@ -692,18 +712,21 @@ static void update_group (struct group *gr) * The information are copied in group structure(s) so that they can be * modified later. * - * Note: If !is_shadowgrp, *sg will not be initialized. + * Note: if !is_shadowgrp, *sg will not be initialized. */ #ifdef SHADOWGRP -static void get_group (struct group *gr, struct sgrp *sg) +static void get_group(struct group *gr, struct sgrp *sg, const struct option_flags *flags) #else -static void get_group (struct group *gr) +static void get_group(struct group *gr, const struct option_flags *flags) #endif { struct group const*tmpgr = NULL; #ifdef SHADOWGRP struct sgrp const*tmpsg = NULL; #endif + bool process_selinux; + + process_selinux = !flags->chroot; if (gr_open (O_RDONLY) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); @@ -724,7 +747,7 @@ static void get_group (struct group *gr) gr->gr_passwd = xstrdup (tmpgr->gr_passwd); gr->gr_mem = dup_list (tmpgr->gr_mem); - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while closing read-only %s\n"), Prog, gr_dbname ()); @@ -758,11 +781,11 @@ static void get_group (struct group *gr) sg->sg_mem = dup_list (gr->gr_mem); - sg->sg_adm = XMALLOC(1, char *); + sg->sg_adm = xmalloc_T(1, char *); sg->sg_adm[0] = NULL; } - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while closing read-only %s\n"), Prog, sgr_dbname ()); @@ -808,11 +831,11 @@ static void change_passwd (struct group *gr) exit (1); } - STRTCPY(pass, cp); + strtcpy_a(pass, cp); erase_pass (cp); cp = agetpass (_("Re-enter new password: ")); if (NULL == cp) { - MEMZERO(pass); + memzero_a(pass); exit (1); } @@ -822,7 +845,7 @@ static void change_passwd (struct group *gr) } erase_pass (cp); - MEMZERO(pass); + memzero_a(pass); if (retries + 1 < RETRIES) { puts (_("They don't match; try again")); @@ -836,11 +859,11 @@ static void change_passwd (struct group *gr) salt = crypt_make_salt (NULL, NULL); cp = pw_encrypt (pass, salt); - MEMZERO(pass); + memzero_a(pass); if (NULL == cp) { fprintf (stderr, _("%s: failed to crypt password with salt '%s': %s\n"), - Prog, salt, strerror (errno)); + Prog, salt, strerrno()); exit (1); } #ifdef SHADOWGRP @@ -864,10 +887,7 @@ int main (int argc, char **argv) struct sgrp sgent; #endif struct passwd *pw = NULL; - -#ifdef WITH_AUDIT - audit_help_open (); -#endif + struct option_flags flags = {.chroot = false}; sanitize_env (); check_fds (); @@ -888,6 +908,10 @@ int main (int argc, char **argv) log_set_logfd(stderr); OPENLOG (Prog); +#ifdef WITH_AUDIT + audit_help_open (); +#endif + setbuf (stdout, NULL); setbuf (stderr, NULL); @@ -924,24 +948,24 @@ int main (int argc, char **argv) } /* Parse the options */ - process_flags (argc, argv); + process_flags (argc, argv, &flags); /* * Replicate the group so it can be modified later on. */ #ifdef SHADOWGRP - get_group (&grent, &sgent); + get_group (&grent, &sgent, &flags); #else - get_group (&grent); + get_group (&grent, &flags); #endif /* * Check if the user is allowed to change the password of this group. */ #ifdef SHADOWGRP - check_perms (&grent, &sgent); + check_perms(&sgent); #else - check_perms (&grent); + check_perms(); #endif /* @@ -1087,7 +1111,7 @@ int main (int argc, char **argv) } pwd_init (); - open_files (); + open_files (&flags); #ifdef SHADOWGRP update_group (&grent, &sgent); @@ -1095,7 +1119,7 @@ int main (int argc, char **argv) update_group (&grent); #endif - close_files (); + close_files (&flags); nscd_flush_cache ("group"); sssd_flush_cache (SSSD_DB_GROUP); diff --git a/src/groupadd.c b/src/groupadd.c index a0d5adeb..fab8111b 100644 --- a/src/groupadd.c +++ b/src/groupadd.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -37,8 +37,11 @@ #ifdef SHADOWGRP #include "sgroupio.h" #endif +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "string/memset/memzero.h" +#include "string/strcmp/streq.h" +#include "string/strerrno.h" #include "string/strtok/stpsep.h" @@ -53,6 +56,14 @@ #define E_NAME_IN_USE 9 /* group name not unique */ #define E_GRP_UPDATE 10 /* can't update group file */ +/* + * Structures + */ +struct option_flags { + bool chroot; + bool prefix; +}; + /* * Global variables */ @@ -85,9 +96,9 @@ static void new_sgent (struct sgrp *sgent); #endif static void grp_update (void); static void check_new_name (void); -static void close_files (void); -static void open_files (void); -static void process_flags (int argc, char **argv); +static void close_files(const struct option_flags *flags); +static void open_files(const struct option_flags *flags); +static void process_flags (int argc, char **argv, struct option_flags *flags); static void check_flags (void); static void check_perms (void); @@ -115,7 +126,8 @@ usage (int status) (void) fputs (_(" -r, --system create a system account\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); (void) fputs (_(" -P, --prefix PREFIX_DIR directory prefix\n"), usageout); - (void) fputs (_(" -U, --users USERS list of user members of this group\n"), usageout); + (void) fputs (_(" -U, --users USERS comma-separated list of users to add as\n" + " members of this group\n"), usageout); (void) fputs ("\n", usageout); exit (status); } @@ -123,7 +135,7 @@ usage (int status) static void fail_exit(int status) { #ifdef WITH_AUDIT - audit_logger(AUDIT_ADD_GROUP, Prog, "add-group", group_name, + audit_logger(AUDIT_ADD_GROUP, "add-group", group_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif exit (status); @@ -137,7 +149,7 @@ static void fail_exit(int status) */ static void new_grent (struct group *grent) { - memzero (grent, sizeof *grent); + memzero(grent, sizeof(*grent)); grent->gr_name = group_name; if (pflg) { grent->gr_passwd = group_passwd; @@ -157,7 +169,7 @@ static void new_grent (struct group *grent) */ static void new_sgent (struct sgrp *sgent) { - memzero (sgent, sizeof *sgent); + memzero(sgent, sizeof(*sgent)); sgent->sg_namp = group_name; if (pflg) { sgent->sg_passwd = group_passwd; @@ -206,7 +218,7 @@ grp_update(void) } #endif /* SHADOWGRP */ - if (user_list) { + if (user_list && !streq(user_list, "")) { char *u, *ul; ul = user_list; @@ -271,17 +283,21 @@ check_new_name(void) * close_files() closes all of the files that were opened for this new * group. This causes any modified entries to be written out. */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + /* First, write the changes in the regular group database */ - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); fail_exit (E_GRP_UPDATE); } #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, Prog, + audit_logger (AUDIT_ADD_GROUP, "add-group", group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif @@ -289,20 +305,20 @@ static void close_files (void) gr_dbname (), group_name, (unsigned int) group_id)); del_cleanup (cleanup_report_add_group_group); - cleanup_unlock_group (NULL); + cleanup_unlock_group (&process_selinux); del_cleanup (cleanup_unlock_group); /* Now, write the changes in the shadow database */ #ifdef SHADOWGRP if (is_shadow_grp) { - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); fail_exit (E_GRP_UPDATE); } #ifdef WITH_AUDIT - audit_logger (AUDIT_GRP_MGMT, Prog, + audit_logger (AUDIT_GRP_MGMT, "add-shadow-group", group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif @@ -310,7 +326,7 @@ static void close_files (void) sgr_dbname (), group_name)); del_cleanup (cleanup_report_add_group_gshadow); - cleanup_unlock_gshadow (NULL); + cleanup_unlock_gshadow (&process_selinux); del_cleanup (cleanup_unlock_gshadow); } #endif /* SHADOWGRP */ @@ -326,8 +342,12 @@ static void close_files (void) * * open_files() opens the two group files. */ -static void open_files (void) +static void open_files(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + /* First, lock the databases */ if (gr_lock () == 0) { fprintf (stderr, @@ -335,7 +355,7 @@ static void open_files (void) Prog, gr_dbname ()); fail_exit (E_GRP_UPDATE); } - add_cleanup (cleanup_unlock_group, NULL); + add_cleanup (cleanup_unlock_group, &process_selinux); #ifdef SHADOWGRP if (is_shadow_grp) { @@ -345,7 +365,7 @@ static void open_files (void) Prog, sgr_dbname ()); fail_exit (E_GRP_UPDATE); } - add_cleanup (cleanup_unlock_gshadow, NULL); + add_cleanup (cleanup_unlock_gshadow, &process_selinux); } #endif /* SHADOWGRP */ @@ -357,8 +377,8 @@ static void open_files (void) /* And now open the databases */ if (gr_open (O_CREAT | O_RDWR) == 0) { - fprintf (stderr, _("%s: cannot open %s: %s\n"), Prog, gr_dbname (), strerror(errno)); - SYSLOG ((LOG_WARN, "cannot open %s: %s", gr_dbname (), strerror(errno))); + fprintf(stderr, _("%s: cannot open %s: %s\n"), Prog, gr_dbname(), strerrno()); + SYSLOG((LOG_WARN, "cannot open %s: %s", gr_dbname(), strerrno())); fail_exit (E_GRP_UPDATE); } @@ -367,8 +387,8 @@ static void open_files (void) if (sgr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s: %s\n"), - Prog, sgr_dbname (), strerror(errno)); - SYSLOG ((LOG_WARN, "cannot open %s: %s", sgr_dbname (), strerror(errno))); + Prog, sgr_dbname(), strerrno()); + SYSLOG((LOG_WARN, "cannot open %s: %s", sgr_dbname(), strerrno())); fail_exit (E_GRP_UPDATE); } } @@ -380,7 +400,7 @@ static void open_files (void) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { /* * Parse the command line options. @@ -455,8 +475,10 @@ static void process_flags (int argc, char **argv) rflg = true; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 'P': /* no-op, handled in process_prefix_flag () */ + flags->prefix = true; break; case 'U': user_list = optarg; @@ -583,6 +605,8 @@ static void check_perms (void) */ int main (int argc, char **argv) { + struct option_flags flags = {.chroot = false, .prefix = false}; + log_set_progname(Prog); log_set_logfd(stderr); @@ -608,7 +632,7 @@ int main (int argc, char **argv) /* * Parse the command line options. */ - process_flags (argc, argv); + process_flags (argc, argv, &flags); check_perms (); @@ -625,7 +649,7 @@ int main (int argc, char **argv) * Do the hard stuff - open the files, create the group entries, * then close and update the files. */ - open_files (); + open_files (&flags); if (!gflg) { if (find_new_gid (rflg, &group_id, NULL) < 0) { @@ -634,7 +658,7 @@ int main (int argc, char **argv) } grp_update (); - close_files (); + close_files (&flags); if (run_parts ("/etc/shadow-maint/groupadd-post.d", group_name, Prog)) { exit(1); diff --git a/src/groupdel.c b/src/groupdel.c index 3d289fef..5b4bb8d1 100644 --- a/src/groupdel.c +++ b/src/groupdel.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -33,6 +33,12 @@ #endif #include "shadowlog.h" #include "run_part.h" + +struct option_flags { + bool chroot; + bool prefix; +}; + /* * Global variables */ @@ -61,10 +67,10 @@ static bool is_shadow_grp; /* local function prototypes */ NORETURN static void usage (int status); static void grp_update (void); -static void close_files (void); -static void open_files (void); +static void close_files(const struct option_flags *flags); +static void open_files(const struct option_flags *flags); static void group_busy (gid_t gid); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); /* * usage - display usage message and exit @@ -90,8 +96,8 @@ usage (int status) static void fail_exit(int status) { #ifdef WITH_AUDIT - audit_logger(AUDIT_GRP_MGMT, Prog, "delete-group", group_name, - AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); + audit_logger(AUDIT_GRP_MGMT, "delete-group", group_name, + AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif exit (status); } @@ -146,10 +152,14 @@ static void grp_update (void) * close_files() closes all of the files that were opened for this * new group. This causes any modified entries to be written out. */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + /* First, write the changes in the regular group database */ - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); @@ -157,7 +167,7 @@ static void close_files (void) } #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_GROUP, Prog, + audit_logger (AUDIT_DEL_GROUP, "delete-group", group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif @@ -166,14 +176,14 @@ static void close_files (void) group_name, gr_dbname ())); del_cleanup (cleanup_report_del_group_group); - cleanup_unlock_group (NULL); + cleanup_unlock_group (&process_selinux); del_cleanup (cleanup_unlock_group); /* Then, write the changes in the shadow database */ #ifdef SHADOWGRP if (is_shadow_grp) { - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); @@ -181,7 +191,7 @@ static void close_files (void) } #ifdef WITH_AUDIT - audit_logger (AUDIT_GRP_MGMT, Prog, + audit_logger (AUDIT_GRP_MGMT, "delete-shadow-group", group_name, group_id, SHADOW_AUDIT_SUCCESS); #endif @@ -190,7 +200,7 @@ static void close_files (void) group_name, sgr_dbname ())); del_cleanup (cleanup_report_del_group_gshadow); - cleanup_unlock_gshadow (NULL); + cleanup_unlock_gshadow (&process_selinux); del_cleanup (cleanup_unlock_gshadow); } #endif /* SHADOWGRP */ @@ -204,8 +214,12 @@ static void close_files (void) * * open_files() opens the two group files. */ -static void open_files (void) +static void open_files(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + /* First, lock the databases */ if (gr_lock () == 0) { fprintf (stderr, @@ -213,7 +227,7 @@ static void open_files (void) Prog, gr_dbname ()); fail_exit (E_GRP_UPDATE); } - add_cleanup (cleanup_unlock_group, NULL); + add_cleanup (cleanup_unlock_group, &process_selinux); #ifdef SHADOWGRP if (is_shadow_grp) { if (sgr_lock () == 0) { @@ -222,7 +236,7 @@ static void open_files (void) Prog, sgr_dbname ()); fail_exit (E_GRP_UPDATE); } - add_cleanup (cleanup_unlock_gshadow, NULL); + add_cleanup (cleanup_unlock_gshadow, &process_selinux); } #endif @@ -296,7 +310,7 @@ static void group_busy (gid_t gid) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { /* * Parse the command line options. @@ -317,8 +331,10 @@ static void process_flags (int argc, char **argv) usage (E_SUCCESS); /*@notreached@*/break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 'P': /* no-op, handled in process_prefix_flag () */ + flags->prefix = true; break; case 'f': check_group_busy = false; @@ -352,6 +368,7 @@ int main (int argc, char **argv) int retval; #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ + struct option_flags flags = {.chroot = false, .prefix = false}; log_set_progname(Prog); log_set_logfd(stderr); @@ -375,7 +392,7 @@ int main (int argc, char **argv) fail_exit (1); } - process_flags (argc, argv); + process_flags (argc, argv, &flags); #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM @@ -449,11 +466,11 @@ int main (int argc, char **argv) * Do the hard stuff - open the files, delete the group entries, * then close and update the files. */ - open_files (); + open_files (&flags); grp_update (); - close_files (); + close_files (&flags); if (run_parts ("/etc/shadow-maint/groupdel-post.d", group_name, Prog)) { diff --git a/src/groupmems.c b/src/groupmems.c index d37b237f..d8fd4244 100644 --- a/src/groupmems.c +++ b/src/groupmems.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include @@ -19,16 +19,18 @@ #endif /* USE_PAM */ #include -#include "alloc/x/xmalloc.h" +#include "alloc/malloc.h" +#include "attr.h" #include "defines.h" #include "groupio.h" #include "prototypes.h" #ifdef SHADOWGRP #include "sgroupio.h" #endif +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "string/strcmp/streq.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" /* Exit Status Values */ @@ -44,6 +46,13 @@ #define EXIT_INVALID_USER 8 /* specified user does not exist */ #define EXIT_INVALID_GROUP 9 /* specified group does not exist */ +/* + * Structures + */ +struct option_flags { + bool chroot; +}; + /* * Global variables */ @@ -66,15 +75,17 @@ static bool sgr_locked = false; /* local function prototypes */ static char *whoami (void); static void add_user (const char *user, - const struct group *grp); + const struct group *grp, + bool process_selinux); static void remove_user (const char *user, - const struct group *grp); -static void purge_members (const struct group *grp); + const struct group *grp, + bool process_selinux); +static void purge_members (const struct group *grp, bool process_selinux); static void display_members (const char *const *members); NORETURN static void usage (int status); -static void process_flags (int argc, char **argv); -static void check_perms (void); -NORETURN static void fail_exit (int code); +static void process_flags (int argc, char **argv, struct option_flags *flags); +static void check_perms (bool process_selinux); +NORETURN static void fail_exit (int code, bool process_selinux); #define isroot() (getuid () == 0) static char *whoami (void) @@ -97,7 +108,8 @@ static char *whoami (void) * add_user - Add a user to the specified group */ static void add_user (const char *user, - const struct group *grp) + const struct group *grp, + bool process_selinux) { struct group *newgrp; @@ -106,7 +118,7 @@ static void add_user (const char *user, fprintf (stderr, _("%s: user '%s' is already a member of '%s'\n"), Prog, user, grp->gr_name); - fail_exit (EXIT_MEMBER_EXISTS); + fail_exit (EXIT_MEMBER_EXISTS, process_selinux); } newgrp = __gr_dup(grp); @@ -114,7 +126,7 @@ static void add_user (const char *user, fprintf (stderr, _("%s: Out of memory. Cannot update %s.\n"), Prog, gr_dbname ()); - fail_exit (13); + fail_exit (13, process_selinux); } /* Add the user to the /etc/group group */ @@ -130,7 +142,7 @@ static void add_user (const char *user, static struct sgrp sgrent; sgrent.sg_namp = xstrdup (newgrp->gr_name); sgrent.sg_mem = dup_list (newgrp->gr_mem); - sgrent.sg_adm = XMALLOC(1, char *); + sgrent.sg_adm = xmalloc_T(1, char *); sgrent.sg_adm[0] = NULL; /* Move any password to gshadow */ @@ -144,7 +156,7 @@ static void add_user (const char *user, fprintf (stderr, _("%s: Out of memory. Cannot update %s.\n"), Prog, sgr_dbname ()); - fail_exit (13); + fail_exit (13, process_selinux); } /* Add the user to the members */ newsg->sg_mem = add_list (newsg->sg_mem, user); @@ -155,7 +167,7 @@ static void add_user (const char *user, fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, sgr_dbname (), newsg->sg_namp); - fail_exit (13); + fail_exit (13, process_selinux); } } #endif @@ -164,7 +176,7 @@ static void add_user (const char *user, fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, gr_dbname (), newgrp->gr_name); - fail_exit (13); + fail_exit (13, process_selinux); } } @@ -172,7 +184,8 @@ static void add_user (const char *user, * remove_user - Remove a user from a given group */ static void remove_user (const char *user, - const struct group *grp) + const struct group *grp, + bool process_selinux) { struct group *newgrp; @@ -181,7 +194,7 @@ static void remove_user (const char *user, fprintf (stderr, _("%s: user '%s' is not a member of '%s'\n"), Prog, user, grp->gr_name); - fail_exit (EXIT_NOT_MEMBER); + fail_exit (EXIT_NOT_MEMBER, process_selinux); } newgrp = __gr_dup (grp); @@ -189,7 +202,7 @@ static void remove_user (const char *user, fprintf (stderr, _("%s: Out of memory. Cannot update %s.\n"), Prog, gr_dbname ()); - fail_exit (13); + fail_exit (13, process_selinux); } /* Remove the user from the /etc/group group */ @@ -205,7 +218,7 @@ static void remove_user (const char *user, static struct sgrp sgrent; sgrent.sg_namp = xstrdup (newgrp->gr_name); sgrent.sg_mem = dup_list (newgrp->gr_mem); - sgrent.sg_adm = XMALLOC(1, char *); + sgrent.sg_adm = xmalloc_T(1, char *); sgrent.sg_adm[0] = NULL; /* Move any password to gshadow */ @@ -219,7 +232,7 @@ static void remove_user (const char *user, fprintf (stderr, _("%s: Out of memory. Cannot update %s.\n"), Prog, sgr_dbname ()); - fail_exit (13); + fail_exit (13, process_selinux); } /* Remove the user from the members */ newsg->sg_mem = del_list (newsg->sg_mem, user); @@ -231,7 +244,7 @@ static void remove_user (const char *user, fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, sgr_dbname (), newsg->sg_namp); - fail_exit (13); + fail_exit (13, process_selinux); } } #endif @@ -240,14 +253,14 @@ static void remove_user (const char *user, fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, gr_dbname (), newgrp->gr_name); - fail_exit (13); + fail_exit (13, process_selinux); } } /* * purge_members - Remove every members of the specified group */ -static void purge_members (const struct group *grp) +static void purge_members (const struct group *grp, bool process_selinux) { struct group *newgrp = __gr_dup (grp); @@ -255,7 +268,7 @@ static void purge_members (const struct group *grp) fprintf (stderr, _("%s: Out of memory. Cannot update %s.\n"), Prog, gr_dbname ()); - fail_exit (13); + fail_exit (13, process_selinux); } /* Remove all the members of the /etc/group group */ @@ -270,9 +283,9 @@ static void purge_members (const struct group *grp) /* Create a shadow group based on this group */ static struct sgrp sgrent; sgrent.sg_namp = xstrdup (newgrp->gr_name); - sgrent.sg_mem = XMALLOC(1, char *); + sgrent.sg_mem = xmalloc_T(1, char *); sgrent.sg_mem[0] = NULL; - sgrent.sg_adm = XMALLOC(1, char *); + sgrent.sg_adm = xmalloc_T(1, char *); sgrent.sg_adm[0] = NULL; /* Move any password to gshadow */ @@ -286,7 +299,7 @@ static void purge_members (const struct group *grp) fprintf (stderr, _("%s: Out of memory. Cannot update %s.\n"), Prog, sgr_dbname ()); - fail_exit (13); + fail_exit (13, process_selinux); } /* Remove all the members of the /etc/gshadow * group */ @@ -300,7 +313,7 @@ static void purge_members (const struct group *grp) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, sgr_dbname (), newsg->sg_namp); - fail_exit (13); + fail_exit (13, process_selinux); } } #endif @@ -309,7 +322,7 @@ static void purge_members (const struct group *grp) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, gr_dbname (), newgrp->gr_name); - fail_exit (13); + fail_exit (13, process_selinux); } } @@ -354,7 +367,7 @@ usage (int status) /* * process_flags - perform command line argument setting */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; static struct option long_options[] = { @@ -394,6 +407,7 @@ static void process_flags (int argc, char **argv) ++exclusive; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; default: usage (EXIT_USAGE); @@ -409,12 +423,13 @@ static void process_flags (int argc, char **argv) && (getpwnam (adduser) == NULL)) { fprintf (stderr, _("%s: user '%s' does not exist\n"), Prog, adduser); - fail_exit (EXIT_INVALID_USER); + fail_exit (EXIT_INVALID_USER, !flags->chroot); } } -static void check_perms (void) +static void +check_perms(MAYBE_UNUSED bool process_selinux) { if (!list) { #ifdef USE_PAM @@ -427,7 +442,7 @@ static void check_perms (void) fprintf (stderr, _("%s: Cannot determine your user name.\n"), Prog); - fail_exit (1); + fail_exit (1, process_selinux); } retval = pam_start (Prog, pampw->pw_name, &conv, &pamh); @@ -447,17 +462,17 @@ static void check_perms (void) if (NULL != pamh) { (void) pam_end (pamh, retval); } - fail_exit (1); + fail_exit (1, process_selinux); } (void) pam_end (pamh, retval); #endif } } -static void fail_exit (int code) +static void fail_exit (int code, bool process_selinux) { if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); @@ -468,7 +483,7 @@ static void fail_exit (int code) #ifdef SHADOWGRP if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); @@ -481,14 +496,14 @@ static void fail_exit (int code) exit (code); } -static void open_files (void) +static void open_files (bool process_selinux) { if (!list) { if (gr_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); - fail_exit (EXIT_GROUP_FILE); + fail_exit (EXIT_GROUP_FILE, process_selinux); } gr_locked = true; @@ -498,7 +513,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sgr_dbname ()); - fail_exit (EXIT_GROUP_FILE); + fail_exit (EXIT_GROUP_FILE, process_selinux); } sgr_locked = true; } @@ -507,28 +522,32 @@ static void open_files (void) if (gr_open (list ? O_RDONLY : O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - fail_exit (EXIT_GROUP_FILE); + fail_exit (EXIT_GROUP_FILE, process_selinux); } #ifdef SHADOWGRP if (is_shadowgrp) { if (sgr_open (list ? O_RDONLY : O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); - fail_exit (EXIT_GROUP_FILE); + fail_exit (EXIT_GROUP_FILE, process_selinux); } } #endif } -static void close_files (void) +static void close_files(const struct option_flags *flags) { - if ((gr_close () == 0) && !list) { + bool process_selinux; + + process_selinux = !flags->chroot; + + if ((gr_close (process_selinux) == 0) && !list) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); - fail_exit (EXIT_GROUP_FILE); + fail_exit (EXIT_GROUP_FILE, process_selinux); } if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -538,13 +557,13 @@ static void close_files (void) #ifdef SHADOWGRP if (is_shadowgrp) { - if ((sgr_close () == 0) && !list) { + if ((sgr_close (process_selinux) == 0) && !list) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); - fail_exit (EXIT_GROUP_FILE); + fail_exit (EXIT_GROUP_FILE, process_selinux); } if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -559,6 +578,8 @@ int main (int argc, char **argv) { char *name; const struct group *grp; + struct option_flags flags = {.chroot = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -575,44 +596,45 @@ int main (int argc, char **argv) is_shadowgrp = sgr_file_present (); #endif - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; if (NULL == thisgroup) { name = whoami (); if (!list && (NULL == name)) { fprintf (stderr, _("%s: your groupname does not match your username\n"), Prog); - fail_exit (EXIT_NOT_PRIMARY); + fail_exit (EXIT_NOT_PRIMARY, process_selinux); } } else { name = thisgroup; if (!list && !isroot ()) { fprintf (stderr, _("%s: only root can use the -g/--group option\n"), Prog); - fail_exit (EXIT_NOT_ROOT); + fail_exit (EXIT_NOT_ROOT, process_selinux); } } - check_perms (); + check_perms (process_selinux); - open_files (); + open_files (process_selinux); grp = gr_locate (name); if (NULL == grp) { fprintf (stderr, _("%s: group '%s' does not exist in %s\n"), Prog, name, gr_dbname ()); - fail_exit (EXIT_INVALID_GROUP); + fail_exit (EXIT_INVALID_GROUP, process_selinux); } if (list) { display_members ((const char *const *)grp->gr_mem); } else if (NULL != adduser) { - add_user (adduser, grp); + add_user (adduser, grp, process_selinux); } else if (NULL != deluser) { - remove_user (deluser, grp); + remove_user (deluser, grp, process_selinux); } else if (purge) { - purge_members (grp); + purge_members (grp, process_selinux); } - close_files (); + close_files (&flags); exit (EXIT_SUCCESS); } diff --git a/src/groupmod.c b/src/groupmod.c index cce6fd49..c29f9050 100644 --- a/src/groupmod.c +++ b/src/groupmod.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -27,7 +27,7 @@ #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ -#include "alloc/x/xmalloc.h" +#include "alloc/malloc.h" #include "atoi/getnum.h" #include "chkname.h" #include "defines.h" @@ -38,12 +38,13 @@ #ifdef SHADOWGRP #include "sgroupio.h" #endif +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "sssd.h" #include "string/sprintf/stpeprintf.h" #include "string/strcmp/streq.h" #include "string/strcpy/stpecpy.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" /* @@ -61,6 +62,10 @@ #define E_PAM_USERNAME 12 /* can't determine your username for use with pam */ #define E_PAM_ERROR 13 /* pam returned an error, see Syslog facility id groupmod */ +struct option_flags { + bool chroot; + bool prefix; +}; /* * Global variables @@ -102,11 +107,11 @@ static void new_sgent (struct sgrp *); 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 lock_files (void); +static void process_flags (int, char **, struct option_flags *); +static void lock_files(const struct option_flags *flags); static void prepare_failure_reports (void); static void open_files (void); -static void close_files (void); +static void close_files(const struct option_flags *flags); static void update_primary_groups (gid_t ogid, gid_t ngid); @@ -132,7 +137,8 @@ static void usage (int status) " PASSWORD\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); (void) fputs (_(" -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files\n"), usageout); - (void) fputs (_(" -U, --users USERS list of user members of this group\n"), usageout); + (void) fputs (_(" -U, --users USERS comma-separated list of users to add as\n" + " members of this group\n"), usageout); (void) fputs ("\n", usageout); exit (status); } @@ -237,7 +243,7 @@ grp_update(void) * shadowed password, we force the creation of a * gshadow entry when a new password is requested. */ - bzero(&sgrp, sizeof sgrp); + bzero(&sgrp, sizeof(sgrp)); sgrp.sg_namp = xstrdup (grp.gr_name); sgrp.sg_passwd = xstrdup (grp.gr_passwd); sgrp.sg_adm = ∅ @@ -253,11 +259,9 @@ grp_update(void) } if (user_list) { - char *u, *ul; - if (!aflg) { // requested to replace the existing groups - grp.gr_mem = XMALLOC(1, char *); + grp.gr_mem = xmalloc_T(1, char *); grp.gr_mem[0] = NULL; } else { // append to existing groups @@ -267,7 +271,7 @@ grp_update(void) #ifdef SHADOWGRP if (NULL != osgrp) { if (!aflg) { - sgrp.sg_mem = XMALLOC(1, char *); + sgrp.sg_mem = xmalloc_T(1, char *); sgrp.sg_mem[0] = NULL; } else { if (NULL != sgrp.sg_mem[0]) @@ -276,18 +280,22 @@ grp_update(void) } #endif /* SHADOWGRP */ - ul = user_list; - while (NULL != (u = strsep(&ul, ","))) { - if (prefix_getpwnam(u) == NULL) { - fprintf(stderr, _("Invalid member username %s\n"), u); - exit (E_GRP_UPDATE); - } + if (!streq(user_list, "")) { + char *u, *ul; - grp.gr_mem = add_list(grp.gr_mem, u); + ul = user_list; + while (NULL != (u = strsep(&ul, ","))) { + if (prefix_getpwnam(u) == NULL) { + fprintf(stderr, _("Invalid member username %s\n"), u); + exit(E_GRP_UPDATE); + } + + grp.gr_mem = add_list(grp.gr_mem, u); #ifdef SHADOWGRP - if (NULL != osgrp) - sgrp.sg_mem = add_list(sgrp.sg_mem, u); + if (NULL != osgrp) + sgrp.sg_mem = add_list(sgrp.sg_mem, u); #endif /* SHADOWGRP */ + } } } @@ -405,7 +413,7 @@ check_new_name(void) * values that the user will be created with accordingly. The values * are checked for sanity. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; static struct option long_options[] = { @@ -451,8 +459,10 @@ static void process_flags (int argc, char **argv) pflg = true; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 'P': /* no-op, handled in process_prefix_flag () */ + flags->prefix = true; break; case 'U': user_list = optarg; @@ -479,16 +489,20 @@ static void process_flags (int argc, char **argv) * close_files() closes all of the files that were opened for this new * group. This causes any modified entries to be written out. */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { - if (gr_close () == 0) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); exit (E_GRP_UPDATE); } #ifdef WITH_AUDIT - audit_logger (AUDIT_GRP_MGMT, Prog, + audit_logger (AUDIT_GRP_MGMT, info_group.audit_msg, group_name, AUDIT_NO_ID, SHADOW_AUDIT_SUCCESS); @@ -498,13 +512,13 @@ static void close_files (void) gr_dbname (), info_group.action)); del_cleanup (cleanup_report_mod_group); - cleanup_unlock_group (NULL); + cleanup_unlock_group (&process_selinux); del_cleanup (cleanup_unlock_group); #ifdef SHADOWGRP if ( is_shadow_grp && (pflg || nflg || user_list)) { - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); @@ -513,12 +527,12 @@ static void close_files (void) #ifdef WITH_AUDIT /* If both happened, log password change as its more important */ if (pflg) - audit_logger (AUDIT_GRP_CHAUTHTOK, Prog, + audit_logger (AUDIT_GRP_CHAUTHTOK, info_gshadow.audit_msg, group_name, AUDIT_NO_ID, SHADOW_AUDIT_SUCCESS); else - audit_logger (AUDIT_GRP_MGMT, Prog, + audit_logger (AUDIT_GRP_MGMT, info_gshadow.audit_msg, group_name, AUDIT_NO_ID, SHADOW_AUDIT_SUCCESS); @@ -528,20 +542,20 @@ static void close_files (void) sgr_dbname (), info_gshadow.action)); del_cleanup (cleanup_report_mod_gshadow); - cleanup_unlock_gshadow (NULL); + cleanup_unlock_gshadow (&process_selinux); del_cleanup (cleanup_unlock_gshadow); } #endif /* SHADOWGRP */ if (gflg) { - if (pw_close () == 0) { + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); exit (E_GRP_UPDATE); } #ifdef WITH_AUDIT - audit_logger (AUDIT_GRP_MGMT, Prog, + audit_logger (AUDIT_GRP_MGMT, info_passwd.audit_msg, group_name, AUDIT_NO_ID, SHADOW_AUDIT_SUCCESS); @@ -551,12 +565,12 @@ static void close_files (void) pw_dbname (), info_passwd.action)); del_cleanup (cleanup_report_mod_passwd); - cleanup_unlock_passwd (NULL); + cleanup_unlock_passwd (&process_selinux); del_cleanup (cleanup_unlock_passwd); } #ifdef WITH_AUDIT - audit_logger (AUDIT_GRP_MGMT, Prog, + audit_logger (AUDIT_GRP_MGMT, "modify-group", group_name, AUDIT_NO_ID, SHADOW_AUDIT_SUCCESS); @@ -581,15 +595,15 @@ static void prepare_failure_reports (void) #endif info_passwd.name = group_name; - gr = XMALLOC(512, char); + gr = xmalloc_T(512, char); info_group.audit_msg = gr; gr_end = gr + 512; #ifdef SHADOWGRP - sgr = XMALLOC(512, char); + sgr = xmalloc_T(512, char); info_gshadow.audit_msg = sgr; sgr_end = sgr + 512; #endif - pw = XMALLOC(512, char); + pw = xmalloc_T(512, char); info_passwd.audit_msg = pw; pw_end = pw + 512; @@ -657,15 +671,19 @@ static void prepare_failure_reports (void) * * lock_files() locks the group, gshadow, and passwd databases. */ -static void lock_files (void) +static void lock_files(const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + if (gr_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); exit (E_GRP_UPDATE); } - add_cleanup (cleanup_unlock_group, NULL); + add_cleanup (cleanup_unlock_group, &process_selinux); #ifdef SHADOWGRP if ( is_shadow_grp @@ -676,7 +694,7 @@ static void lock_files (void) Prog, sgr_dbname ()); exit (E_GRP_UPDATE); } - add_cleanup (cleanup_unlock_gshadow, NULL); + add_cleanup (cleanup_unlock_gshadow, &process_selinux); } #endif @@ -687,7 +705,7 @@ static void lock_files (void) Prog, pw_dbname ()); exit (E_GRP_UPDATE); } - add_cleanup (cleanup_unlock_passwd, NULL); + add_cleanup (cleanup_unlock_passwd, &process_selinux); } } @@ -734,7 +752,7 @@ void update_primary_groups (gid_t ogid, gid_t ngid) struct passwd *pwd; prefix_setpwent (); - while ((pwd = prefix_getpwent ()) != NULL) { + while (NULL != (pwd = prefix_getpwent())) { if (pwd->pw_gid == ogid) { const struct passwd *lpwd; struct passwd npwd; @@ -771,6 +789,7 @@ int main (int argc, char **argv) int retval; #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ + struct option_flags flags = {.chroot = false, .prefix = false}; log_set_progname(Prog); log_set_logfd(stderr); @@ -794,7 +813,7 @@ int main (int argc, char **argv) exit (E_CLEANUP_SERVICE); } - process_flags (argc, argv); + process_flags (argc, argv, &flags); #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM @@ -859,7 +878,7 @@ int main (int argc, char **argv) check_new_name (); } - lock_files (); + lock_files (&flags); /* * Now if the group is not changed, it's our fault. @@ -875,7 +894,7 @@ int main (int argc, char **argv) grp_update (); - close_files (); + close_files (&flags); nscd_flush_cache ("group"); sssd_flush_cache (SSSD_DB_GROUP); diff --git a/src/grpck.c b/src/grpck.c index 5fcf6fad..90c724c9 100644 --- a/src/grpck.c +++ b/src/grpck.c @@ -8,10 +8,11 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include +#include #include #include #include @@ -22,6 +23,8 @@ #include "groupio.h" #include "nscd.h" #include "prototypes.h" +#include "shadow/gshadow/gshadow.h" +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "sssd.h" #include "string/strcmp/streq.h" @@ -31,6 +34,7 @@ #include "sgroupio.h" #endif + /* * Exit codes */ @@ -43,6 +47,13 @@ #define E_CANT_LOCK 4 #define E_CANT_UPDATE 5 +/* + * Structures + */ +struct option_flags { + bool chroot; +}; + /* * Global variables */ @@ -52,7 +63,7 @@ static const char *grp_file = GROUP_FILE; static bool use_system_grp_file = true; #ifdef SHADOWGRP -static const char *sgr_file = SGROUP_FILE; +static const char *sgr_file = _PATH_GSHADOW; static bool use_system_sgr_file = true; static bool is_shadow = false; static bool sgr_locked = false; @@ -64,19 +75,20 @@ static bool sort_mode = false; static bool silence_warnings = false; /* local function prototypes */ -static void fail_exit (int status); +static void fail_exit (int status, bool process_selinux); NORETURN static void usage (int status); static void delete_member (char **, const char *); -static void process_flags (int argc, char **argv); -static void open_files (void); -static void close_files (bool changed); +static void process_flags (int argc, char **argv, struct option_flags *flags); +static void open_files (bool process_selinux); +static void close_files(bool changed, const struct option_flags *flags); static int check_members (const char *groupname, char **members, const char *fmt_info, const char *fmt_prompt, const char *fmt_syslog, bool *errors); -static void check_grp_file (bool *errors, bool *changed); +static void check_grp_file (bool *errors, bool *changed, + const struct option_flags *flags); #ifdef SHADOWGRP static void compare_members_lists (const char *groupname, char **members, @@ -89,10 +101,10 @@ static void check_sgr_file (bool *errors, bool *changed); /* * fail_exit - exit with an error code after unlocking files */ -static void fail_exit (int status) +static void fail_exit (int status, bool process_selinux) { if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -101,7 +113,7 @@ static void fail_exit (int status) #ifdef SHADOWGRP if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -172,7 +184,7 @@ static void delete_member (char **list, const char *member) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; static struct option long_options[] = { @@ -201,6 +213,7 @@ static void process_flags (int argc, char **argv) read_only = true; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 's': sort_mode = true; @@ -257,7 +270,7 @@ static void process_flags (int argc, char **argv) * In read-only mode, the databases are not locked and are opened * only for reading. */ -static void open_files (void) +static void open_files (bool process_selinux) { /* * Lock the files if we aren't in "read-only" mode @@ -267,7 +280,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, grp_file); - fail_exit (E_CANT_LOCK); + fail_exit (E_CANT_LOCK, process_selinux); } gr_locked = true; #ifdef SHADOWGRP @@ -276,7 +289,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sgr_file); - fail_exit (E_CANT_LOCK); + fail_exit (E_CANT_LOCK, process_selinux); } sgr_locked = true; } @@ -293,7 +306,7 @@ static void open_files (void) if (use_system_grp_file) { SYSLOG ((LOG_WARN, "cannot open %s", grp_file)); } - fail_exit (E_CANT_OPEN); + fail_exit (E_CANT_OPEN, process_selinux); } #ifdef SHADOWGRP if (is_shadow && (sgr_open (read_only ? O_RDONLY : O_CREAT | O_RDWR) == 0)) { @@ -302,7 +315,7 @@ static void open_files (void) if (use_system_sgr_file) { SYSLOG ((LOG_WARN, "cannot open %s", sgr_file)); } - fail_exit (E_CANT_OPEN); + fail_exit (E_CANT_OPEN, process_selinux); } #endif } @@ -314,23 +327,27 @@ static void open_files (void) * changes are committed in the databases. The databases are * unlocked anyway. */ -static void close_files (bool changed) +static void close_files(bool changed, const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot; + /* * All done. If there were no change we can just abandon any * changes to the files. */ if (changed) { - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, grp_file); - fail_exit (E_CANT_UPDATE); + fail_exit (E_CANT_UPDATE, process_selinux); } #ifdef SHADOWGRP - if (is_shadow && (sgr_close () == 0)) { + if (is_shadow && (sgr_close (process_selinux) == 0)) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_file); - fail_exit (E_CANT_UPDATE); + fail_exit (E_CANT_UPDATE, process_selinux); } #endif } @@ -340,7 +357,7 @@ static void close_files (bool changed) */ #ifdef SHADOWGRP if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -349,7 +366,7 @@ static void close_files (bool changed) } #endif if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -427,7 +444,7 @@ static int check_members (const char *groupname, * also in other_members. * file and other_file are used for logging. * - * TODO: No changes are performed on the lists. + * TODO: no changes are performed on the lists. */ static void compare_members_lists (const char *groupname, char **members, @@ -455,13 +472,16 @@ static void compare_members_lists (const char *groupname, /* * check_grp_file - check the content of the group file */ -static void check_grp_file (bool *errors, bool *changed) +static void check_grp_file(bool *errors, bool *changed, const struct option_flags *flags) { struct commonio_entry *gre, *tgre; struct group *grp; #ifdef SHADOWGRP const struct sgrp *sgr; #endif + bool process_selinux; + + process_selinux = !flags->chroot; /* * Loop through the entire group file. @@ -627,7 +647,7 @@ static void check_grp_file (bool *errors, bool *changed) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, sgr_dbname (), sg.sg_namp); - fail_exit (E_CANT_UPDATE); + fail_exit (E_CANT_UPDATE, process_selinux); } /* remove password from /etc/group */ gr = *grp; @@ -636,7 +656,7 @@ static void check_grp_file (bool *errors, bool *changed) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, gr_dbname (), gr.gr_name); - fail_exit (E_CANT_UPDATE); + fail_exit (E_CANT_UPDATE, process_selinux); } } } else { @@ -819,6 +839,8 @@ int main (int argc, char **argv) { bool errors = false; bool changed = false; + struct option_flags flags = {.chroot = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -832,9 +854,10 @@ int main (int argc, char **argv) OPENLOG (Prog); /* Parse the command line arguments */ - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; - open_files (); + open_files (process_selinux); if (sort_mode) { gr_sort (); @@ -845,7 +868,7 @@ int main (int argc, char **argv) changed = true; #endif } else { - check_grp_file (&errors, &changed); + check_grp_file (&errors, &changed, &flags); #ifdef SHADOWGRP if (is_shadow) { check_sgr_file (&errors, &changed); @@ -854,9 +877,9 @@ int main (int argc, char **argv) } /* Commit the change in the database if needed */ - close_files (changed); + close_files (changed, &flags); - if (!read_only) { + if (!read_only && changed) { nscd_flush_cache ("group"); sssd_flush_cache (SSSD_DB_GROUP); } diff --git a/src/grpconv.c b/src/grpconv.c index 1b31cb85..4a0c308d 100644 --- a/src/grpconv.c +++ b/src/grpconv.c @@ -12,7 +12,7 @@ * */ -#include +#include "config.h" #ident "$Id$" #include @@ -36,9 +36,16 @@ #ifdef SHADOWGRP #include "groupio.h" #include "sgroupio.h" +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "sssd.h" +/* + * Structures + */ +struct option_flags { + bool chroot; +}; /* * Global variables @@ -49,14 +56,14 @@ static bool gr_locked = false; static bool sgr_locked = false; /* local function prototypes */ -static void fail_exit (int status); +static void fail_exit (int status, bool process_selinux); static void usage (int status); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); -static void fail_exit (int status) +static void fail_exit (int status, bool process_selinux) { if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -64,7 +71,7 @@ static void fail_exit (int status) } if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -93,7 +100,7 @@ static void usage (int status) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { /* * Parse the command line options. @@ -112,6 +119,7 @@ static void process_flags (int argc, char **argv) usage (E_SUCCESS); /*@notreached@*/break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; default: usage (E_USAGE); @@ -129,6 +137,8 @@ int main (int argc, char **argv) struct group grent; const struct sgrp *sg; struct sgrp sgent; + struct option_flags flags = {.chroot = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -141,37 +151,38 @@ int main (int argc, char **argv) OPENLOG (Prog); - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; if (gr_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); - fail_exit (5); + fail_exit (5, process_selinux); } gr_locked = true; if (gr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } if (sgr_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sgr_dbname ()); - fail_exit (5); + fail_exit (5, process_selinux); } sgr_locked = true; if (sgr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } /* * Remove /etc/gshadow entries for groups not in /etc/group. */ (void) sgr_rewind (); - while ((sg = sgr_next ()) != NULL) { + while (NULL != (sg = sgr_next())) { if (gr_locate (sg->sg_namp) != NULL) { continue; } @@ -183,7 +194,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: cannot remove entry '%s' from %s\n"), Prog, sg->sg_namp, sgr_dbname ()); - fail_exit (3); + fail_exit (3, process_selinux); } (void) sgr_rewind (); } @@ -204,7 +215,7 @@ int main (int argc, char **argv) static char *empty = NULL; /* add new shadow group entry */ - bzero(&sgent, sizeof sgent); + bzero(&sgent, sizeof(sgent)); sgent.sg_namp = gr->gr_name; sgent.sg_passwd = gr->gr_passwd; sgent.sg_adm = ∅ @@ -221,7 +232,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, sgr_dbname (), sgent.sg_namp); - fail_exit (3); + fail_exit (3, process_selinux); } /* remove password from /etc/group */ grent = *gr; @@ -230,30 +241,30 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, gr_dbname (), grent.gr_name); - fail_exit (3); + fail_exit (3, process_selinux); } } - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); - fail_exit (3); + fail_exit (3, process_selinux); } - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); - fail_exit (3); + fail_exit (3, process_selinux); } - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ } - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -265,7 +276,8 @@ int main (int argc, char **argv) return 0; } #else /* !SHADOWGRP */ -int main (MAYBE_UNUSED int argc, char **argv) +int +main(int, char **argv) { fprintf (stderr, "%s: not configured for shadow group support.\n", argv[0]); diff --git a/src/grpunconv.c b/src/grpunconv.c index ea65a329..5e76ede0 100644 --- a/src/grpunconv.c +++ b/src/grpunconv.c @@ -12,10 +12,9 @@ * */ -#include - -#ident "$Id$" +#include "config.h" +#include #include #include #include @@ -36,8 +35,16 @@ #ifdef SHADOWGRP #include "groupio.h" #include "sgroupio.h" +#include "shadow/gshadow/gshadow.h" +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" +/* + * Structures + */ +struct option_flags { + bool chroot; +}; /* * Global variables @@ -48,14 +55,14 @@ static bool gr_locked = false; static bool sgr_locked = false; /* local function prototypes */ -static void fail_exit (int status); +static void fail_exit (int status, bool process_selinux); static void usage (int status); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); -static void fail_exit (int status) +static void fail_exit (int status, bool process_selinux) { if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -63,7 +70,7 @@ static void fail_exit (int status) } if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -92,7 +99,7 @@ static void usage (int status) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { /* * Parse the command line options. @@ -111,6 +118,7 @@ static void process_flags (int argc, char **argv) usage (E_SUCCESS); /*@notreached@*/break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; default: usage (E_USAGE); @@ -127,6 +135,8 @@ int main (int argc, char **argv) const struct group *gr; struct group grent; const struct sgrp *sg; + struct option_flags flags = {.chroot = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -139,7 +149,8 @@ int main (int argc, char **argv) OPENLOG (Prog); - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; if (sgr_file_present () == 0) { exit (0); /* no /etc/gshadow, nothing to do */ @@ -149,33 +160,33 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); - fail_exit (5); + fail_exit (5, process_selinux); } gr_locked = true; if (gr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } if (sgr_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sgr_dbname ()); - fail_exit (5); + fail_exit (5, process_selinux); } sgr_locked = true; if (sgr_open (O_RDONLY) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } /* * Update group passwords if non-shadow password is "x". */ (void) gr_rewind (); - while ((gr = gr_next ()) != NULL) { + while (NULL != (gr = gr_next())) { sg = sgr_locate (gr->gr_name); if ( (NULL != sg) && streq(gr->gr_passwd, SHADOW_PASSWD_STRING)) { @@ -186,36 +197,36 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, gr_dbname (), grent.gr_name); - fail_exit (3); + fail_exit (3, process_selinux); } } } - (void) sgr_close (); /* was only open O_RDONLY */ + (void) sgr_close (process_selinux); /* was only open O_RDONLY */ - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); - fail_exit (3); + fail_exit (3, process_selinux); } - if (unlink (SGROUP_FILE) != 0) { + if (unlink(_PATH_GSHADOW) != 0) { fprintf (stderr, _("%s: cannot delete %s\n"), - Prog, SGROUP_FILE); - SYSLOG ((LOG_ERR, "cannot delete %s", SGROUP_FILE)); - fail_exit (3); + Prog, _PATH_GSHADOW); + SYSLOG((LOG_ERR, "cannot delete %s", _PATH_GSHADOW)); + fail_exit (3, process_selinux); } - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ } - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -227,7 +238,8 @@ int main (int argc, char **argv) return 0; } #else /* !SHADOWGRP */ -int main (MAYBE_UNUSED int argc, char **argv) +int +main(int, char **argv) { fprintf (stderr, "%s: not configured for shadow group support.\n", argv[0]); diff --git a/src/lastlog.c b/src/lastlog.c index 6ae0de9d..747900fd 100644 --- a/src/lastlog.c +++ b/src/lastlog.c @@ -7,12 +7,13 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" #include #include +#include #include #include #include @@ -23,7 +24,7 @@ #include #endif -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "defines.h" #include "prototypes.h" #include "getdef.h" @@ -32,17 +33,10 @@ #include "shadowlog.h" #include "sizeof.h" #include "string/memset/memzero.h" +#include "string/strerrno.h" #include "string/strftime.h" - -/* - * Needed for MkLinux DR1/2/2.1 - J. - */ -#ifndef LASTLOG_FILE -#define LASTLOG_FILE "/var/log/lastlog" -#endif - /* * Global variables */ @@ -125,7 +119,7 @@ static void print_one (/*@null@*/const struct passwd *pw) * entered for this user, which should be able to get the * empty entry in this case. */ - if (fread (&ll, sizeof (ll), 1, lastlogfile) != 1) { + if (fread(&ll, sizeof(ll), 1, lastlogfile) != 1) { fprintf (stderr, _("%s: Failed to get the entry for UID %lu\n"), Prog, (unsigned long)pw->pw_uid); @@ -137,7 +131,7 @@ static void print_one (/*@null@*/const struct passwd *pw) * as if we were reading an non existing entry in the * sparse lastlog file). */ - memzero (&ll, sizeof (ll)); + memzero(&ll, sizeof(ll)); } /* Filter out entries that do not match with the -t or -b options */ @@ -164,7 +158,7 @@ static void print_one (/*@null@*/const struct passwd *pw) if (tm == NULL) { cp = "(unknown)"; } else { - STRFTIME(ptime, "%a %b %e %H:%M:%S %z %Y", tm); + strftime_a(ptime, "%a %b %e %H:%M:%S %z %Y", tm); cp = ptime; } if (ll.ll_time == (time_t) 0) { @@ -223,12 +217,12 @@ static void update_one (/*@null@*/const struct passwd *pw) return; } - offset = (off_t) pw->pw_uid * sizeof (ll); + offset = (off_t) pw->pw_uid * sizeof(ll); /* fseeko errors are not really relevant for us. */ err = fseeko (lastlogfile, offset, SEEK_SET); assert (0 == err); - memzero (&ll, sizeof (ll)); + memzero(&ll, sizeof(ll)); if (Sflg) { ll.ll_time = NOW; @@ -237,20 +231,20 @@ static void update_one (/*@null@*/const struct passwd *pw) #endif strcpy (ll.ll_line, "lastlog"); #ifdef WITH_AUDIT - audit_logger (AUDIT_ACCT_UNLOCK, Prog, + audit_logger (AUDIT_ACCT_UNLOCK, "clearing-lastlog", pw->pw_name, pw->pw_uid, SHADOW_AUDIT_SUCCESS); #endif } #ifdef WITH_AUDIT else { - audit_logger (AUDIT_ACCT_UNLOCK, Prog, + audit_logger (AUDIT_ACCT_UNLOCK, "refreshing-lastlog", pw->pw_name, pw->pw_uid, SHADOW_AUDIT_SUCCESS); } #endif - if (fwrite (&ll, sizeof(ll), 1, lastlogfile) != 1) { + if (fwrite(&ll, sizeof(ll), 1, lastlogfile) != 1) { fprintf (stderr, _("%s: Failed to update the entry for UID %lu\n"), Prog, (unsigned long)pw->pw_uid); @@ -433,9 +427,9 @@ int main (int argc, char **argv) } } - lastlogfile = fopen (LASTLOG_FILE, (Cflg || Sflg)?"r+":"r"); + lastlogfile = fopen(_PATH_LASTLOG, (Cflg || Sflg)?"r+":"r"); if (NULL == lastlogfile) { - perror (LASTLOG_FILE); + perror(_PATH_LASTLOG); exit (EXIT_FAILURE); } @@ -443,7 +437,7 @@ int main (int argc, char **argv) if (fstat (fileno (lastlogfile), &statbuf) != 0) { fprintf (stderr, _("%s: Cannot get the size of %s: %s\n"), - Prog, LASTLOG_FILE, strerror (errno)); + Prog, _PATH_LASTLOG, strerrno()); exit (EXIT_FAILURE); } diff --git a/src/login.c b/src/login.c index 57e106b8..2af11b47 100644 --- a/src/login.c +++ b/src/login.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -26,7 +26,7 @@ #include #include -#include "alloc/x/xmalloc.h" +#include "alloc/malloc.h" #include "attr.h" #include "chkname.h" #include "defines.h" @@ -37,13 +37,16 @@ #include "getdef.h" #include "prototypes.h" #include "pwauth.h" +#include "shadow/gshadow/endsgent.h" #include "shadowlog.h" #include "string/memset/memzero.h" #include "string/sprintf/snprintf.h" #include "string/strcmp/streq.h" +#include "string/strcmp/strneq.h" #include "string/strcmp/strprefix.h" #include "string/strcpy/strtcpy.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" +#include "string/strerrno.h" #include "string/strftime.h" @@ -63,14 +66,6 @@ static pam_handle_t *pamh = NULL; #endif /* USE_PAM */ -#ifndef USE_PAM -/* - * Needed for MkLinux DR1/2/2.1 - J. - */ -#ifndef LASTLOG_FILE -#define LASTLOG_FILE "/var/log/lastlog" -#endif -#endif /* !USE_PAM */ /* * Global variables @@ -371,12 +366,14 @@ static void init_env (void) #endif /* !USE_PAM */ } -static void exit_handler (MAYBE_UNUSED int sig) +static void +exit_handler(int) { _exit (0); } -static void alarm_handler (MAYBE_UNUSED int sig) +static void +alarm_handler(int) { write_full(STDERR_FILENO, tmsg, strlen(tmsg)); signal(SIGALRM, exit_handler); @@ -456,6 +453,7 @@ int main (int argc, char **argv) char *host = NULL; char tty[BUFSIZ]; char fromhost[512]; + pid_t initial_pid; /* the "session leader" PID */ const char *failent_user; const char *tmptty; const char *cp; @@ -504,7 +502,8 @@ int main (int argc, char **argv) exit (1); /* must be a terminal */ } - err = get_session_host(&host); + initial_pid = getpid(); + err = get_session_host(&host, initial_pid); /* * Be picky if run by normal users (possible if installed setuid * root), but not if run by root. @@ -520,7 +519,7 @@ int main (int argc, char **argv) if (NULL == tmptty) { tmptty = "UNKNOWN"; } - STRTCPY(tty, tmptty); + strtcpy_a(tty, tmptty); #ifndef USE_PAM is_console = console (tty); @@ -593,16 +592,16 @@ int main (int argc, char **argv) } if (!streq(cp, "")) { - SNPRINTF(fromhost, " on '%.100s' from '%.200s'", tty, cp); + stprintf_a(fromhost, " on '%.100s' from '%.200s'", tty, cp); } else { - SNPRINTF(fromhost, " on '%.100s'", tty); + stprintf_a(fromhost, " on '%.100s'", tty); } free(host); top: /* only allow ALARM sec. for login */ timeout = getdef_unum ("LOGIN_TIMEOUT", ALARM); - SNPRINTF(tmsg, _("\nLogin timed out after %u seconds.\n"), timeout); + stprintf_a(tmsg, _("\nLogin timed out after %u seconds.\n"), timeout); (void) signal (SIGALRM, alarm_handler); if (timeout > 0) { (void) alarm (timeout); @@ -646,10 +645,10 @@ int main (int argc, char **argv) unsigned int failcount = 0; /* Make the login prompt look like we want it */ - if (gethostname (hostn, sizeof (hostn)) == 0) { - SNPRINTF(loginprompt, _("%s login: "), hostn); + if (gethostname(hostn, sizeof(hostn)) == 0) { + stprintf_a(loginprompt, _("%s login: "), hostn); } else { - STRTCPY(loginprompt, _("login: ")); + strtcpy_a(loginprompt, _("login: ")); } retcode = pam_set_item (pamh, PAM_USER_PROMPT, loginprompt); @@ -798,7 +797,7 @@ int main (int argc, char **argv) retcode = pam_setcred (pamh, PAM_ESTABLISH_CRED); PAM_FAIL_CHECK; - /* NOTE: If pam_setcred changes PAM_USER, this will not be taken + /* Note: if pam_setcred changes PAM_USER, this will not be taken * into account. */ @@ -832,7 +831,7 @@ int main (int argc, char **argv) exit (1); } preauth_flag = false; - username = XMALLOC(max_size, char); + username = xmalloc_T(max_size, char); login_prompt(username, max_size); if (streq(username, "")) { @@ -944,7 +943,7 @@ int main (int argc, char **argv) failure (pwd->pw_uid, tty, &faillog); } #ifndef ENABLE_LOGIND - record_failure(failent_user, tty, hostname); + record_failure(failent_user, tty, hostname, initial_pid); #endif /* ENABLE_LOGIND */ retries--; @@ -1092,8 +1091,7 @@ int main (int argc, char **argv) child = fork (); if (child < 0) { /* error in fork() */ - fprintf (stderr, _("%s: failure forking: %s"), - Prog, strerror (errno)); + fprintf(stderr, _("%s: failure forking: %s"), Prog, strerrno()); PAM_END; exit (0); } else if (child != 0) { @@ -1109,7 +1107,7 @@ int main (int argc, char **argv) #endif /* If we were init, we need to start a new session */ - if (getppid() == 1) { + if (1 == initial_pid) { setsid(); if (ioctl(0, TIOCSCTTY, 1) != 0) { fprintf (stderr, _("TIOCSCTTY failed on %s"), tty); @@ -1121,7 +1119,7 @@ int main (int argc, char **argv) * The utmp entry needs to be updated to indicate the new status * of the session, the new PID and SID. */ - err = update_utmp (username, tty, hostname); + err = update_utmp(username, tty, hostname, initial_pid); if (err != 0) { SYSLOG ((LOG_WARN, "Unable to update utmp entry for %s", username)); } @@ -1201,13 +1199,13 @@ int main (int argc, char **argv) struct tm tm; localtime_r(&ll_time, &tm); - STRFTIME(ptime, "%a %b %e %H:%M:%S %z %Y", &tm); + strftime_a(ptime, "%a %b %e %H:%M:%S %z %Y", &tm); printf (_("Last login: %s on %s"), ptime, ll.ll_line); #ifdef HAVE_LL_HOST /* __linux__ || SUN4 */ - if ('\0' != ll.ll_host[0]) { + if (!strneq_a(ll.ll_host, "")) { printf (_(" from %.*s"), - (int) sizeof ll.ll_host, ll.ll_host); + (int) sizeof(ll.ll_host), ll.ll_host); } #endif printf (".\n"); diff --git a/src/login_nopam.c b/src/login_nopam.c index b2f5f850..a41a3f0b 100644 --- a/src/login_nopam.c +++ b/src/login_nopam.c @@ -23,7 +23,7 @@ ************************************************************************/ #ifdef HAVE_CONFIG_H -#include +#include "config.h" #endif #ifndef USE_PAM @@ -100,7 +100,7 @@ login_access(const char *user, const char *from) if (NULL != fp) { intmax_t lineno = 0; /* for diagnostics */ while ( !match - && (fgets (line, sizeof (line), fp) == line)) + && (fgets(line, sizeof(line), fp) != NULL)) { char *p; @@ -183,7 +183,7 @@ static char *myhostname (void) static char name[MAXHOSTNAMELEN + 1] = ""; if (streq(name, "")) { - gethostname (name, sizeof (name)); + gethostname(name, sizeof(name)); stpcpy(&name[MAXHOSTNAMELEN], ""); } return (name); @@ -315,9 +315,8 @@ static bool from_match (char *tok, const char *string) return true; } } else if (strcaseeq(tok, "LOCAL")) { /* LOCAL: no dots */ - if (strchr (string, '.') == NULL) { + if (!strchr(string, '.')) return true; - } } else if ( (!streq(tok, "") && tok[strlen(tok) - 1] == '.') /* network */ && strprefix(resolve_hostname(string), tok)) { return true; diff --git a/src/logoutd.c b/src/logoutd.c index 11a5d60a..c87b75cb 100644 --- a/src/logoutd.c +++ b/src/logoutd.c @@ -6,13 +6,14 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" #include #include #include +#include #include #include #include @@ -21,6 +22,7 @@ #include "prototypes.h" #include "shadowlog.h" #include "sizeof.h" +#include "string/strcmp/strneq.h" #include "string/strcpy/strncat.h" #include "string/strdup/strndupa.h" @@ -54,8 +56,8 @@ check_login(const struct utmpx *ut) char *line; time_t now; - user = STRNDUPA(ut->ut_user); - line = STRNDUPA(ut->ut_line); + user = strndupa_a(ut->ut_user); + line = strndupa_a(ut->ut_line); now = time(NULL); @@ -114,7 +116,7 @@ static void send_mesg_to_tty (int tty_fd) * off from the system. */ int -main(int argc, char **argv) +main(int argc, char *[]) { pid_t pid; @@ -171,16 +173,16 @@ main(int argc, char **argv) * for login sessions will be checked to see if the user * is permitted to be signed on at this time. */ - while ((ut = getutxent()) != NULL) { + while (NULL != (ut = getutxent())) { int tty_fd; char tty_name[sizeof(ut->ut_line) + 6]; // /dev/ + NUL if (ut->ut_type != USER_PROCESS) { continue; } - if (ut->ut_user[0] == '\0') { + if (strneq_a(ut->ut_user, "")) continue; - } + if (check_login (ut)) { continue; } @@ -205,7 +207,7 @@ main(int argc, char **argv) else strcpy(tty_name, ""); - STRNCAT(tty_name, ut->ut_line); + strncat_a(tty_name, ut->ut_line); #ifndef O_NOCTTY #define O_NOCTTY 0 #endif @@ -225,7 +227,7 @@ main(int argc, char **argv) SYSLOG ((LOG_NOTICE, "logged off user '%s' on '%s'", - STRNDUPA(ut->ut_user), + strndupa_a(ut->ut_user), tty_name)); /* diff --git a/src/new_subid_range.c b/src/new_subid_range.c index 6be95740..e423b1ab 100644 --- a/src/new_subid_range.c +++ b/src/new_subid_range.c @@ -3,7 +3,7 @@ #include #include -#include "atoi/str2i.h" +#include "atoi/a2i.h" #include "subid.h" #include "stdlib.h" #include "prototypes.h" diff --git a/src/newgidmap.c b/src/newgidmap.c index 3463e850..9d130a7d 100644 --- a/src/newgidmap.c +++ b/src/newgidmap.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include #include @@ -20,6 +20,7 @@ #include "prototypes.h" #include "shadowlog.h" #include "string/strcmp/strprefix.h" +#include "string/strerrno.h" #include "subordinateio.h" @@ -103,8 +104,7 @@ static void write_setgroups(int proc_dir_fd, bool allow_setgroups) goto out; } fprintf(stderr, _("%s: couldn't open process setgroups: %s\n"), - Prog, - strerror(errno)); + Prog, strerrno()); exit(EXIT_FAILURE); } @@ -115,8 +115,7 @@ static void write_setgroups(int proc_dir_fd, bool allow_setgroups) */ if (read(setgroups_fd, policy_buffer, sizeof(policy_buffer)) < 0) { fprintf(stderr, _("%s: failed to read setgroups: %s\n"), - Prog, - strerror(errno)); + Prog, strerrno()); exit(EXIT_FAILURE); } if (strprefix(policy_buffer, policy)) @@ -125,15 +124,12 @@ static void write_setgroups(int proc_dir_fd, bool allow_setgroups) /* Write the policy. */ if (lseek(setgroups_fd, 0, SEEK_SET) < 0) { fprintf(stderr, _("%s: failed to seek setgroups: %s\n"), - Prog, - strerror(errno)); + Prog, strerrno()); exit(EXIT_FAILURE); } if (dprintf(setgroups_fd, "%s", policy) < 0) { fprintf(stderr, _("%s: failed to setgroups %s policy: %s\n"), - Prog, - policy, - strerror(errno)); + Prog, policy, strerrno()); exit(EXIT_FAILURE); } @@ -195,7 +191,7 @@ int main(int argc, char **argv) if (fstat(proc_dir_fd, &st) < 0) { fprintf(stderr, _("%s: Could not stat directory for target process: %s\n"), - Prog, strerror (errno)); + Prog, strerrno()); return EXIT_FAILURE; } @@ -214,10 +210,10 @@ int main(int argc, char **argv) return EXIT_FAILURE; } - if (!sub_gid_open(O_RDONLY)) { + if (want_subgid_file() && !sub_gid_open(O_RDONLY)) { fprintf (stderr, _("%s: cannot open %s: %s\n"), - Prog, sub_gid_dbname (), strerror (errno)); + Prog, sub_gid_dbname(), strerrno()); return EXIT_FAILURE; } @@ -230,7 +226,8 @@ int main(int argc, char **argv) write_setgroups(proc_dir_fd, allow_setgroups); write_mapping(proc_dir_fd, ranges, mappings, "gid_map", pw->pw_uid); - sub_gid_close(); + if (want_subgid_file()) + sub_gid_close(true); return EXIT_SUCCESS; } diff --git a/src/newgrp.c b/src/newgrp.c index 94340bd1..5c4cc07b 100644 --- a/src/newgrp.c +++ b/src/newgrp.c @@ -6,7 +6,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #ident "$Id$" @@ -17,7 +17,8 @@ #include #include "agetpass.h" -#include "alloc/x/xmalloc.h" +#include "alloc/malloc.h" +#include "alloc/realloc.h" #include "chkname.h" #include "defines.h" /*@-exitarg@*/ @@ -27,11 +28,15 @@ #include "search/l/lfind.h" #include "search/l/lsearch.h" #include "shadow/grp/agetgroups.h" +#include "shadow/gshadow/endsgent.h" +#include "shadow/gshadow/getsgnam.h" +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "string/sprintf/snprintf.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" +#include "string/strerrno.h" #include @@ -67,7 +72,7 @@ static void usage (void) if (is_newgrp) { (void) fputs (_("Usage: newgrp [-] [group]\n"), stderr); } else { - (void) fputs (_("Usage: sg group [[-c] command]\n"), stderr); + (void) fputs (_("Usage: sg [-] group [[-c] command]\n"), stderr); } } @@ -96,7 +101,7 @@ static /*@null@*/struct group *find_matching_group (const char *name, struct gro return gr; setgrent (); - while ((gr = getgrent ()) != NULL) { + while (NULL != (gr = getgrent())) { if (gr->gr_gid != gid) { continue; } @@ -184,7 +189,7 @@ static void check_perms (const struct group *grp, if (NULL == cpasswd) { fprintf (stderr, _("%s: failed to crypt password with previous salt: %s\n"), - Prog, strerror (errno)); + Prog, strerrno()); SYSLOG ((LOG_INFO, "Failed to crypt password with previous salt of group '%s'", groupname)); @@ -194,9 +199,9 @@ static void check_perms (const struct group *grp, if (streq(grp->gr_passwd, "") || !streq(grp->gr_passwd, cpasswd)) { #ifdef WITH_AUDIT - SNPRINTF(audit_buf, "authentication new_gid=%lu", + stprintf_a(audit_buf, "authentication new_gid=%lu", (unsigned long) grp->gr_gid); - audit_logger (AUDIT_GRP_AUTH, Prog, + audit_logger (AUDIT_GRP_AUTH, audit_buf, NULL, getuid (), SHADOW_AUDIT_FAILURE); #endif SYSLOG ((LOG_INFO, @@ -207,9 +212,9 @@ static void check_perms (const struct group *grp, goto failure; } #ifdef WITH_AUDIT - SNPRINTF(audit_buf, "authentication new_gid=%lu", + stprintf_a(audit_buf, "authentication new_gid=%lu", (unsigned long) grp->gr_gid); - audit_logger (AUDIT_GRP_AUTH, Prog, + audit_logger (AUDIT_GRP_AUTH, audit_buf, NULL, getuid (), SHADOW_AUDIT_SUCCESS); #endif } @@ -291,14 +296,14 @@ static void syslog_sg (const char *name, const char *group) if ((pid_t)-1 == child) { /* error in fork() */ fprintf (stderr, _("%s: failure forking: %s\n"), - is_newgrp ? "newgrp" : "sg", strerror (errno)); + is_newgrp ? "newgrp" : "sg", strerrno()); #ifdef WITH_AUDIT if (group) { audit_logger_with_group(AUDIT_CHGRP_ID, "changing", NULL, getuid(), "new_group", group, SHADOW_AUDIT_FAILURE); } else { - audit_logger (AUDIT_CHGRP_ID, Prog, + audit_logger (AUDIT_CHGRP_ID, "changing", NULL, getuid(), SHADOW_AUDIT_FAILURE); } @@ -382,10 +387,6 @@ int main (int argc, char **argv) struct sgrp *sgrp; #endif -#ifdef WITH_AUDIT - audit_help_open (); -#endif - check_fds (); (void) setlocale (LC_ALL, ""); @@ -427,6 +428,9 @@ int main (int argc, char **argv) log_set_progname(Prog); log_set_logfd(stderr); OPENLOG (Prog); +#ifdef WITH_AUDIT + audit_help_open (); +#endif argc--; argv++; @@ -437,7 +441,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: Cannot determine your user name.\n"), Prog); #ifdef WITH_AUDIT - audit_logger (AUDIT_CHGRP_ID, Prog, + audit_logger (AUDIT_CHGRP_ID, "changing", NULL, getuid (), SHADOW_AUDIT_FAILURE); #endif SYSLOG ((LOG_WARN, "Cannot determine the user name of the caller (UID %lu)", @@ -461,8 +465,8 @@ int main (int argc, char **argv) * The valid syntax are * newgrp [-] [groupid] * newgrp [-l] [groupid] - * sg [-] - * sg [-] groupid [[-c command] + * sg [-] groupid [[-c] command] + * sg [-l] groupid [[-c] command] */ if ( (argc > 0) && ( streq(argv[0], "-") @@ -494,9 +498,8 @@ int main (int argc, char **argv) if (argc > 0) { /* - * skip -c if specified so both forms work: - * "sg group -c command" (as in the man page) or - * "sg group command" (as in the usage message). + * Skip -c if specified so both forms work: + * "sg group -c command" or "sg group command". */ if ((argc > 1) && streq(argv[0], "-c")) { command = argv[1]; @@ -557,7 +560,7 @@ int main (int argc, char **argv) audit_logger_with_group(AUDIT_CHGRP_ID, "changing", NULL, getuid(), "new_group", group, SHADOW_AUDIT_FAILURE); } else { - audit_logger(AUDIT_CHGRP_ID, Prog, + audit_logger(AUDIT_CHGRP_ID, "changing", NULL, getuid(), SHADOW_AUDIT_FAILURE); } #endif @@ -614,7 +617,7 @@ int main (int argc, char **argv) * database. However getgroups() will return the group. So * if she is listed there already it is ok to grant membership. */ - is_member = (LFIND(&grp->gr_gid, gids, ngroups) != NULL); + is_member = (LFIND(gid_t, &grp->gr_gid, gids, ngroups) != NULL); /* * For split groups (due to limitations of NIS), check all @@ -666,9 +669,9 @@ int main (int argc, char **argv) * If the group doesn't fit, I'll complain loudly and skip this * part. */ - gids = XREALLOC(gids, ngroups + 1, gid_t); + gids = xrealloc_T(gids, ngroups + 1, gid_t); - LSEARCH(&gid, gids, &ngroups); + LSEARCH(gid_t, &gid, gids, &ngroups); if (setgroups(ngroups, gids) == -1) perror("setgroups"); @@ -694,8 +697,8 @@ int main (int argc, char **argv) if (setgid (gid) != 0) { perror ("setgid"); #ifdef WITH_AUDIT - SNPRINTF(audit_buf, "changing new_gid=%lu", (unsigned long) gid); - audit_logger (AUDIT_CHGRP_ID, Prog, + stprintf_a(audit_buf, "changing new_gid=%lu", (unsigned long) gid); + audit_logger (AUDIT_CHGRP_ID, audit_buf, NULL, getuid (), SHADOW_AUDIT_FAILURE); #endif exit (EXIT_FAILURE); @@ -704,8 +707,8 @@ int main (int argc, char **argv) if (setuid (getuid ()) != 0) { perror ("setuid"); #ifdef WITH_AUDIT - SNPRINTF(audit_buf, "changing new_gid=%lu", (unsigned long) gid); - audit_logger (AUDIT_CHGRP_ID, Prog, + stprintf_a(audit_buf, "changing new_gid=%lu", (unsigned long) gid); + audit_logger (AUDIT_CHGRP_ID, audit_buf, NULL, getuid (), SHADOW_AUDIT_FAILURE); #endif exit (EXIT_FAILURE); @@ -719,8 +722,8 @@ int main (int argc, char **argv) closelog (); execl (SHELL, "sh", "-c", command, (char *) NULL); #ifdef WITH_AUDIT - SNPRINTF(audit_buf, "changing new_gid=%lu", (unsigned long) gid); - audit_logger (AUDIT_CHGRP_ID, Prog, + stprintf_a(audit_buf, "changing new_gid=%lu", (unsigned long) gid); + audit_logger (AUDIT_CHGRP_ID, audit_buf, NULL, getuid (), SHADOW_AUDIT_FAILURE); #endif perror (SHELL); @@ -787,8 +790,8 @@ int main (int argc, char **argv) } #ifdef WITH_AUDIT - SNPRINTF(audit_buf, "changing new_gid=%lu", (unsigned long) gid); - audit_logger (AUDIT_CHGRP_ID, Prog, + stprintf_a(audit_buf, "changing new_gid=%lu", (unsigned long) gid); + audit_logger (AUDIT_CHGRP_ID, audit_buf, NULL, getuid (), SHADOW_AUDIT_SUCCESS); #endif /* @@ -817,7 +820,7 @@ int main (int argc, char **argv) getuid(), "new_group", group, SHADOW_AUDIT_FAILURE); } else { - audit_logger (AUDIT_CHGRP_ID, Prog, + audit_logger (AUDIT_CHGRP_ID, "changing", NULL, getuid (), 0); } #endif diff --git a/src/newuidmap.c b/src/newuidmap.c index 894c5ec8..43826b1d 100644 --- a/src/newuidmap.c +++ b/src/newuidmap.c @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include #include @@ -20,6 +20,7 @@ #include "prototypes.h" #include "shadowlog.h" #include "string/strcmp/strprefix.h" +#include "string/strerrno.h" #include "subordinateio.h" @@ -124,7 +125,7 @@ int main(int argc, char **argv) if (fstat(proc_dir_fd, &st) < 0) { fprintf(stderr, _("%s: Could not stat directory for target process: %s\n"), - Prog, strerror (errno)); + Prog, strerrno()); return EXIT_FAILURE; } @@ -143,10 +144,10 @@ int main(int argc, char **argv) return EXIT_FAILURE; } - if (!sub_uid_open(O_RDONLY)) { + if (want_subuid_file() && !sub_uid_open(O_RDONLY)) { fprintf (stderr, _("%s: cannot open %s: %s\n"), - Prog, sub_uid_dbname (), strerror (errno)); + Prog, sub_uid_dbname(), strerrno()); return EXIT_FAILURE; } @@ -158,7 +159,8 @@ int main(int argc, char **argv) verify_ranges(pw, ranges, mappings); write_mapping(proc_dir_fd, ranges, mappings, "uid_map", pw->pw_uid); - sub_uid_close(); + if (want_subuid_file()) + sub_uid_close(true); return EXIT_SUCCESS; } diff --git a/src/newusers.c b/src/newusers.c index 38cbdddb..e9353fdc 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -15,7 +15,7 @@ * adding entries in the related directories. */ -#include +#include "config.h" #ident "$Id$" @@ -33,8 +33,9 @@ #include #include "alloc/reallocf.h" +#include "atoi/a2i.h" #include "atoi/getnum.h" -#include "atoi/str2i.h" +#include "attr.h" #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM #include "pam_defs.h" @@ -52,14 +53,20 @@ #ifdef ENABLE_SUBIDS #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "sssd.h" #include "string/sprintf/snprintf.h" #include "string/strcmp/streq.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" +#include "string/strerrno.h" #include "string/strtok/stpsep.h" #include "string/strtok/strsep2arr.h" +struct option_flags { + bool chroot; +}; + /* * Global variables @@ -101,7 +108,7 @@ static bool sub_gid_locked = false; /* local function prototypes */ NORETURN static void usage (int status); -NORETURN static void fail_exit (int); +NORETURN static void fail_exit (int, bool); static int add_group (const char *, const char *, gid_t *, gid_t); static int get_user_id (const char *, uid_t *); static int add_user (const char *, uid_t, gid_t); @@ -109,11 +116,11 @@ static int add_user (const char *, uid_t, gid_t); static int update_passwd (struct passwd *, const char *); #endif /* !USE_PAM */ static int add_passwd (struct passwd *, const char *); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); static void check_flags (void); -static void check_perms (void); -static void open_files (void); -static void close_files (void); +static void check_perms(const struct option_flags *flags); +static void open_files (bool process_selinux); +static void close_files(const struct option_flags *flags); extern int allow_bad_names; @@ -132,7 +139,7 @@ static void usage (int status) #ifndef USE_PAM (void) fprintf (usageout, _(" -c, --crypt-method METHOD the crypt method (one of %s)\n"), - "NONE DES MD5" + "NONE DES MD5" #if defined(USE_SHA_CRYPT) " SHA256 SHA512" #endif @@ -162,24 +169,24 @@ static void usage (int status) /* * fail_exit - undo as much as possible */ -static void fail_exit (int code) +static void fail_exit (int code, bool process_selinux) { if (spw_locked) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ } } if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ } } if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -187,7 +194,7 @@ static void fail_exit (int code) } #ifdef SHADOWGRP if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -196,14 +203,14 @@ static void fail_exit (int code) #endif #ifdef ENABLE_SUBIDS if (sub_uid_locked) { - if (sub_uid_unlock () == 0) { + if (sub_uid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_uid_dbname ())); /* continue */ } } if (sub_gid_locked) { - if (sub_gid_unlock () == 0) { + if (sub_gid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname ())); /* continue */ @@ -391,7 +398,7 @@ static int add_user (const char *name, uid_t uid, gid_t gid) /* Check if this is a valid user name */ if (!is_valid_user_name(name)) { - if (errno == EINVAL) { + if (errno == EILSEQ) { fprintf(stderr, _("%s: invalid user name '%s': use --badname to ignore\n"), Prog, name); @@ -462,7 +469,7 @@ static int update_passwd (struct passwd *pwd, const char *password) if (NULL == cp) { fprintf (stderr, _("%s: failed to crypt password with salt '%s': %s\n"), - Prog, salt, strerror (errno)); + Prog, salt, strerrno()); return 1; } pwd->pw_passwd = cp; @@ -475,7 +482,8 @@ static int update_passwd (struct passwd *pwd, const char *password) /* * add_passwd - add or update the encrypted password */ -static int add_passwd (struct passwd *pwd, const char *password) +static int +add_passwd(struct passwd *pwd, MAYBE_UNUSED const char *password) { const struct spwd *sp; struct spwd spent; @@ -540,7 +548,7 @@ static int add_passwd (struct passwd *pwd, const char *password) if (NULL == cp) { fprintf (stderr, _("%s: failed to crypt password with salt '%s': %s\n"), - Prog, salt, strerror (errno)); + Prog, salt, strerrno()); return 1; } spent.sp_pwdp = cp; @@ -590,7 +598,7 @@ static int add_passwd (struct passwd *pwd, const char *password) if (NULL == cp) { fprintf (stderr, _("%s: failed to crypt password with salt '%s': %s\n"), - Prog, salt, strerror (errno)); + Prog, salt, strerrno()); return 1; } spent.sp_pwdp = cp; @@ -608,8 +616,7 @@ static int add_passwd (struct passwd *pwd, const char *password) spent.sp_lstchg = -1; } spent.sp_min = getdef_num ("PASS_MIN_DAYS", 0); - /* 10000 is infinity this week */ - spent.sp_max = getdef_num ("PASS_MAX_DAYS", 10000); + spent.sp_max = getdef_num ("PASS_MAX_DAYS", -1); spent.sp_warn = getdef_num ("PASS_WARN_AGE", -1); spent.sp_inact = -1; spent.sp_expire = -1; @@ -623,12 +630,12 @@ static int add_passwd (struct passwd *pwd, const char *password) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; #ifndef USE_PAM #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) - int bad_s; + int bad_s; #endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ #endif /* !USE_PAM */ static struct option long_options[] = { @@ -674,12 +681,13 @@ static void process_flags (int argc, char **argv) rflg = true; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; #ifndef USE_PAM #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) case 's': sflg = true; - bad_s = 0; + bad_s = 0; if (!crypt_method){ fprintf(stderr, @@ -690,22 +698,22 @@ static void process_flags (int argc, char **argv) #if defined(USE_SHA_CRYPT) if ( ( (streq(crypt_method, "SHA256") || streq(crypt_method, "SHA512")) && (-1 == str2sl(&sha_rounds, optarg)))) { - bad_s = 1; - } + bad_s = 1; + } #endif /* USE_SHA_CRYPT */ #if defined(USE_BCRYPT) - if (( streq(crypt_method, "BCRYPT") + if ( ( streq(crypt_method, "BCRYPT") && (-1 == str2sl(&bcrypt_rounds, optarg)))) { - bad_s = 1; - } + bad_s = 1; + } #endif /* USE_BCRYPT */ #if defined(USE_YESCRYPT) - if (( streq(crypt_method, "YESCRYPT") + if ( ( streq(crypt_method, "YESCRYPT") && (-1 == str2sl(&yescrypt_cost, optarg)))) { - bad_s = 1; - } + bad_s = 1; + } #endif /* USE_YESCRYPT */ - if (bad_s != 0) { + if (bad_s != 0) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); @@ -729,9 +737,9 @@ static void process_flags (int argc, char **argv) if (freopen (argv[optind], "r", stdin) == NULL) { char buf[BUFSIZ]; - SNPRINTF(buf, "%s: %s", Prog, argv[1]); + stprintf_a(buf, "%s: %s", Prog, argv[1]); perror (buf); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, !flags->chroot); } } @@ -790,20 +798,24 @@ static void check_flags (void) * * It will not return if the user is not allowed. */ -static void check_perms (void) +static void +check_perms(MAYBE_UNUSED const struct option_flags *flags) { #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM pam_handle_t *pamh = NULL; int retval; struct passwd *pampw; + bool process_selinux; + + process_selinux = !flags->chroot; pampw = getpwuid (getuid ()); /* local, no need for xgetpwuid */ if (NULL == pampw) { fprintf (stderr, _("%s: Cannot determine your user name.\n"), Prog); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } retval = pam_start ("newusers", pampw->pw_name, &conv, &pamh); @@ -823,7 +835,7 @@ static void check_perms (void) if (NULL != pamh) { (void) pam_end (pamh, retval); } - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } (void) pam_end (pamh, retval); #endif /* USE_PAM */ @@ -833,7 +845,7 @@ static void check_perms (void) /* * open_files - lock and open the password, group and shadow databases */ -static void open_files (void) +static void open_files (bool process_selinux) { /* * Lock the password files and open them for update. This will bring @@ -845,7 +857,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } pw_locked = true; if (is_shadow) { @@ -853,7 +865,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, spw_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } spw_locked = true; } @@ -861,7 +873,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } gr_locked = true; #ifdef SHADOWGRP @@ -870,7 +882,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sgr_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } sgr_locked = true; } @@ -881,7 +893,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sub_uid_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } sub_uid_locked = true; } @@ -890,7 +902,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sub_gid_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } sub_gid_locked = true; } @@ -898,20 +910,20 @@ static void open_files (void) if (pw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } if (is_shadow && (spw_open (O_CREAT | O_RDWR) == 0)) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } if (gr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } #ifdef SHADOWGRP if (is_shadow_grp && (sgr_open (O_CREAT | O_RDWR) == 0)) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } #endif #ifdef ENABLE_SUBIDS @@ -920,7 +932,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot open %s\n"), Prog, sub_uid_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } } if (is_sub_gid) { @@ -928,7 +940,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot open %s\n"), Prog, sub_gid_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } } #endif /* ENABLE_SUBIDS */ @@ -937,14 +949,18 @@ static void open_files (void) /* * close_files - close and unlock the password, group and shadow databases */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { - if (pw_close () == 0) { + bool process_selinux; + + process_selinux = !flags->chroot; + + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -952,14 +968,14 @@ static void close_files (void) pw_locked = false; if (is_shadow) { - if (spw_close () == 0) { + if (spw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); @@ -969,29 +985,29 @@ static void close_files (void) spw_locked = false; } - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } #ifdef ENABLE_SUBIDS - if (is_sub_uid && (sub_uid_close () == 0)) { + if (is_sub_uid && (sub_uid_close (process_selinux) == 0)) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ())); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } - if (is_sub_gid && (sub_gid_close () == 0)) { + if (is_sub_gid && (sub_gid_close (process_selinux) == 0)) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_gid_dbname ())); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } #endif /* ENABLE_SUBIDS */ - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); @@ -1002,14 +1018,14 @@ static void close_files (void) #ifdef SHADOWGRP if (is_shadow_grp) { - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); @@ -1021,7 +1037,7 @@ static void close_files (void) #endif #ifdef ENABLE_SUBIDS if (is_sub_uid) { - if (sub_uid_unlock () == 0) { + if (sub_uid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_uid_dbname ())); /* continue */ @@ -1029,7 +1045,7 @@ static void close_files (void) sub_uid_locked = false; } if (is_sub_gid) { - if (sub_gid_unlock () == 0) { + if (sub_gid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname ())); /* continue */ @@ -1039,24 +1055,6 @@ static void close_files (void) #endif /* ENABLE_SUBIDS */ } -static bool want_subuids(void) -{ - if (get_subid_nss_handle() != NULL) - return false; - if (getdef_ulong ("SUB_UID_COUNT", 65536) == 0) - return false; - return true; -} - -static bool want_subgids(void) -{ - if (get_subid_nss_handle() != NULL) - return false; - if (getdef_ulong ("SUB_GID_COUNT", 65536) == 0) - return false; - return true; -} - int main (int argc, char **argv) { char buf[BUFSIZ]; @@ -1072,6 +1070,8 @@ int main (int argc, char **argv) char **passwords = NULL; size_t nusers = 0; #endif /* USE_PAM */ + struct option_flags flags = {.chroot = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -1085,9 +1085,10 @@ int main (int argc, char **argv) OPENLOG ("newusers"); - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; - check_perms (); + check_perms (&flags); is_shadow = spw_file_present (); @@ -1095,11 +1096,11 @@ int main (int argc, char **argv) is_shadow_grp = sgr_file_present (); #endif #ifdef ENABLE_SUBIDS - is_sub_uid = sub_uid_file_present () && !rflg; - is_sub_gid = sub_gid_file_present () && !rflg; + is_sub_uid = want_subuid_file() && sub_uid_file_present() && !rflg; + is_sub_gid = want_subgid_file() && sub_gid_file_present() && !rflg; #endif /* ENABLE_SUBIDS */ - open_files (); + open_files (process_selinux); /* * Read each line. The line has the same format as a password file @@ -1110,18 +1111,18 @@ int main (int argc, char **argv) * over 100 is allocated. The pw_gid field will be updated with that * value. */ - while (fgets (buf, sizeof buf, stdin) != NULL) { + while (fgets(buf, sizeof(buf), stdin) != NULL) { line++; if (stpsep(buf, "\n") == NULL && feof(stdin) == 0) { fprintf (stderr, _("%s: line %jd: line too long\n"), Prog, line); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } - if (STRSEP2ARR(buf, ":", fields) == -1) { + if (strsep2arr_a(buf, ":", fields) == -1) { fprintf (stderr, _("%s: line %jd: invalid line\n"), Prog, line); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } /* @@ -1133,14 +1134,14 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: cannot update the entry of user %s (not in the passwd database)\n"), Prog, fields[0]); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } if (NULL == pw && get_user_id(fields[2], &uid) != 0) { fprintf (stderr, _("%s: line %jd: can't create user\n"), Prog, line); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } /* @@ -1160,7 +1161,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: line %jd: can't create group\n"), Prog, line); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } /* @@ -1175,7 +1176,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: line %jd: can't create user\n"), Prog, line); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } /* @@ -1187,31 +1188,29 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: line %jd: user '%s' does not exist in %s\n"), Prog, line, fields[0], pw_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } newpw = *pw; #ifdef USE_PAM /* keep the list of user/password for later update by PAM */ nusers++; - lines = REALLOCF(lines, nusers, intmax_t); - usernames = REALLOCF(usernames, nusers, char *); - passwords = REALLOCF(passwords, nusers, char *); + lines = reallocf_T(lines, nusers, intmax_t); + usernames = reallocf_T(usernames, nusers, char *); + passwords = reallocf_T(passwords, nusers, char *); if (lines == NULL || usernames == NULL || passwords == NULL) { - fprintf (stderr, - _("%s: line %jd: %s\n"), - Prog, line, strerror(errno)); - fail_exit (EXIT_FAILURE); + fprintf(stderr, _("%s: line %jd: %s\n"), Prog, line, strerrno()); + fail_exit (EXIT_FAILURE, process_selinux); } lines[nusers-1] = line; usernames[nusers-1] = xstrdup(fields[0]); passwords[nusers-1] = xstrdup(fields[1]); #endif /* USE_PAM */ - if (add_passwd (&newpw, fields[1]) != 0) { + if (!streq(fields[1], "") && add_passwd(&newpw, fields[1]) != 0) { fprintf (stderr, _("%s: line %jd: can't update password\n"), Prog, line); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } if (!streq(fields[4], "")) { newpw.pw_gecos = fields[4]; @@ -1234,24 +1233,22 @@ int main (int argc, char **argv) fprintf(stderr, _("%s: line %jd: homedir must be an absolute path\n"), Prog, line); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } if (mkdir (newpw.pw_dir, mode) != 0) { fprintf (stderr, _("%s: line %jd: mkdir %s failed: %s\n"), - Prog, line, newpw.pw_dir, - strerror (errno)); + Prog, line, newpw.pw_dir, strerrno()); if (errno != EEXIST) { - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } } if (chown(newpw.pw_dir, newpw.pw_uid, newpw.pw_gid) != 0) { fprintf (stderr, _("%s: line %jd: chown %s failed: %s\n"), - Prog, line, newpw.pw_dir, - strerror (errno)); - fail_exit (EXIT_FAILURE); + Prog, line, newpw.pw_dir, strerrno()); + fail_exit (EXIT_FAILURE, process_selinux); } } @@ -1262,14 +1259,14 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: line %jd: can't update entry\n"), Prog, line); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } #ifdef ENABLE_SUBIDS /* * Add subordinate uids if the user does not have them. */ - if (is_sub_uid && want_subuids() && !local_sub_uid_assigned(fields[0])) { + if (is_sub_uid && !local_sub_uid_assigned(fields[0])) { uid_t sub_uid_start = 0; unsigned long sub_uid_count = 0; if (find_new_sub_uids(&sub_uid_start, &sub_uid_count) != 0) @@ -1277,34 +1274,34 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: can't find subordinate user range\n"), Prog); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } if (sub_uid_add(fields[0], sub_uid_start, sub_uid_count) == 0) { fprintf (stderr, _("%s: failed to prepare new %s entry\n"), Prog, sub_uid_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } } /* * Add subordinate gids if the user does not have them. */ - if (is_sub_gid && want_subgids() && !local_sub_gid_assigned(fields[0])) { + if (is_sub_gid && !local_sub_gid_assigned(fields[0])) { gid_t sub_gid_start = 0; unsigned long sub_gid_count = 0; if (find_new_sub_gids(&sub_gid_start, &sub_gid_count) != 0) { fprintf (stderr, _("%s: can't find subordinate group range\n"), Prog); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } if (sub_gid_add(fields[0], sub_gid_start, sub_gid_count) == 0) { fprintf (stderr, _("%s: failed to prepare new %s entry\n"), Prog, sub_uid_dbname ()); - fail_exit (EXIT_FAILURE); + fail_exit (EXIT_FAILURE, process_selinux); } } #endif /* ENABLE_SUBIDS */ @@ -1317,7 +1314,7 @@ int main (int argc, char **argv) * changes to be written out all at once, and then unlocked * afterwards. */ - close_files (); + close_files (&flags); nscd_flush_cache ("passwd"); nscd_flush_cache ("group"); @@ -1326,6 +1323,8 @@ int main (int argc, char **argv) #ifdef USE_PAM /* Now update the passwords using PAM */ for (size_t i = 0; i < nusers; i++) { + if (streq(passwords[i], "")) + continue; if (do_pam_passwd_non_interactive ("newusers", usernames[i], passwords[i]) != 0) { fprintf (stderr, _("%s: (line %jd, user %s) password not changed\n"), diff --git a/src/passwd.c b/src/passwd.c index cdd817a2..0afae4d7 100644 --- a/src/passwd.c +++ b/src/passwd.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -21,7 +21,7 @@ #include #include "agetpass.h" -#include "atoi/a2i/a2s.h" +#include "atoi/a2i.h" #include "chkname.h" #include "defines.h" #include "getdef.h" @@ -33,11 +33,12 @@ #include "shadowlog.h" #include "sssd.h" #include "string/memset/memzero.h" -#include "string/sprintf/xaprintf.h" +#include "string/sprintf/aprintf.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" #include "string/strcpy/strtcpy.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" +#include "string/strerrno.h" #include "time/day_to_str.h" @@ -53,6 +54,12 @@ #define E_PWDBUSY 5 /* passwd file busy, try again later */ #define E_BAD_ARG 6 /* invalid argument to option */ #define E_PAM_ERR 10 /* PAM returned an error */ + +struct option_flags { + bool chroot; + bool prefix; +}; + /* * Global variables */ @@ -121,19 +128,18 @@ static bool do_update_pwd = false; */ /* local function prototypes */ -NORETURN static void usage (int); +NORETURN static void usage(int); -static int new_password (const struct passwd *); +static int new_password(const struct passwd *); -static void check_password (const struct passwd *, const struct spwd *); -static /*@observer@*/const char *pw_status (const char *); -static void print_status (const struct passwd *); -NORETURN static void fail_exit (int); -NORETURN static void oom (void); -static char *update_crypt_pw (char *); -static void update_noshadow (void); - -static void update_shadow (void); +static void check_password(const struct passwd *, const struct spwd *, bool); +static /*@observer@*/const char *pw_status(const char *); +static void print_status(const struct passwd *); +NORETURN static void fail_exit(int, bool); +NORETURN static void oom(bool); +static char *update_crypt_pw(char *, bool); +static void update_noshadow(bool); +static void update_shadow(bool); /* * usage - print command usage and exit @@ -188,8 +194,6 @@ static int new_password (const struct passwd *pw) int i; /* Counter for retries */ int ret; bool warned; - int pass_max_len = -1; - const char *method; /* * Authenticate the user. The user will be prompted for their own @@ -208,7 +212,7 @@ static int new_password (const struct passwd *pw) erase_pass (clear); fprintf (stderr, _("%s: failed to crypt password with previous salt: %s\n"), - Prog, strerror (errno)); + Prog, strerrno()); SYSLOG ((LOG_INFO, "Failed to crypt password with previous salt of user '%s'", pw->pw_name)); @@ -226,7 +230,7 @@ static int new_password (const struct passwd *pw) pw->pw_name); return -1; } - STRTCPY(orig, clear); + strtcpy_a(orig, clear); erase_pass (clear); strzero (cipher); } else { @@ -235,45 +239,24 @@ static int new_password (const struct passwd *pw) /* * Get the new password. The user is prompted for the new password - * and has five tries to get it right. The password will be tested - * for strength, unless it is the root user. This provides an escape - * for initial login passwords. + * and has PASS_CHANGE_TRIES tries to get it right. The password will + * be optionally tested for strength. The root user can circumvent + * tests. This provides an escape for initial login passwords. */ - method = getdef_str ("ENCRYPT_METHOD"); - if (NULL == method) { - if (!getdef_bool ("MD5_CRYPT_ENAB")) { - pass_max_len = getdef_num ("PASS_MAX_LEN", 8); - } - } else { - if ( streq(method, "MD5") -#ifdef USE_SHA_CRYPT - || streq(method, "SHA256") - || streq(method, "SHA512") -#endif /* USE_SHA_CRYPT */ -#ifdef USE_BCRYPT - || streq(method, "BCRYPT") -#endif /* USE_BCRYPT*/ -#ifdef USE_YESCRYPT - || streq(method, "YESCRYPT") -#endif /* USE_YESCRYPT*/ - - ) { - pass_max_len = -1; - } else { - pass_max_len = getdef_num ("PASS_MAX_LEN", 8); - } - } if (!qflg && !sflg) { + int pass_max_len, pass_min_len; + + obscure_get_range(&pass_min_len, &pass_max_len); if (pass_max_len == -1) { (void) printf (_( "Enter the new password (minimum of %d characters)\n" "Please use a combination of upper and lower case letters and numbers.\n"), - getdef_num ("PASS_MIN_LEN", 5)); + pass_min_len); } else { (void) printf (_( "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"), - getdef_num ("PASS_MIN_LEN", 5), pass_max_len); + pass_min_len, pass_max_len); } } @@ -285,11 +268,11 @@ static int new_password (const struct passwd *pw) if (NULL == cp) { return -1; } - ret = STRTCPY (pass, cp); + ret = strtcpy_a(pass, cp); erase_pass (cp); if (ret == -1) { (void) fputs (_("Password is too long.\n"), stderr); - MEMZERO(pass); + memzero_a(pass); return -1; } } else { @@ -297,23 +280,23 @@ static int new_password (const struct passwd *pw) for (i = getdef_num ("PASS_CHANGE_TRIES", 5); i > 0; i--) { cp = agetpass (_("New password: ")); if (NULL == cp) { - MEMZERO(orig); - MEMZERO(pass); + memzero_a(orig); + memzero_a(pass); return -1; } if (warned && !streq(pass, cp)) { warned = false; } - ret = STRTCPY (pass, cp); + ret = strtcpy_a(pass, cp); erase_pass (cp); if (ret == -1) { (void) fputs (_("Password is too long.\n"), stderr); - MEMZERO(orig); - MEMZERO(pass); + memzero_a(orig); + memzero_a(pass); return -1; } - if (!amroot && !obscure(orig, pass, pw)) { + if (!amroot && !obscure(orig, pass)) { (void) puts (_("Try again.")); continue; } @@ -324,15 +307,15 @@ static int new_password (const struct passwd *pw) * --marekm */ if (amroot && !warned && getdef_bool ("PASS_ALWAYS_WARN") - && !obscure(orig, pass, pw)) { + && !obscure(orig, pass)) { (void) puts (_("\nWarning: weak password (enter it again to use it anyway).")); warned = true; continue; } cp = agetpass (_("Re-enter new password: ")); if (NULL == cp) { - MEMZERO(orig); - MEMZERO(pass); + memzero_a(orig); + memzero_a(pass); return -1; } if (!streq(cp, pass)) { @@ -343,10 +326,10 @@ static int new_password (const struct passwd *pw) break; } } - MEMZERO(orig); + memzero_a(orig); if (i == 0) { - MEMZERO(pass); + memzero_a(pass); return -1; } } @@ -357,16 +340,16 @@ static int new_password (const struct passwd *pw) */ salt = crypt_make_salt (NULL, NULL); cp = pw_encrypt (pass, salt); - MEMZERO(pass); + memzero_a(pass); if (NULL == cp) { fprintf (stderr, _("%s: failed to crypt password with salt '%s': %s\n"), - Prog, salt, strerror (errno)); + Prog, salt, strerrno()); return -1; } - STRTCPY(crypt_passwd, cp); + strtcpy_a(crypt_passwd, cp); return 0; } @@ -376,7 +359,7 @@ static int new_password (const struct passwd *pw) * check_password() sees if the invoker has permission to change the * password for the given user. */ -static void check_password (const struct passwd *pw, const struct spwd *sp) +static void check_password (const struct passwd *pw, const struct spwd *sp, bool process_selinux) { int exp_status; @@ -387,7 +370,7 @@ static void check_password (const struct passwd *pw, const struct spwd *sp) * PAM) was specified, do nothing. --marekm */ if (kflg && (0 == exp_status)) { - exit (E_SUCCESS); + fail_exit(E_SUCCESS, process_selinux); } /* @@ -412,7 +395,7 @@ static void check_password (const struct passwd *pw, const struct spwd *sp) sp->sp_namp); SYSLOG ((LOG_WARN, "password locked for '%s'", sp->sp_namp)); closelog (); - exit (E_NOPERM); + fail_exit(E_NOPERM, process_selinux); } /* @@ -430,10 +413,10 @@ static void check_password (const struct passwd *pw, const struct spwd *sp) if (now < ok) { (void) fprintf (stderr, _("The password for %s cannot be changed yet.\n"), - pw->pw_name); - SYSLOG ((LOG_WARN, "now < minimum age for '%s'", pw->pw_name)); + sp->sp_namp); + SYSLOG ((LOG_WARN, "now < minimum age for '%s'", sp->sp_namp)); closelog (); - exit (E_NOPERM); + fail_exit(E_NOPERM, process_selinux); } } } @@ -459,7 +442,7 @@ static void print_status (const struct passwd *pw) sp = prefix_getspnam (pw->pw_name); /* local, no need for xprefix_getspnam */ if (NULL != sp) { - DAY_TO_STR(date, sp->sp_lstchg); + day_to_str_a(date, sp->sp_lstchg); (void) printf ("%s %s %s %ld %ld %ld %ld\n", pw->pw_name, pw_status (sp->sp_pwdp), @@ -480,20 +463,20 @@ static void print_status (const struct passwd *pw) NORETURN static void -fail_exit (int status) +fail_exit (int status, bool process_selinux) { - if (pw_locked) { - if (pw_unlock () == 0) { - (void) fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); + if (spw_locked) { + if (spw_unlock (process_selinux) == 0) { + (void) fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ } } - if (spw_locked) { - if (spw_unlock () == 0) { - (void) fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); + if (pw_locked) { + if (pw_unlock (process_selinux) == 0) { + (void) fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ } } @@ -503,13 +486,95 @@ fail_exit (int status) NORETURN static void -oom (void) +oom (bool process_selinux) { (void) fprintf (stderr, _("%s: out of memory\n"), Prog); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } -static char *update_crypt_pw (char *cp) +/* + * open_files - lock and open the password files + * + * open_files() opens password files if available. + */ +static void open_files(bool process_selinux) +{ + if (pw_lock () == 0) { + (void) fprintf (stderr, + _("%s: cannot lock %s; try again later.\n"), + Prog, pw_dbname ()); + exit (E_PWDBUSY); + } + pw_locked = true; + if (pw_open (O_CREAT | O_RDWR) == 0) { + (void) fprintf (stderr, + _("%s: cannot open %s\n"), + Prog, pw_dbname ()); + SYSLOG ((LOG_WARN, "cannot open %s", pw_dbname ())); + fail_exit (E_MISSING, process_selinux); + } + + if (!spw_file_present ()) + return; + if (spw_lock () == 0) { + (void) fprintf (stderr, + _("%s: cannot lock %s; try again later.\n"), + Prog, spw_dbname ()); + fail_exit (E_PWDBUSY, process_selinux); + } + spw_locked = true; + if (spw_open (O_CREAT | O_RDWR) == 0) { + (void) fprintf (stderr, + _("%s: cannot open %s\n"), + Prog, spw_dbname ()); + SYSLOG ((LOG_WARN, "cannot open %s", spw_dbname ())); + fail_exit (E_FAILURE, process_selinux); + } +} + +/* + * close_files - close all of the files that were opened + * + * close_files() closes all of the files that were opened for this + * user. This causes a possibly modified entry to be written out. + */ +static void close_files(bool process_selinux) +{ + if (spw_locked) { + if (spw_close (process_selinux) == 0) { + (void) fprintf (stderr, + _("%s: failure while writing changes to %s\n"), + Prog, spw_dbname ()); + SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); + fail_exit (E_FAILURE, process_selinux); + } + if (spw_unlock (process_selinux) == 0) { + (void) fprintf (stderr, + _("%s: failed to unlock %s\n"), + Prog, spw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); + /* continue */ + } + spw_locked = false; + } + if (pw_close (process_selinux) == 0) { + (void) fprintf (stderr, + _("%s: failure while writing changes to %s\n"), + Prog, pw_dbname ()); + SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); + fail_exit (E_FAILURE, process_selinux); + } + if (pw_unlock (process_selinux) == 0) { + (void) fprintf (stderr, + _("%s: failed to unlock %s\n"), + Prog, pw_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); + /* continue */ + } + pw_locked = false; +} + +static char *update_crypt_pw (char *cp, bool process_selinux) { if (!use_pam) { @@ -527,7 +592,7 @@ static char *update_crypt_pw (char *cp) _("%s: unlocking the password would result in a passwordless account.\n" "You should set a password with usermod -p to unlock the password of this account.\n"), Prog); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } else { cp++; } @@ -549,99 +614,50 @@ static char *update_crypt_pw (char *cp) } -static void update_noshadow (void) +static void update_noshadow(bool process_selinux) { const struct passwd *pw; struct passwd *npw; - if (pw_lock () == 0) { - (void) fprintf (stderr, - _("%s: cannot lock %s; try again later.\n"), - Prog, pw_dbname ()); - exit (E_PWDBUSY); - } - pw_locked = true; - if (pw_open (O_CREAT | O_RDWR) == 0) { - (void) fprintf (stderr, - _("%s: cannot open %s\n"), - Prog, pw_dbname ()); - SYSLOG ((LOG_WARN, "cannot open %s", pw_dbname ())); - fail_exit (E_MISSING); - } pw = pw_locate (name); if (NULL == pw) { (void) fprintf (stderr, _("%s: user '%s' does not exist in %s\n"), Prog, name, pw_dbname ()); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } + check_password(pw, pwd_to_spwd(pw), process_selinux); npw = __pw_dup (pw); if (NULL == npw) { - oom (); + oom (process_selinux); } - npw->pw_passwd = update_crypt_pw (npw->pw_passwd); + npw->pw_passwd = update_crypt_pw (npw->pw_passwd, process_selinux); if (pw_update (npw) == 0) { (void) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, pw_dbname (), npw->pw_name); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } - if (pw_close () == 0) { - (void) fprintf (stderr, - _("%s: failure while writing changes to %s\n"), - Prog, pw_dbname ()); - SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (E_FAILURE); - } - if (pw_unlock () == 0) { - (void) fprintf (stderr, - _("%s: failed to unlock %s\n"), - Prog, pw_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); - /* continue */ - } - pw_locked = false; } -static void update_shadow (void) +static void update_shadow(bool process_selinux) { + const struct passwd pw = { .pw_passwd = SHADOW_PASSWD_STRING }; const struct spwd *sp; struct spwd *nsp; - if (spw_lock () == 0) { - (void) fprintf (stderr, - _("%s: cannot lock %s; try again later.\n"), - Prog, spw_dbname ()); - exit (E_PWDBUSY); - } - spw_locked = true; - if (spw_open (O_CREAT | O_RDWR) == 0) { - (void) fprintf (stderr, - _("%s: cannot open %s\n"), - Prog, spw_dbname ()); - SYSLOG ((LOG_WARN, "cannot open %s", spw_dbname ())); - fail_exit (E_FAILURE); - } - sp = spw_locate (name); + sp = spw_locked ? spw_locate(name) : NULL; if (NULL == sp) { /* Try to update the password in /etc/passwd instead. */ - (void) spw_close (); - update_noshadow (); - if (spw_unlock () == 0) { - (void) fprintf (stderr, - _("%s: failed to unlock %s\n"), - Prog, spw_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); - /* continue */ - } - spw_locked = false; + update_noshadow (process_selinux); return; } + check_password(&pw, sp, process_selinux); nsp = __spw_dup (sp); if (NULL == nsp) { - oom (); + oom (process_selinux); } - nsp->sp_pwdp = update_crypt_pw (nsp->sp_pwdp); + nsp->sp_pwdp = update_crypt_pw (nsp->sp_pwdp, process_selinux); if (xflg) { nsp->sp_max = age_max; } @@ -679,23 +695,8 @@ static void update_shadow (void) (void) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, spw_dbname (), nsp->sp_namp); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } - if (spw_close () == 0) { - (void) fprintf (stderr, - _("%s: failure while writing changes to %s\n"), - Prog, spw_dbname ()); - SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); - fail_exit (E_FAILURE); - } - if (spw_unlock () == 0) { - (void) fprintf (stderr, - _("%s: failed to unlock %s\n"), - Prog, spw_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); - /* continue */ - } - spw_locked = false; } /* @@ -733,6 +734,8 @@ main(int argc, char **argv) char *cp; /* Miscellaneous character pointing */ const struct spwd *sp; /* Shadow file entry for user */ + struct option_flags flags = {.chroot = false, .prefix = false}; + bool process_selinux; sanitize_env (); check_fds (); @@ -849,8 +852,10 @@ main(int argc, char **argv) } break; case 'R': /* no-op, handled in process_root_flag () */ + flags.chroot = true; break; case 'P': /* no-op, handled in process_prefix_flag () */ + flags.prefix = true; break; case 'S': Sflg = true; /* ok for users */ @@ -897,6 +902,7 @@ main(int argc, char **argv) } } } + process_selinux = !flags.chroot && !flags.prefix; /* * Now I have to get the user name. The name will be gotten from the @@ -916,7 +922,7 @@ main(int argc, char **argv) if (optind < argc) { if (!is_valid_user_name (argv[optind])) { fprintf (stderr, _("%s: Provided user name is not a valid name\n"), Prog); - fail_exit (E_NOPERM); + fail_exit (E_NOPERM, process_selinux); } name = argv[optind]; } else { @@ -1047,13 +1053,13 @@ main(int argc, char **argv) * If there are no other flags, just change the password. */ if (!anyflag) { - STRTCPY(crypt_passwd, cp); + strtcpy_a(crypt_passwd, cp); /* * See if the user is permitted to change the password. * Otherwise, go ahead and set a new password. */ - check_password (pw, sp); + check_password(pw, sp, process_selinux); /* * Let the user know whose password is being changed. @@ -1106,11 +1112,9 @@ main(int argc, char **argv) closelog (); exit (E_NOPERM); } - if (spw_file_present ()) { - update_shadow (); - } else { - update_noshadow (); - } + open_files(process_selinux); + update_shadow(process_selinux); + close_files(process_selinux); nscd_flush_cache ("passwd"); nscd_flush_cache ("group"); diff --git a/src/pwck.c b/src/pwck.c index 6272839f..c35f03e6 100644 --- a/src/pwck.c +++ b/src/pwck.c @@ -8,7 +8,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -48,6 +48,10 @@ #define E_CANTUPDATE 5 #define E_CANTSORT 6 +struct option_flags { + bool chroot; +}; + /* * Global variables */ @@ -69,12 +73,13 @@ static bool sort_mode = false; static bool quiet = false; /* don't report warnings, only errors */ /* local function prototypes */ -static void fail_exit (int code); +static void fail_exit (int code, bool process_selinux); NORETURN static void usage (int status); -static void process_flags (int argc, char **argv); -static void open_files (void); -static void close_files (bool changed); -static void check_pw_file (bool *errors, bool *changed); +static void process_flags (int argc, char **argv, struct option_flags *flags); +static void open_files(const struct option_flags *flags); +static void close_files(bool changed, const struct option_flags *flags); +static void check_pw_file (bool *errors, bool *changed, + const struct option_flags *flags); static void check_spw_file (bool *errors, bool *changed); extern int allow_bad_names; @@ -82,10 +87,10 @@ extern int allow_bad_names; /* * fail_exit - do some cleanup and exit with the given error code */ -static void fail_exit (int code) +static void fail_exit (int code, bool process_selinux) { if (spw_locked) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); if (use_system_spw_file) { SYSLOG ((LOG_ERR, "failed to unlock %s", @@ -96,7 +101,7 @@ static void fail_exit (int code) } if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); if (use_system_pw_file) { SYSLOG ((LOG_ERR, "failed to unlock %s", @@ -155,7 +160,7 @@ usage (int status) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { int c; static struct option long_options[] = { @@ -188,6 +193,7 @@ static void process_flags (int argc, char **argv) read_only = true; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 's': sort_mode = true; @@ -240,12 +246,15 @@ static void process_flags (int argc, char **argv) * In read-only mode, the databases are not locked and are opened * only for reading. */ -static void open_files (void) +static void open_files(const struct option_flags *flags) { bool use_tcb = false; #ifdef WITH_TCB use_tcb = getdef_bool ("USE_TCB"); #endif /* WITH_TCB */ + bool process_selinux; + + process_selinux = !flags->chroot; /* * Lock the files if we aren't in "read-only" mode @@ -255,7 +264,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (E_CANTLOCK); + fail_exit (E_CANTLOCK, process_selinux); } pw_locked = true; if (is_shadow && !use_tcb) { @@ -263,7 +272,7 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, spw_dbname ()); - fail_exit (E_CANTLOCK); + fail_exit (E_CANTLOCK, process_selinux); } spw_locked = true; } @@ -279,7 +288,7 @@ static void open_files (void) if (use_system_pw_file) { SYSLOG ((LOG_WARN, "cannot open %s", pw_dbname ())); } - fail_exit (E_CANTOPEN); + fail_exit (E_CANTOPEN, process_selinux); } if (is_shadow && !use_tcb) { if (spw_open (read_only ? O_RDONLY : O_RDWR) == 0) { @@ -289,7 +298,7 @@ static void open_files (void) SYSLOG ((LOG_WARN, "cannot open %s", spw_dbname ())); } - fail_exit (E_CANTOPEN); + fail_exit (E_CANTOPEN, process_selinux); } spw_opened = true; } @@ -302,14 +311,18 @@ static void open_files (void) * changes are committed in the databases. The databases are * unlocked anyway. */ -static void close_files (bool changed) +static void close_files(bool changed, const struct option_flags *flags) { + bool process_selinux; + + process_selinux = !flags->chroot; + /* * All done. If there were no change we can just abandon any * changes to the files. */ if (changed) { - if (pw_close () == 0) { + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); @@ -318,9 +331,9 @@ static void close_files (bool changed) "failure while writing changes to %s", pw_dbname ())); } - fail_exit (E_CANTUPDATE); + fail_exit (E_CANTUPDATE, process_selinux); } - if (spw_opened && (spw_close () == 0)) { + if (spw_opened && (spw_close (process_selinux) == 0)) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, spw_dbname ()); @@ -329,7 +342,7 @@ static void close_files (bool changed) "failure while writing changes to %s", spw_dbname ())); } - fail_exit (E_CANTUPDATE); + fail_exit (E_CANTUPDATE, process_selinux); } spw_opened = false; } @@ -338,7 +351,7 @@ static void close_files (bool changed) * Don't be anti-social - unlock the files when you're done. */ if (spw_locked) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); @@ -351,7 +364,7 @@ static void close_files (bool changed) } spw_locked = false; if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); @@ -368,13 +381,16 @@ static void close_files (bool changed) /* * check_pw_file - check the content of the passwd file */ -static void check_pw_file (bool *errors, bool *changed) +static void check_pw_file(bool *errors, bool *changed, const struct option_flags *flags) { struct commonio_entry *pfe, *tpfe; struct passwd *pwd; const struct spwd *spw; uid_t min_sys_id = getdef_ulong ("SYS_UID_MIN", 101UL); uid_t max_sys_id = getdef_ulong ("SYS_UID_MAX", 999UL); + bool process_selinux; + + process_selinux = !flags->chroot; /* * Loop through the entire password file. @@ -476,7 +492,7 @@ static void check_pw_file (bool *errors, bool *changed) */ if (!is_valid_user_name(pwd->pw_name)) { - if (errno == EINVAL) { + if (errno == EILSEQ) { printf(_("invalid user name '%s': use --badname to ignore\n"), pwd->pw_name); } else { @@ -581,7 +597,7 @@ static void check_pw_file (bool *errors, bool *changed) _("%s: cannot open %s\n"), Prog, spw_dbname ()); *errors = true; - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); @@ -631,7 +647,7 @@ static void check_pw_file (bool *errors, bool *changed) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, spw_dbname (), sp.sp_namp); - fail_exit (E_CANTUPDATE); + fail_exit (E_CANTUPDATE, process_selinux); } /* remove password from /etc/passwd */ pw = *pwd; @@ -640,7 +656,7 @@ static void check_pw_file (bool *errors, bool *changed) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, pw_dbname (), pw.pw_name); - fail_exit (E_CANTUPDATE); + fail_exit (E_CANTUPDATE, process_selinux); } } } else { @@ -657,7 +673,7 @@ static void check_pw_file (bool *errors, bool *changed) } #ifdef WITH_TCB if (getdef_bool ("USE_TCB") && spw_locked) { - if (spw_opened && (spw_close () == 0)) { + if (spw_opened && (spw_close (process_selinux) == 0)) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, spw_dbname ()); @@ -669,7 +685,7 @@ static void check_pw_file (bool *errors, bool *changed) } else { spw_opened = false; } - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); @@ -840,6 +856,8 @@ int main (int argc, char **argv) { bool errors = false; bool changed = false; + struct option_flags flags = {.chroot = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -853,37 +871,38 @@ int main (int argc, char **argv) OPENLOG (Prog); /* Parse the command line arguments */ - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; - open_files (); + open_files (&flags); if (sort_mode) { if (pw_sort () != 0) { fprintf (stderr, _("%s: cannot sort entries in %s\n"), Prog, pw_dbname ()); - fail_exit (E_CANTSORT); + fail_exit (E_CANTSORT, process_selinux); } if (is_shadow) { if (spw_sort () != 0) { fprintf (stderr, _("%s: cannot sort entries in %s\n"), Prog, spw_dbname ()); - fail_exit (E_CANTSORT); + fail_exit (E_CANTSORT, process_selinux); } } changed = true; } else { - check_pw_file (&errors, &changed); + check_pw_file (&errors, &changed, &flags); if (is_shadow) { check_spw_file (&errors, &changed); } } - close_files (changed); + close_files (changed, &flags); - if (!read_only) { + if (!read_only && changed) { nscd_flush_cache ("passwd"); sssd_flush_cache (SSSD_DB_PASSWD); } diff --git a/src/pwconv.c b/src/pwconv.c index 1bb92752..bbe38071 100644 --- a/src/pwconv.c +++ b/src/pwconv.c @@ -30,7 +30,7 @@ * */ -#include +#include "config.h" #ident "$Id$" @@ -67,6 +67,11 @@ #define E_MISSING 4 /* unexpected failure, passwd file missing */ #define E_PWDBUSY 5 /* passwd file(s) busy */ #define E_BADENTRY 6 /* bad shadow entry */ + +struct option_flags { + bool chroot; +}; + /* * Global variables */ @@ -76,14 +81,14 @@ static bool spw_locked = false; static bool pw_locked = false; /* local function prototypes */ -static void fail_exit (int status); +static void fail_exit (int status, bool process_selinux); static void usage (int status); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); -static void fail_exit (int status) +static void fail_exit (int status, bool process_selinux) { if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -91,7 +96,7 @@ static void fail_exit (int status) } if (spw_locked) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ @@ -120,7 +125,7 @@ static void usage (int status) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { /* * Parse the command line options. @@ -139,6 +144,7 @@ static void process_flags (int argc, char **argv) usage (E_SUCCESS); /*@notreached@*/break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; default: usage (E_USAGE); @@ -156,6 +162,8 @@ int main (int argc, char **argv) struct passwd pwent; const struct spwd *sp; struct spwd spent; + struct option_flags flags = {.chroot = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -168,7 +176,8 @@ int main (int argc, char **argv) OPENLOG (Prog); - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; #ifdef WITH_TCB if (getdef_bool("USE_TCB")) { @@ -181,33 +190,33 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (E_PWDBUSY); + fail_exit (E_PWDBUSY, process_selinux); } pw_locked = true; if (pw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); - fail_exit (E_MISSING); + fail_exit (E_MISSING, process_selinux); } if (spw_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, spw_dbname ()); - fail_exit (E_PWDBUSY); + fail_exit (E_PWDBUSY, process_selinux); } spw_locked = true; if (spw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } /* * Remove /etc/shadow entries for users not in /etc/passwd. */ (void) spw_rewind (); - while ((sp = spw_next ()) != NULL) { + while (NULL != (sp = spw_next())) { if (pw_locate (sp->sp_namp) != NULL) { continue; } @@ -219,7 +228,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: cannot remove entry '%s' from %s\n"), Prog, sp->sp_namp, spw_dbname ()); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } (void) spw_rewind(); } @@ -229,7 +238,7 @@ int main (int argc, char **argv) * missing shadow entries. */ (void) pw_rewind (); - while ((pw = pw_next ()) != NULL) { + while (NULL != (pw = pw_next())) { sp = spw_locate (pw->pw_name); if (NULL != sp) { /* do we need to update this entry? */ @@ -240,7 +249,7 @@ int main (int argc, char **argv) spent = *sp; } else { /* add new shadow entry */ - bzero(&spent, sizeof spent); + bzero(&spent, sizeof(spent)); spent.sp_namp = pw->pw_name; spent.sp_min = getdef_num ("PASS_MIN_DAYS", -1); spent.sp_max = getdef_num ("PASS_MAX_DAYS", -1); @@ -260,7 +269,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, spw_dbname (), spent.sp_namp); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } /* remove password from /etc/passwd */ @@ -270,23 +279,23 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, pw_dbname (), pwent.pw_name); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } } - if (spw_close () == 0) { + if (spw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } - if (pw_close () == 0) { + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (E_FAILURE); + fail_exit (E_FAILURE, process_selinux); } /* /etc/passwd- (backup file) */ @@ -299,13 +308,13 @@ int main (int argc, char **argv) /* continue */ } - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ } - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ diff --git a/src/pwunconv.c b/src/pwunconv.c index 2e4d3d75..4adaf702 100644 --- a/src/pwunconv.c +++ b/src/pwunconv.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -30,6 +30,9 @@ #include "sssd.h" #include "string/strcmp/streq.h" +struct option_flags { + bool chroot; +}; /* * Global variables @@ -40,21 +43,21 @@ static bool spw_locked = false; static bool pw_locked = false; /* local function prototypes */ -static void fail_exit (int status); +static void fail_exit (int status, bool process_selinux); static void usage (int status); -static void process_flags (int argc, char **argv); +static void process_flags (int argc, char **argv, struct option_flags *flags); -static void fail_exit (int status) +static void fail_exit (int status, bool process_selinux) { if (spw_locked) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ } } if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -82,7 +85,7 @@ static void usage (int status) * * It will not return if an error is encountered. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { /* * Parse the command line options. @@ -101,6 +104,7 @@ static void process_flags (int argc, char **argv) usage (E_SUCCESS); /*@notreached@*/break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; default: usage (E_USAGE); @@ -117,6 +121,8 @@ int main (int argc, char **argv) const struct passwd *pw; struct passwd pwent; const struct spwd *spwd; + struct option_flags flags = {.chroot = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -129,7 +135,8 @@ int main (int argc, char **argv) OPENLOG (Prog); - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot; #ifdef WITH_TCB if (getdef_bool("USE_TCB")) { @@ -147,32 +154,32 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (5); + fail_exit (5, process_selinux); } pw_locked = true; if (pw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } if (spw_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, spw_dbname ()); - fail_exit (5); + fail_exit (5, process_selinux); } spw_locked = true; if (spw_open (O_RDONLY) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); - fail_exit (1); + fail_exit (1, process_selinux); } (void) pw_rewind (); - while ((pw = pw_next ()) != NULL) { + while (NULL != (pw = pw_next())) { spwd = spw_locate (pw->pw_name); if (NULL == spwd) { continue; @@ -187,47 +194,37 @@ int main (int argc, char **argv) pwent.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. - */ if (pw_update (&pwent) == 0) { fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, pw_dbname (), pwent.pw_name); - fail_exit (3); + fail_exit (3, process_selinux); } } - (void) spw_close (); /* was only open O_RDONLY */ + (void) spw_close (process_selinux); /* was only open O_RDONLY */ - if (pw_close () == 0) { + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (3); + fail_exit (3, process_selinux); } if (unlink (SHADOW) != 0) { fprintf (stderr, _("%s: cannot delete %s\n"), Prog, SHADOW); SYSLOG ((LOG_ERR, "cannot delete %s", SHADOW)); - fail_exit (3); + fail_exit (3, process_selinux); } - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ } - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ diff --git a/src/su.c b/src/su.c index 19e818b2..583979c2 100644 --- a/src/su.c +++ b/src/su.c @@ -28,7 +28,7 @@ Boston, MA 02110-1301, USA. */ -#include +#include "config.h" #ident "$Id$" @@ -46,7 +46,7 @@ #include #endif /* !USE_PAM */ -#include "alloc/x/xmalloc.h" +#include "alloc/malloc.h" #include "attr.h" #include "cast.h" #include "defines.h" @@ -59,12 +59,12 @@ #include "pwauth.h" #include "prototypes.h" #include "shadowlog.h" +#include "string/sprintf/aprintf.h" #include "string/sprintf/snprintf.h" -#include "string/sprintf/xaprintf.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" #include "string/strcpy/strtcpy.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" /* @@ -115,7 +115,7 @@ static void execve_shell (const char *shellname, char *args[], char *const envp[]); #ifdef USE_PAM -static void kill_child (MAYBE_UNUSED int s); +static void kill_child(int); static void prepare_pam_close_session (void); #else /* !USE_PAM */ static void die (int); @@ -169,7 +169,8 @@ static bool iswheel (const char *username) return is_on_list (grp->gr_mem, username); } #else /* USE_PAM */ -static void kill_child (MAYBE_UNUSED int s) +static void +kill_child(int) { if (0 != pid_child) { (void) kill (-pid_child, SIGKILL); @@ -187,7 +188,7 @@ static bool restricted_shell (const char *shellname) /*@observer@*/const char *line; setusershell (); - while ((line = getusershell ()) != NULL) { + while (NULL != (line = getusershell())) { if (('#' != *line) && streq(line, shellname)) { endusershell (); return false; @@ -250,7 +251,7 @@ static void execve_shell (const char *shellname, while (NULL != args[n_args]) { n_args++; } - targs = XMALLOC(n_args + 3, char *); + targs = xmalloc_T(n_args + 3, char *); targs[0] = "sh"; targs[1] = "-"; targs[2] = xstrdup (shellname); @@ -394,8 +395,8 @@ static void prepare_pam_close_session (void) stderr); (void) kill (-pid_child, caught); - SNPRINTF(kill_msg, _(" ...killed.\n")); - SNPRINTF(wait_msg, _(" ...waiting for child to terminate.\n")); + stprintf_a(kill_msg, _(" ...killed.\n")); + stprintf_a(wait_msg, _(" ...waiting for child to terminate.\n")); /* Any signals other than SIGCHLD and SIGALRM will no longer have any effect, * so it's time to block all of them. */ @@ -686,7 +687,7 @@ static /*@only@*/struct passwd * do_check_perms (void) SYSLOG ((LOG_INFO, "Change user from '%s' to '%s' as requested by PAM", name, tmp_name)); - if (STRTCPY(name, tmp_name) == -1) { + if (strtcpy_a(name, tmp_name) == -1) { fprintf (stderr, _("Overlong user name '%s'\n"), tmp_name); SYSLOG ((LOG_NOTICE, "Overlong user name '%s'", @@ -785,7 +786,7 @@ save_caller_context(void) (unsigned long) caller_uid)); su_failure (caller_tty, true); /* unknown target UID*/ } - STRTCPY(caller_name, pw->pw_name); + strtcpy_a(caller_name, pw->pw_name); #ifndef USE_PAM #ifdef SU_ACCESS @@ -861,7 +862,7 @@ static void process_flags (int argc, char **argv) } if (optind < argc) { - STRTCPY(name, argv[optind++]); /* use this login id */ + strtcpy_a(name, argv[optind++]); /* use this login id */ } if (streq(name, "")) { /* use default user */ struct passwd *root_pw = getpwnam ("root"); @@ -951,7 +952,7 @@ static void set_environment (struct passwd *pw) cp = getdef_str ((pw->pw_uid == 0) ? "ENV_SUPATH" : "ENV_PATH"); if (NULL == cp) { addenv ((pw->pw_uid == 0) ? "PATH=/sbin:/bin:/usr/sbin:/usr/bin" : "PATH=/bin:/usr/bin", NULL); - } else if (strchr (cp, '=') != NULL) { + } else if (strchr(cp, '=')) { addenv (cp, NULL); } else { addenv ("PATH", cp); @@ -978,10 +979,10 @@ static void set_environment (struct passwd *pw) } #ifdef USE_PAM - /* we need to setup the environment *after* pam_open_session(), - * else the UID is changed before stuff like pam_xauth could - * run, and we cannot access /etc/shadow and co - */ + /* we need to setup the environment *after* pam_open_session(), + * else the UID is changed before stuff like pam_xauth could + * run, and we cannot access /etc/shadow and co + */ /* update environment with all pam set variables */ char **envcp = pam_getenvlist (pamh); if (NULL != envcp) { @@ -1031,10 +1032,8 @@ int main (int argc, char **argv) #ifdef USE_PAM ret = pam_start (Prog, name, &conv, &pamh); if (PAM_SUCCESS != ret) { - SYSLOG ((LOG_ERR, "pam_start: error %d", ret); - fprintf (stderr, - _("%s: pam_start: error %d\n"), - Prog, ret)); + SYSLOG((LOG_ERR, "pam_start: error %d", ret)); + fprintf(stderr, _("%s: pam_start: error %d\n"), Prog, ret); exit (1); } diff --git a/src/suauth.c b/src/suauth.c index 2a5affb2..4b86afb3 100644 --- a/src/suauth.c +++ b/src/suauth.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include @@ -73,7 +73,7 @@ check_su_auth(const char *actual_id, const char *wanted_id, bool su_to_root) return DENY; } - while (fgets (temp, sizeof (temp), authfile_fd) != NULL) { + while (fgets(temp, sizeof(temp), authfile_fd) != NULL) { char *p; lines++; diff --git a/src/sulogin.c b/src/sulogin.c index e2e491ae..3089c02d 100644 --- a/src/sulogin.c +++ b/src/sulogin.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -29,7 +29,7 @@ #include "shadowlog.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" /* @@ -49,7 +49,8 @@ static void catch_signals (int); static int pw_entry(const char *name, struct passwd *pwent); -static void catch_signals (MAYBE_UNUSED int sig) +static void +catch_signals(int) { _exit (1); } diff --git a/src/useradd.c b/src/useradd.c index 36b9b8f8..899efe3c 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -18,16 +18,18 @@ #include #include #ifdef ENABLE_LASTLOG -#include +# include #endif /* ENABLE_LASTLOG */ #include #include #include #ifdef ACCT_TOOLS_SETUID -#ifdef USE_PAM -#include "pam_defs.h" -#endif /* USE_PAM */ +# ifdef USE_PAM +# include "pam_defs.h" +# endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ +#include +#include #include #include #include @@ -36,8 +38,8 @@ #include #include -#include "alloc/x/xmalloc.h" -#include "atoi/a2i/a2s.h" +#include "alloc/malloc.h" +#include "atoi/a2i.h" #include "atoi/getnum.h" #include "chkname.h" #include "defines.h" @@ -63,16 +65,17 @@ #ifdef WITH_TCB #include "tcbfuncs.h" #endif +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "sssd.h" #include "string/memset/memzero.h" #include "string/sprintf/aprintf.h" #include "string/sprintf/snprintf.h" -#include "string/sprintf/xaprintf.h" #include "string/strcmp/strcaseeq.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" +#include "string/strerrno.h" #include "string/strtok/stpsep.h" @@ -86,12 +89,15 @@ #define USER_DEFAULTS_FILE "/etc/default/useradd" #define NEW_USER_FILE "/etc/default/nuaddXXXXXX" #endif + /* - * Needed for MkLinux DR1/2/2.1 - J. + * Structures */ -#ifndef LASTLOG_FILE -#define LASTLOG_FILE "/var/log/lastlog" -#endif +struct option_flags { + bool chroot; + bool prefix; +}; + /* * Global variables */ @@ -219,40 +225,41 @@ static bool home_added = false; #define DLOG_INIT "LOG_INIT" /* local function prototypes */ -NORETURN static void fail_exit (int); -static void get_defaults (void); +NORETURN static void fail_exit (int, bool); +static void get_defaults(const struct option_flags *); static void show_defaults (void); static int set_defaults (void); -static int get_groups (char *); -static struct group * get_local_group (char * grp_name); +static int get_groups(char *, const struct option_flags *); +static struct group * get_local_group (char * grp_name, bool process_selinux); NORETURN static void usage (int status); static void new_pwent (struct passwd *); static void new_spent (struct spwd *); -static void grp_update (void); +static void grp_update (bool); -static void process_flags (int argc, char **argv); -static void close_files (void); -static void close_group_files (void); -static void unlock_group_files (void); -static void open_files (void); -static void open_group_files (void); -static void open_shadow (void); +static void process_flags (int argc, char **argv, struct option_flags *flags); +static void close_files(const struct option_flags *flags); +static void close_group_files (bool process_selinux); +static void unlock_group_files (bool process_selinux); +static void open_files (bool process_selinux); +static void open_group_files (bool process_selinux); +static void open_shadow (bool process_selinux); static void faillog_reset (uid_t); #ifdef ENABLE_LASTLOG static void lastlog_reset (uid_t); #endif /* ENABLE_LASTLOG */ static void tallylog_reset (const char *); -static void usr_update (unsigned long subuid_count, unsigned long subgid_count); -static void create_home (void); -static void create_mail (void); +static void usr_update (unsigned long subuid_count, unsigned long subgid_count, + const struct option_flags *flags); +static void create_home(const struct option_flags *flags); +static void create_mail(const struct option_flags *flags); static void check_uid_range(int rflg, uid_t user_id); /* * fail_exit - undo as much as possible */ -static void fail_exit (int code) +static void fail_exit (int code, bool process_selinux) { #ifdef WITH_AUDIT int type; @@ -265,35 +272,35 @@ static void fail_exit (int code) SYSLOG((LOG_ERR, "failed to remove %s", prefix_user_home)); } - if (spw_locked && spw_unlock() == 0) { + if (spw_locked && spw_unlock(process_selinux) == 0) { fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname()); SYSLOG((LOG_ERR, "failed to unlock %s", spw_dbname())); /* continue */ } - if (pw_locked && pw_unlock() == 0) { + if (pw_locked && pw_unlock(process_selinux) == 0) { fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname()); SYSLOG((LOG_ERR, "failed to unlock %s", pw_dbname())); /* continue */ } - if (gr_locked && gr_unlock() == 0) { + if (gr_locked && gr_unlock(process_selinux) == 0) { fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname()); SYSLOG((LOG_ERR, "failed to unlock %s", gr_dbname())); /* continue */ } #ifdef SHADOWGRP - if (sgr_locked && sgr_unlock() == 0) { + if (sgr_locked && sgr_unlock(process_selinux) == 0) { fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname()); SYSLOG((LOG_ERR, "failed to unlock %s", sgr_dbname())); /* continue */ } #endif #ifdef ENABLE_SUBIDS - if (sub_uid_locked && sub_uid_unlock() == 0) { + if (sub_uid_locked && sub_uid_unlock(process_selinux) == 0) { fprintf(stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname()); SYSLOG((LOG_ERR, "failed to unlock %s", sub_uid_dbname())); /* continue */ } - if (sub_gid_locked && sub_gid_unlock() == 0) { + if (sub_gid_locked && sub_gid_unlock(process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname())); /* continue */ @@ -306,7 +313,7 @@ static void fail_exit (int code) else type = AUDIT_ADD_USER; - audit_logger (type, Prog, + audit_logger (type, "add-user", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif @@ -322,7 +329,7 @@ static void fail_exit (int code) * file does not exist. */ static void -get_defaults(void) +get_defaults(const struct option_flags *flags) { FILE *fp; char *default_file = USER_DEFAULTS_FILE; @@ -349,7 +356,7 @@ get_defaults(void) * Read the file a line at a time. Only the lines that have relevant * values are used, everything else can be ignored. */ - while (fgets (buf, sizeof buf, fp) == buf) { + while (fgets(buf, sizeof(buf), fp) != NULL) { stpsep(buf, "\n"); cp = stpsep(buf, "="); @@ -377,7 +384,7 @@ get_defaults(void) ccp = cp; if (streq(buf, DGROUPS)) { - if (get_groups (cp) != 0) { + if (get_groups (cp, flags) != 0) { fprintf (stderr, _("%s: the '%s=' configuration in %s has an invalid group, ignoring the bad group\n"), Prog, DGROUPS, default_file); @@ -521,7 +528,6 @@ set_defaults(void) char *new_file = NULL; char *new_file_dup = NULL; char *default_file = USER_DEFAULTS_FILE; - char *cp; FILE *ifp; FILE *ofp; @@ -529,16 +535,16 @@ set_defaults(void) new_file = aprintf("%s%s%s", prefix, prefix[0]?"/":"", NEW_USER_FILE); if (new_file == NULL) { fprintf(stderr, _("%s: cannot create new defaults file: %s\n"), - Prog, strerror(errno)); + Prog, strerrno()); return -1; - } + } if (prefix[0]) { default_file = aprintf("%s/%s", prefix, USER_DEFAULTS_FILE); if (default_file == NULL) { fprintf(stderr, _("%s: cannot create new defaults file: %s\n"), - Prog, strerror(errno)); + Prog, strerrno()); goto err_free_new; } } @@ -582,7 +588,7 @@ set_defaults(void) goto skip; } - while (fgets (buf, sizeof buf, ifp) == buf) { + while (fgets(buf, sizeof(buf), ifp) != NULL) { char *val; if (stpsep(buf, "\n") == NULL) { @@ -685,13 +691,12 @@ set_defaults(void) /* * Rename the current default file to its backup name. */ - assert(SNPRINTF(buf, "%s-", default_file) != -1); + assert(stprintf_a(buf, "%s-", default_file) != -1); unlink (buf); if ((link (default_file, buf) != 0) && (ENOENT != errno)) { - int err = errno; fprintf (stderr, _("%s: Cannot create backup file (%s): %s\n"), - Prog, buf, strerror (err)); + Prog, buf, strerrno()); unlink (new_file); goto err_free_def; } @@ -700,14 +705,13 @@ set_defaults(void) * Rename the new default file to its correct name. */ if (rename (new_file, default_file) != 0) { - int err = errno; fprintf (stderr, _("%s: rename: %s: %s\n"), - Prog, new_file, strerror (err)); + Prog, new_file, strerrno()); goto err_free_def; } #ifdef WITH_AUDIT - audit_logger (AUDIT_USYS_CONFIG, Prog, + audit_logger (AUDIT_USYS_CONFIG, "changing-useradd-defaults", NULL, AUDIT_NO_ID, SHADOW_AUDIT_SUCCESS); @@ -736,20 +740,19 @@ err_free_new: * converts it to a NULL-terminated array. Any unknown group * names are reported as errors. */ -static int get_groups (char *list) +static int get_groups(char *list, const struct option_flags *flags) { struct group *grp; bool errors = false; int ngroups = 0; + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; /* * Free previous group list before creating a new one. */ - int i = 0; - while (NULL != user_groups[i]) { - free(user_groups[i]); - user_groups[i++] = NULL; - } + free_list(user_groups); if (streq(list, "")) { return 0; @@ -758,7 +761,7 @@ static int get_groups (char *list) /* * Open the group files */ - open_group_files (); + open_group_files (process_selinux); /* * So long as there is some data to be converted, strip off @@ -777,12 +780,12 @@ static int get_groups (char *list) * Names starting with digits are treated as numerical * GID values, otherwise the string is looked up as is. */ - grp = get_local_group(g); + grp = get_local_group(g, process_selinux); /* * There must be a match, either by GID value or by * string name. - * FIXME: It should exist according to gr_locate, + * FIXME: it should exist according to gr_locate, * otherwise, we can't change its members */ if (NULL == grp) { @@ -815,8 +818,8 @@ static int get_groups (char *list) gr_free (grp); } - close_group_files (); - unlock_group_files (); + close_group_files (process_selinux); + unlock_group_files (process_selinux); user_groups[ngroups] = NULL; @@ -837,7 +840,7 @@ static int get_groups (char *list) * If the name exists the group information is returned, otherwise NULL is * returned. */ -static struct group * get_local_group(char * grp_name) +static struct group * get_local_group(char * grp_name, bool process_selinux) { gid_t gid; struct group *result_grp = NULL; @@ -854,7 +857,7 @@ static struct group * get_local_group(char * grp_name) fprintf (stderr, _("%s: Out of memory. Cannot find group '%s'.\n"), Prog, grp_name); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } } @@ -928,7 +931,7 @@ static void usage (int status) */ static void new_pwent (struct passwd *pwent) { - memzero (pwent, sizeof *pwent); + memzero(pwent, sizeof(*pwent)); pwent->pw_name = (char *) user_name; if (is_shadow_pwd) { pwent->pw_passwd = (char *) SHADOW_PASSWD_STRING; @@ -951,7 +954,7 @@ static void new_pwent (struct passwd *pwent) */ static void new_spent (struct spwd *spent) { - memzero (spent, sizeof *spent); + memzero(spent, sizeof(*spent)); spent->sp_namp = (char *) user_name; spent->sp_pwdp = (char *) user_pass; spent->sp_lstchg = gettime () / DAY; @@ -986,7 +989,7 @@ static void new_spent (struct spwd *spent) * close_files() should be called afterwards to commit the changes * and unlocking the group files. */ -static void grp_update (void) +static void grp_update (bool process_selinux) { const struct group *grp; struct group *ngrp; @@ -1022,7 +1025,7 @@ static void grp_update (void) _("%s: Out of memory. Cannot update %s.\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to prepare the new %s entry '%s'", gr_dbname (), user_name)); - fail_exit (E_GRP_UPDATE); /* XXX */ + fail_exit (E_GRP_UPDATE, process_selinux); /* XXX */ } /* @@ -1035,7 +1038,7 @@ static void grp_update (void) _("%s: failed to prepare the new %s entry '%s'\n"), Prog, gr_dbname (), ngrp->gr_name); SYSLOG ((LOG_ERR, "failed to prepare the new %s entry '%s'", gr_dbname (), user_name)); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #ifdef WITH_AUDIT audit_logger_with_group (AUDIT_USER_MGMT, @@ -1085,7 +1088,7 @@ static void grp_update (void) _("%s: Out of memory. Cannot update %s.\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to prepare the new %s entry '%s'", sgr_dbname (), user_name)); - fail_exit (E_GRP_UPDATE); /* XXX */ + fail_exit (E_GRP_UPDATE, process_selinux); /* XXX */ } /* @@ -1099,7 +1102,7 @@ static void grp_update (void) Prog, sgr_dbname (), nsgrp->sg_namp); SYSLOG ((LOG_ERR, "failed to prepare the new %s entry '%s'", sgr_dbname (), user_name)); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #ifdef WITH_AUDIT audit_logger_with_group (AUDIT_USER_MGMT, @@ -1121,7 +1124,7 @@ static void grp_update (void) * the values that the user will be created with accordingly. The * values are checked for sanity. */ -static void process_flags (int argc, char **argv) +static void process_flags (int argc, char **argv, struct option_flags *flags) { const struct group *grp; bool anyflag = false; @@ -1296,7 +1299,7 @@ static void process_flags (int argc, char **argv) gflg = true; break; case 'G': - if (get_groups (optarg) != 0) { + if (get_groups (optarg, flags) != 0) { exit (E_NOTFOUND); } if (NULL != user_groups[0]) { @@ -1356,8 +1359,10 @@ static void process_flags (int argc, char **argv) rflg = true; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 'P': /* no-op, handled in process_prefix_flag () */ + flags->prefix = true; break; case 's': if ( ( !VALID (optarg) ) @@ -1493,7 +1498,7 @@ static void process_flags (int argc, char **argv) user_name = argv[optind]; if (!is_valid_user_name(user_name)) { - if (errno == EINVAL) { + if (errno == EILSEQ) { fprintf(stderr, _("%s: invalid user name '%s': use --badname to ignore\n"), Prog, user_name); @@ -1503,7 +1508,7 @@ static void process_flags (int argc, char **argv) Prog, user_name); } #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, "add-user", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1550,6 +1555,12 @@ static void process_flags (int argc, char **argv) } } + if (rflg && !Gflg && do_grp_update) { + /* Do not automatically add supplements groups for system users. */ + free_list(user_groups); + do_grp_update = false; + } + if (Mflg) { /* absolutely sure that we do not create home dirs */ mflg = false; @@ -1562,42 +1573,46 @@ static void process_flags (int argc, char **argv) * close_files() closes all of the files that were opened for this * new user. This causes any modified entries to be written out. */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { - if (pw_close () == 0) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } - if (is_shadow_pwd && (spw_close () == 0)) { + if (is_shadow_pwd && (spw_close (process_selinux) == 0)) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } - close_group_files (); + close_group_files (process_selinux); #ifdef ENABLE_SUBIDS - if (is_sub_uid && (sub_uid_close () == 0)) { + if (is_sub_uid && (sub_uid_close (process_selinux) == 0)) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ())); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } - if (is_sub_gid && (sub_gid_close () == 0)) { + if (is_sub_gid && (sub_gid_close (process_selinux) == 0)) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_gid_dbname ())); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } #endif /* ENABLE_SUBIDS */ if (is_shadow_pwd) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, "unlocking-shadow-file", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1606,11 +1621,11 @@ static void close_files (void) } spw_locked = false; } - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, "unlocking-passwd-file", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1619,15 +1634,15 @@ static void close_files (void) } pw_locked = false; - unlock_group_files (); + unlock_group_files (process_selinux); #ifdef ENABLE_SUBIDS if (is_sub_uid) { - if (sub_uid_unlock () == 0) { + if (sub_uid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_uid_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, "unlocking-subordinate-user-file", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1637,11 +1652,11 @@ static void close_files (void) sub_uid_locked = false; } if (is_sub_gid) { - if (sub_gid_unlock () == 0) { + if (sub_gid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, "unlocking-subordinate-group-file", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1659,25 +1674,25 @@ static void close_files (void) * close_group_files() closes all of the files that were opened related * with groups. This causes any modified entries to be written out. */ -static void close_group_files (void) +static void close_group_files (bool process_selinux) { if (!do_grp_update) return; - if (gr_close() == 0) { + if (gr_close(process_selinux) == 0) { fprintf(stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname()); SYSLOG((LOG_ERR, "failure while writing changes to %s", gr_dbname())); - fail_exit(E_GRP_UPDATE); + fail_exit(E_GRP_UPDATE, process_selinux); } #ifdef SHADOWGRP - if (is_shadow_grp && sgr_close() == 0) { + if (is_shadow_grp && sgr_close(process_selinux) == 0) { fprintf(stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname()); SYSLOG((LOG_ERR, "failure while writing changes to %s", sgr_dbname())); - fail_exit(E_GRP_UPDATE); + fail_exit(E_GRP_UPDATE, process_selinux); } #endif /* SHADOWGRP */ } @@ -1688,13 +1703,13 @@ static void close_group_files (void) * unlock_group_files() unlocks all of the files that were locked related * with groups. This causes any modified entries to be written out. */ -static void unlock_group_files (void) +static void unlock_group_files (bool process_selinux) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, "unlocking-group-file", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1704,11 +1719,11 @@ static void unlock_group_files (void) gr_locked = false; #ifdef SHADOWGRP if (is_shadow_grp) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, "unlocking-gshadow-file", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1725,7 +1740,7 @@ static void unlock_group_files (void) * * open_files() opens the two password files. */ -static void open_files (void) +static void open_files (bool process_selinux) { if (pw_lock () == 0) { fprintf (stderr, @@ -1736,12 +1751,12 @@ static void open_files (void) pw_locked = true; if (pw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } /* shadow file will be opened by open_shadow(); */ - open_group_files (); + open_group_files (process_selinux); #ifdef ENABLE_SUBIDS if (is_sub_uid) { @@ -1749,14 +1764,14 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sub_uid_dbname ()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } sub_uid_locked = true; if (sub_uid_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sub_uid_dbname ()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } } if (is_sub_gid) { @@ -1764,31 +1779,31 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sub_gid_dbname ()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } sub_gid_locked = true; if (sub_gid_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sub_gid_dbname ()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } } #endif /* ENABLE_SUBIDS */ } -static void open_group_files (void) +static void open_group_files (bool process_selinux) { if (gr_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } gr_locked = true; if (gr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #ifdef SHADOWGRP @@ -1797,20 +1812,20 @@ static void open_group_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } sgr_locked = true; if (sgr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } } #endif /* SHADOWGRP */ } -static void open_shadow (void) +static void open_shadow (bool process_selinux) { if (!is_shadow_pwd) { return; @@ -1819,14 +1834,14 @@ static void open_shadow (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, spw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } spw_locked = true; if (spw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } } @@ -1841,7 +1856,7 @@ static char *empty_list = NULL; static void new_grent (struct group *grent) { - memzero (grent, sizeof *grent); + memzero(grent, sizeof(*grent)); grent->gr_name = (char *) user_name; #ifdef SHADOWGRP if (is_shadow_grp) { @@ -1865,7 +1880,7 @@ static void new_grent (struct group *grent) static void new_sgent (struct sgrp *sgent) { - memzero (sgent, sizeof *sgent); + memzero(sgent, sizeof(*sgent)); sgent->sg_namp = (char *) user_name; sgent->sg_passwd = "!"; /* XXX warning: const */ sgent->sg_adm = &empty_list; @@ -1880,7 +1895,7 @@ static void new_sgent (struct sgrp *sgent) * grp_add() writes the new records to the group files. */ -static void grp_add (void) +static void grp_add (bool process_selinux) { struct group grp; @@ -1904,12 +1919,12 @@ static void grp_add (void) _("%s: failed to prepare the new %s entry '%s'\n"), Prog, gr_dbname (), grp.gr_name); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, Prog, + audit_logger (AUDIT_ADD_GROUP, "add-group", grp.gr_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #ifdef SHADOWGRP /* @@ -1920,17 +1935,17 @@ static void grp_add (void) _("%s: failed to prepare the new %s entry '%s'\n"), Prog, sgr_dbname (), sgrp.sg_namp); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, Prog, + audit_logger (AUDIT_ADD_GROUP, "add-group", grp.gr_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #endif /* SHADOWGRP */ SYSLOG ((LOG_INFO, "new group: name=%s, GID=%u", user_name, user_gid)); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, Prog, + audit_logger (AUDIT_ADD_GROUP, "add-group", grp.gr_name, AUDIT_NO_ID, SHADOW_AUDIT_SUCCESS); @@ -1942,35 +1957,35 @@ static void faillog_reset (uid_t uid) { struct faillog fl; int fd; - off_t offset_uid = (off_t) (sizeof fl) * uid; + off_t offset_uid = (off_t) sizeof(fl) * uid; struct stat st; if (stat (FAILLOG_FILE, &st) != 0 || st.st_size <= offset_uid) { return; } - memzero (&fl, sizeof (fl)); + memzero(&fl, sizeof(fl)); fd = open (FAILLOG_FILE, O_RDWR); if (-1 == fd) { fprintf (stderr, _("%s: failed to open the faillog file for UID %lu: %s\n"), - Prog, (unsigned long) uid, strerror (errno)); + Prog, (unsigned long) uid, strerrno()); SYSLOG ((LOG_WARN, "failed to open the faillog file for UID %lu", (unsigned long) uid)); return; } if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (write_full(fd, &fl, sizeof (fl)) == -1) + || (write_full(fd, &fl, sizeof(fl)) == -1) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to reset the faillog entry of UID %lu: %s\n"), - Prog, (unsigned long) uid, strerror (errno)); + Prog, (unsigned long) uid, strerrno()); SYSLOG ((LOG_WARN, "failed to reset the faillog entry of UID %lu", (unsigned long) uid)); } if (close (fd) != 0 && errno != EINTR) { fprintf (stderr, _("%s: failed to close the faillog file for UID %lu: %s\n"), - Prog, (unsigned long) uid, strerror (errno)); + Prog, (unsigned long) uid, strerrno()); SYSLOG ((LOG_WARN, "failed to close the faillog file for UID %lu", (unsigned long) uid)); } } @@ -1980,11 +1995,11 @@ static void lastlog_reset (uid_t uid) { struct lastlog ll; int fd; - off_t offset_uid = (off_t) (sizeof ll) * uid; + off_t offset_uid = (off_t) sizeof(ll) * uid; uid_t max_uid; struct stat st; - if (stat (LASTLOG_FILE, &st) != 0 || st.st_size <= offset_uid) { + if (stat(_PATH_LASTLOG, &st) != 0 || st.st_size <= offset_uid) { return; } @@ -1994,29 +2009,29 @@ static void lastlog_reset (uid_t uid) return; } - memzero (&ll, sizeof (ll)); + memzero(&ll, sizeof(ll)); - fd = open (LASTLOG_FILE, O_RDWR); + fd = open(_PATH_LASTLOG, O_RDWR); if (-1 == fd) { fprintf (stderr, _("%s: failed to open the lastlog file for UID %lu: %s\n"), - Prog, (unsigned long) uid, strerror (errno)); + Prog, (unsigned long) uid, strerrno()); SYSLOG ((LOG_WARN, "failed to open the lastlog file for UID %lu", (unsigned long) uid)); return; } if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) - || (write_full (fd, &ll, sizeof (ll)) == -1) + || (write_full(fd, &ll, sizeof(ll)) == -1) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to reset the lastlog entry of UID %lu: %s\n"), - Prog, (unsigned long) uid, strerror (errno)); + Prog, (unsigned long) uid, strerrno()); SYSLOG ((LOG_WARN, "failed to reset the lastlog entry of UID %lu", (unsigned long) uid)); /* continue */ } if (close (fd) != 0 && errno != EINTR) { fprintf (stderr, _("%s: failed to close the lastlog file for UID %lu: %s\n"), - Prog, (unsigned long) uid, strerror (errno)); + Prog, (unsigned long) uid, strerrno()); SYSLOG ((LOG_WARN, "failed to close the lastlog file for UID %lu", (unsigned long) uid)); /* continue */ } @@ -2074,11 +2089,16 @@ static void tallylog_reset (const char *user_name) * usr_update() creates the password file entries for this user * and will update the group entries if required. */ -static void usr_update (unsigned long subuid_count, unsigned long subgid_count) +static void +usr_update (unsigned long subuid_count, unsigned long subgid_count, + const struct option_flags *flags) { struct passwd pwent; struct spwd spent; char *tty; + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; /* * Fill in the password structure with any new fields, making @@ -2119,7 +2139,7 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, pw_dbname (), pwent.pw_name); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } /* @@ -2129,7 +2149,7 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, spw_dbname (), spent.sp_namp); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } #ifdef ENABLE_SUBIDS if (is_sub_uid && !local_sub_uid_assigned(user_name) && @@ -2137,14 +2157,14 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) fprintf (stderr, _("%s: failed to prepare the new %s entry\n"), Prog, sub_uid_dbname ()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } if (is_sub_gid && !local_sub_gid_assigned(user_name) && (sub_gid_add(user_name, sub_gid_start, subgid_count) == 0)) { fprintf (stderr, _("%s: failed to prepare the new %s entry\n"), Prog, sub_uid_dbname ()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } #endif /* ENABLE_SUBIDS */ @@ -2154,7 +2174,7 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) * because its not written to disk yet. After close_files it is * and we can use the real ID thereafter. */ - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, "add-user", user_name, AUDIT_NO_ID, SHADOW_AUDIT_SUCCESS); @@ -2163,7 +2183,7 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) * Do any group file updates for this user. */ if (do_grp_update) { - grp_update (); + grp_update (process_selinux); } } @@ -2174,11 +2194,14 @@ static void usr_update (unsigned long subuid_count, unsigned long subgid_count) * already exist. It will be created mode 755 owned by the user * with the user's default group. */ -static void create_home (void) +static void create_home(const struct option_flags *flags) { char path[strlen(prefix_user_home) + 2]; char *bhome, *cp; mode_t mode; + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; if (access (prefix_user_home, F_OK) == 0) return; @@ -2189,15 +2212,17 @@ static void create_home (void) fprintf(stderr, _("%s: error while duplicating string %s\n"), Prog, user_home); - fail_exit(E_HOMEDIR); + fail_exit(E_HOMEDIR, process_selinux); } #ifdef WITH_SELINUX - if (set_selinux_file_context(prefix_user_home, S_IFDIR) != 0) { - fprintf(stderr, - _("%s: cannot set SELinux context for home directory %s\n"), - Prog, user_home); - fail_exit(E_HOMEDIR); + if (process_selinux) { + if (set_selinux_file_context(prefix_user_home, S_IFDIR) != 0) { + fprintf(stderr, + _("%s: cannot set SELinux context for home directory %s\n"), + Prog, user_home); + fail_exit(E_HOMEDIR, process_selinux); + } } #endif @@ -2227,14 +2252,14 @@ static void create_home (void) fprintf(stderr, _("%s: error while duplicating string in BTRFS check %s\n"), Prog, path); - fail_exit(E_HOMEDIR); + fail_exit(E_HOMEDIR, process_selinux); } stpcpy(&btrfs_check[strlen(path) - strlen(cp) - 1], ""); if (is_btrfs(btrfs_check) <= 0) { fprintf(stderr, _("%s: home directory \"%s\" must be mounted on BTRFS\n"), Prog, path); - fail_exit(E_HOMEDIR); + fail_exit(E_HOMEDIR, process_selinux); } free(btrfs_check); // make subvolume to mount for user instead of directory @@ -2242,7 +2267,7 @@ static void create_home (void) fprintf(stderr, _("%s: failed to create BTRFS subvolume: %s\n"), Prog, path); - fail_exit(E_HOMEDIR); + fail_exit(E_HOMEDIR, process_selinux); } } else @@ -2250,7 +2275,7 @@ static void create_home (void) if (mkdir(path, 0) != 0) { fprintf(stderr, _("%s: cannot create directory %s\n"), Prog, path); - fail_exit(E_HOMEDIR); + fail_exit(E_HOMEDIR, process_selinux); } if (chown(path, 0, 0) < 0) { fprintf(stderr, @@ -2274,16 +2299,18 @@ static void create_home (void) } home_added = true; #ifdef WITH_AUDIT - audit_logger(AUDIT_USER_MGMT, Prog, "add-home-dir", + audit_logger(AUDIT_USER_MGMT, "add-home-dir", user_name, user_id, SHADOW_AUDIT_SUCCESS); #endif #ifdef WITH_SELINUX - /* Reset SELinux to create files with default contexts */ - if (reset_selinux_file_context() != 0) { - fprintf(stderr, - _("%s: cannot reset SELinux file creation context\n"), - Prog); - fail_exit(E_HOMEDIR); + if (process_selinux) { + /* Reset SELinux to create files with default contexts */ + if (reset_selinux_file_context() != 0) { + fprintf(stderr, + _("%s: cannot reset SELinux file creation context\n"), + Prog); + fail_exit(E_HOMEDIR, process_selinux); + } } #endif } @@ -2295,7 +2322,7 @@ static void create_home (void) * exist. It will be created mode 660 owned by the user and group * 'mail' */ -static void create_mail (void) +static void create_mail(const struct option_flags *flags) { int fd; char *file; @@ -2303,6 +2330,9 @@ static void create_mail (void) mode_t mode; const char *spool; struct group *gr; + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; if (!strcaseeq(create_mail_spool, "yes")) return; @@ -2322,11 +2352,13 @@ static void create_mail (void) file = xaprintf("%s/%s", spool, user_name); #ifdef WITH_SELINUX - if (set_selinux_file_context(file, S_IFREG) != 0) { - fprintf(stderr, - _("%s: cannot set SELinux context for mailbox file %s\n"), - Prog, file); - fail_exit(E_MAILBOXFILE); + if (process_selinux) { + if (set_selinux_file_context(file, S_IFREG) != 0) { + fprintf(stderr, + _("%s: cannot set SELinux context for mailbox file %s\n"), + Prog, file); + fail_exit(E_MAILBOXFILE, process_selinux); + } } #endif @@ -2362,12 +2394,14 @@ static void create_mail (void) perror (_("Closing mailbox file")); } #ifdef WITH_SELINUX - /* Reset SELinux to create files with default contexts */ - if (reset_selinux_file_context() != 0) { - fprintf(stderr, - _("%s: cannot reset SELinux file creation context\n"), - Prog); - fail_exit(E_MAILBOXFILE); + if (process_selinux) { + /* Reset SELinux to create files with default contexts */ + if (reset_selinux_file_context() != 0) { + fprintf(stderr, + _("%s: cannot reset SELinux file creation context\n"), + Prog); + fail_exit(E_MAILBOXFILE, process_selinux); + } } #endif } @@ -2409,6 +2443,8 @@ int main (int argc, char **argv) #endif unsigned long subuid_count = 0; unsigned long subgid_count = 0; + struct option_flags flags = {.chroot = false, .prefix = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -2427,7 +2463,7 @@ int main (int argc, char **argv) #endif sys_ngroups = sysconf (_SC_NGROUPS_MAX); - user_groups = XMALLOC(1 + sys_ngroups, char *); + user_groups = xmalloc_T(1 + sys_ngroups, char *); /* * Initialize the list to be empty */ @@ -2439,19 +2475,22 @@ int main (int argc, char **argv) is_shadow_grp = sgr_file_present (); #endif - get_defaults (); + get_defaults (&flags); - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot && !flags.prefix; #ifdef ENABLE_SUBIDS uid_min = getdef_ulong ("UID_MIN", 1000UL); uid_max = getdef_ulong ("UID_MAX", 60000UL); subuid_count = getdef_ulong ("SUB_UID_COUNT", 65536); subgid_count = getdef_ulong ("SUB_GID_COUNT", 65536); - is_sub_uid = subuid_count > 0 && sub_uid_file_present () && + is_sub_uid = want_subuid_file () && + subuid_count > 0 && sub_uid_file_present () && (!rflg || Fflg) && (!user_id || (user_id <= uid_max && user_id >= uid_min)); - is_sub_gid = subgid_count > 0 && sub_gid_file_present () && + is_sub_gid = want_subgid_file() && + subgid_count > 0 && sub_gid_file_present() && (!rflg || Fflg) && (!user_id || (user_id <= uid_max && user_id >= uid_min)); #endif /* ENABLE_SUBIDS */ @@ -2470,7 +2509,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: Cannot determine your user name.\n"), Prog); - fail_exit (1); + fail_exit (1, process_selinux); } retval = pam_start (Prog, pampw?pampw->pw_name:"root", &conv, &pamh); @@ -2491,7 +2530,7 @@ int main (int argc, char **argv) if (NULL != pamh) { (void) pam_end (pamh, retval); } - fail_exit (1); + fail_exit (1, process_selinux); } (void) pam_end (pamh, retval); #endif /* USE_PAM */ @@ -2515,7 +2554,7 @@ int main (int argc, char **argv) */ if (prefix_getpwnam (user_name) != NULL) { /* local, no need for xgetpwnam */ fprintf (stderr, _("%s: user '%s' already exists\n"), Prog, user_name); - fail_exit (E_NAME_IN_USE); + fail_exit (E_NAME_IN_USE, process_selinux); } /* @@ -2530,7 +2569,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: group %s exists - if you want to add this user to that group, use -g.\n"), Prog, user_name); - fail_exit (E_NAME_IN_USE); + fail_exit (E_NAME_IN_USE, process_selinux); } } @@ -2543,7 +2582,7 @@ int main (int argc, char **argv) * - flush nscd caches for passwd and group services, * - then close and update the files. */ - open_files (); + open_files (process_selinux); if (!oflg) { /* first, seek for a valid uid to use for this user. @@ -2552,14 +2591,14 @@ int main (int argc, char **argv) if (!uflg) { if (find_new_uid (rflg, &user_id, NULL) < 0) { fprintf (stderr, _("%s: can't create user\n"), Prog); - fail_exit (E_UID_IN_USE); + fail_exit (E_UID_IN_USE, process_selinux); } } else { if (prefix_getpwuid (user_id) != NULL) { fprintf (stderr, _("%s: UID %lu is not unique\n"), Prog, (unsigned long) user_id); - fail_exit (E_UID_IN_USE); + fail_exit (E_UID_IN_USE, process_selinux); } } } @@ -2572,11 +2611,11 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: Failed to create tcb directory for %s\n"), Prog, user_name); - fail_exit (E_UID_IN_USE); + fail_exit (E_UID_IN_USE, process_selinux); } } #endif - open_shadow (); + open_shadow (process_selinux); /* do we have to add a group for that user? This is why we need to * open the group files in the open_files() function --gafton */ @@ -2585,9 +2624,9 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: can't create group\n"), Prog); - fail_exit (4); + fail_exit (4, process_selinux); } - grp_add (); + grp_add (process_selinux); } #ifdef ENABLE_SUBIDS @@ -2596,7 +2635,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: can't create subordinate user IDs\n"), Prog); - fail_exit(E_SUB_UID_UPDATE); + fail_exit(E_SUB_UID_UPDATE, process_selinux); } } if (is_sub_gid && subgid_count != 0) { @@ -2604,14 +2643,14 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: can't create subordinate group IDs\n"), Prog); - fail_exit(E_SUB_GID_UPDATE); + fail_exit(E_SUB_GID_UPDATE, process_selinux); } } #endif /* ENABLE_SUBIDS */ - usr_update (subuid_count, subgid_count); + usr_update (subuid_count, subgid_count, &flags); - close_files (); + close_files (&flags); nscd_flush_cache ("passwd"); nscd_flush_cache ("group"); @@ -2633,17 +2672,17 @@ int main (int argc, char **argv) _("%s: warning: the user name %s to %s SELinux user mapping failed.\n"), Prog, user_name, user_selinux); #ifdef WITH_AUDIT - audit_logger (AUDIT_ROLE_ASSIGN, Prog, + audit_logger (AUDIT_ROLE_ASSIGN, "add-selinux-user-mapping", user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ - fail_exit (E_SE_UPDATE); + fail_exit (E_SE_UPDATE, process_selinux); } } #endif /* WITH_SELINUX */ if (mflg) { - create_home (); + create_home (&flags); if (home_added) { copy_tree (def_template, prefix_user_home, false, true, (uid_t)-1, user_id, (gid_t)-1, user_gid); @@ -2660,7 +2699,7 @@ int main (int argc, char **argv) /* Do not create mail directory for system accounts */ if (!rflg) { - create_mail (); + create_mail (&flags); } if (run_parts ("/etc/shadow-maint/useradd-post.d", user_name, diff --git a/src/userdel.c b/src/userdel.c index 72ce11fa..f0212764 100644 --- a/src/userdel.c +++ b/src/userdel.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #include #include #include @@ -50,12 +50,13 @@ #ifdef ENABLE_SUBIDS #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "string/sprintf/aprintf.h" -#include "string/sprintf/xaprintf.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" +#include "string/strerrno.h" /* @@ -72,6 +73,14 @@ #define E_SUB_GID_UPDATE 18 /* can't update the subordinate gid file */ #endif /* ENABLE_SUBIDS */ +/* + * Structures + */ +struct option_flags { + bool chroot; + bool prefix; +}; + /* * Global variables */ @@ -87,7 +96,6 @@ static bool rflg = false; #ifdef WITH_SELINUX static bool Zflg = false; #endif -static bool Rflg = false; static bool is_shadow_pwd; @@ -109,12 +117,12 @@ static const char* prefix = ""; /* local function prototypes */ static void usage (int status); -static void update_groups (void); -static void remove_usergroup (void); -static void close_files (void); -static void fail_exit (int); -static void open_files (void); -static void update_user (void); +static void update_groups (bool process_selinux); +static void remove_usergroup (bool process_selinux); +static void close_files(const struct option_flags *flags); +static void fail_exit (int, bool); +static void open_files (bool process_selinux); +static void update_user (bool process_selinux); static void user_cancel (const char *); #ifdef EXTRA_CHECK_HOME_DIR @@ -162,7 +170,7 @@ static void usage (int status) * name is their user name) and delete them too (only if USERGROUPS_ENAB * is enabled). */ -static void update_groups (void) +static void update_groups (bool process_selinux) { const struct group *grp; struct group *ngrp; @@ -219,7 +227,7 @@ static void update_groups (void) } if (getdef_bool ("USERGROUPS_ENAB")) { - remove_usergroup (); + remove_usergroup (process_selinux); } #ifdef SHADOWGRP @@ -291,7 +299,7 @@ static void update_groups (void) * + it has no other members * + it is not the primary group of any other user */ -static void remove_usergroup (void) +static void remove_usergroup (bool process_selinux) { const struct group *grp; const struct passwd *pwd = NULL; @@ -323,7 +331,7 @@ static void remove_usergroup (void) * used as a primary group. */ prefix_setpwent (); - while ((pwd = prefix_getpwent ()) != NULL) { + while (NULL != (pwd = prefix_getpwent())) { if (streq(pwd->pw_name, user_name)) { continue; } @@ -346,7 +354,7 @@ static void remove_usergroup (void) fprintf (stderr, _("%s: cannot remove entry '%s' from %s\n"), Prog, user_name, gr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #ifdef WITH_AUDIT @@ -365,7 +373,7 @@ static void remove_usergroup (void) fprintf (stderr, _("%s: cannot remove entry '%s' from %s\n"), Prog, user_name, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #ifdef WITH_AUDIT audit_logger_with_group (AUDIT_GRP_MGMT, @@ -388,14 +396,18 @@ static void remove_usergroup (void) * close_files() closes all of the files that were opened for this * new user. This causes any modified entries to be written out. */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { - if (pw_close () == 0) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -403,13 +415,13 @@ static void close_files (void) pw_locked = false; if (is_shadow_pwd) { - if (spw_close () == 0) { + if (spw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ @@ -417,12 +429,12 @@ static void close_files (void) spw_locked = false; } - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -431,14 +443,14 @@ static void close_files (void) #ifdef SHADOWGRP if (is_shadow_grp) { - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -449,12 +461,12 @@ static void close_files (void) #ifdef ENABLE_SUBIDS if (is_sub_uid) { - if (sub_uid_close () == 0) { + if (sub_uid_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ())); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } - if (sub_uid_unlock () == 0) { + if (sub_uid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_uid_dbname ())); /* continue */ @@ -463,12 +475,12 @@ static void close_files (void) } if (is_sub_gid) { - if (sub_gid_close () == 0) { + if (sub_gid_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_gid_dbname ())); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } - if (sub_gid_unlock () == 0) { + if (sub_gid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname ())); /* continue */ @@ -481,24 +493,24 @@ static void close_files (void) /* * fail_exit - exit with a failure code after unlocking the files */ -static void fail_exit (int code) +static void fail_exit (int code, bool process_selinux) { if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ } } if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ } } if (spw_locked) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ @@ -506,7 +518,7 @@ static void fail_exit (int code) } #ifdef SHADOWGRP if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -515,14 +527,14 @@ static void fail_exit (int code) #endif /* SHADOWGRP */ #ifdef ENABLE_SUBIDS if (sub_uid_locked) { - if (sub_uid_unlock () == 0) { + if (sub_uid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_uid_dbname ())); /* continue */ } } if (sub_gid_locked) { - if (sub_gid_unlock () == 0) { + if (sub_gid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname ())); /* continue */ @@ -531,7 +543,7 @@ static void fail_exit (int code) #endif /* ENABLE_SUBIDS */ #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_USER, Prog, + audit_logger (AUDIT_DEL_USER, "delete-user", user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ @@ -545,45 +557,45 @@ static void fail_exit (int code) * open_files() opens the two password files. */ -static void open_files (void) +static void open_files (bool process_selinux) { if (pw_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } pw_locked = true; if (pw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } if (is_shadow_pwd) { if (spw_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, spw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } spw_locked = true; if (spw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } } if (gr_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } gr_locked = true; if (gr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #ifdef SHADOWGRP if (is_shadow_grp) { @@ -591,13 +603,13 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } sgr_locked= true; if (sgr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } } #endif /* SHADOWGRP */ @@ -607,13 +619,13 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sub_uid_dbname ()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } sub_uid_locked = true; if (sub_uid_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sub_uid_dbname ()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } } if (is_sub_gid) { @@ -621,13 +633,13 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sub_gid_dbname ()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } sub_gid_locked = true; if (sub_gid_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sub_gid_dbname ()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } } #endif /* ENABLE_SUBIDS */ @@ -639,13 +651,13 @@ static void open_files (void) * update_user() deletes the password file entries for this user * and will update the group entries as required. */ -static void update_user (void) +static void update_user (bool process_selinux) { if (pw_remove (user_name) == 0) { fprintf (stderr, _("%s: cannot remove entry '%s' from %s\n"), Prog, user_name, pw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } if ( is_shadow_pwd && (spw_locate (user_name) != NULL) @@ -653,24 +665,24 @@ static void update_user (void) fprintf (stderr, _("%s: cannot remove entry '%s' from %s\n"), Prog, user_name, spw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } #ifdef ENABLE_SUBIDS if (is_sub_uid && sub_uid_remove(user_name, 0, ULONG_MAX) == 0) { fprintf (stderr, _("%s: cannot remove entry %lu from %s\n"), Prog, (unsigned long)user_id, sub_uid_dbname ()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } if (is_sub_gid && sub_gid_remove(user_name, 0, ULONG_MAX) == 0) { fprintf (stderr, _("%s: cannot remove entry %lu from %s\n"), Prog, (unsigned long)user_id, sub_gid_dbname ()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } #endif /* ENABLE_SUBIDS */ #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_USER, Prog, + audit_logger (AUDIT_DEL_USER, "delete-user", user_name, user_id, SHADOW_AUDIT_SUCCESS); #endif /* WITH_AUDIT */ @@ -766,10 +778,10 @@ static bool remove_mailbox (void) } else { fprintf (stderr, _("%s: warning: can't remove %s: %s\n"), - Prog, mailfile, strerror (errno)); - SYSLOG ((LOG_ERR, "Cannot remove %s: %s", mailfile, strerror (errno))); + Prog, mailfile, strerrno()); + SYSLOG((LOG_ERR, "Cannot remove %s: %s", mailfile, strerrno())); #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_USER, Prog, + audit_logger (AUDIT_DEL_USER, "delete-mail-file", user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ @@ -782,10 +794,10 @@ static bool remove_mailbox (void) if (unlink (mailfile) != 0) { fprintf (stderr, _("%s: warning: can't remove %s: %s\n"), - Prog, mailfile, strerror (errno)); - SYSLOG ((LOG_ERR, "Cannot remove %s: %s", mailfile, strerror (errno))); + Prog, mailfile, strerrno()); + SYSLOG((LOG_ERR, "Cannot remove %s: %s", mailfile, strerrno())); #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_USER, Prog, + audit_logger (AUDIT_DEL_USER, "delete-mail-file", user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ @@ -795,7 +807,7 @@ static bool remove_mailbox (void) #ifdef WITH_AUDIT else { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "delete-mail-file", user_name, user_id, SHADOW_AUDIT_SUCCESS); } @@ -808,11 +820,9 @@ static bool remove_mailbox (void) fprintf (stderr, _("%s: %s not owned by %s, not removing\n"), Prog, mailfile, user_name); - SYSLOG ((LOG_ERR, - "%s not owned by %s, not removed", - mailfile, strerror (errno))); + SYSLOG((LOG_ERR, "%s not owned by %s, not removed", mailfile, user_name)); #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_USER, Prog, + audit_logger (AUDIT_DEL_USER, "delete-mail-file", user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ @@ -825,10 +835,10 @@ static bool remove_mailbox (void) if (unlink (mailfile) != 0) { fprintf (stderr, _("%s: warning: can't remove %s: %s\n"), - Prog, mailfile, strerror (errno)); - SYSLOG ((LOG_ERR, "Cannot remove %s: %s", mailfile, strerror (errno))); + Prog, mailfile, strerrno()); + SYSLOG((LOG_ERR, "Cannot remove %s: %s", mailfile, strerrno())); #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_USER, Prog, + audit_logger (AUDIT_DEL_USER, "delete-mail-file", user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ @@ -838,7 +848,7 @@ static bool remove_mailbox (void) #ifdef WITH_AUDIT else { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "delete-mail-file", user_name, user_id, SHADOW_AUDIT_SUCCESS); } @@ -866,7 +876,7 @@ static int remove_tcbdir (const char *user_name, uid_t user_id) } if (shadowtcb_drop_priv () == SHADOWTCB_FAILURE) { fprintf (stderr, _("%s: Cannot drop privileges: %s\n"), - Prog, strerror (errno)); + Prog, strerrno()); shadowtcb_gain_priv (); free (buf); return 1; @@ -876,7 +886,7 @@ static int remove_tcbdir (const char *user_name, uid_t user_id) */ if (remove_tree (buf, false) != 0) { fprintf (stderr, _("%s: Cannot remove the content of %s: %s\n"), - Prog, buf, strerror (errno)); + Prog, buf, strerrno()); shadowtcb_gain_priv (); free (buf); return 1; @@ -885,7 +895,7 @@ static int remove_tcbdir (const char *user_name, uid_t user_id) free (buf); if (shadowtcb_remove (user_name) == SHADOWTCB_FAILURE) { fprintf (stderr, _("%s: Cannot remove tcb files for %s: %s\n"), - Prog, user_name, strerror (errno)); + Prog, user_name, strerrno()); ret = 1; } return ret; @@ -905,6 +915,8 @@ int main (int argc, char **argv) int retval; #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ + struct option_flags flags = {.chroot = false, .prefix = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -954,9 +966,10 @@ int main (int argc, char **argv) rflg = true; break; case 'R': /* no-op, handled in process_root_flag () */ - Rflg = true; + flags.chroot = true; break; case 'P': /* no-op, handled in process_prefix_flag () */ + flags.prefix = true; break; #ifdef WITH_SELINUX case 'Z': @@ -982,6 +995,7 @@ int main (int argc, char **argv) } } } + process_selinux = !flags.chroot && !flags.prefix; if ((optind + 1) != argc) { usage (E_USAGE); @@ -1028,8 +1042,8 @@ int main (int argc, char **argv) is_shadow_grp = sgr_file_present (); #endif /* SHADOWGRP */ #ifdef ENABLE_SUBIDS - is_sub_uid = sub_uid_file_present (); - is_sub_gid = sub_gid_file_present (); + is_sub_uid = want_subuid_file() && sub_uid_file_present(); + is_sub_gid = want_subgid_file() && sub_gid_file_present(); #endif /* ENABLE_SUBIDS */ /* @@ -1046,11 +1060,11 @@ int main (int argc, char **argv) pw_open(O_RDONLY); pwd = pw_locate (user_name); /* we care only about local users */ if (NULL == pwd) { - pw_close(); + pw_close(process_selinux); fprintf (stderr, _("%s: user '%s' does not exist\n"), Prog, user_name); #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_USER, Prog, + audit_logger (AUDIT_DEL_USER, "deleting-user-not-found", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1065,7 +1079,7 @@ int main (int argc, char **argv) } else { user_home = xstrdup(pwd->pw_dir); } - pw_close(); + pw_close(process_selinux); } #ifdef WITH_TCB if (shadowtcb_set_user (user_name) == SHADOWTCB_FAILURE) { @@ -1074,13 +1088,13 @@ int main (int argc, char **argv) #endif /* WITH_TCB */ /* * Check to make certain the user isn't logged in. - * Note: This is a best effort basis. The user may log in between, + * Note: this is a best effort basis. The user may log in between, * a cron job may be started on her behalf, etc. */ - if (streq(prefix, "") && !Rflg && user_busy(user_name, user_id) != 0) { + if (streq(prefix, "") && !flags.chroot && user_busy(user_name, user_id) != 0) { if (!fflg) { #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_USER, Prog, + audit_logger (AUDIT_DEL_USER, "deleting-user-logged-in", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1093,9 +1107,9 @@ int main (int argc, char **argv) * Do the hard stuff - open the files, create the user entries, * create the home directory, then close and update the files. */ - open_files (); - update_user (); - update_groups (); + open_files (process_selinux); + update_user (process_selinux); + update_groups (process_selinux); if (rflg) { if (remove_mailbox ()) { @@ -1177,7 +1191,7 @@ int main (int argc, char **argv) #ifdef WITH_AUDIT else { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "deleting-home-directory", user_name, user_id, SHADOW_AUDIT_SUCCESS); } @@ -1185,7 +1199,7 @@ int main (int argc, char **argv) } #ifdef WITH_AUDIT if (errors) { - audit_logger (AUDIT_DEL_USER, Prog, + audit_logger (AUDIT_DEL_USER, "deleting-home-directory", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -1199,11 +1213,11 @@ int main (int argc, char **argv) _("%s: warning: the user name %s to SELinux user mapping removal failed.\n"), Prog, user_name); #ifdef WITH_AUDIT - audit_logger (AUDIT_ROLE_REMOVE, Prog, + audit_logger (AUDIT_ROLE_REMOVE, "delete-selinux-user-mapping", user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ - fail_exit (E_SE_UPDATE); + fail_exit (E_SE_UPDATE, process_selinux); } } #endif /* WITH_SELINUX */ @@ -1214,7 +1228,7 @@ int main (int argc, char **argv) */ if (streq(prefix, "")) user_cancel (user_name); - close_files (); + close_files (&flags); if (run_parts ("/etc/shadow-maint/userdel-post.d", user_name, "userdel")) { exit(1); diff --git a/src/usermod.c b/src/usermod.c index a0f4d7dd..e8c9da66 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -7,7 +7,7 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include +#include "config.h" #ident "$Id$" @@ -26,16 +26,16 @@ #include "pam_defs.h" #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ +#include #include +#include #include #include #include #include #include "alloc/malloc.h" -#include "alloc/x/xmalloc.h" -#include "atoi/a2i/a2i.h" -#include "atoi/a2i/a2s.h" +#include "atoi/a2i.h" #include "atoi/getnum.h" #include "chkname.h" #include "defines.h" @@ -59,13 +59,17 @@ #ifdef WITH_TCB #include "tcbfuncs.h" #endif +#include "shadow/gshadow/endsgent.h" +#include "shadow/gshadow/sgrp.h" #include "shadowlog.h" #include "sssd.h" #include "string/memset/memzero.h" -#include "string/sprintf/xaprintf.h" +#include "string/sprintf/aprintf.h" #include "string/strcmp/streq.h" #include "string/strcmp/strprefix.h" -#include "string/strdup/xstrdup.h" +#include "string/strdup/strdup.h" +#include "string/strerrno.h" +#include "string/strspn/stprspn.h" #include "time/day_to_str.h" #include "typetraits.h" @@ -96,6 +100,14 @@ #define VALID(s) (!strpbrk(s, ":\n")) +/* + * Structures + */ +struct option_flags { + bool chroot; + bool prefix; +}; + /* * Global variables */ @@ -182,23 +194,23 @@ static bool sub_gid_locked = false; /* local function prototypes */ static int get_groups (char *); NORETURN static void usage (int status); -static void new_pwent (struct passwd *); -static void new_spent (struct spwd *); -NORETURN static void fail_exit (int); -static void update_group_file(void); -static void update_group(const struct group *grp); +static void new_pwent (struct passwd *, bool); +static void new_spent (struct spwd *, bool); +NORETURN static void fail_exit (int, bool); +static void update_group_file(bool); +static void update_group(const struct group *grp, bool process_selinux); #ifdef SHADOWGRP -static void update_gshadow_file(void); -static void update_gshadow(const struct sgrp *sgrp); +static void update_gshadow_file(bool process_selinux); +static void update_gshadow(const struct sgrp *sgrp, bool process_selinux); #endif -static void grp_update (void); +static void grp_update (bool process_selinux); -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 process_flags (int, char **, struct option_flags *); +static void close_files(const struct option_flags *); +static void open_files (bool process_selinux); +static void usr_update(const struct option_flags *flags); +static void move_home (bool process_selinux); #ifdef ENABLE_LASTLOG static void update_lastlog (void); #endif /* ENABLE_LASTLOG */ @@ -354,11 +366,11 @@ prepend_range(const char *str, struct id_range_list_entry **head) if (range.first > range.last) return 0; - entry = MALLOC(1, struct id_range_list_entry); + entry = malloc_T(1, struct id_range_list_entry); if (!entry) { fprintf (stderr, _("%s: failed to allocate memory: %s\n"), - Prog, strerror (errno)); + Prog, strerrno()); return 0; } entry->next = *head; @@ -429,7 +441,7 @@ static char *new_pw_passwd (char *pw_pass) { if (Lflg && ('!' != pw_pass[0])) { #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_CHAUTHTOK, Prog, + audit_logger (AUDIT_USER_CHAUTHTOK, "updating-passwd", user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "lock user '%s' password", user_newname)); @@ -444,14 +456,14 @@ static char *new_pw_passwd (char *pw_pass) } #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_CHAUTHTOK, Prog, + audit_logger (AUDIT_USER_CHAUTHTOK, "updating-password", user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "unlock user '%s' password", user_newname)); memmove(pw_pass, pw_pass + 1, strlen(pw_pass)); } else if (pflg) { #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_CHAUTHTOK, Prog, + audit_logger (AUDIT_USER_CHAUTHTOK, "updating-password", user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, "change user '%s' password", user_newname)); @@ -466,7 +478,7 @@ static char *new_pw_passwd (char *pw_pass) * new_pwent() takes all of the values that have been entered and fills * in a (struct passwd) with them. */ -static void new_pwent (struct passwd *pwent) +static void new_pwent (struct passwd *pwent, bool process_selinux) { if (lflg) { if (pw_locate (user_newname) != NULL) { @@ -477,10 +489,10 @@ static void new_pwent (struct passwd *pwent) fprintf (stderr, _("%s: user '%s' already exists in %s\n"), Prog, user_newname, pw_dbname ()); - fail_exit (E_NAME_IN_USE); + fail_exit (E_NAME_IN_USE, process_selinux); } #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "changing-name", user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, @@ -500,7 +512,7 @@ static void new_pwent (struct passwd *pwent) if (uflg) { #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "changing-uid", user_newname, user_newid, 1); #endif SYSLOG ((LOG_INFO, @@ -510,7 +522,7 @@ static void new_pwent (struct passwd *pwent) } if (gflg) { #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "changing-primary-group", user_newname, user_newid, 1); #endif @@ -521,7 +533,7 @@ static void new_pwent (struct passwd *pwent) } if (cflg) { #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "changing-comment", user_newname, user_newid, 1); #endif pwent->pw_gecos = user_newcomment; @@ -529,7 +541,7 @@ static void new_pwent (struct passwd *pwent) if (dflg) { #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "changing-home-dir", user_newname, user_newid, 1); #endif @@ -537,16 +549,14 @@ static void new_pwent (struct passwd *pwent) "change user '%s' home from '%s' to '%s'", pwent->pw_name, pwent->pw_dir, user_newhome)); - if (strlen(user_newhome) > 1 - && '/' == user_newhome[strlen(user_newhome)-1]) { - user_newhome[strlen(user_newhome)-1]='\0'; - } + if (!streq(user_newhome, "")) + stpcpy(stprspn(user_newhome + 1, "/"), ""); pwent->pw_dir = user_newhome; } if (sflg) { #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "changing-shell", user_newname, user_newid, 1); #endif @@ -563,21 +573,21 @@ static void new_pwent (struct passwd *pwent) * new_spent() takes all of the values that have been entered and fills * in a (struct spwd) with them. */ -static void new_spent (struct spwd *spent) +static void new_spent (struct spwd *spent, bool process_selinux) { if (lflg) { if (spw_locate (user_newname) != NULL) { fprintf (stderr, _("%s: user '%s' already exists in %s\n"), Prog, user_newname, spw_dbname ()); - fail_exit (E_NAME_IN_USE); + fail_exit (E_NAME_IN_USE, process_selinux); } spent->sp_namp = xstrdup (user_newname); } if (fflg) { #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "changing-inactive-days", user_newname, user_newid, 1); #endif @@ -590,10 +600,10 @@ static void new_spent (struct spwd *spent) /* log dates rather than numbers of days. */ char new_exp[16], old_exp[16]; - DAY_TO_STR(new_exp, user_newexpire); - DAY_TO_STR(old_exp, user_expire); + day_to_str_a(new_exp, user_newexpire); + day_to_str_a(old_exp, user_expire); #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "changing-expiration-date", user_newname, user_newid, 1); #endif @@ -629,10 +639,10 @@ static void new_spent (struct spwd *spent) */ NORETURN static void -fail_exit (int code) +fail_exit (int code, bool process_selinux) { if (gr_locked) { - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); /* continue */ @@ -640,7 +650,7 @@ fail_exit (int code) } #ifdef SHADOWGRP if (sgr_locked) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); /* continue */ @@ -648,14 +658,14 @@ fail_exit (int code) } #endif if (spw_locked) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); /* continue */ } } if (pw_locked) { - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); /* continue */ @@ -663,14 +673,14 @@ fail_exit (int code) } #ifdef ENABLE_SUBIDS if (sub_uid_locked) { - if (sub_uid_unlock () == 0) { + if (sub_uid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_uid_dbname ())); /* continue */ } } if (sub_gid_locked) { - if (sub_gid_unlock () == 0) { + if (sub_gid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname ())); /* continue */ @@ -679,7 +689,7 @@ fail_exit (int code) #endif /* ENABLE_SUBIDS */ #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "modify-account", user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif @@ -688,7 +698,7 @@ fail_exit (int code) static void -update_group_file(void) +update_group_file(bool process_selinux) { const struct group *grp; @@ -696,13 +706,13 @@ update_group_file(void) * Scan through the entire group file looking for the groups that * the user is a member of. */ - while ((grp = gr_next()) != NULL) - update_group(grp); + while (NULL != (grp = gr_next())) + update_group(grp, process_selinux); } static void -update_group(const struct group *grp) +update_group(const struct group *grp, bool process_selinux) { bool changed; bool is_member; @@ -735,7 +745,7 @@ update_group(const struct group *grp) fprintf (stderr, _("%s: Out of memory. Cannot update %s.\n"), Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } if (was_member) { @@ -804,7 +814,7 @@ update_group(const struct group *grp) _("%s: failed to prepare the new %s entry '%s'\n"), Prog, gr_dbname (), ngrp->gr_name); SYSLOG ((LOG_WARN, "failed to prepare the new %s entry '%s'", gr_dbname (), ngrp->gr_name)); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } free_ngrp: @@ -814,7 +824,7 @@ free_ngrp: #ifdef SHADOWGRP static void -update_gshadow_file(void) +update_gshadow_file(bool process_selinux) { const struct sgrp *sgrp; @@ -822,15 +832,15 @@ update_gshadow_file(void) * Scan through the entire shadow group file looking for the groups * that the user is a member of. */ - while ((sgrp = sgr_next()) != NULL) - update_gshadow(sgrp); + while (NULL != (sgrp = sgr_next())) + update_gshadow(sgrp, process_selinux); } #endif /* SHADOWGRP */ #ifdef SHADOWGRP static void -update_gshadow(const struct sgrp *sgrp) +update_gshadow(const struct sgrp *sgrp, bool process_selinux) { bool changed; bool is_member; @@ -873,7 +883,7 @@ update_gshadow(const struct sgrp *sgrp) fprintf (stderr, _("%s: Out of memory. Cannot update %s.\n"), Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } if (was_admin && lflg) { @@ -960,7 +970,7 @@ update_gshadow(const struct sgrp *sgrp) Prog, sgr_dbname (), nsgrp->sg_namp); SYSLOG ((LOG_WARN, "failed to prepare the new %s entry '%s'", sgr_dbname (), nsgrp->sg_namp)); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } free_nsgrp: @@ -975,12 +985,12 @@ free_nsgrp: * grp_update() takes the secondary group set given in user_groups and * adds the user to each group given by that set. */ -static void grp_update (void) +static void grp_update (bool process_selinux) { - update_group_file(); + update_group_file(process_selinux); #ifdef SHADOWGRP if (is_shadow_grp) { - update_gshadow_file(); + update_gshadow_file(process_selinux); } #endif } @@ -993,7 +1003,7 @@ static void grp_update (void) * are checked for sanity. */ static void -process_flags(int argc, char **argv) +process_flags(int argc, char **argv, struct option_flags *flags) { struct stat st; bool anyflag = false; @@ -1127,7 +1137,7 @@ process_flags(int argc, char **argv) /*@notreached@*/break; case 'l': if (!is_valid_user_name(optarg)) { - if (errno == EINVAL) { + if (errno == EILSEQ) { fprintf(stderr, _("%s: invalid user name '%s': use --badname to ignore\n"), Prog, optarg); @@ -1158,8 +1168,10 @@ process_flags(int argc, char **argv) rflg = true; break; case 'R': /* no-op, handled in process_root_flag () */ + flags->chroot = true; break; case 'P': /* no-op, handled in process_prefix_flag () */ + flags->prefix = true; break; case 's': if ( ( !VALID (optarg) ) @@ -1225,7 +1237,7 @@ process_flags(int argc, char **argv) exit(E_BAD_ARG); } wflg = true; - break; + break; case 'W': if (prepend_range (optarg, &del_sub_gids) == 0) { fprintf (stderr, @@ -1376,49 +1388,6 @@ process_flags(int argc, char **argv) } #endif /* WITH_SELINUX */ - if (user_newid == user_id) { - uflg = false; - oflg = false; - } - if (user_newgid == user_gid) { - gflg = false; - } - if ( (NULL != user_newshell) - && streq(user_newshell, user_shell)) { - sflg = false; - } - if (streq(user_newname, user_name)) { - lflg = false; - } - if (user_newinactive == user_inactive) { - fflg = false; - } - if (user_newexpire == user_expire) { - eflg = false; - } - if ( (NULL != user_newhome) - && streq(user_newhome, user_home)) { - dflg = false; - mflg = false; - } - if ( (NULL != user_newcomment) - && streq(user_newcomment, user_comment)) { - cflg = false; - } - - if (!(Uflg || uflg || sflg || pflg || mflg || Lflg || - lflg || Gflg || gflg || fflg || eflg || dflg || cflg -#ifdef ENABLE_SUBIDS - || vflg || Vflg || wflg || Wflg -#endif /* ENABLE_SUBIDS */ -#ifdef WITH_SELINUX - || Zflg -#endif /* WITH_SELINUX */ - )) { - fprintf (stdout, _("%s: no changes\n"), Prog); - exit (E_SUCCESS); - } - if (!is_shadow_pwd && (eflg || fflg)) { fprintf (stderr, _("%s: shadow passwords required for -e and -f\n"), @@ -1467,51 +1436,55 @@ process_flags(int argc, char **argv) * close_files() closes all of the files that were opened for this new * user. This causes any modified entries to be written out. */ -static void close_files (void) +static void close_files(const struct option_flags *flags) { - if (pw_close () == 0) { + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; + + if (pw_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, pw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", pw_dbname ())); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } - if (is_shadow_pwd && (spw_close () == 0)) { + if (is_shadow_pwd && (spw_close (process_selinux) == 0)) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, spw_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } if (Gflg || lflg) { - if (gr_close () == 0) { + if (gr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #ifdef SHADOWGRP if (is_shadow_grp) { - if (sgr_close () == 0) { + if (sgr_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sgr_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } } #endif #ifdef SHADOWGRP if (is_shadow_grp) { - if (sgr_unlock () == 0) { + if (sgr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); @@ -1522,7 +1495,7 @@ static void close_files (void) } } #endif - if (gr_unlock () == 0) { + if (gr_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); @@ -1534,7 +1507,7 @@ static void close_files (void) } if (is_shadow_pwd) { - if (spw_unlock () == 0) { + if (spw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, spw_dbname ()); @@ -1544,7 +1517,7 @@ static void close_files (void) /* continue */ } } - if (pw_unlock () == 0) { + if (pw_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, pw_dbname ()); @@ -1561,12 +1534,12 @@ static void close_files (void) #ifdef ENABLE_SUBIDS if (vflg || Vflg) { - if (sub_uid_close () == 0) { + if (sub_uid_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ())); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } - if (sub_uid_unlock () == 0) { + if (sub_uid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_uid_dbname ())); /* continue */ @@ -1574,12 +1547,12 @@ static void close_files (void) sub_uid_locked = false; } if (wflg || Wflg) { - if (sub_gid_close () == 0) { + if (sub_gid_close (process_selinux) == 0) { fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_gid_dbname ())); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } - if (sub_gid_unlock () == 0) { + if (sub_gid_unlock (process_selinux) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname ())); /* continue */ @@ -1604,33 +1577,33 @@ static void close_files (void) * * open_files() opens the two password files. */ -static void open_files (void) +static void open_files (bool process_selinux) { if (pw_lock () == 0) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, pw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } pw_locked = true; if (pw_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, pw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } if (is_shadow_pwd && (spw_lock () == 0)) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, spw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } spw_locked = true; if (is_shadow_pwd && (spw_open (O_CREAT | O_RDWR) == 0)) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, spw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } if (Gflg || lflg) { @@ -1642,28 +1615,28 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } gr_locked = true; if (gr_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #ifdef SHADOWGRP if (is_shadow_grp && (sgr_lock () == 0)) { fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } sgr_locked = true; if (is_shadow_grp && (sgr_open (O_CREAT | O_RDWR) == 0)) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); + fail_exit (E_GRP_UPDATE, process_selinux); } #endif } @@ -1673,14 +1646,14 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sub_uid_dbname ()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } sub_uid_locked = true; if (sub_uid_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sub_uid_dbname ()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } } if (wflg || Wflg) { @@ -1688,14 +1661,14 @@ static void open_files (void) fprintf (stderr, _("%s: cannot lock %s; try again later.\n"), Prog, sub_gid_dbname ()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } sub_gid_locked = true; if (sub_gid_open (O_CREAT | O_RDWR) == 0) { fprintf (stderr, _("%s: cannot open %s\n"), Prog, sub_gid_dbname ()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } } #endif /* ENABLE_SUBIDS */ @@ -1707,13 +1680,15 @@ static void open_files (void) * usr_update() creates the password file entries for this user and * will update the group entries if required. */ -static void usr_update (void) +static void usr_update(const struct option_flags *flags) { struct passwd pwent; const struct passwd *pwd; - struct spwd spent; const struct spwd *spwd = NULL; + bool process_selinux; + + process_selinux = !flags->chroot && !flags->prefix; /* * Locate the entry in /etc/passwd, which MUST exist. @@ -1723,10 +1698,10 @@ static void usr_update (void) fprintf (stderr, _("%s: user '%s' does not exist in %s\n"), Prog, user_name, pw_dbname ()); - fail_exit (E_NOTFOUND); + fail_exit (E_NOTFOUND, process_selinux); } pwent = *pwd; - new_pwent (&pwent); + new_pwent (&pwent, process_selinux); /* If the shadow file does not exist, it won't be created */ @@ -1735,7 +1710,7 @@ static void usr_update (void) if (NULL != spwd) { /* Update the shadow entry if it exists */ spent = *spwd; - new_spent (&spent); + new_spent (&spent, process_selinux); } else if ( ( pflg && streq(pwent.pw_passwd, SHADOW_PASSWD_STRING)) || eflg || fflg) { @@ -1745,7 +1720,7 @@ static void usr_update (void) * a shadowed password * + aging information is requested */ - bzero(&spent, sizeof spent); + bzero(&spent, sizeof(spent)); spent.sp_namp = user_name; /* The user explicitly asked for a shadow feature. @@ -1766,7 +1741,7 @@ static void usr_update (void) spent.sp_inact = -1; spent.sp_expire = -1; spent.sp_flag = SHADOW_SP_FLAG_UNSET; - new_spent (&spent); + new_spent (&spent, process_selinux); spwd = &spent; /* entry needs to be committed */ } } @@ -1777,13 +1752,13 @@ static void usr_update (void) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, pw_dbname (), pwent.pw_name); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } if (lflg && (pw_remove (user_name) == 0)) { fprintf (stderr, _("%s: cannot remove entry '%s' from %s\n"), Prog, user_name, pw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } } if ((NULL != spwd) && (lflg || eflg || fflg || pflg || Lflg || Uflg)) { @@ -1791,13 +1766,13 @@ static void usr_update (void) fprintf (stderr, _("%s: failed to prepare the new %s entry '%s'\n"), Prog, spw_dbname (), spent.sp_namp); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } if (lflg && (spw_remove (user_name) == 0)) { fprintf (stderr, _("%s: cannot remove entry '%s' from %s\n"), Prog, user_name, spw_dbname ()); - fail_exit (E_PW_UPDATE); + fail_exit (E_PW_UPDATE, process_selinux); } } } @@ -1808,7 +1783,7 @@ static void usr_update (void) * move_home() moves the user's home directory to a new location. The * files will be copied if the directory cannot simply be renamed. */ -static void move_home (void) +static void move_home (bool process_selinux) { struct stat sb; @@ -1820,7 +1795,7 @@ static void move_home (void) fprintf (stderr, _("%s: directory %s exists\n"), Prog, user_newhome); - fail_exit (E_HOMEDIR); + fail_exit (E_HOMEDIR, process_selinux); } if (stat (prefix_user_home, &sb) == 0) { @@ -1834,12 +1809,12 @@ static void move_home (void) "not a directory. It is not removed and no " "home directories are created.\n"), Prog, user_home); - fail_exit (E_HOMEDIR); + fail_exit (E_HOMEDIR, process_selinux); } #ifdef WITH_AUDIT if (uflg || gflg) { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "updating-home-dir-owner", user_newname, user_newid, 1); } @@ -1855,10 +1830,10 @@ static void move_home (void) fprintf (stderr, _("%s: Failed to change ownership of the home directory"), Prog); - fail_exit (E_HOMEDIR); + fail_exit (E_HOMEDIR, process_selinux); } #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "moving-home-dir", user_newname, user_newid, 1); #endif @@ -1870,7 +1845,7 @@ static void move_home (void) fprintf (stderr, _("%s: error: cannot move subvolume from %s to %s - different device\n"), Prog, prefix_user_home, prefix_user_newhome); - fail_exit (E_HOMEDIR); + fail_exit (E_HOMEDIR, process_selinux); } #endif @@ -1887,7 +1862,6 @@ static void move_home (void) } #ifdef WITH_AUDIT audit_logger (AUDIT_USER_MGMT, - Prog, "moving-home-dir", user_newname, user_newid, @@ -1901,7 +1875,7 @@ static void move_home (void) fprintf (stderr, _("%s: cannot rename directory %s to %s\n"), Prog, prefix_user_home, prefix_user_newhome); - fail_exit (E_HOMEDIR); + fail_exit (E_HOMEDIR, process_selinux); } } else { fprintf (stderr, @@ -1923,11 +1897,11 @@ static void update_lastlog (void) { struct lastlog ll; int fd; - off_t off_uid = (off_t) user_id * sizeof ll; - off_t off_newuid = (off_t) user_newid * sizeof ll; + off_t off_uid = (off_t) user_id * sizeof(ll); + off_t off_newuid = (off_t) user_newid * sizeof(ll); uid_t max_uid; - if (access (LASTLOG_FILE, F_OK) != 0) { + if (access(_PATH_LASTLOG, F_OK) != 0) { return; } @@ -1937,24 +1911,24 @@ static void update_lastlog (void) return; } - fd = open (LASTLOG_FILE, O_RDWR); + fd = open(_PATH_LASTLOG, O_RDWR); if (-1 == fd) { fprintf (stderr, _("%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n"), - Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); + Prog, (unsigned long) user_id, (unsigned long) user_newid, strerrno()); return; } if ( (lseek (fd, off_uid, SEEK_SET) == off_uid) - && (read (fd, &ll, sizeof ll) == (ssize_t) sizeof ll)) { + && (read(fd, &ll, sizeof(ll)) == (ssize_t) sizeof(ll))) { /* Copy the old entry to its new location */ if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) - || (write_full(fd, &ll, sizeof ll) == -1) + || (write_full(fd, &ll, sizeof(ll)) == -1) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n"), - Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); + Prog, (unsigned long) user_id, (unsigned long) user_newid, strerrno()); } } else { /* Assume lseek or read failed because there is @@ -1962,15 +1936,15 @@ static void update_lastlog (void) /* Check if the new UID already has an entry */ if ( (lseek (fd, off_newuid, SEEK_SET) == off_newuid) - && (read (fd, &ll, sizeof ll) == (ssize_t) sizeof ll)) { + && (read(fd, &ll, sizeof(ll)) == (ssize_t) sizeof(ll))) { /* Reset the new uid's lastlog entry */ - memzero (&ll, sizeof (ll)); + memzero(&ll, sizeof(ll)); if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) - || (write_full(fd, &ll, sizeof ll) == -1) + || (write_full(fd, &ll, sizeof(ll)) == -1) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n"), - Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); + Prog, (unsigned long) user_id, (unsigned long) user_newid, strerrno()); } } } @@ -1978,7 +1952,7 @@ static void update_lastlog (void) if (close (fd) != 0 && errno != EINTR) { fprintf (stderr, _("%s: failed to copy the lastlog entry of user %ju to user %ju: %s\n"), - Prog, (uintmax_t) user_id, (uintmax_t) user_newid, strerror (errno)); + Prog, (uintmax_t) user_id, (uintmax_t) user_newid, strerrno()); } } #endif /* ENABLE_LASTLOG */ @@ -1994,8 +1968,8 @@ static void update_faillog (void) { struct faillog fl; int fd; - off_t off_uid = (off_t) user_id * sizeof fl; - off_t off_newuid = (off_t) user_newid * sizeof fl; + off_t off_uid = (off_t) user_id * sizeof(fl); + off_t off_newuid = (off_t) user_newid * sizeof(fl); if (access (FAILLOG_FILE, F_OK) != 0) { return; @@ -2006,19 +1980,19 @@ static void update_faillog (void) if (-1 == fd) { fprintf (stderr, _("%s: failed to copy the faillog entry of user %lu to user %lu: %s\n"), - Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); + Prog, (unsigned long) user_id, (unsigned long) user_newid, strerrno()); return; } if ( (lseek (fd, off_uid, SEEK_SET) == off_uid) - && (read (fd, &fl, sizeof fl) == (ssize_t) sizeof fl)) { + && (read(fd, &fl, sizeof(fl)) == (ssize_t) sizeof(fl))) { /* Copy the old entry to its new location */ if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) - || (write_full(fd, &fl, sizeof fl) == -1) + || (write_full(fd, &fl, sizeof(fl)) == -1) || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to copy the faillog entry of user %lu to user %lu: %s\n"), - Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); + Prog, (unsigned long) user_id, (unsigned long) user_newid, strerrno()); } } else { /* Assume lseek or read failed because there is @@ -2026,15 +2000,15 @@ static void update_faillog (void) /* Check if the new UID already has an entry */ if ( (lseek (fd, off_newuid, SEEK_SET) == off_newuid) - && (read (fd, &fl, sizeof fl) == (ssize_t) sizeof fl)) { + && (read(fd, &fl, sizeof(fl)) == (ssize_t) sizeof(fl))) { /* Reset the new uid's faillog entry */ - memzero (&fl, sizeof (fl)); + memzero(&fl, sizeof(fl)); if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) - || (write_full(fd, &fl, sizeof fl) == -1)) + || (write_full(fd, &fl, sizeof(fl)) == -1)) { fprintf (stderr, _("%s: failed to copy the faillog entry of user %lu to user %lu: %s\n"), - Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); + Prog, (unsigned long) user_id, (unsigned long) user_newid, strerrno()); } } } @@ -2042,7 +2016,7 @@ static void update_faillog (void) if (close (fd) != 0 && errno != EINTR) { fprintf (stderr, _("%s: failed to copy the faillog entry of user %ju to user %ju: %s\n"), - Prog, (uintmax_t) user_id, (uintmax_t) user_newid, strerror (errno)); + Prog, (uintmax_t) user_id, (uintmax_t) user_newid, strerrno()); } } @@ -2112,7 +2086,7 @@ static void move_mailbox (void) } #ifdef WITH_AUDIT else { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "updating-mail-file-owner", user_newname, user_newid, 1); } @@ -2136,7 +2110,7 @@ static void move_mailbox (void) } #ifdef WITH_AUDIT else { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "updating-mail-file-name", user_newname, user_newid, 1); } @@ -2160,6 +2134,8 @@ int main (int argc, char **argv) int retval; #endif /* USE_PAM */ #endif /* ACCT_TOOLS_SETUID */ + struct option_flags flags = {.chroot = false, .prefix = false}; + bool process_selinux; log_set_progname(Prog); log_set_logfd(stderr); @@ -2177,7 +2153,7 @@ int main (int argc, char **argv) #endif sys_ngroups = sysconf (_SC_NGROUPS_MAX); - user_groups = XMALLOC(sys_ngroups + 1, char *); + user_groups = xmalloc_T(sys_ngroups + 1, char *); user_groups[0] = NULL; is_shadow_pwd = spw_file_present (); @@ -2185,11 +2161,12 @@ int main (int argc, char **argv) is_shadow_grp = sgr_file_present (); #endif #ifdef ENABLE_SUBIDS - is_sub_uid = sub_uid_file_present (); - is_sub_gid = sub_gid_file_present (); + is_sub_uid = want_subuid_file() && sub_uid_file_present(); + is_sub_gid = want_subgid_file() && sub_gid_file_present(); #endif /* ENABLE_SUBIDS */ - process_flags (argc, argv); + process_flags (argc, argv, &flags); + process_selinux = !flags.chroot && !flags.prefix; /* * The home directory, the username and the user's UID should not @@ -2251,13 +2228,13 @@ int main (int argc, char **argv) * Do the hard stuff - open the files, change the user entries, * change the home directory, then close and update the files. */ - open_files (); + open_files (process_selinux); if ( cflg || dflg || eflg || fflg || gflg || Lflg || lflg || pflg || sflg || uflg || Uflg) { - usr_update (); + usr_update (&flags); } if (Gflg || lflg) { - grp_update (); + grp_update (process_selinux); } #ifdef ENABLE_SUBIDS if (Vflg) { @@ -2273,7 +2250,7 @@ int main (int argc, char **argv) (uintmax_t) ptr->range.first, (uintmax_t) ptr->range.last, sub_uid_dbname()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } } } @@ -2290,7 +2267,7 @@ int main (int argc, char **argv) (uintmax_t) ptr->range.first, (uintmax_t) ptr->range.last, sub_uid_dbname()); - fail_exit (E_SUB_UID_UPDATE); + fail_exit (E_SUB_UID_UPDATE, process_selinux); } } } @@ -2307,7 +2284,7 @@ int main (int argc, char **argv) (uintmax_t) ptr->range.first, (uintmax_t) ptr->range.last, sub_gid_dbname()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } } } @@ -2324,12 +2301,12 @@ int main (int argc, char **argv) (uintmax_t) ptr->range.first, (uintmax_t) ptr->range.last, sub_gid_dbname()); - fail_exit (E_SUB_GID_UPDATE); + fail_exit (E_SUB_GID_UPDATE, process_selinux); } } } #endif /* ENABLE_SUBIDS */ - close_files (); + close_files (&flags); #ifdef WITH_TCB if ( (lflg || uflg) @@ -2350,12 +2327,12 @@ int main (int argc, char **argv) _("%s: warning: the user name %s to %s SELinux user mapping failed.\n"), Prog, user_name, user_selinux); #ifdef WITH_AUDIT - audit_logger (AUDIT_ROLE_ASSIGN, Prog, + audit_logger (AUDIT_ROLE_ASSIGN, "changing-selinux-user-mapping ", user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ - fail_exit (E_SE_UPDATE); + fail_exit (E_SE_UPDATE, process_selinux); } } else { if (del_seuser (user_name) != 0) { @@ -2363,19 +2340,19 @@ int main (int argc, char **argv) _("%s: warning: the user name %s to SELinux user mapping removal failed.\n"), Prog, user_name); #ifdef WITH_AUDIT - audit_logger (AUDIT_ROLE_REMOVE, Prog, + audit_logger (AUDIT_ROLE_REMOVE, "delete-selinux-user-mapping", user_name, user_id, SHADOW_AUDIT_FAILURE); #endif /* WITH_AUDIT */ - fail_exit (E_SE_UPDATE); + fail_exit (E_SE_UPDATE, process_selinux); } } } #endif /* WITH_SELINUX */ if (mflg) { - move_home (); + move_home (process_selinux); } #ifndef NO_MOVE_MAILBOX @@ -2407,7 +2384,7 @@ int main (int argc, char **argv) */ #ifdef WITH_AUDIT if (uflg || gflg) { - audit_logger (AUDIT_USER_MGMT, Prog, + audit_logger (AUDIT_USER_MGMT, "updating-home-dir-owner", user_newname, user_newid, 1); } @@ -2420,7 +2397,7 @@ int main (int argc, char **argv) fprintf (stderr, _("%s: Failed to change ownership of the home directory"), Prog); - fail_exit (E_HOMEDIR); + fail_exit (E_HOMEDIR, process_selinux); } } } diff --git a/src/vipw.c b/src/vipw.c index 3c840e9f..a3d2d7f4 100644 --- a/src/vipw.c +++ b/src/vipw.c @@ -10,7 +10,7 @@ * SPDX-License-Identifier: GPL-2.0-or-later */ -#include +#include "config.h" #ident "$Id$" @@ -45,8 +45,8 @@ #include "sssd.h" #include "string/sprintf/aprintf.h" #include "string/sprintf/snprintf.h" -#include "string/sprintf/xaprintf.h" #include "string/strcmp/streq.h" +#include "string/strerrno.h" #define MSG_WARN_EDIT_OTHER_FILE _( \ @@ -62,7 +62,7 @@ static const char *Prog; static const char *filename, *fileeditname; static bool filelocked = false; static bool createedit = false; -static int (*unlock) (void); +static int (*unlock) (bool); static bool quiet = false; #ifdef WITH_TCB static const char *user = NULL; @@ -74,7 +74,7 @@ static bool tcb_mode = false; static void usage (int status); static int create_backup_file (FILE *, const char *, struct stat *); static void vipwexit (const char *msg, int syserr, int ret); -static void vipwedit (const char *, int (*)(void), int (*)(void)); +static void vipwedit (const char *, int (*)(void), int (*)(bool)); /* * usage - display usage message and exit @@ -82,7 +82,7 @@ static void vipwedit (const char *, int (*)(void), int (*)(void)); static void usage (int status) { FILE *usageout = (E_SUCCESS != status) ? stderr : stdout; - (void) fprintf (stderr, + (void) fprintf (usageout, _("Usage: %s [options]\n" "\n" "Options:\n"), @@ -164,7 +164,7 @@ static void vipwexit (const char *msg, int syserr, int ret) } } if (filelocked) { - if ((*unlock) () == 0) { + if ((*unlock) (true) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, fileeditname); SYSLOG ((LOG_ERR, "failed to unlock %s", fileeditname)); /* continue */ @@ -180,10 +180,9 @@ static void vipwexit (const char *msg, int syserr, int ret) || (0 != syserr)) { (void) fputs ("\n", stderr); } - if (!quiet) { - fprintf (stdout, _("%s: %s is unchanged\n"), Prog, - filename); - } + if (!quiet) + printf(_("%s: %s is unchanged\n"), Prog, filename); + exit (ret); } @@ -195,7 +194,7 @@ static void vipwexit (const char *msg, int syserr, int ret) * */ static void -vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) +vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (bool)) { int status; char *to_rename; @@ -207,7 +206,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) /* FIXME: the following should have variable sizes */ char filebackup[1024], fileedit[1024]; - SNPRINTF(filebackup, "%s-", file); + stprintf_a(filebackup, "%s-", file); #ifdef WITH_TCB if (tcb_mode) { if ( (mkdir (TCB_DIR "/" SHADOWTCB_SCRATCHDIR, 0700) != 0) @@ -217,12 +216,12 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) if (shadowtcb_drop_priv () == SHADOWTCB_FAILURE) { vipwexit (_("failed to drop privileges"), errno, 1); } - SNPRINTF(fileedit, + stprintf_a(fileedit, TCB_DIR "/" SHADOWTCB_SCRATCHDIR "/.vipw.shadow.%s", user); } else { #endif /* WITH_TCB */ - SNPRINTF(fileedit, "%s.edit", file); + stprintf_a(fileedit, "%s.edit", file); #ifdef WITH_TCB } #endif /* WITH_TCB */ @@ -312,8 +311,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) status = system (buf); if (-1 == status) { - fprintf (stderr, _("%s: %s: %s\n"), Prog, editor, - strerror (errno)); + fprintf(stderr, _("%s: %s: %s\n"), Prog, editor, strerrno()); exit (1); } else if ( WIFEXITED (status) && (WEXITSTATUS (status) != 0)) { @@ -352,11 +350,11 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) editor_pgrp = tcgetpgrp(STDIN_FILENO); if (editor_pgrp == -1) { fprintf (stderr, "%s: %s: %s", Prog, - "tcgetpgrp", strerror (errno)); + "tcgetpgrp", strerrno()); } if (tcsetpgrp(STDIN_FILENO, orig_pgrp) == -1) { fprintf (stderr, "%s: %s: %s", Prog, - "tcsetpgrp", strerror (errno)); + "tcsetpgrp", strerrno()); } } kill (getpid (), SIGSTOP); @@ -364,7 +362,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) if (editor_pgrp != -1) { if (tcsetpgrp(STDIN_FILENO, editor_pgrp) == -1) { fprintf (stderr, "%s: %s: %s", Prog, - "tcsetpgrp", strerror (errno)); + "tcsetpgrp", strerrno()); } } killpg (pid, SIGCONT); @@ -376,8 +374,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) if (orig_pgrp != -1) { /* Restore terminal pgrp after editing. */ if (tcsetpgrp(STDIN_FILENO, orig_pgrp) == -1) { - fprintf(stderr, "%s: %s: %s", Prog, - "tcsetpgrp", strerror(errno)); + fprintf(stderr, "%s: %s: %s", Prog, "tcsetpgrp", strerrno()); } sigprocmask(SIG_SETMASK, &omask, NULL); } @@ -449,7 +446,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) if (rename (to_rename, file) == -1) { fprintf (stderr, _("%s: can't restore %s: %s (your changes are in %s)\n"), - Prog, file, strerror (errno), to_rename); + Prog, file, strerrno(), to_rename); #ifdef WITH_TCB if (tcb_mode) { free(to_rename); @@ -467,7 +464,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) } #endif /* WITH_TCB */ - if ((*file_unlock) () == 0) { + if ((*file_unlock) (true) == 0) { fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, fileeditname); SYSLOG ((LOG_ERR, "failed to unlock %s", fileeditname)); /* continue */ diff --git a/tests/chage/01/run b/tests/chage/01/run index 4434fcff..9b0ab0ed 100755 --- a/tests/chage/01/run +++ b/tests/chage/01/run @@ -106,17 +106,17 @@ ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:1:18294:' ] || exit 1 echo "testing option -I" -# NOTE: I could pass a date to -I +# Note: I could pass a date to -I chage -I 42 myuser7 ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:42:18294:' ] || exit 1 echo "testing option -I -1" -# NOTE: this behavior is not documented +# Note: this behavior is not documented chage -I -1 myuser7 ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7::18294:' ] || exit 1 echo "testing option -I 0" -# NOTE: We should check that this is the expected behavior +# Note: we should check that this is the expected behavior chage -I 0 myuser7 ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:0:18294:' ] || exit 1 @@ -130,7 +130,7 @@ chage -m 24 myuser7 ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:24:99999:7:12:18294:' ] || exit 1 echo "testing option -m -1" -# NOTE: this behavior is not documented +# Note: this behavior is not documented chage -m -1 myuser7 ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280::99999:7:12:18294:' ] || exit 1 @@ -140,7 +140,7 @@ ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:0:99999:7:12:18294:' ] || exit 1 echo "testing option --mindays" chage --min 1 myuser7 -# NOTE: that shouldn't have work +# Note: that shouldn't have worked ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:99999:7:12:18294:' ] || exit 1 @@ -149,7 +149,7 @@ chage -M 25 myuser7 ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:25:7:12:18294:' ] || exit 1 echo "testing option -M -1" -# NOTE: this behavior is not documented +# Note: this behavior is not documented chage -M -1 myuser7 ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1::7:12:18294:' ] || exit 1 @@ -167,7 +167,7 @@ chage -W 26 myuser7 ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:2:26:12:18294:' ] || exit 1 echo "testing option -W -1" -# NOTE: this behavior is not documented +# Note: this behavior is not documented chage -W -1 myuser7 ent=$(getent shadow myuser7) [ "$ent" = 'myuser7:$1$yQnIAZWV$gDAMB2IkqaONgrQiRdo4y.:15280:1:2::12:18294:' ] || exit 1 diff --git a/tests/libsubid/04_nss/libsubid_zzz.c b/tests/libsubid/04_nss/libsubid_zzz.c index d8141ba3..2e929687 100644 --- a/tests/libsubid/04_nss/libsubid_zzz.c +++ b/tests/libsubid/04_nss/libsubid_zzz.c @@ -77,7 +77,7 @@ static uid_t getnamuid(const char *name) { } static int alloc_uid(uid_t **uids, uid_t id) { - *uids = MALLOC(1, uid_t); + *uids = malloc_T(1, uid_t); if (!*uids) return -1; *uids[0] = id; @@ -122,7 +122,7 @@ enum subid_status shadow_subid_list_owner_ranges(const char *owner, enum subid_t return SUBID_STATUS_SUCCESS; if (id_type == ID_TYPE_UID && strcmp(owner, "group1") == 0) return SUBID_STATUS_SUCCESS; - ranges = MALLOC(1, struct subid_range); + ranges = malloc_T(1, struct subid_range); if (!ranges) return SUBID_STATUS_ERROR; if (strcmp(owner, "user1") == 0 || strcmp(owner, "group1") == 0) { diff --git a/tests/newusers/62_create_user_no_aging/config.txt b/tests/newusers/62_create_user_no_aging/config.txt new file mode 100644 index 00000000..e69de29b diff --git a/tests/newusers/62_create_user_no_aging/config/etc/group b/tests/newusers/62_create_user_no_aging/config/etc/group new file mode 100644 index 00000000..10123908 --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/newusers/62_create_user_no_aging/config/etc/gshadow b/tests/newusers/62_create_user_no_aging/config/etc/gshadow new file mode 100644 index 00000000..ae424865 --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/newusers/62_create_user_no_aging/config/etc/login.defs b/tests/newusers/62_create_user_no_aging/config/etc/login.defs new file mode 100644 index 00000000..5b3469bf --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/config/etc/login.defs @@ -0,0 +1,473 @@ +# +# /etc/login.defs - Configuration control definitions for the shadow package. +# +# $Id$ +# + +# +# Delay in seconds before being allowed another attempt after a login failure +# Note: When PAM is used, some modules may enforce a minimum delay (e.g. +# pam_unix(8) enforces a 2s delay) +# +FAIL_DELAY 3 + +# +# Enable logging and display of /var/log/faillog login(1) failure info. +# +FAILLOG_ENAB yes + +# +# Enable display of unknown usernames when login(1) failures are recorded. +# +LOG_UNKFAIL_ENAB no + +# +# Enable logging of successful logins +# +LOG_OK_LOGINS no + +# +# Enable logging and display of /var/log/lastlog login(1) time info. +# +LASTLOG_ENAB yes + +# +# Limit the highest user ID number for which the lastlog entries should +# be updated. +# +# No LASTLOG_UID_MAX means that there is no user ID limit for writing +# lastlog entries. +# +#LASTLOG_UID_MAX + +# +# Enable checking and display of mailbox status upon login. +# +# Disable if the shell startup files already check for mail +# ("mailx -e" or equivalent). +# +MAIL_CHECK_ENAB yes + +# +# Enable additional checks upon password changes. +# +OBSCURE_CHECKS_ENAB yes + +# +# Enable checking of time restrictions specified in /etc/porttime. +# +PORTTIME_CHECKS_ENAB yes + +# +# Enable setting of ulimit, umask, and niceness from passwd(5) gecos field. +# +QUOTAS_ENAB yes + +# +# Enable "syslog" logging of su(1) activity - in addition to sulog file logging. +# SYSLOG_SG_ENAB does the same for newgrp(1) and sg(1). +# +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes + +# +# If defined, either full pathname of a file containing device names or +# a ":" delimited list of device names. Root logins will be allowed only +# from these devices. +# +CONSOLE /etc/securetty +#CONSOLE console:tty01:tty02:tty03:tty04 + +# +# If defined, all su(1) activity is logged to this file. +# +#SULOG_FILE /var/log/sulog + +# +# If defined, ":" delimited list of "message of the day" files to +# be displayed upon login. +# +MOTD_FILE /etc/motd +#MOTD_FILE /etc/motd:/usr/lib/news/news-motd + +# +# If defined, this file will be output before each login(1) prompt. +# +#ISSUE_FILE /etc/issue + +# +# If defined, file which maps tty line to TERM environment parameter. +# Each line of the file is in a format similar to "vt100 tty01". +# +#TTYTYPE_FILE /etc/ttytype + +# +# If defined, login(1) failures will be logged here in a utmp format. +# last(1), when invoked as lastb(1), will read /var/log/btmp, so... +# +FTMP_FILE /var/log/btmp + +# +# If defined, name of file whose presence will inhibit non-root +# logins. The content of this file should be a message indicating +# why logins are inhibited. +# +NOLOGINS_FILE /etc/nologin + +# +# If defined, the command name to display when running "su -". For +# example, if this is defined as "su" then ps(1) will display the +# command as "-su". If not defined, then ps(1) will display the +# name of the shell actually being run, e.g. something like "-sh". +# +SU_NAME su + +# +# *REQUIRED* +# Directory where mailboxes reside, _or_ name of file, relative to the +# home directory. If you _do_ define both, MAIL_DIR takes precedence. +# +MAIL_DIR /var/spool/mail +#MAIL_FILE .mail + +# +# If defined, file which inhibits all the usual chatter during the login +# sequence. If a full pathname, then hushed mode will be enabled if the +# user's name or shell are found in the file. If not a full pathname, then +# hushed mode will be enabled if the file exists in the user's home directory. +# +HUSHLOGIN_FILE .hushlogin +#HUSHLOGIN_FILE /etc/hushlogins + +# +# If defined, either a TZ environment parameter spec or the +# fully-rooted pathname of a file containing such a spec. +# +#ENV_TZ TZ=CST6CDT +#ENV_TZ /etc/tzname + +# +# If defined, an HZ environment parameter spec. +# +# for Linux/x86 +ENV_HZ HZ=100 +# For Linux/Alpha... +#ENV_HZ HZ=1024 + +# +# *REQUIRED* The default PATH settings, for superuser and normal users. +# +# (they are minimal, add the rest in the shell startup files) +ENV_SUPATH PATH=/sbin:/bin:/usr/sbin:/usr/bin +ENV_PATH PATH=/bin:/usr/bin + +# +# Terminal permissions +# +# TTYGROUP Login tty will be assigned this group ownership. +# TTYPERM Login tty will be set to this permission. +# +# If you have a write(1) program which is "setgid" to a special group +# which owns the terminals, define TTYGROUP as the number of such group +# and TTYPERM as 0620. Otherwise leave TTYGROUP commented out and +# set TTYPERM to either 622 or 600. +# +TTYGROUP tty +TTYPERM 0600 + +# +# Login configuration initializations: +# +# ERASECHAR Terminal ERASE character ('\010' = backspace). +# KILLCHAR Terminal KILL character ('\025' = CTRL/U). +# ULIMIT Default "ulimit" value. +# +# The ERASECHAR and KILLCHAR are used only on System V machines. +# The ULIMIT is used only if the system supports it. +# (now it works with setrlimit too; ulimit is in 512-byte units) +# +# Prefix these values with "0" to get octal, "0x" to get hexadecimal. +# +ERASECHAR 0177 +KILLCHAR 025 +#ULIMIT 2097152 + +# Default initial "umask" value used by login(1) on non-PAM enabled systems. +# Default "umask" value for pam_umask(8) on PAM enabled systems. +# UMASK is also used by useradd(8) and newusers(8) to set the mode for new +# home directories if HOME_MODE is not set. +# 022 is the default value, but 027, or even 077, could be considered +# for increased privacy. There is no One True Answer here: each sysadmin +# must make up their mind. +UMASK 022 + +# HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new +# home directories. +# If HOME_MODE is not set, the value of UMASK is used to create the mode. +#HOME_MODE 0700 + +# +# Password aging controls: +# +# PASS_MAX_DAYS Maximum number of days a password may be used. +# PASS_MIN_DAYS Minimum number of days allowed between password changes. +# PASS_MIN_LEN Minimum acceptable password length. +# PASS_WARN_AGE Number of days warning given before a password expires. +# +#PASS_MAX_DAYS 99999 +PASS_MIN_DAYS 0 +PASS_MIN_LEN 5 +PASS_WARN_AGE 7 + +# +# If "yes", the user must be listed as a member of the first gid 0 group +# in /etc/group (called "root" on most Linux systems) to be able to "su" +# to uid 0 accounts. If the group doesn't exist or is empty, no one +# will be able to "su" to uid 0. +# +SU_WHEEL_ONLY no + +# +# Min/max values for automatic uid selection in useradd(8) +# +UID_MIN 1000 +UID_MAX 60000 +# System accounts +SYS_UID_MIN 101 +SYS_UID_MAX 999 +# Extra per user uids +SUB_UID_MIN 100000 +SUB_UID_MAX 600100000 +SUB_UID_COUNT 65536 + +# +# Min/max values for automatic gid selection in groupadd(8) +# +GID_MIN 1000 +GID_MAX 60000 +# System accounts +SYS_GID_MIN 101 +SYS_GID_MAX 999 +# Extra per user group ids +SUB_GID_MIN 100000 +SUB_GID_MAX 600100000 +SUB_GID_COUNT 65536 + +# +# Max number of login(1) retries if password is bad +# +LOGIN_RETRIES 5 + +# +# Max time in seconds for login(1) +# +LOGIN_TIMEOUT 60 + +# +# Maximum number of attempts to change password if rejected (too easy) +# +PASS_CHANGE_TRIES 5 + +# +# Warn about weak passwords (but still allow them) if you are root. +# +PASS_ALWAYS_WARN yes + +# +# Number of significant characters in the password for crypt(). +# Default is 8, don't change unless your crypt() is better. +# Ignored if MD5_CRYPT_ENAB set to "yes". +# +#PASS_MAX_LEN 8 + +# +# Require password before chfn(1)/chsh(1) can make any changes. +# +CHFN_AUTH yes + +# +# Which fields may be changed by regular users using chfn(1) - use +# any combination of letters "frwh" (full name, room number, work +# phone, home phone). If not defined, no changes are allowed. +# For backward compatibility, "yes" = "rwh" and "no" = "frwh". +# +CHFN_RESTRICT rwh + +# +# Password prompt (%s will be replaced by user name). +# +# XXX - it doesn't work correctly yet, for now leave it commented out +# to use the default which is just "Password: ". +#LOGIN_STRING "%s's Password: " + +# +# Only works if compiled with MD5_CRYPT defined: +# If set to "yes", new passwords will be encrypted using the MD5-based +# algorithm compatible with the one used by recent releases of FreeBSD. +# It supports passwords of unlimited length and longer salt strings. +# Set to "no" if you need to copy encrypted passwords to other systems +# which don't understand the new algorithm. Default is "no". +# +# Note: If you use PAM, it is recommended to use a value consistent with +# the PAM modules configuration. +# +# This variable is deprecated. You should use ENCRYPT_METHOD instead. +# +#MD5_CRYPT_ENAB no + +# +# Only works if compiled with ENCRYPTMETHOD_SELECT defined: +# If set to MD5, MD5-based algorithm will be used for encrypting password +# If set to SHA256, SHA256-based algorithm will be used for encrypting password +# If set to SHA512, SHA512-based algorithm will be used for encrypting password +# If set to BCRYPT, BCRYPT-based algorithm will be used for encrypting password +# If set to YESCRYPT, YESCRYPT-based algorithm will be used for encrypting password +# If set to DES, DES-based algorithm will be used for encrypting password (default) +# MD5 and DES should not be used for new hashes, see crypt(5) for recommendations. +# Overrides the MD5_CRYPT_ENAB option +# +# Note: If you use PAM, it is recommended to use a value consistent with +# the PAM modules configuration. +# +#ENCRYPT_METHOD DES + +# +# Only works if ENCRYPT_METHOD is set to SHA256 or SHA512. +# +# Define the number of SHA rounds. +# With a lot of rounds, it is more difficult to brute-force the password. +# However, more CPU resources will be needed to authenticate users if +# this value is increased. +# +# If not specified, the libc will choose the default number of rounds (5000), +# which is orders of magnitude too low for modern hardware. +# The values must be within the 1000-999999999 range. +# If only one of the MIN or MAX values is set, then this value will be used. +# If MIN > MAX, the highest value will be used. +# +#SHA_CRYPT_MIN_ROUNDS 5000 +#SHA_CRYPT_MAX_ROUNDS 5000 + +# +# Only works if ENCRYPT_METHOD is set to BCRYPT. +# +# Define the number of BCRYPT rounds. +# With a lot of rounds, it is more difficult to brute-force the password. +# However, more CPU resources will be needed to authenticate users if +# this value is increased. +# +# If not specified, 13 rounds will be attempted. +# If only one of the MIN or MAX values is set, then this value will be used. +# If MIN > MAX, the highest value will be used. +# +#BCRYPT_MIN_ROUNDS 13 +#BCRYPT_MAX_ROUNDS 13 + +# +# Only works if ENCRYPT_METHOD is set to YESCRYPT. +# +# Define the YESCRYPT cost factor. +# With a higher cost factor, it is more difficult to brute-force the password. +# However, more CPU time and more memory will be needed to authenticate users +# if this value is increased. +# +# If not specified, a cost factor of 5 will be used. +# The value must be within the 1-11 range. +# +#YESCRYPT_COST_FACTOR 5 + +# +# List of groups to add to the user's supplementary group set +# when logging in from the console (as determined by the CONSOLE +# setting). Default is none. +# +# Use with caution - it is possible for users to gain permanent +# access to these groups, even when not logged in from the console. +# How to do it is left as an exercise for the reader... +# +#CONSOLE_GROUPS floppy:audio:cdrom + +# +# Should login be allowed if we can't cd to the home directory? +# Default is no. +# +DEFAULT_HOME yes + +# +# The pwck(8) utility emits a warning for any system account with a home +# directory that does not exist. Some system accounts intentionally do +# not have a home directory. Such accounts may have this string as +# their home directory in /etc/passwd to avoid a spurious warning. +# +NONEXISTENT /nonexistent + +# +# If this file exists and is readable, login environment will be +# read from it. Every line should be in the form name=value. +# +ENVIRON_FILE /etc/environment + +# +# If defined, this command is run when removing a user. +# It should remove any at/cron/print jobs etc. owned by +# the user to be removed (passed as the first argument). +# +#USERDEL_CMD /usr/sbin/userdel_local + +# +# Enable setting of the umask group bits to be the same as owner bits +# (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(8) to remove user groups if no members exist. +# +USERGROUPS_ENAB yes + +# +# If set to a non-zero number, the shadow utilities will make sure that +# groups never have more than this number of users on one line. +# This permits to support split groups (groups split into multiple lines, +# with the same group ID, to avoid limitation of the line length in the +# group file). +# +# 0 is the default value and disables this feature. +# +#MAX_MEMBERS_PER_GROUP 0 + +# +# If useradd(8) should create home directories for users by default (non +# system users only). +# This option is overridden with the -M or -m flags on the useradd(8) +# command-line. +# +#CREATE_HOME yes + +# +# Force use shadow, even if shadow passwd & shadow group files are +# missing. +# +#FORCE_SHADOW yes + +# +# Allow newuidmap and newgidmap when running under an alternative +# primary group. +# +#GRANT_AUX_GROUP_SUBIDS yes + +# +# Prevents an empty password field to be interpreted as "no authentication +# required". +# Set to "yes" to prevent for all accounts +# Set to "superuser" to prevent for UID 0 / root (default) +# Set to "no" to not prevent for any account (dangerous, historical default) +PREVENT_NO_AUTH superuser + +# +# Select the HMAC cryptography algorithm. +# Used in pam_timestamp module to calculate the keyed-hash message +# authentication code. +# +# Note: It is recommended to check hmac(3) to see the possible algorithms +# that are available in your system. +# +#HMAC_CRYPTO_ALGO SHA512 diff --git a/tests/newusers/62_create_user_no_aging/config/etc/pam.d/common-password b/tests/newusers/62_create_user_no_aging/config/etc/pam.d/common-password new file mode 100644 index 00000000..06c59a74 --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/config/etc/pam.d/common-password @@ -0,0 +1,33 @@ +# +# /etc/pam.d/common-password - password-related modules common to all services +# +# This file is included from other service-specific PAM config files, +# and should contain a list of modules that define the services to be +# used to change user passwords. The default is pam_unix. + +# Explanation of pam_unix options: +# +# The "md5" option enables MD5 passwords. Without this option, the +# default is Unix crypt. +# +# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in +# login.defs. +# +# See the pam_unix manpage for other options. + +# As of pam 1.0.1-6, this file is managed by pam-auth-update by default. +# To take advantage of this, it is recommended that you configure any +# local modules either before or after the default block, and use +# pam-auth-update to manage selection of other modules. See +# pam-auth-update(8) for details. + +# here are the per-package modules (the "Primary" block) +password [success=1 default=ignore] pam_unix.so obscure +# here's the fallback if no module succeeds +password requisite pam_deny.so +# prime the stack with a positive return value if there isn't one already; +# this avoids us returning an error just because nothing sets a success code +# since the modules above will each just jump around +password required pam_permit.so +# and here are more per-package modules (the "Additional" block) +# end of pam-auth-update config diff --git a/tests/newusers/62_create_user_no_aging/config/etc/pam.d/newusers b/tests/newusers/62_create_user_no_aging/config/etc/pam.d/newusers new file mode 100644 index 00000000..552045e4 --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/config/etc/pam.d/newusers @@ -0,0 +1,6 @@ +# +# The PAM configuration file for the Shadow `chpasswd' service +# + +@include common-password + diff --git a/tests/newusers/62_create_user_no_aging/config/etc/passwd b/tests/newusers/62_create_user_no_aging/config/etc/passwd new file mode 100644 index 00000000..43fc135a --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/newusers/62_create_user_no_aging/config/etc/shadow b/tests/newusers/62_create_user_no_aging/config/etc/shadow new file mode 100644 index 00000000..031ce889 --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/config/etc/shadow @@ -0,0 +1,19 @@ +root::12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/newusers/62_create_user_no_aging/data/group b/tests/newusers/62_create_user_no_aging/data/group new file mode 100644 index 00000000..fecba0c4 --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:1000: diff --git a/tests/newusers/62_create_user_no_aging/data/gshadow b/tests/newusers/62_create_user_no_aging/data/gshadow new file mode 100644 index 00000000..5042e581 --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:*:: diff --git a/tests/newusers/62_create_user_no_aging/data/newusers.list b/tests/newusers/62_create_user_no_aging/data/newusers.list new file mode 100644 index 00000000..9c40fa2b --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/data/newusers.list @@ -0,0 +1 @@ +foo:fooPass:::User Foo - Gecos Field::/bin/sh diff --git a/tests/newusers/62_create_user_no_aging/data/passwd b/tests/newusers/62_create_user_no_aging/data/passwd new file mode 100644 index 00000000..7bf7386c --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/data/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000:User Foo - Gecos Field::/bin/sh diff --git a/tests/newusers/62_create_user_no_aging/data/shadow b/tests/newusers/62_create_user_no_aging/data/shadow new file mode 100644 index 00000000..6bf60070 --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/data/shadow @@ -0,0 +1,20 @@ +root::12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:@PASS_DES fooPass@:@TODAY@:0::7::: diff --git a/tests/newusers/62_create_user_no_aging/newusers.test b/tests/newusers/62_create_user_no_aging/newusers.test new file mode 100755 index 00000000..3998709d --- /dev/null +++ b/tests/newusers/62_create_user_no_aging/newusers.test @@ -0,0 +1,37 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +. ../../common/config.sh +. ../../common/log.sh + +log_start "$0" "newusers can create a new user without aging information" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +newusers data/newusers.list + +echo -n "Check the passwd file..." +../../common/compare_file.pl data/passwd /etc/passwd +echo "OK" +echo -n "Check the group file..." +../../common/compare_file.pl data/group /etc/group +echo "OK" +echo -n "Check the shadow file..." +../../common/compare_file.pl data/shadow /etc/shadow +echo "OK" +echo -n "Check the gshadow file..." +../../common/compare_file.pl data/gshadow /etc/gshadow +echo "OK" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 + diff --git a/tests/run_all b/tests/run_all index 584e1bd3..cb496910 100755 --- a/tests/run_all +++ b/tests/run_all @@ -772,6 +772,8 @@ run_test ./usertools/useradd/65_useradd_locked_group/useradd.test run_test ./usertools/useradd/66_useradd_locked_shadow/useradd.test run_test ./usertools/useradd/67_useradd_locked_gshadow/useradd.test run_test ./usertools/useradd/68_useradd-s_empty/useradd.test +run_test ./usertools/useradd/69_useradd_default_GROUPS_name/useradd.test +run_test ./usertools/useradd/70_useradd-r_default_GROUPS_name/useradd.test run_test ./usertools/userdel/01_userdel_usage/userdel.test run_test ./usertools/userdel/02_userdel_usage_invalid_option/userdel.test run_test ./usertools/userdel/03_userdel_usage_no_users/userdel.test @@ -1015,6 +1017,7 @@ run_test ./newusers/58_invalid_input_file/newusers.test run_test ./newusers/59_no_gshadow_file/newusers.test run_test ./newusers/60_update_no_gecos/newusers.test run_test ./newusers/61_update_no_shell/newusers.test +run_test ./newusers/62_create_user_no_aging/newusers.test run_test ./split_groups/01_useradd_split_group/useradd.test run_test ./split_groups/02_useradd_no_split_group/useradd.test run_test ./split_groups/03_useradd_split_group_already_split/useradd.test diff --git a/tests/run_all.coverage b/tests/run_all.coverage index 94fe7fa4..87a517e0 100755 --- a/tests/run_all.coverage +++ b/tests/run_all.coverage @@ -788,6 +788,8 @@ run_test ./usertools/useradd/65_useradd_locked_group/useradd.test run_test ./usertools/useradd/66_useradd_locked_shadow/useradd.test run_test ./usertools/useradd/67_useradd_locked_gshadow/useradd.test run_test ./usertools/useradd/68_useradd-s_empty/useradd.test +run_test ./usertools/useradd/69_useradd_default_GROUPS_name/useradd.test +run_test ./usertools/useradd/70_useradd-r_default_GROUPS_name/useradd.test run_test ./usertools/userdel/01_userdel_usage/userdel.test run_test ./usertools/userdel/02_userdel_usage_invalid_option/userdel.test run_test ./usertools/userdel/03_userdel_usage_no_users/userdel.test diff --git a/tests/system/framework/hosts/shadow.py b/tests/system/framework/hosts/shadow.py index 2a0ca3e5..29e385a7 100644 --- a/tests/system/framework/hosts/shadow.py +++ b/tests/system/framework/hosts/shadow.py @@ -34,7 +34,7 @@ class ShadowHost(BaseHost, BaseLinuxHost): self._backup_path: PurePosixPath | None = None """Path to backup files.""" - self._verify_files: [dict[str, str]] = [ + self._verify_files: list[dict[str, str]] = [ {"origin": "/etc/passwd", "backup": "passwd"}, {"origin": "/etc/shadow", "backup": "shadow"}, {"origin": "/etc/group", "backup": "group"}, @@ -42,9 +42,6 @@ class ShadowHost(BaseHost, BaseLinuxHost): ] """Files to verify for mismatch.""" - self._features: dict[str, bool] | None = None - """Features supported by the host.""" - def pytest_setup(self) -> None: super().pytest_setup() diff --git a/tests/system/framework/roles/shadow.py b/tests/system/framework/roles/shadow.py index e67b1925..c05ab531 100644 --- a/tests/system/framework/roles/shadow.py +++ b/tests/system/framework/roles/shadow.py @@ -3,17 +3,21 @@ from __future__ import annotations import shlex -from typing import Dict +from typing import Dict, Tuple from pytest_mh.conn import ProcessLogLevel, ProcessResult from ..hosts.shadow import ShadowHost +from ..misc.errors import ExpectScriptError from .base import BaseLinuxRole __all__ = [ "Shadow", ] +DEFAULT_INTERACTIVE_TIMEOUT: int = 60 +"""Default timeout for interactive sessions.""" + class Shadow(BaseLinuxRole[ShadowHost]): """ @@ -133,10 +137,137 @@ class Shadow(BaseLinuxRole[ShadowHost]): Change user password expiry information. """ args_dict = self._parse_args(args) - self.logger.info(f'Changing user password expiry information on user "{args_dict["name"]}" on {self.host.hostname}') + self.logger.info( + f'Changing user password expiry information on user "{args_dict["name"]}" on {self.host.hostname}' + ) cmd = self.host.conn.run("chage " + args[0], log_level=ProcessLogLevel.Error) self.host.discard_file("/etc/passwd") self.host.discard_file("/etc/shadow") return cmd + + def newusers(self, *args, users_data: str | None = None) -> ProcessResult: + """ + Update or create new users in batch. + + Updates or creates multiple users by reading account information in passwd + format. If `users_data` is provided, it's passed via stdin and takes + precedence; otherwise, the command reads from a file specified in `args`. + """ + if users_data: + cmd_args = " ".join(args) + self.logger.info(f"Creating users from stdin on {self.host.hostname}") + cmd = self.host.conn.run(f"echo '{users_data}' | newusers {cmd_args}", log_level=ProcessLogLevel.Error) + else: + args_dict = self._parse_args(args) + self.logger.info(f'Creating users from "{args_dict["name"]}" on {self.host.hostname}') + cmd = self.host.conn.run("newusers " + args[0], log_level=ProcessLogLevel.Error) + + self.host.discard_file("/etc/passwd") + self.host.discard_file("/etc/shadow") + self.host.discard_file("/etc/group") + self.host.discard_file("/etc/gshadow") + + return cmd + + def groupmems(self, *args, run_as: str = "root", password: str | None = None) -> ProcessResult: + """ + Administer members of a user's primary group. + + The groupmems command allows management of group membership lists. + If `run_as` is provided, then the `password` must be provided and the command groupmems run under this user. + If `run_as` isn't provided, then the command is run under `root`. + """ + args_dict = self._parse_args(args) + + if run_as == "root": + self.logger.info(f'Administer {args_dict["name"]} group membership as root on {self.host.hostname}') + cmd = self.host.conn.run("groupmems " + args[0], log_level=ProcessLogLevel.Error) + else: + self.logger.info(f'Administer {args_dict["name"]} group membership on {self.host.hostname}') + cmd = self.host.conn.run( + f"echo '{password}' | su - {run_as} -c 'groupmems {args[0]}'", log_level=ProcessLogLevel.Error + ) + + self.host.discard_file("/etc/group") + self.host.discard_file("/etc/gshadow") + + return cmd + + def newgrp(self, *args, run_as: str = "root") -> Tuple[ProcessResult, int]: + """ + Log in to a new group. + + The newgrp command is used to change the current group ID during a login session. + Returns the process result and the group ID after the change. + """ + args_dict = self._parse_args(args) + + self.logger.info(f'Changing {run_as} to group "{args_dict["name"]}" on {self.host.hostname}') + + # Use expect to handle the interactive newgrp session + result = self.host.conn.expect( + rf""" + set timeout {DEFAULT_INTERACTIVE_TIMEOUT} + set prompt "\[#\$>\] $" + + if {{ "{run_as}" eq "root" }} {{ + spawn newgrp {args[0]} + }} else {{ + spawn su - {run_as} + expect {{ + -re $prompt {{send "newgrp {args[0]}\n"}} + timeout {{puts "expect result: Timeout waiting for su prompt"; exit 201}} + eof {{puts "expect result: Unexpected end of file"; exit 202}} + }} + }} + + expect {{ + -re $prompt {{send "id -g\n"}} + timeout {{puts "expect result: Timeout waiting for newgrp prompt"; exit 201}} + eof {{puts "expect result: Unexpected end of file"; exit 202}} + }} + + expect {{ + -re "(\[0-9\]+)" {{ + set gid $expect_out(1,string) + send "exit\n" + puts "newgrp_gid:$gid" + }} + timeout {{puts "expect result: Timeout waiting for id output"; exit 201}} + eof {{puts "expect result: Unexpected end of file"; exit 202}} + }} + + if {{ "{run_as}" ne "root" }} {{ + expect {{ + -re $prompt {{ + send "exit\n" + }} + timeout {{puts "expect result: Timeout waiting for original su prompt"; exit 201}} + }} + }} + + expect {{ + eof {{exit 0}} + timeout {{exit 201}} + }} + """, + verbose=False, + ) + + if result.rc > 200: + raise ExpectScriptError(result.rc) + + gid_line = None + for line in result.stdout_lines: + if "newgrp_gid:" in line: + gid_line = line + break + + if gid_line is None: + raise ValueError("Current GID is required for newgrp") + + current_gid = int(gid_line.split(":")[1]) + + return result, current_gid diff --git a/tests/system/framework/utils/tools.py b/tests/system/framework/utils/tools.py index c03091c4..a2c85cba 100644 --- a/tests/system/framework/utils/tools.py +++ b/tests/system/framework/utils/tools.py @@ -16,7 +16,7 @@ __all__ = [ "PasswdEntry", "ShadowEntry", "GroupEntry", - "GShadowEntry" + "GShadowEntry", "InitgroupsEntry", "LinuxToolsUtils", "KillCommand", @@ -157,7 +157,16 @@ class PasswdEntry(object): Result of ``getent passwd`` """ - def __init__(self, name: str, password: str, uid: int, gid: int, gecos: str, home: str, shell: str) -> None: + def __init__( + self, + name: str | None, + password: str | None, + uid: int | None, + gid: int | None, + gecos: str | None, + home: str | None, + shell: str | None, + ) -> None: self.name: str | None = name """ User name. @@ -168,12 +177,12 @@ class PasswdEntry(object): User password. """ - self.uid: int = uid + self.uid: int | None = uid """ User id. """ - self.gid: int = gid + self.gid: int | None = gid """ Group id. """ @@ -231,14 +240,14 @@ class ShadowEntry(object): def __init__( self, - name: str, - password: str, - last_changed: int, - min_days: int, - max_days: int, - warn_days: int, - inactivity_days: int, - expiration_date: int, + name: str | None, + password: str | None, + last_changed: int | None, + min_days: int | None, + max_days: int | None, + warn_days: int | None, + inactivity_days: int | None, + expiration_date: int | None, ) -> None: self.name: str | None = name """ @@ -250,22 +259,22 @@ class ShadowEntry(object): User password. """ - self.last_changed: int = last_changed + self.last_changed: int | None = last_changed """ Last password change. """ - self.min_days: int = min_days + self.min_days: int | None = min_days """ Minimum number of days before a password change is allowed. """ - self.max_days: int = max_days + self.max_days: int | None = max_days """ Maximum number of days a password is valid. """ - self.warn_days: int = warn_days + self.warn_days: int | None = warn_days """ Number of days to warn the user before the password expires. """ @@ -321,7 +330,7 @@ class GroupEntry(object): Result of ``getent group`` """ - def __init__(self, name: str, password: str, gid: int, members: list[str]) -> None: + def __init__(self, name: str | None, password: str | None, gid: int | None, members: list[str]) -> None: self.name: str | None = name """ Group name. @@ -332,7 +341,7 @@ class GroupEntry(object): Group password. """ - self.gid: int = gid + self.gid: int | None = gid """ Group id. """ @@ -377,10 +386,10 @@ class GShadowEntry(object): def __init__( self, - name: str, - password: str, - administrators: str, - members: str, + name: str | None, + password: str | None, + administrators: str | None, + members: str | None, ) -> None: self.name: str | None = name """ @@ -392,21 +401,18 @@ class GShadowEntry(object): Group password. """ - self.administrators: int = administrators + self.administrators: str | None = administrators """ Group administrators. """ - self.members: int = members + self.members: str | None = members """ Group members. """ def __str__(self) -> str: - return ( - f"({self.name}:{self.password}:{self.administrators}:" - f"{self.members})" - ) + return f"({self.name}:{self.password}:{self.administrators}:" f"{self.members})" def __repr__(self) -> str: return str(self) diff --git a/tests/system/pyproject.toml b/tests/system/pyproject.toml index 6e34cc0c..88cc445d 100644 --- a/tests/system/pyproject.toml +++ b/tests/system/pyproject.toml @@ -2,6 +2,14 @@ module = "jc.*" ignore_missing_imports = true +[[tool.mypy.overrides]] +module = "pytest" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "pytest_mh.*" +ignore_missing_imports = true + [tool.isort] line_length = 119 profile = "black" diff --git a/tests/system/tests/test_chage.py b/tests/system/tests/test_chage.py index 062c380e..f6f1c580 100644 --- a/tests/system/tests/test_chage.py +++ b/tests/system/tests/test_chage.py @@ -5,8 +5,8 @@ Test chage from __future__ import annotations import pytest - from pytest_mh.conn import ProcessError + from framework.misc import days_since_epoch from framework.roles.shadow import Shadow from framework.topology import KnownTopology diff --git a/tests/system/tests/test_groupadd.py b/tests/system/tests/test_groupadd.py index 5e4bea53..b46621b6 100644 --- a/tests/system/tests/test_groupadd.py +++ b/tests/system/tests/test_groupadd.py @@ -26,13 +26,43 @@ def test_groupadd__add_group(shadow: Shadow): """ shadow.groupadd("tgroup") - result = shadow.tools.getent.group("tgroup") - assert result is not None, "Group should be found" - assert result.name == "tgroup", "Incorrect groupname" - assert result.gid == 1000, "Incorrect GID" + group_entry = shadow.tools.getent.group("tgroup") + assert group_entry is not None, "Group should be found" + assert group_entry.name == "tgroup", "Incorrect groupname" + assert group_entry.gid == 1000, "Incorrect GID" if shadow.host.features["gshadow"]: - result = shadow.tools.getent.gshadow("tgroup") - assert result is not None, "Group should be found" - assert result.name == "tgroup", "Incorrect groupname" - assert result.password == "!", "Incorrect password" + gshadow_entry = shadow.tools.getent.gshadow("tgroup") + assert gshadow_entry is not None, "Group should be found" + assert gshadow_entry.name == "tgroup", "Incorrect groupname" + assert gshadow_entry.password == "!", "Incorrect password" + + +@pytest.mark.topology(KnownTopology.Shadow) +def test_groupadd__u_option_empty_string_clears_members(shadow: Shadow): + """ + :title: Test groupadd -U option with empty user list + :setup: + 1. None required + :steps: + 1. Run groupadd with -U option and empty string parameter + 2. Verify group exists after creation + 3. Confirm group has no members + :expectedresults: + 1. groupadd -U '' command completes successfully + 2. Group entry is created and accessible + 3. Group member list is empty (no users assigned to group) + :customerscenario: False + """ + shadow.groupadd("-U '' tgroup") + + group_entry = shadow.tools.getent.group("tgroup") + assert group_entry is not None, "Group should be found" + assert group_entry.name == "tgroup", "Incorrect groupname" + assert not group_entry.members, "Group should have no members" + + if shadow.host.features["gshadow"]: + gshadow_entry = shadow.tools.getent.gshadow("tgroup") + assert gshadow_entry is not None, "Group should be found" + assert gshadow_entry.name == "tgroup", "Incorrect groupname" + assert not gshadow_entry.members, "Group should have no members" diff --git a/tests/system/tests/test_groupdel.py b/tests/system/tests/test_groupdel.py index c2ac2a2c..a020df00 100644 --- a/tests/system/tests/test_groupdel.py +++ b/tests/system/tests/test_groupdel.py @@ -28,8 +28,8 @@ def test_groupdel__delete_group(shadow: Shadow): shadow.groupadd("tgroup") shadow.groupdel("tgroup") - result = shadow.tools.getent.group("tgroup") - assert result is None, "Group should not be found" + group_entry = shadow.tools.getent.group("tgroup") + assert group_entry is None, "Group should not be found" - result = shadow.tools.getent.gshadow("tgroup") - assert result is None, "Group should not be found" + gshadow_entry = shadow.tools.getent.gshadow("tgroup") + assert gshadow_entry is None, "Group should not be found" diff --git a/tests/system/tests/test_groupmems.py b/tests/system/tests/test_groupmems.py new file mode 100644 index 00000000..f59d49c8 --- /dev/null +++ b/tests/system/tests/test_groupmems.py @@ -0,0 +1,41 @@ +""" +Test groupmems +""" + +from __future__ import annotations + +import pytest + +from framework.roles.shadow import Shadow +from framework.topology import KnownTopology + + +@pytest.mark.topology(KnownTopology.Shadow) +def test_groupmems__add_user_as_root(shadow: Shadow): + """ + :title: Add user to group as root user + :setup: + 1. Create test user and group + :steps: + 1. Add user to group using groupmems as root + 2. Check group and gshadow entry + :expectedresults: + 1. User is added to group + 2. group and gshadow entry values are correct + :customerscenario: False + """ + shadow.useradd("tuser") + shadow.groupadd("tgroup") + + shadow.groupmems("-g tgroup -a tuser") + + group_entry = shadow.tools.getent.group("tgroup") + assert group_entry is not None, "Group should be found" + assert group_entry.name == "tgroup", "Incorrect groupname" + assert "tuser" in group_entry.members, "User should be member of group" + + if shadow.host.features["gshadow"]: + gshadow_entry = shadow.tools.getent.gshadow("tgroup") + assert gshadow_entry is not None, "Group should be found" + assert gshadow_entry.name == "tgroup", "Incorrect groupname" + assert gshadow_entry.password == "!", "Incorrect password" diff --git a/tests/system/tests/test_groupmod.py b/tests/system/tests/test_groupmod.py index 37f334f5..6617602f 100644 --- a/tests/system/tests/test_groupmod.py +++ b/tests/system/tests/test_groupmod.py @@ -28,13 +28,44 @@ def test_groupmod__change_gid(shadow: Shadow): shadow.groupadd("tgroup") shadow.groupmod("-g 1001 tgroup") - result = shadow.tools.getent.group("tgroup") - assert result is not None, "Group should be found" - assert result.name == "tgroup", "Incorrect groupname" - assert result.gid == 1001, "Incorrect GID" + group_entry = shadow.tools.getent.group("tgroup") + assert group_entry is not None, "Group should be found" + assert group_entry.name == "tgroup", "Incorrect groupname" + assert group_entry.gid == 1001, "Incorrect GID" if shadow.host.features["gshadow"]: - result = shadow.tools.getent.gshadow("tgroup") - assert result is not None, "Group should be found" - assert result.name == "tgroup", "Incorrect groupname" - assert result.password == "!", "Incorrect password" + gshadow_entry = shadow.tools.getent.gshadow("tgroup") + assert gshadow_entry is not None, "Group should be found" + assert gshadow_entry.name == "tgroup", "Incorrect groupname" + assert gshadow_entry.password == "!", "Incorrect password" + + +@pytest.mark.topology(KnownTopology.Shadow) +def test_groupmod__u_option_empty_string_clears_members(shadow: Shadow): + """ + :title: Test groupmod -U option with empty user list + :setup: + 1. Create test group + :steps: + 1. Run groupmod with -U option and empty string parameter + 2. Verify group exists after operation + 3. Confirm group has no members + :expectedresults: + 1. groupmod -U '' command completes successfully + 2. Group entry remains valid and accessible + 3. Group member list is empty (no users assigned to group) + :customerscenario: False + """ + shadow.groupadd("tgroup") + shadow.groupmod("-U '' tgroup") + + group_entry = shadow.tools.getent.group("tgroup") + assert group_entry is not None, "Group should be found" + assert group_entry.name == "tgroup", "Incorrect groupname" + assert not group_entry.members, "Group should have no members" + + if shadow.host.features["gshadow"]: + gshadow_entry = shadow.tools.getent.gshadow("tgroup") + assert gshadow_entry is not None, "Group should be found" + assert gshadow_entry.name == "tgroup", "Incorrect groupname" + assert not gshadow_entry.members, "Group should have no members" diff --git a/tests/system/tests/test_newgrp.py b/tests/system/tests/test_newgrp.py new file mode 100644 index 00000000..b955a822 --- /dev/null +++ b/tests/system/tests/test_newgrp.py @@ -0,0 +1,34 @@ +""" +Test newgrp +""" + +from __future__ import annotations + +import pytest + +from framework.roles.shadow import Shadow +from framework.topology import KnownTopology + + +@pytest.mark.topology(KnownTopology.Shadow) +def test_newgrp__change_to_new_group(shadow: Shadow): + """ + :title: Change to a new group using newgrp + :setup: + 1. Create test user and group + 2. Add user to the group + :steps: + 1. Use newgrp to change to the new group + 2. Check that the group change worked + :expectedresults: + 1. newgrp command succeeds + 2. Current group ID matches the new group + :customerscenario: False + """ + shadow.useradd("tuser") + shadow.groupadd("tgroup") + shadow.usermod("-a -G tgroup tuser") + + cmd, gid = shadow.newgrp("tgroup", run_as="tuser") + assert cmd.rc == 0, "newgrp command should succeed" + assert gid == 1001, f"Current GID should be {1001}, got {gid}" diff --git a/tests/system/tests/test_newusers.py b/tests/system/tests/test_newusers.py new file mode 100644 index 00000000..0cc584c6 --- /dev/null +++ b/tests/system/tests/test_newusers.py @@ -0,0 +1,185 @@ +""" +Test newusers +""" + +from __future__ import annotations + +import pytest + +from framework.misc import days_since_epoch +from framework.roles.shadow import Shadow +from framework.topology import KnownTopology + + +@pytest.mark.topology(KnownTopology.Shadow) +def test_newusers__create_users_from_stdin(shadow: Shadow): + """ + :title: Create multiple users from stdin + :setup: + 1. Prepare and create user data from stdin + :steps: + 1. Check the first user's passwd, shadow, group, gshadow, and home folder + 2. Check second user's passwd, shadow, group, gshadow, and home folder + :expectedresults: + 1. First user's passwd, shadow, group, gshadow, and home folders are correct + 2. Second user's passwd, shadow, group, gshadow, and home folders are correct + :customerscenario: False + """ + users_data = ( + "tuser1:Secret123:1001:1001:Test User One:/home/tuser1:/bin/bash\n" + "tuser2:Secret123:1002:1002:Test User Two:/home/tuser2:/bin/bash" + ) + + shadow.newusers(users_data=users_data) + + passwd_entry = shadow.tools.getent.passwd("tuser1") + assert passwd_entry is not None, "tuser1 user should be found in passwd" + assert passwd_entry.name == "tuser1", "Incorrect username" + assert passwd_entry.password == "x", "Incorrect password" + assert passwd_entry.uid == 1001, "Incorrect UID" + assert passwd_entry.gid == 1001, "Incorrect GID" + assert passwd_entry.gecos == "Test User One", "Incorrect GECOS" + assert passwd_entry.home == "/home/tuser1", "Incorrect home folder" + assert passwd_entry.shell == "/bin/bash", "Incorrect shell" + + shadow_entry = shadow.tools.getent.shadow("tuser1") + assert shadow_entry is not None, "tuser1 user should be found in shadow" + assert shadow_entry.name == "tuser1", "Incorrect username" + assert shadow_entry.password is not None, "Incorrect password" + assert shadow_entry.last_changed == days_since_epoch(), "Incorrect last changed" + assert shadow_entry.min_days == 0, "Incorrect min days" + assert shadow_entry.max_days == 99999, "Incorrect max days" + assert shadow_entry.warn_days == 7, "Incorrect warn days" + + group_entry = shadow.tools.getent.group("tuser1") + assert group_entry is not None, "tuser1 group should be found" + assert group_entry.name == "tuser1", "Incorrect group name" + assert group_entry.gid == 1001, "Incorrect GID" + + if shadow.host.features["gshadow"]: + gshadow_entry = shadow.tools.getent.gshadow("tuser1") + assert gshadow_entry is not None, "tuser1 group should be found" + assert gshadow_entry.name == "tuser1", "Incorrect group name" + assert gshadow_entry.password == "*", "Incorrect password" + + assert shadow.fs.exists("/home/tuser1"), "tuser1 home folder should exist" + + passwd_entry = shadow.tools.getent.passwd("tuser2") + assert passwd_entry is not None, "tuser2 user should be found in passwd" + assert passwd_entry.name == "tuser2", "Incorrect username" + assert passwd_entry.password == "x", "Incorrect password" + assert passwd_entry.uid == 1002, "Incorrect UID" + assert passwd_entry.gid == 1002, "Incorrect GID" + assert passwd_entry.gecos == "Test User Two", "Incorrect GECOS" + assert passwd_entry.home == "/home/tuser2", "Incorrect home folder" + assert passwd_entry.shell == "/bin/bash", "Incorrect shell" + + shadow_entry = shadow.tools.getent.shadow("tuser2") + assert shadow_entry is not None, "tuser2 user should be found in shadow" + assert shadow_entry.name == "tuser2", "Incorrect username" + assert shadow_entry.password is not None, "Incorrect password" + assert shadow_entry.last_changed == days_since_epoch(), "Incorrect last changed" + assert shadow_entry.min_days == 0, "Incorrect min days" + assert shadow_entry.max_days == 99999, "Incorrect max days" + assert shadow_entry.warn_days == 7, "Incorrect warn days" + + group_entry = shadow.tools.getent.group("tuser2") + assert group_entry is not None, "tuser2 group should be found" + assert group_entry.name == "tuser2", "Incorrect group name" + assert group_entry.gid == 1002, "Incorrect GID" + + if shadow.host.features["gshadow"]: + gshadow_entry = shadow.tools.getent.gshadow("tuser2") + assert gshadow_entry is not None, "tuser2 group should be found" + assert gshadow_entry.name == "tuser2", "Incorrect group name" + assert gshadow_entry.password == "*", "Incorrect password" + + assert shadow.fs.exists("/home/tuser2"), "tuser2 home folder should exist" + + +@pytest.mark.topology(KnownTopology.Shadow) +def test_newusers__create_users_from_file(shadow: Shadow): + """ + :title: Create multiple users using file input + :setup: + 1. Prepare and create user data from input file + :steps: + 1. Check the first user's passwd, shadow, group, gshadow, and home folder + 2. Check second user's passwd, shadow, group, gshadow, and home folder + :expectedresults: + 1. First user's passwd, shadow, group, gshadow, and home folders are correct + 2. Second user's passwd, shadow, group, gshadow, and home folders are correct + :customerscenario: False + """ + temp_file = "/tmp/test_newusers_data.txt" + users_data = ( + "tuser1:Secret123:1001:1001:Test User One:/home/tuser1:/bin/bash\n" + "tuser2:Secret123:1002:1002:Test User Two:/home/tuser2:/bin/bash" + ) + shadow.fs.write(temp_file, users_data) + + shadow.newusers(temp_file) + + passwd_entry = shadow.tools.getent.passwd("tuser1") + assert passwd_entry is not None, "tuser1 user should be found in passwd" + assert passwd_entry.name == "tuser1", "Incorrect username" + assert passwd_entry.password == "x", "Incorrect password" + assert passwd_entry.uid == 1001, "Incorrect UID" + assert passwd_entry.gid == 1001, "Incorrect GID" + assert passwd_entry.gecos == "Test User One", "Incorrect GECOS" + assert passwd_entry.home == "/home/tuser1", "Incorrect home folder" + assert passwd_entry.shell == "/bin/bash", "Incorrect shell" + + shadow_entry = shadow.tools.getent.shadow("tuser1") + assert shadow_entry is not None, "tuser1 user should be found in shadow" + assert shadow_entry.name == "tuser1", "Incorrect username" + assert shadow_entry.password is not None, "Incorrect password" + assert shadow_entry.last_changed == days_since_epoch(), "Incorrect last changed" + assert shadow_entry.min_days == 0, "Incorrect min days" + assert shadow_entry.max_days == 99999, "Incorrect max days" + assert shadow_entry.warn_days == 7, "Incorrect warn days" + + group_entry = shadow.tools.getent.group("tuser1") + assert group_entry is not None, "tuser1 group should be found" + assert group_entry.name == "tuser1", "Incorrect group name" + assert group_entry.gid == 1001, "Incorrect GID" + + if shadow.host.features["gshadow"]: + gshadow_entry = shadow.tools.getent.gshadow("tuser1") + assert gshadow_entry is not None, "tuser1 group should be found" + assert gshadow_entry.name == "tuser1", "Incorrect group name" + assert gshadow_entry.password == "*", "Incorrect password" + + assert shadow.fs.exists("/home/tuser1"), "tuser1 home folder should exist" + + passwd_entry = shadow.tools.getent.passwd("tuser2") + assert passwd_entry is not None, "tuser2 user should be found in passwd" + assert passwd_entry.name == "tuser2", "Incorrect username" + assert passwd_entry.password == "x", "Incorrect password" + assert passwd_entry.uid == 1002, "Incorrect UID" + assert passwd_entry.gid == 1002, "Incorrect GID" + assert passwd_entry.gecos == "Test User Two", "Incorrect GECOS" + assert passwd_entry.home == "/home/tuser2", "Incorrect home folder" + assert passwd_entry.shell == "/bin/bash", "Incorrect shell" + + shadow_entry = shadow.tools.getent.shadow("tuser2") + assert shadow_entry is not None, "tuser2 user should be found in shadow" + assert shadow_entry.name == "tuser2", "Incorrect username" + assert shadow_entry.password is not None, "Incorrect password" + assert shadow_entry.last_changed == days_since_epoch(), "Incorrect last changed" + assert shadow_entry.min_days == 0, "Incorrect min days" + assert shadow_entry.max_days == 99999, "Incorrect max days" + assert shadow_entry.warn_days == 7, "Incorrect warn days" + + group_entry = shadow.tools.getent.group("tuser2") + assert group_entry is not None, "tuser2 group should be found" + assert group_entry.name == "tuser2", "Incorrect group name" + assert group_entry.gid == 1002, "Incorrect GID" + + if shadow.host.features["gshadow"]: + gshadow_entry = shadow.tools.getent.gshadow("tuser2") + assert gshadow_entry is not None, "tuser2 group should be found" + assert gshadow_entry.name == "tuser2", "Incorrect group name" + assert gshadow_entry.password == "*", "Incorrect password" + + assert shadow.fs.exists("/home/tuser2"), "tuser2 home folder should exist" diff --git a/tests/system/tests/test_useradd.py b/tests/system/tests/test_useradd.py index 14c71441..82f8cc65 100644 --- a/tests/system/tests/test_useradd.py +++ b/tests/system/tests/test_useradd.py @@ -5,9 +5,9 @@ Test useradd from __future__ import annotations import pytest +from pytest_mh.conn import ProcessError from framework.misc import days_since_epoch -from pytest_mh.conn import ProcessError from framework.roles.shadow import Shadow from framework.topology import KnownTopology @@ -34,37 +34,37 @@ def test_useradd__add_user(shadow: Shadow): """ shadow.useradd("tuser") - result = shadow.tools.getent.passwd("tuser") - assert result is not None, "User should be found" - assert result.name == "tuser", "Incorrect username" - assert result.password == "x", "Incorrect password" - assert result.uid == 1000, "Incorrect UID" - assert result.gid == 1000, "Incorrect GID" - assert result.home == "/home/tuser", "Incorrect home" + passwd_entry = shadow.tools.getent.passwd("tuser") + assert passwd_entry is not None, "User should be found" + assert passwd_entry.name == "tuser", "Incorrect username" + assert passwd_entry.password == "x", "Incorrect password" + assert passwd_entry.uid == 1000, "Incorrect UID" + assert passwd_entry.gid == 1000, "Incorrect GID" + assert passwd_entry.home == "/home/tuser", "Incorrect home" if "Debian" in shadow.host.distro_name: - assert result.shell == "/bin/sh", "Incorrect shell" + assert passwd_entry.shell == "/bin/sh", "Incorrect shell" else: - assert result.shell == "/bin/bash", "Incorrect shell" + assert passwd_entry.shell == "/bin/bash", "Incorrect shell" - result = shadow.tools.getent.shadow("tuser") - assert result is not None, "User should be found" - assert result.name == "tuser", "Incorrect username" - assert result.password == "!", "Incorrect password" - assert result.last_changed == days_since_epoch(), "Incorrect last changed" - assert result.min_days == 0, "Incorrect min days" - assert result.max_days == 99999, "Incorrect max days" - assert result.warn_days == 7, "Incorrect warn days" + shadow_entry = shadow.tools.getent.shadow("tuser") + assert shadow_entry is not None, "User should be found" + assert shadow_entry.name == "tuser", "Incorrect username" + assert shadow_entry.password == "!", "Incorrect password" + assert shadow_entry.last_changed == days_since_epoch(), "Incorrect last changed" + assert shadow_entry.min_days == 0, "Incorrect min days" + assert shadow_entry.max_days == 99999, "Incorrect max days" + assert shadow_entry.warn_days == 7, "Incorrect warn days" - result = shadow.tools.getent.group("tuser") - assert result is not None, "Group should be found" - assert result.name == "tuser", "Incorrect groupname" - assert result.gid == 1000, "Incorrect GID" + group_entry = shadow.tools.getent.group("tuser") + assert group_entry is not None, "Group should be found" + assert group_entry.name == "tuser", "Incorrect groupname" + assert group_entry.gid == 1000, "Incorrect GID" if shadow.host.features["gshadow"]: - result = shadow.tools.getent.gshadow("tuser") - assert result is not None, "User should be found" - assert result.name == "tuser", "Incorrect username" - assert result.password == "!", "Incorrect password" + gshadow_entry = shadow.tools.getent.gshadow("tuser") + assert gshadow_entry is not None, "User should be found" + assert gshadow_entry.name == "tuser", "Incorrect username" + assert gshadow_entry.password == "!", "Incorrect password" assert shadow.fs.exists("/home/tuser"), "Home folder should be found" @@ -91,15 +91,15 @@ def test_useradd__recreate_deleted_user(shadow: Shadow): shadow.userdel("tuser") shadow.useradd("tuser") - result = shadow.tools.id("tuser") - assert result is not None, "User should be found" - assert result.user.name == "tuser", "Incorrect username" - assert result.user.id == 1000, "Incorrect UID" + id_entry = shadow.tools.id("tuser") + assert id_entry is not None, "User should be found" + assert id_entry.user.name == "tuser", "Incorrect username" + assert id_entry.user.id == 1000, "Incorrect UID" - result = shadow.tools.getent.group("tuser") - assert result is not None, "Group should be found" - assert result.name == "tuser", "Incorrect groupname" - assert result.gid == 1000, "Incorrect GID" + group_entry = shadow.tools.getent.group("tuser") + assert group_entry is not None, "Group should be found" + assert group_entry.name == "tuser", "Incorrect groupname" + assert group_entry.gid == 1000, "Incorrect GID" assert shadow.fs.exists("/home/tuser"), "Home folder should be found" diff --git a/tests/system/tests/test_userdel.py b/tests/system/tests/test_userdel.py index 78c6bb36..f9af13a7 100644 --- a/tests/system/tests/test_userdel.py +++ b/tests/system/tests/test_userdel.py @@ -34,16 +34,16 @@ def test_userdel__homedir_removed(shadow: Shadow): shadow.useradd("tuser") shadow.userdel("-r tuser") - result = shadow.tools.getent.passwd("tuser") - assert result is None, "User should not be found" + passwd_entry = shadow.tools.getent.passwd("tuser") + assert passwd_entry is None, "User should not be found" - result = shadow.tools.getent.shadow("tuser") - assert result is None, "User should not be found" + shadow_entry = shadow.tools.getent.shadow("tuser") + assert shadow_entry is None, "User should not be found" - result = shadow.tools.getent.group("tuser") - assert result is None, "Group should not be found" + group_entry = shadow.tools.getent.group("tuser") + assert group_entry is None, "Group should not be found" - result = shadow.tools.getent.gshadow("tuser1") - assert result is None, "User should not be found" + gshadow_entry = shadow.tools.getent.gshadow("tuser1") + assert gshadow_entry is None, "User should not be found" assert not shadow.fs.exists("/home/tuser"), "Home folder should not exist" diff --git a/tests/system/tests/test_usermod.py b/tests/system/tests/test_usermod.py index fa757a05..b7cf2e3e 100644 --- a/tests/system/tests/test_usermod.py +++ b/tests/system/tests/test_usermod.py @@ -5,8 +5,8 @@ Test usermod from __future__ import annotations import pytest - from pytest_mh.conn import ProcessError + from framework.roles.shadow import Shadow from framework.topology import KnownTopology @@ -35,24 +35,24 @@ def test_usermod__rename_user(shadow: Shadow): shadow.useradd("tuser1") shadow.usermod("-l tuser2 tuser1") - result = shadow.tools.getent.passwd("tuser2") - assert result is not None, "User should be found" - assert result.name == "tuser2", "Incorrect username" - assert result.uid == 1000, "Incorrect UID" + passwd_entry = shadow.tools.getent.passwd("tuser2") + assert passwd_entry is not None, "User should be found" + assert passwd_entry.name == "tuser2", "Incorrect username" + assert passwd_entry.uid == 1000, "Incorrect UID" - result = shadow.tools.getent.shadow("tuser2") - assert result is not None, "User should be found" - assert result.name == "tuser2", "Incorrect username" + shadow_entry = shadow.tools.getent.shadow("tuser2") + assert shadow_entry is not None, "User should be found" + assert shadow_entry.name == "tuser2", "Incorrect username" - result = shadow.tools.getent.group("tuser1") - assert result is not None, "Group should be found" - assert result.name == "tuser1", "Incorrect groupname" - assert result.gid == 1000, "Incorrect GID" + group_entry = shadow.tools.getent.group("tuser1") + assert group_entry is not None, "Group should be found" + assert group_entry.name == "tuser1", "Incorrect groupname" + assert group_entry.gid == 1000, "Incorrect GID" if shadow.host.features["gshadow"]: - result = shadow.tools.getent.gshadow("tuser1") - assert result is not None, "User should be found" - assert result.name == "tuser1", "Incorrect username" + gshadow_entry = shadow.tools.getent.gshadow("tuser1") + assert gshadow_entry is not None, "User should be found" + assert gshadow_entry.name == "tuser1", "Incorrect username" assert shadow.fs.exists("/home/tuser1"), "Home folder should be found" diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am index 6e943183..250004ef 100644 --- a/tests/unit/Makefile.am +++ b/tests/unit/Makefile.am @@ -11,7 +11,7 @@ check_PROGRAMS = \ test_strncpy \ test_strtcpy \ test_typetraits \ - test_xaprintf + test_exit_if_null if ENABLE_LOGIND check_PROGRAMS += \ @@ -129,19 +129,19 @@ test_typetraits_LDADD = \ $(CMOCKA_LIBS) \ $(NULL) -test_xaprintf_SOURCES = \ - ../../lib/string/sprintf/aprintf.c \ - ../../lib/string/sprintf/xaprintf.c \ - test_xaprintf.c \ +test_exit_if_null_SOURCES = \ + ../../lib/exit_if_null.c \ + ../../lib/shadowlog.c \ + ../../lib/alloc/malloc.c \ + test_exit_if_null.c \ $(NULL) -test_xaprintf_CFLAGS = \ +test_exit_if_null_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) -test_xaprintf_LDFLAGS = \ - -Wl,-wrap,vasprintf \ +test_exit_if_null_LDFLAGS = \ -Wl,-wrap,exit \ $(NULL) -test_xaprintf_LDADD = \ +test_exit_if_null_LDADD = \ $(CMOCKA_LIBS) \ $(NULL) diff --git a/tests/unit/Makefile.in b/tests/unit/Makefile.in index 8fdf8ae1..a078350b 100644 --- a/tests/unit/Makefile.in +++ b/tests/unit/Makefile.in @@ -92,7 +92,7 @@ host_triplet = @host@ @HAVE_CMOCKA_TRUE@ test_chkname$(EXEEXT) test_snprintf$(EXEEXT) \ @HAVE_CMOCKA_TRUE@ test_strncpy$(EXEEXT) test_strtcpy$(EXEEXT) \ @HAVE_CMOCKA_TRUE@ test_typetraits$(EXEEXT) \ -@HAVE_CMOCKA_TRUE@ test_xaprintf$(EXEEXT) $(am__EXEEXT_1) +@HAVE_CMOCKA_TRUE@ test_exit_if_null$(EXEEXT) $(am__EXEEXT_1) @ENABLE_LOGIND_TRUE@@HAVE_CMOCKA_TRUE@am__append_1 = \ @ENABLE_LOGIND_TRUE@@HAVE_CMOCKA_TRUE@ test_logind @@ -154,6 +154,20 @@ test_chkname_OBJECTS = $(am_test_chkname_OBJECTS) test_chkname_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_chkname_CFLAGS) \ $(CFLAGS) $(test_chkname_LDFLAGS) $(LDFLAGS) -o $@ +am__test_exit_if_null_SOURCES_DIST = ../../lib/exit_if_null.c \ + ../../lib/shadowlog.c ../../lib/alloc/malloc.c \ + test_exit_if_null.c +@HAVE_CMOCKA_TRUE@am_test_exit_if_null_OBJECTS = ../../lib/test_exit_if_null-exit_if_null.$(OBJEXT) \ +@HAVE_CMOCKA_TRUE@ ../../lib/test_exit_if_null-shadowlog.$(OBJEXT) \ +@HAVE_CMOCKA_TRUE@ ../../lib/alloc/test_exit_if_null-malloc.$(OBJEXT) \ +@HAVE_CMOCKA_TRUE@ test_exit_if_null-test_exit_if_null.$(OBJEXT) +test_exit_if_null_OBJECTS = $(am_test_exit_if_null_OBJECTS) +@HAVE_CMOCKA_TRUE@test_exit_if_null_DEPENDENCIES = \ +@HAVE_CMOCKA_TRUE@ $(am__DEPENDENCIES_1) +test_exit_if_null_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(test_exit_if_null_CFLAGS) $(CFLAGS) \ + $(test_exit_if_null_LDFLAGS) $(LDFLAGS) -o $@ am__test_logind_SOURCES_DIST = ../../lib/logind.c test_logind.c @HAVE_CMOCKA_TRUE@am_test_logind_OBJECTS = \ @HAVE_CMOCKA_TRUE@ ../../lib/test_logind-logind.$(OBJEXT) \ @@ -200,16 +214,6 @@ test_typetraits_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(test_typetraits_CFLAGS) $(CFLAGS) $(test_typetraits_LDFLAGS) \ $(LDFLAGS) -o $@ -am__test_xaprintf_SOURCES_DIST = ../../lib/string/sprintf/aprintf.c \ - ../../lib/string/sprintf/xaprintf.c test_xaprintf.c -@HAVE_CMOCKA_TRUE@am_test_xaprintf_OBJECTS = ../../lib/string/sprintf/test_xaprintf-aprintf.$(OBJEXT) \ -@HAVE_CMOCKA_TRUE@ ../../lib/string/sprintf/test_xaprintf-xaprintf.$(OBJEXT) \ -@HAVE_CMOCKA_TRUE@ test_xaprintf-test_xaprintf.$(OBJEXT) -test_xaprintf_OBJECTS = $(am_test_xaprintf_OBJECTS) -@HAVE_CMOCKA_TRUE@test_xaprintf_DEPENDENCIES = $(am__DEPENDENCIES_1) -test_xaprintf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_xaprintf_CFLAGS) \ - $(CFLAGS) $(test_xaprintf_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -223,27 +227,28 @@ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ../../lib/$(DEPDIR)/test_adds-adds.Po \ ../../lib/$(DEPDIR)/test_chkname-chkname.Po \ + ../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Po \ + ../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Po \ ../../lib/$(DEPDIR)/test_logind-logind.Po \ + ../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Po \ ../../lib/atoi/strtoi/$(DEPDIR)/test_atoi_strtoi-strtoi.Po \ ../../lib/atoi/strtoi/$(DEPDIR)/test_atoi_strtoi-strtou_noneg.Po \ ../../lib/search/cmp/$(DEPDIR)/test_adds-cmp.Po \ ../../lib/string/sprintf/$(DEPDIR)/test_snprintf-snprintf.Po \ - ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Po \ - ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Po \ ../../lib/string/strcpy/$(DEPDIR)/test_strtcpy-strtcpy.Po \ ./$(DEPDIR)/test_adds-test_adds.Po \ ./$(DEPDIR)/test_atoi_strtoi-test_atoi_strtoi.Po \ ./$(DEPDIR)/test_chkname-test_chkname.Po \ + ./$(DEPDIR)/test_exit_if_null-test_exit_if_null.Po \ ./$(DEPDIR)/test_logind-test_logind.Po \ ./$(DEPDIR)/test_snprintf-test_snprintf.Po \ ./$(DEPDIR)/test_strncpy-test_strncpy.Po \ ./$(DEPDIR)/test_strtcpy-test_strtcpy.Po \ - ./$(DEPDIR)/test_typetraits-test_typetraits.Po \ - ./$(DEPDIR)/test_xaprintf-test_xaprintf.Po + ./$(DEPDIR)/test_typetraits-test_typetraits.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -264,19 +269,19 @@ am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(test_adds_SOURCES) $(test_atoi_strtoi_SOURCES) \ - $(test_chkname_SOURCES) $(test_logind_SOURCES) \ - $(test_snprintf_SOURCES) $(test_strncpy_SOURCES) \ - $(test_strtcpy_SOURCES) $(test_typetraits_SOURCES) \ - $(test_xaprintf_SOURCES) + $(test_chkname_SOURCES) $(test_exit_if_null_SOURCES) \ + $(test_logind_SOURCES) $(test_snprintf_SOURCES) \ + $(test_strncpy_SOURCES) $(test_strtcpy_SOURCES) \ + $(test_typetraits_SOURCES) DIST_SOURCES = $(am__test_adds_SOURCES_DIST) \ $(am__test_atoi_strtoi_SOURCES_DIST) \ $(am__test_chkname_SOURCES_DIST) \ + $(am__test_exit_if_null_SOURCES_DIST) \ $(am__test_logind_SOURCES_DIST) \ $(am__test_snprintf_SOURCES_DIST) \ $(am__test_strncpy_SOURCES_DIST) \ $(am__test_strtcpy_SOURCES_DIST) \ - $(am__test_typetraits_SOURCES_DIST) \ - $(am__test_xaprintf_SOURCES_DIST) + $(am__test_typetraits_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -486,7 +491,7 @@ RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test -LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ @@ -501,15 +506,17 @@ am__set_b = \ am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) -TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) -am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ - $(top_srcdir)/test-driver +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/depcomp \ + $(top_srcdir)/build-aux/test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_DISTCHECK_CONFIGURE_FLAGS = @AM_DISTCHECK_CONFIGURE_FLAGS@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ @@ -538,7 +545,6 @@ EGREP = @EGREP@ ETAGS = @ETAGS@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -FILECMD = @FILECMD@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ @@ -582,7 +588,6 @@ LIBSYSTEMD = @LIBSYSTEMD@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ -LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -817,22 +822,22 @@ AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir) @HAVE_CMOCKA_TRUE@ $(CMOCKA_LIBS) \ @HAVE_CMOCKA_TRUE@ $(NULL) -@HAVE_CMOCKA_TRUE@test_xaprintf_SOURCES = \ -@HAVE_CMOCKA_TRUE@ ../../lib/string/sprintf/aprintf.c \ -@HAVE_CMOCKA_TRUE@ ../../lib/string/sprintf/xaprintf.c \ -@HAVE_CMOCKA_TRUE@ test_xaprintf.c \ +@HAVE_CMOCKA_TRUE@test_exit_if_null_SOURCES = \ +@HAVE_CMOCKA_TRUE@ ../../lib/exit_if_null.c \ +@HAVE_CMOCKA_TRUE@ ../../lib/shadowlog.c \ +@HAVE_CMOCKA_TRUE@ ../../lib/alloc/malloc.c \ +@HAVE_CMOCKA_TRUE@ test_exit_if_null.c \ @HAVE_CMOCKA_TRUE@ $(NULL) -@HAVE_CMOCKA_TRUE@test_xaprintf_CFLAGS = \ +@HAVE_CMOCKA_TRUE@test_exit_if_null_CFLAGS = \ @HAVE_CMOCKA_TRUE@ $(AM_CFLAGS) \ @HAVE_CMOCKA_TRUE@ $(NULL) -@HAVE_CMOCKA_TRUE@test_xaprintf_LDFLAGS = \ -@HAVE_CMOCKA_TRUE@ -Wl,-wrap,vasprintf \ +@HAVE_CMOCKA_TRUE@test_exit_if_null_LDFLAGS = \ @HAVE_CMOCKA_TRUE@ -Wl,-wrap,exit \ @HAVE_CMOCKA_TRUE@ $(NULL) -@HAVE_CMOCKA_TRUE@test_xaprintf_LDADD = \ +@HAVE_CMOCKA_TRUE@test_exit_if_null_LDADD = \ @HAVE_CMOCKA_TRUE@ $(CMOCKA_LIBS) \ @HAVE_CMOCKA_TRUE@ $(NULL) @@ -921,6 +926,23 @@ test_atoi_strtoi$(EXEEXT): $(test_atoi_strtoi_OBJECTS) $(test_atoi_strtoi_DEPEND test_chkname$(EXEEXT): $(test_chkname_OBJECTS) $(test_chkname_DEPENDENCIES) $(EXTRA_test_chkname_DEPENDENCIES) @rm -f test_chkname$(EXEEXT) $(AM_V_CCLD)$(test_chkname_LINK) $(test_chkname_OBJECTS) $(test_chkname_LDADD) $(LIBS) +../../lib/test_exit_if_null-exit_if_null.$(OBJEXT): \ + ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp) +../../lib/test_exit_if_null-shadowlog.$(OBJEXT): \ + ../../lib/$(am__dirstamp) ../../lib/$(DEPDIR)/$(am__dirstamp) +../../lib/alloc/$(am__dirstamp): + @$(MKDIR_P) ../../lib/alloc + @: > ../../lib/alloc/$(am__dirstamp) +../../lib/alloc/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) ../../lib/alloc/$(DEPDIR) + @: > ../../lib/alloc/$(DEPDIR)/$(am__dirstamp) +../../lib/alloc/test_exit_if_null-malloc.$(OBJEXT): \ + ../../lib/alloc/$(am__dirstamp) \ + ../../lib/alloc/$(DEPDIR)/$(am__dirstamp) + +test_exit_if_null$(EXEEXT): $(test_exit_if_null_OBJECTS) $(test_exit_if_null_DEPENDENCIES) $(EXTRA_test_exit_if_null_DEPENDENCIES) + @rm -f test_exit_if_null$(EXEEXT) + $(AM_V_CCLD)$(test_exit_if_null_LINK) $(test_exit_if_null_OBJECTS) $(test_exit_if_null_LDADD) $(LIBS) ../../lib/test_logind-logind.$(OBJEXT): ../../lib/$(am__dirstamp) \ ../../lib/$(DEPDIR)/$(am__dirstamp) @@ -961,20 +983,11 @@ test_strtcpy$(EXEEXT): $(test_strtcpy_OBJECTS) $(test_strtcpy_DEPENDENCIES) $(EX test_typetraits$(EXEEXT): $(test_typetraits_OBJECTS) $(test_typetraits_DEPENDENCIES) $(EXTRA_test_typetraits_DEPENDENCIES) @rm -f test_typetraits$(EXEEXT) $(AM_V_CCLD)$(test_typetraits_LINK) $(test_typetraits_OBJECTS) $(test_typetraits_LDADD) $(LIBS) -../../lib/string/sprintf/test_xaprintf-aprintf.$(OBJEXT): \ - ../../lib/string/sprintf/$(am__dirstamp) \ - ../../lib/string/sprintf/$(DEPDIR)/$(am__dirstamp) -../../lib/string/sprintf/test_xaprintf-xaprintf.$(OBJEXT): \ - ../../lib/string/sprintf/$(am__dirstamp) \ - ../../lib/string/sprintf/$(DEPDIR)/$(am__dirstamp) - -test_xaprintf$(EXEEXT): $(test_xaprintf_OBJECTS) $(test_xaprintf_DEPENDENCIES) $(EXTRA_test_xaprintf_DEPENDENCIES) - @rm -f test_xaprintf$(EXEEXT) - $(AM_V_CCLD)$(test_xaprintf_LINK) $(test_xaprintf_OBJECTS) $(test_xaprintf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f ../../lib/*.$(OBJEXT) + -rm -f ../../lib/alloc/*.$(OBJEXT) -rm -f ../../lib/atoi/strtoi/*.$(OBJEXT) -rm -f ../../lib/search/cmp/*.$(OBJEXT) -rm -f ../../lib/string/sprintf/*.$(OBJEXT) @@ -985,23 +998,24 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/test_adds-adds.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/test_chkname-chkname.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/$(DEPDIR)/test_logind-logind.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/atoi/strtoi/$(DEPDIR)/test_atoi_strtoi-strtoi.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/atoi/strtoi/$(DEPDIR)/test_atoi_strtoi-strtou_noneg.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/search/cmp/$(DEPDIR)/test_adds-cmp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/string/sprintf/$(DEPDIR)/test_snprintf-snprintf.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@../../lib/string/strcpy/$(DEPDIR)/test_strtcpy-strtcpy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_adds-test_adds.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_atoi_strtoi-test_atoi_strtoi.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_chkname-test_chkname.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_exit_if_null-test_exit_if_null.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_logind-test_logind.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_snprintf-test_snprintf.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_strncpy-test_strncpy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_strtcpy-test_strtcpy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_typetraits-test_typetraits.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_xaprintf-test_xaprintf.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @@ -1145,6 +1159,62 @@ test_chkname-test_chkname.obj: test_chkname.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_chkname_CFLAGS) $(CFLAGS) -c -o test_chkname-test_chkname.obj `if test -f 'test_chkname.c'; then $(CYGPATH_W) 'test_chkname.c'; else $(CYGPATH_W) '$(srcdir)/test_chkname.c'; fi` +../../lib/test_exit_if_null-exit_if_null.o: ../../lib/exit_if_null.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -MT ../../lib/test_exit_if_null-exit_if_null.o -MD -MP -MF ../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Tpo -c -o ../../lib/test_exit_if_null-exit_if_null.o `test -f '../../lib/exit_if_null.c' || echo '$(srcdir)/'`../../lib/exit_if_null.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Tpo ../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/exit_if_null.c' object='../../lib/test_exit_if_null-exit_if_null.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -c -o ../../lib/test_exit_if_null-exit_if_null.o `test -f '../../lib/exit_if_null.c' || echo '$(srcdir)/'`../../lib/exit_if_null.c + +../../lib/test_exit_if_null-exit_if_null.obj: ../../lib/exit_if_null.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -MT ../../lib/test_exit_if_null-exit_if_null.obj -MD -MP -MF ../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Tpo -c -o ../../lib/test_exit_if_null-exit_if_null.obj `if test -f '../../lib/exit_if_null.c'; then $(CYGPATH_W) '../../lib/exit_if_null.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/exit_if_null.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Tpo ../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/exit_if_null.c' object='../../lib/test_exit_if_null-exit_if_null.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -c -o ../../lib/test_exit_if_null-exit_if_null.obj `if test -f '../../lib/exit_if_null.c'; then $(CYGPATH_W) '../../lib/exit_if_null.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/exit_if_null.c'; fi` + +../../lib/test_exit_if_null-shadowlog.o: ../../lib/shadowlog.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -MT ../../lib/test_exit_if_null-shadowlog.o -MD -MP -MF ../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Tpo -c -o ../../lib/test_exit_if_null-shadowlog.o `test -f '../../lib/shadowlog.c' || echo '$(srcdir)/'`../../lib/shadowlog.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Tpo ../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/shadowlog.c' object='../../lib/test_exit_if_null-shadowlog.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -c -o ../../lib/test_exit_if_null-shadowlog.o `test -f '../../lib/shadowlog.c' || echo '$(srcdir)/'`../../lib/shadowlog.c + +../../lib/test_exit_if_null-shadowlog.obj: ../../lib/shadowlog.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -MT ../../lib/test_exit_if_null-shadowlog.obj -MD -MP -MF ../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Tpo -c -o ../../lib/test_exit_if_null-shadowlog.obj `if test -f '../../lib/shadowlog.c'; then $(CYGPATH_W) '../../lib/shadowlog.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/shadowlog.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Tpo ../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/shadowlog.c' object='../../lib/test_exit_if_null-shadowlog.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -c -o ../../lib/test_exit_if_null-shadowlog.obj `if test -f '../../lib/shadowlog.c'; then $(CYGPATH_W) '../../lib/shadowlog.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/shadowlog.c'; fi` + +../../lib/alloc/test_exit_if_null-malloc.o: ../../lib/alloc/malloc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -MT ../../lib/alloc/test_exit_if_null-malloc.o -MD -MP -MF ../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Tpo -c -o ../../lib/alloc/test_exit_if_null-malloc.o `test -f '../../lib/alloc/malloc.c' || echo '$(srcdir)/'`../../lib/alloc/malloc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Tpo ../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/alloc/malloc.c' object='../../lib/alloc/test_exit_if_null-malloc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -c -o ../../lib/alloc/test_exit_if_null-malloc.o `test -f '../../lib/alloc/malloc.c' || echo '$(srcdir)/'`../../lib/alloc/malloc.c + +../../lib/alloc/test_exit_if_null-malloc.obj: ../../lib/alloc/malloc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -MT ../../lib/alloc/test_exit_if_null-malloc.obj -MD -MP -MF ../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Tpo -c -o ../../lib/alloc/test_exit_if_null-malloc.obj `if test -f '../../lib/alloc/malloc.c'; then $(CYGPATH_W) '../../lib/alloc/malloc.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/alloc/malloc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Tpo ../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/alloc/malloc.c' object='../../lib/alloc/test_exit_if_null-malloc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -c -o ../../lib/alloc/test_exit_if_null-malloc.obj `if test -f '../../lib/alloc/malloc.c'; then $(CYGPATH_W) '../../lib/alloc/malloc.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/alloc/malloc.c'; fi` + +test_exit_if_null-test_exit_if_null.o: test_exit_if_null.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -MT test_exit_if_null-test_exit_if_null.o -MD -MP -MF $(DEPDIR)/test_exit_if_null-test_exit_if_null.Tpo -c -o test_exit_if_null-test_exit_if_null.o `test -f 'test_exit_if_null.c' || echo '$(srcdir)/'`test_exit_if_null.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_exit_if_null-test_exit_if_null.Tpo $(DEPDIR)/test_exit_if_null-test_exit_if_null.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_exit_if_null.c' object='test_exit_if_null-test_exit_if_null.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -c -o test_exit_if_null-test_exit_if_null.o `test -f 'test_exit_if_null.c' || echo '$(srcdir)/'`test_exit_if_null.c + +test_exit_if_null-test_exit_if_null.obj: test_exit_if_null.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -MT test_exit_if_null-test_exit_if_null.obj -MD -MP -MF $(DEPDIR)/test_exit_if_null-test_exit_if_null.Tpo -c -o test_exit_if_null-test_exit_if_null.obj `if test -f 'test_exit_if_null.c'; then $(CYGPATH_W) 'test_exit_if_null.c'; else $(CYGPATH_W) '$(srcdir)/test_exit_if_null.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_exit_if_null-test_exit_if_null.Tpo $(DEPDIR)/test_exit_if_null-test_exit_if_null.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_exit_if_null.c' object='test_exit_if_null-test_exit_if_null.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_exit_if_null_CFLAGS) $(CFLAGS) -c -o test_exit_if_null-test_exit_if_null.obj `if test -f 'test_exit_if_null.c'; then $(CYGPATH_W) 'test_exit_if_null.c'; else $(CYGPATH_W) '$(srcdir)/test_exit_if_null.c'; fi` + ../../lib/test_logind-logind.o: ../../lib/logind.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_logind_CFLAGS) $(CFLAGS) -MT ../../lib/test_logind-logind.o -MD -MP -MF ../../lib/$(DEPDIR)/test_logind-logind.Tpo -c -o ../../lib/test_logind-logind.o `test -f '../../lib/logind.c' || echo '$(srcdir)/'`../../lib/logind.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/$(DEPDIR)/test_logind-logind.Tpo ../../lib/$(DEPDIR)/test_logind-logind.Po @@ -1257,48 +1327,6 @@ test_typetraits-test_typetraits.obj: test_typetraits.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_typetraits_CFLAGS) $(CFLAGS) -c -o test_typetraits-test_typetraits.obj `if test -f 'test_typetraits.c'; then $(CYGPATH_W) 'test_typetraits.c'; else $(CYGPATH_W) '$(srcdir)/test_typetraits.c'; fi` -../../lib/string/sprintf/test_xaprintf-aprintf.o: ../../lib/string/sprintf/aprintf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -MT ../../lib/string/sprintf/test_xaprintf-aprintf.o -MD -MP -MF ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Tpo -c -o ../../lib/string/sprintf/test_xaprintf-aprintf.o `test -f '../../lib/string/sprintf/aprintf.c' || echo '$(srcdir)/'`../../lib/string/sprintf/aprintf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Tpo ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/string/sprintf/aprintf.c' object='../../lib/string/sprintf/test_xaprintf-aprintf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -c -o ../../lib/string/sprintf/test_xaprintf-aprintf.o `test -f '../../lib/string/sprintf/aprintf.c' || echo '$(srcdir)/'`../../lib/string/sprintf/aprintf.c - -../../lib/string/sprintf/test_xaprintf-aprintf.obj: ../../lib/string/sprintf/aprintf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -MT ../../lib/string/sprintf/test_xaprintf-aprintf.obj -MD -MP -MF ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Tpo -c -o ../../lib/string/sprintf/test_xaprintf-aprintf.obj `if test -f '../../lib/string/sprintf/aprintf.c'; then $(CYGPATH_W) '../../lib/string/sprintf/aprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/string/sprintf/aprintf.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Tpo ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/string/sprintf/aprintf.c' object='../../lib/string/sprintf/test_xaprintf-aprintf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -c -o ../../lib/string/sprintf/test_xaprintf-aprintf.obj `if test -f '../../lib/string/sprintf/aprintf.c'; then $(CYGPATH_W) '../../lib/string/sprintf/aprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/string/sprintf/aprintf.c'; fi` - -../../lib/string/sprintf/test_xaprintf-xaprintf.o: ../../lib/string/sprintf/xaprintf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -MT ../../lib/string/sprintf/test_xaprintf-xaprintf.o -MD -MP -MF ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Tpo -c -o ../../lib/string/sprintf/test_xaprintf-xaprintf.o `test -f '../../lib/string/sprintf/xaprintf.c' || echo '$(srcdir)/'`../../lib/string/sprintf/xaprintf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Tpo ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/string/sprintf/xaprintf.c' object='../../lib/string/sprintf/test_xaprintf-xaprintf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -c -o ../../lib/string/sprintf/test_xaprintf-xaprintf.o `test -f '../../lib/string/sprintf/xaprintf.c' || echo '$(srcdir)/'`../../lib/string/sprintf/xaprintf.c - -../../lib/string/sprintf/test_xaprintf-xaprintf.obj: ../../lib/string/sprintf/xaprintf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -MT ../../lib/string/sprintf/test_xaprintf-xaprintf.obj -MD -MP -MF ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Tpo -c -o ../../lib/string/sprintf/test_xaprintf-xaprintf.obj `if test -f '../../lib/string/sprintf/xaprintf.c'; then $(CYGPATH_W) '../../lib/string/sprintf/xaprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/string/sprintf/xaprintf.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Tpo ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../lib/string/sprintf/xaprintf.c' object='../../lib/string/sprintf/test_xaprintf-xaprintf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -c -o ../../lib/string/sprintf/test_xaprintf-xaprintf.obj `if test -f '../../lib/string/sprintf/xaprintf.c'; then $(CYGPATH_W) '../../lib/string/sprintf/xaprintf.c'; else $(CYGPATH_W) '$(srcdir)/../../lib/string/sprintf/xaprintf.c'; fi` - -test_xaprintf-test_xaprintf.o: test_xaprintf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -MT test_xaprintf-test_xaprintf.o -MD -MP -MF $(DEPDIR)/test_xaprintf-test_xaprintf.Tpo -c -o test_xaprintf-test_xaprintf.o `test -f 'test_xaprintf.c' || echo '$(srcdir)/'`test_xaprintf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_xaprintf-test_xaprintf.Tpo $(DEPDIR)/test_xaprintf-test_xaprintf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_xaprintf.c' object='test_xaprintf-test_xaprintf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -c -o test_xaprintf-test_xaprintf.o `test -f 'test_xaprintf.c' || echo '$(srcdir)/'`test_xaprintf.c - -test_xaprintf-test_xaprintf.obj: test_xaprintf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -MT test_xaprintf-test_xaprintf.obj -MD -MP -MF $(DEPDIR)/test_xaprintf-test_xaprintf.Tpo -c -o test_xaprintf-test_xaprintf.obj `if test -f 'test_xaprintf.c'; then $(CYGPATH_W) 'test_xaprintf.c'; else $(CYGPATH_W) '$(srcdir)/test_xaprintf.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_xaprintf-test_xaprintf.Tpo $(DEPDIR)/test_xaprintf-test_xaprintf.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test_xaprintf.c' object='test_xaprintf-test_xaprintf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_xaprintf_CFLAGS) $(CFLAGS) -c -o test_xaprintf-test_xaprintf.obj `if test -f 'test_xaprintf.c'; then $(CYGPATH_W) 'test_xaprintf.c'; else $(CYGPATH_W) '$(srcdir)/test_xaprintf.c'; fi` - mostlyclean-libtool: -rm -f *.lo @@ -1547,9 +1575,9 @@ test_typetraits.log: test_typetraits$(EXEEXT) --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) -test_xaprintf.log: test_xaprintf$(EXEEXT) - @p='test_xaprintf$(EXEEXT)'; \ - b='test_xaprintf'; \ +test_exit_if_null.log: test_exit_if_null$(EXEEXT) + @p='test_exit_if_null$(EXEEXT)'; \ + b='test_exit_if_null'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ @@ -1645,6 +1673,8 @@ distclean-generic: -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f ../../lib/$(DEPDIR)/$(am__dirstamp) -rm -f ../../lib/$(am__dirstamp) + -rm -f ../../lib/alloc/$(DEPDIR)/$(am__dirstamp) + -rm -f ../../lib/alloc/$(am__dirstamp) -rm -f ../../lib/atoi/strtoi/$(DEPDIR)/$(am__dirstamp) -rm -f ../../lib/atoi/strtoi/$(am__dirstamp) -rm -f ../../lib/search/cmp/$(DEPDIR)/$(am__dirstamp) @@ -1665,23 +1695,24 @@ clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ distclean: distclean-am -rm -f ../../lib/$(DEPDIR)/test_adds-adds.Po -rm -f ../../lib/$(DEPDIR)/test_chkname-chkname.Po + -rm -f ../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Po + -rm -f ../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Po -rm -f ../../lib/$(DEPDIR)/test_logind-logind.Po + -rm -f ../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Po -rm -f ../../lib/atoi/strtoi/$(DEPDIR)/test_atoi_strtoi-strtoi.Po -rm -f ../../lib/atoi/strtoi/$(DEPDIR)/test_atoi_strtoi-strtou_noneg.Po -rm -f ../../lib/search/cmp/$(DEPDIR)/test_adds-cmp.Po -rm -f ../../lib/string/sprintf/$(DEPDIR)/test_snprintf-snprintf.Po - -rm -f ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Po - -rm -f ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Po -rm -f ../../lib/string/strcpy/$(DEPDIR)/test_strtcpy-strtcpy.Po -rm -f ./$(DEPDIR)/test_adds-test_adds.Po -rm -f ./$(DEPDIR)/test_atoi_strtoi-test_atoi_strtoi.Po -rm -f ./$(DEPDIR)/test_chkname-test_chkname.Po + -rm -f ./$(DEPDIR)/test_exit_if_null-test_exit_if_null.Po -rm -f ./$(DEPDIR)/test_logind-test_logind.Po -rm -f ./$(DEPDIR)/test_snprintf-test_snprintf.Po -rm -f ./$(DEPDIR)/test_strncpy-test_strncpy.Po -rm -f ./$(DEPDIR)/test_strtcpy-test_strtcpy.Po -rm -f ./$(DEPDIR)/test_typetraits-test_typetraits.Po - -rm -f ./$(DEPDIR)/test_xaprintf-test_xaprintf.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -1729,23 +1760,24 @@ installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ../../lib/$(DEPDIR)/test_adds-adds.Po -rm -f ../../lib/$(DEPDIR)/test_chkname-chkname.Po + -rm -f ../../lib/$(DEPDIR)/test_exit_if_null-exit_if_null.Po + -rm -f ../../lib/$(DEPDIR)/test_exit_if_null-shadowlog.Po -rm -f ../../lib/$(DEPDIR)/test_logind-logind.Po + -rm -f ../../lib/alloc/$(DEPDIR)/test_exit_if_null-malloc.Po -rm -f ../../lib/atoi/strtoi/$(DEPDIR)/test_atoi_strtoi-strtoi.Po -rm -f ../../lib/atoi/strtoi/$(DEPDIR)/test_atoi_strtoi-strtou_noneg.Po -rm -f ../../lib/search/cmp/$(DEPDIR)/test_adds-cmp.Po -rm -f ../../lib/string/sprintf/$(DEPDIR)/test_snprintf-snprintf.Po - -rm -f ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-aprintf.Po - -rm -f ../../lib/string/sprintf/$(DEPDIR)/test_xaprintf-xaprintf.Po -rm -f ../../lib/string/strcpy/$(DEPDIR)/test_strtcpy-strtcpy.Po -rm -f ./$(DEPDIR)/test_adds-test_adds.Po -rm -f ./$(DEPDIR)/test_atoi_strtoi-test_atoi_strtoi.Po -rm -f ./$(DEPDIR)/test_chkname-test_chkname.Po + -rm -f ./$(DEPDIR)/test_exit_if_null-test_exit_if_null.Po -rm -f ./$(DEPDIR)/test_logind-test_logind.Po -rm -f ./$(DEPDIR)/test_snprintf-test_snprintf.Po -rm -f ./$(DEPDIR)/test_strncpy-test_strncpy.Po -rm -f ./$(DEPDIR)/test_strtcpy-test_strtcpy.Po -rm -f ./$(DEPDIR)/test_typetraits-test_typetraits.Po - -rm -f ./$(DEPDIR)/test_xaprintf-test_xaprintf.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic diff --git a/tests/unit/test_adds.c b/tests/unit/test_adds.c index fdc671f5..913a179d 100644 --- a/tests/unit/test_adds.c +++ b/tests/unit/test_adds.c @@ -13,13 +13,13 @@ #include "adds.h" -static void test_addsl_2_ok(void **state); -static void test_addsl_2_underflow(void **state); -static void test_addsl_2_overflow(void **state); -static void test_addsl_3_ok(void **state); -static void test_addsl_3_underflow(void **state); -static void test_addsl_3_overflow(void **state); -static void test_addsl_5_ok(void **state); +static void test_addsl_2_ok(void **); +static void test_addsl_2_underflow(void **); +static void test_addsl_2_overflow(void **); +static void test_addsl_3_ok(void **); +static void test_addsl_3_underflow(void **); +static void test_addsl_3_overflow(void **); +static void test_addsl_5_ok(void **); int @@ -40,7 +40,7 @@ main(void) static void -test_addsl_2_ok(void **state) +test_addsl_2_ok(void **) { assert_true(addsl(1, 3) == 1 + 3); assert_true(addsl(-4321, 7) == -4321 + 7); @@ -54,7 +54,7 @@ test_addsl_2_ok(void **state) static void -test_addsl_2_underflow(void **state) +test_addsl_2_underflow(void **) { assert_true(addsl(LONG_MIN, -1) == LONG_MIN); assert_true(addsl(LONG_MIN + 3, -7) == LONG_MIN); @@ -63,7 +63,7 @@ test_addsl_2_underflow(void **state) static void -test_addsl_2_overflow(void **state) +test_addsl_2_overflow(void **) { assert_true(addsl(LONG_MAX, 1) == LONG_MAX); assert_true(addsl(LONG_MAX - 3, 7) == LONG_MAX); @@ -72,7 +72,7 @@ test_addsl_2_overflow(void **state) static void -test_addsl_3_ok(void **state) +test_addsl_3_ok(void **) { assert_true(addsl(1, 2, 3) == 1 + 2 + 3); assert_true(addsl(LONG_MIN, -3, 4) == LONG_MIN + 4 - 3); @@ -82,7 +82,7 @@ test_addsl_3_ok(void **state) static void -test_addsl_3_underflow(void **state) +test_addsl_3_underflow(void **) { assert_true(addsl(LONG_MIN, 2, -3) == LONG_MIN); assert_true(addsl(LONG_MIN, -1, 0) == LONG_MIN); @@ -90,7 +90,7 @@ test_addsl_3_underflow(void **state) static void -test_addsl_3_overflow(void **state) +test_addsl_3_overflow(void **) { assert_true(addsl(LONG_MAX, -1, 2) == LONG_MAX); assert_true(addsl(LONG_MAX, +1, 0) == LONG_MAX); @@ -99,7 +99,7 @@ test_addsl_3_overflow(void **state) static void -test_addsl_5_ok(void **state) +test_addsl_5_ok(void **) { assert_true(addsl(LONG_MAX, LONG_MAX, LONG_MIN, LONG_MIN, 44) == 42); } diff --git a/tests/unit/test_atoi_strtoi.c b/tests/unit/test_atoi_strtoi.c index 782c8a4c..3947745b 100644 --- a/tests/unit/test_atoi_strtoi.c +++ b/tests/unit/test_atoi_strtoi.c @@ -18,9 +18,9 @@ #include "atoi/strtoi/strtou_noneg.h" -static void test_strtoi(void **state); -static void test_strtou(void **state); -static void test_strtou_noneg(void **state); +static void test_strtoi(void **); +static void test_strtou(void **); +static void test_strtou_noneg(void **); int @@ -37,7 +37,7 @@ main(void) static void -test_strtoi(void **state) +test_strtoi(void **) { int status; char *end; @@ -78,7 +78,7 @@ test_strtoi(void **state) static void -test_strtou(void **state) +test_strtou(void **) { int status; char *end; @@ -119,7 +119,7 @@ test_strtou(void **state) static void -test_strtou_noneg(void **state) +test_strtou_noneg(void **) { int status; char *end; diff --git a/tests/unit/test_chkname.c b/tests/unit/test_chkname.c index 3f190a77..dfb04c92 100644 --- a/tests/unit/test_chkname.c +++ b/tests/unit/test_chkname.c @@ -20,15 +20,15 @@ #include "chkname.h" -static void test_is_valid_user_name_ok(void **state); -static void test_is_valid_user_name_ok_dollar(void **state); -static void test_is_valid_user_name_nok_dash(void **state); -static void test_is_valid_user_name_nok_dir(void **state); -static void test_is_valid_user_name_nok_dollar(void **state); -static void test_is_valid_user_name_nok_empty(void **state); -static void test_is_valid_user_name_nok_numeric(void **state); -static void test_is_valid_user_name_nok_otherchars(void **state); -static void test_is_valid_user_name_long(void **state); +static void test_is_valid_user_name_ok(void **); +static void test_is_valid_user_name_ok_dollar(void **); +static void test_is_valid_user_name_nok_dash(void **); +static void test_is_valid_user_name_nok_dir(void **); +static void test_is_valid_user_name_nok_dollar(void **); +static void test_is_valid_user_name_nok_empty(void **); +static void test_is_valid_user_name_nok_numeric(void **); +static void test_is_valid_user_name_nok_otherchars(void **); +static void test_is_valid_user_name_long(void **); int @@ -51,7 +51,7 @@ main(void) static void -test_is_valid_user_name_ok(void **state) +test_is_valid_user_name_ok(void **) { assert_true(is_valid_user_name("alx")); assert_true(is_valid_user_name("u-ser")); @@ -66,7 +66,7 @@ test_is_valid_user_name_ok(void **state) static void -test_is_valid_user_name_ok_dollar(void **state) +test_is_valid_user_name_ok_dollar(void **) { // Non-POSIX extension for Samba 3.x "add machine script". assert_true(is_valid_user_name("dollar$")); @@ -75,7 +75,7 @@ test_is_valid_user_name_ok_dollar(void **state) static void -test_is_valid_user_name_nok_dash(void **state) +test_is_valid_user_name_nok_dash(void **) { assert_true(false == is_valid_user_name("-")); assert_true(false == is_valid_user_name("-not-valid")); @@ -84,7 +84,7 @@ test_is_valid_user_name_nok_dash(void **state) static void -test_is_valid_user_name_nok_dir(void **state) +test_is_valid_user_name_nok_dir(void **) { assert_true(false == is_valid_user_name(".")); assert_true(false == is_valid_user_name("..")); @@ -92,7 +92,7 @@ test_is_valid_user_name_nok_dir(void **state) static void -test_is_valid_user_name_nok_dollar(void **state) +test_is_valid_user_name_nok_dollar(void **) { assert_true(false == is_valid_user_name("$")); assert_true(false == is_valid_user_name("$dollar")); @@ -103,14 +103,14 @@ test_is_valid_user_name_nok_dollar(void **state) static void -test_is_valid_user_name_nok_empty(void **state) +test_is_valid_user_name_nok_empty(void **) { assert_true(false == is_valid_user_name("")); } static void -test_is_valid_user_name_nok_numeric(void **state) +test_is_valid_user_name_nok_numeric(void **) { assert_true(false == is_valid_user_name("6")); assert_true(false == is_valid_user_name("42")); @@ -118,7 +118,7 @@ test_is_valid_user_name_nok_numeric(void **state) static void -test_is_valid_user_name_nok_otherchars(void **state) +test_is_valid_user_name_nok_otherchars(void **) { assert_true(false == is_valid_user_name("no spaces")); assert_true(false == is_valid_user_name("no,")); @@ -128,13 +128,13 @@ test_is_valid_user_name_nok_otherchars(void **state) static void -test_is_valid_user_name_long(void **state) +test_is_valid_user_name_long(void **) { size_t max; char *name; max = sysconf(_SC_LOGIN_NAME_MAX); - name = MALLOC(max + 1, char); + name = malloc_T(max + 1, char); assert_true(name != NULL); memset(name, '_', max); diff --git a/tests/unit/test_exit_if_null.c b/tests/unit/test_exit_if_null.c new file mode 100644 index 00000000..819239f5 --- /dev/null +++ b/tests/unit/test_exit_if_null.c @@ -0,0 +1,96 @@ +// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include "alloc/malloc.h" + +#include +#include +#include +#include + +#include // Required by +#include // Required by +#include // Required by +#include // Required by +#include + +#include "sizeof.h" + + +#define assert_unreachable() assert_true(0) + +#define EXIT_CALLED (42) + + +static jmp_buf jmpb; + + +void __wrap_exit(int); + +static void test_exit_if_null_exit(void **); +static void test_exit_if_null_ok(void **); + + +int +main(void) +{ + const struct CMUnitTest tests[] = { + cmocka_unit_test(test_exit_if_null_exit), + cmocka_unit_test(test_exit_if_null_ok), + }; + + return cmocka_run_group_tests(tests, NULL, NULL); +} + + +void +__wrap_exit(int) +{ + longjmp(jmpb, EXIT_CALLED); +} + + +static void +test_exit_if_null_exit(void **) +{ + char *volatile p; + + p = "before"; + + switch (setjmp(jmpb)) { + case 0: + p = "called"; + p = xmalloc_T(SIZE_MAX, char); + assert_unreachable(); + break; + case EXIT_CALLED: + assert_string_equal(p, "called"); + p = "test_ok"; + break; + default: + assert_unreachable(); + break; + } + + assert_string_equal(p, "test_ok"); +} + + +static void +test_exit_if_null_ok(void **) +{ + char *p; + + static const char foo[] = "foo1bar"; + + p = xmalloc_T(countof(foo), char); + assert_true(p != NULL); + strcpy(p, foo); + assert_string_equal(p, "foo1bar"); + free(p); + + p = xmalloc_T(0, char); + assert_true(p != NULL); + free(p); +} diff --git a/tests/unit/test_logind.c b/tests/unit/test_logind.c index f91782ce..6cfc6d91 100644 --- a/tests/unit/test_logind.c +++ b/tests/unit/test_logind.c @@ -19,13 +19,13 @@ * WRAPPERS **********************/ struct passwd * -__wrap_prefix_getpwnam(uid_t uid) +__wrap_prefix_getpwnam(uid_t) { return (struct passwd*) mock(); } int -__wrap_sd_uid_get_sessions(uid_t uid, int require_active, char ***sessions) +__wrap_sd_uid_get_sessions(uid_t, int, char ***) { return mock(); } @@ -33,7 +33,7 @@ __wrap_sd_uid_get_sessions(uid_t uid, int require_active, char ***sessions) /*********************** * TEST **********************/ -static void test_active_sessions_count_return_ok(void **state) +static void test_active_sessions_count_return_ok(void **) { int count; struct passwd *pw = malloc(sizeof(struct passwd)); @@ -46,7 +46,7 @@ static void test_active_sessions_count_return_ok(void **state) assert_int_equal(count, 1); } -static void test_active_sessions_count_prefix_getpwnam_failure(void **state) +static void test_active_sessions_count_prefix_getpwnam_failure(void **) { int count; struct passwd *pw = NULL; diff --git a/tests/unit/test_snprintf.c b/tests/unit/test_snprintf.c index b5144a61..df778914 100644 --- a/tests/unit/test_snprintf.c +++ b/tests/unit/test_snprintf.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include #include @@ -17,16 +17,16 @@ #include "string/sprintf/snprintf.h" -static void test_SNPRINTF_trunc(void **state); -static void test_SNPRINTF_ok(void **state); +static void test_stprintf_a_trunc(void **); +static void test_stprintf_a_ok(void **); int main(void) { const struct CMUnitTest tests[] = { - cmocka_unit_test(test_SNPRINTF_trunc), - cmocka_unit_test(test_SNPRINTF_ok), + cmocka_unit_test(test_stprintf_a_trunc), + cmocka_unit_test(test_stprintf_a_ok), }; return cmocka_run_group_tests(tests, NULL, NULL); @@ -34,33 +34,33 @@ main(void) static void -test_SNPRINTF_trunc(void **state) +test_stprintf_a_trunc(void **) { char buf[countof("foo")]; // Test that we're not returning SIZE_MAX - assert_true(SNPRINTF(buf, "f%su", "oo") < 0); + assert_true(stprintf_a(buf, "f%su", "oo") < 0); assert_true(strcmp(buf, "foo") == 0); - assert_true(SNPRINTF(buf, "barbaz") == -1); + assert_true(stprintf_a(buf, "barbaz") == -1); assert_true(strcmp(buf, "bar") == 0); } static void -test_SNPRINTF_ok(void **state) +test_stprintf_a_ok(void **) { char buf[countof("foo")]; - assert_true(SNPRINTF(buf, "%s", "foo") == strlen("foo")); + assert_true(stprintf_a(buf, "%s", "foo") == strlen("foo")); assert_true(strcmp(buf, "foo") == 0); - assert_true(SNPRINTF(buf, "%do", 1) == strlen("1o")); + assert_true(stprintf_a(buf, "%do", 1) == strlen("1o")); assert_true(strcmp(buf, "1o") == 0); - assert_true(SNPRINTF(buf, "f") == strlen("f")); + assert_true(stprintf_a(buf, "f") == strlen("f")); assert_true(strcmp(buf, "f") == 0); - assert_true(SNPRINTF(buf, "") == strlen("")); + assert_true(stprintf_a(buf, "") == strlen("")); assert_true(strcmp(buf, "") == 0); } diff --git a/tests/unit/test_strncpy.c b/tests/unit/test_strncpy.c index dedd4e2b..3da04315 100644 --- a/tests/unit/test_strncpy.c +++ b/tests/unit/test_strncpy.c @@ -4,7 +4,7 @@ */ -#include +#include "config.h" #include @@ -18,18 +18,18 @@ #include "string/strcpy/strncpy.h" -static void test_STRNCPY_trunc(void **state); -static void test_STRNCPY_fit(void **state); -static void test_STRNCPY_pad(void **state); +static void test_strncpy_a_trunc(void **); +static void test_strncpy_a_fit(void **); +static void test_strncpy_a_pad(void **); int main(void) { const struct CMUnitTest tests[] = { - cmocka_unit_test(test_STRNCPY_trunc), - cmocka_unit_test(test_STRNCPY_fit), - cmocka_unit_test(test_STRNCPY_pad), + cmocka_unit_test(test_strncpy_a_trunc), + cmocka_unit_test(test_strncpy_a_fit), + cmocka_unit_test(test_strncpy_a_pad), }; return cmocka_run_group_tests(tests, NULL, NULL); @@ -37,49 +37,49 @@ main(void) static void -test_STRNCPY_trunc(void **state) +test_strncpy_a_trunc(void **) { char buf[3]; char src1[4] = {'f', 'o', 'o', 'o'}; char res1[3] = {'f', 'o', 'o'}; - assert_true(memcmp(res1, STRNCPY(buf, src1), sizeof(buf)) == 0); + assert_true(memcmp(res1, strncpy_a(buf, src1), sizeof(buf)) == 0); char src2[5] = "barb"; char res2[3] = {'b', 'a', 'r'}; - assert_true(memcmp(res2, STRNCPY(buf, src2), sizeof(buf)) == 0); + assert_true(memcmp(res2, strncpy_a(buf, src2), sizeof(buf)) == 0); } static void -test_STRNCPY_fit(void **state) +test_strncpy_a_fit(void **) { char buf[3]; char src1[3] = {'b', 'a', 'z'}; char res1[3] = {'b', 'a', 'z'}; - assert_true(memcmp(res1, STRNCPY(buf, src1), sizeof(buf)) == 0); + assert_true(memcmp(res1, strncpy_a(buf, src1), sizeof(buf)) == 0); char src2[4] = "qwe"; char res2[3] = {'q', 'w', 'e'}; - assert_true(memcmp(res2, STRNCPY(buf, src2), sizeof(buf)) == 0); + assert_true(memcmp(res2, strncpy_a(buf, src2), sizeof(buf)) == 0); } static void -test_STRNCPY_pad(void **state) +test_strncpy_a_pad(void **) { char buf[3]; char src1[3] = "as"; char res1[3] = {'a', 's', 0}; - assert_true(memcmp(res1, STRNCPY(buf, src1), sizeof(buf)) == 0); + assert_true(memcmp(res1, strncpy_a(buf, src1), sizeof(buf)) == 0); char src2[3] = ""; char res2[3] = {0, 0, 0}; - assert_true(memcmp(res2, STRNCPY(buf, src2), sizeof(buf)) == 0); + assert_true(memcmp(res2, strncpy_a(buf, src2), sizeof(buf)) == 0); char src3[3] = {'a', 0, 'b'}; char res3[3] = {'a', 0, 0}; - assert_true(memcmp(res3, STRNCPY(buf, src3), sizeof(buf)) == 0); + assert_true(memcmp(res3, strncpy_a(buf, src3), sizeof(buf)) == 0); } diff --git a/tests/unit/test_strtcpy.c b/tests/unit/test_strtcpy.c index edf8fc9f..e4ce1572 100644 --- a/tests/unit/test_strtcpy.c +++ b/tests/unit/test_strtcpy.c @@ -4,7 +4,7 @@ */ -#include +#include "config.h" #include @@ -18,16 +18,16 @@ #include "string/strcpy/strtcpy.h" -static void test_STRTCPY_trunc(void **state); -static void test_STRTCPY_ok(void **state); +static void test_strtcpy_a_trunc(void **); +static void test_strtcpy_a_ok(void **); int main(void) { const struct CMUnitTest tests[] = { - cmocka_unit_test(test_STRTCPY_trunc), - cmocka_unit_test(test_STRTCPY_ok), + cmocka_unit_test(test_strtcpy_a_trunc), + cmocka_unit_test(test_strtcpy_a_ok), }; return cmocka_run_group_tests(tests, NULL, NULL); @@ -35,33 +35,33 @@ main(void) static void -test_STRTCPY_trunc(void **state) +test_strtcpy_a_trunc(void **) { char buf[countof("foo")]; // Test that we're not returning SIZE_MAX - assert_true(STRTCPY(buf, "fooo") < 0); + assert_true(strtcpy_a(buf, "fooo") < 0); assert_string_equal(buf, "foo"); - assert_int_equal(STRTCPY(buf, "barbaz"), -1); + assert_int_equal(strtcpy_a(buf, "barbaz"), -1); assert_string_equal(buf, "bar"); } static void -test_STRTCPY_ok(void **state) +test_strtcpy_a_ok(void **) { char buf[countof("foo")]; - assert_int_equal(STRTCPY(buf, "foo"), strlen("foo")); + assert_int_equal(strtcpy_a(buf, "foo"), strlen("foo")); assert_string_equal(buf, "foo"); - assert_int_equal(STRTCPY(buf, "fo"), strlen("fo")); + assert_int_equal(strtcpy_a(buf, "fo"), strlen("fo")); assert_string_equal(buf, "fo"); - assert_int_equal(STRTCPY(buf, "f"), strlen("f")); + assert_int_equal(strtcpy_a(buf, "f"), strlen("f")); assert_string_equal(buf, "f"); - assert_int_equal(STRTCPY(buf, ""), strlen("")); + assert_int_equal(strtcpy_a(buf, ""), strlen("")); assert_string_equal(buf, ""); } diff --git a/tests/unit/test_typetraits.c b/tests/unit/test_typetraits.c index 4aeb616b..d1e6ebc3 100644 --- a/tests/unit/test_typetraits.c +++ b/tests/unit/test_typetraits.c @@ -2,7 +2,7 @@ // SPDX-License-Identifier: BSD-3-Clause -#include +#include "config.h" #include // Required by #include // Required by @@ -13,8 +13,8 @@ #include "typetraits.h" -static void test_type_max(void **state); -static void test_type_min(void **state); +static void test_type_max(void **); +static void test_type_min(void **); int @@ -30,7 +30,7 @@ main(void) static void -test_type_max(void **state) +test_type_max(void **) { assert_true(type_max(long) == LONG_MAX); assert_true(type_max(unsigned long) == ULONG_MAX); @@ -43,7 +43,7 @@ test_type_max(void **state) static void -test_type_min(void **state) +test_type_min(void **) { assert_true(type_min(long) == LONG_MIN); assert_true(type_min(unsigned long) == 0); diff --git a/tests/unit/test_xaprintf.c b/tests/unit/test_xaprintf.c deleted file mode 100644 index 156528a1..00000000 --- a/tests/unit/test_xaprintf.c +++ /dev/null @@ -1,102 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar -// SPDX-License-Identifier: BSD-3-Clause - - -#include -#include -#include -#include -#include - -#include // Required by -#include // Required by -#include // Required by -#include // Required by -#include - -#include "string/sprintf/xaprintf.h" - - -#define smock() _Generic(mock(), uintmax_t: (intmax_t) mock()) -#define assert_unreachable() assert_true(0) - -#define EXIT_CALLED (42) - - -static jmp_buf jmpb; - - -int __real_vasprintf(char **restrict p, const char *restrict fmt, va_list ap); -int __wrap_vasprintf(char **restrict p, const char *restrict fmt, va_list ap); -void __wrap_exit(int status); - -static void test_xaprintf_exit(void **state); -static void test_xaprintf_ok(void **state); - - -int -main(void) -{ - const struct CMUnitTest tests[] = { - cmocka_unit_test(test_xaprintf_exit), - cmocka_unit_test(test_xaprintf_ok), - }; - - return cmocka_run_group_tests(tests, NULL, NULL); -} - - -int -__wrap_vasprintf(char **restrict p, const char *restrict fmt, va_list ap) -{ - return smock() == -1 ? -1 : __real_vasprintf(p, fmt, ap); -} - - -void -__wrap_exit(int status) -{ - longjmp(jmpb, EXIT_CALLED); -} - - -static void -test_xaprintf_exit(void **state) -{ - char *volatile p; - - will_return(__wrap_vasprintf, -1); - - p = "before"; - - switch (setjmp(jmpb)) { - case 0: - p = "xaprintf_called"; - p = xaprintf("foo%s", "bar"); - assert_unreachable(); - break; - case EXIT_CALLED: - assert_true(strcmp(p, "xaprintf_called")); - p = "test_ok"; - break; - default: - assert_unreachable(); - break; - } - - assert_true(strcmp(p, "test_ok")); -} - - -static void -test_xaprintf_ok(void **state) -{ - char *p; - - // Trick: vasprintf(3) will actually return the new string, not 0. - will_return(__wrap_vasprintf, 0); - - p = xaprintf("foo%d%s", 1, "bar"); - assert_string_equal(p, "foo1bar"); - free(p); -} diff --git a/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/chpasswd.test b/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/chpasswd.test index 26602134..6537750b 100755 --- a/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/chpasswd.test +++ b/tests/usertools/chpasswd-PAM/04_chpasswd_no_shadow_entry/chpasswd.test @@ -8,7 +8,7 @@ cd $(dirname $0) . ../../../common/log.sh log_start "$0" "chpasswd changes the passwd entry if there are no shadow entries" -# FIXME: The PAM and !PAM versions differs: +# FIXME: the PAM and !PAM versions differ: # PAM will create a shadow entry if the shadow file exists # !PAM will update the passwd entry and leave the shadow file untouched diff --git a/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/chpasswd.test b/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/chpasswd.test index c3412858..6ce759a6 100755 --- a/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/chpasswd.test +++ b/tests/usertools/chpasswd-PAM/29_chpasswd-e_no_shadow_entry/chpasswd.test @@ -8,7 +8,7 @@ cd $(dirname $0) . ../../../common/log.sh log_start "$0" "chpasswd changes the passwd entry if there are no shadow entries" -# FIXME: The PAM and !PAM versions differs: +# FIXME: the PAM and !PAM versions differ: # PAM will create a shadow entry if the shadow file exists # !PAM will update the passwd entry and leave the shadow file untouched diff --git a/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/chpasswd.test b/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/chpasswd.test index d97d8b56..ca346885 100755 --- a/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/chpasswd.test +++ b/tests/usertools/chpasswd/04_chpasswd_no_shadow_entry/chpasswd.test @@ -8,7 +8,7 @@ cd $(dirname $0) . ../../../common/log.sh log_start "$0" "chpasswd changes the passwd entry if there are no shadow entries" -# FIXME: The PAM and !PAM versions differs: +# FIXME: the PAM and !PAM versions differ: # PAM will create a shadow entry if the shadow file exists # !PAM will update the passwd entry and leave the shadow file untouched diff --git a/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/group b/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/group index 773c93bf..10123908 100644 --- a/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/group +++ b/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/group @@ -38,4 +38,4 @@ games:x:60: users:x:100: nogroup:x:65534: crontab:x:101: -Debian-exim:x:102: \ No newline at end of file +Debian-exim:x:102: diff --git a/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/gshadow b/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/gshadow new file mode 100644 index 00000000..ae424865 --- /dev/null +++ b/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/passwd b/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/passwd new file mode 100644 index 00000000..43fc135a --- /dev/null +++ b/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/shadow b/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/shadow new file mode 100644 index 00000000..5f50d187 --- /dev/null +++ b/tests/usertools/useradd/69_useradd_default_GROUPS_name/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/group b/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/group index 02214e63..c9c71f8b 100644 --- a/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/group +++ b/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/group @@ -1,4 +1,4 @@ - root:x:0: +root:x:0: daemon:x:1: bin:x:2:foo sys:x:3: @@ -39,4 +39,4 @@ users:x:100: nogroup:x:65534: crontab:x:101: Debian-exim:x:102: -foo:x:1000: \ No newline at end of file +foo:x:1000: diff --git a/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/gshadow b/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/gshadow new file mode 100644 index 00000000..ec19c4aa --- /dev/null +++ b/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*::foo +sys:*:: +adm:*::foo +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*::foo +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*::foo +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:!:: diff --git a/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/passwd b/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/passwd new file mode 100644 index 00000000..ed91b350 --- /dev/null +++ b/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:1000:1000::/tmp/foo:/bin/foobar diff --git a/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/shadow b/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/shadow new file mode 100644 index 00000000..0aee0c5c --- /dev/null +++ b/tests/usertools/useradd/69_useradd_default_GROUPS_name/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:@TODAY@:0:99999:7:12:13849: diff --git a/tests/usertools/useradd/69_useradd_default_GROUPS_name/useradd.test b/tests/usertools/useradd/69_useradd_default_GROUPS_name/useradd.test index 9446830f..d8747b7d 100755 --- a/tests/usertools/useradd/69_useradd_default_GROUPS_name/useradd.test +++ b/tests/usertools/useradd/69_useradd_default_GROUPS_name/useradd.test @@ -7,7 +7,7 @@ cd "$(dirname $0)" . ../../../common/config.sh . ../../../common/log.sh -log_start "$0" "useradd adds supplementary groups based on the GROUPS field in /etc/deault/useradd" +log_start "$0" "useradd adds supplementary groups based on the GROUPS field in /etc/default/useradd" save_config @@ -20,10 +20,18 @@ printf "Create user foo, with group associations with bin,adm,man,cdrom..." useradd foo printf "OK\n" +printf "Check the passwd file..." +../../../common/compare_file.pl data/passwd /etc/passwd +printf "OK\n" printf "Check the group file..." ../../../common/compare_file.pl data/group /etc/group printf "OK\n" - +printf "Check the shadow file..." +../../../common/compare_file.pl data/shadow /etc/shadow +printf "OK\n" +printf "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +printf "OK\n" log_status "$0" "SUCCESS" restore_config diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config.txt b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config.txt new file mode 100644 index 00000000..4909c6cb --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config.txt @@ -0,0 +1,5 @@ +# no testsuite password +# root password: rootF00barbaz +# myuser password: myuserF00barbaz + +user foo diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/default/useradd b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/default/useradd new file mode 100644 index 00000000..9e75e543 --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/default/useradd @@ -0,0 +1,40 @@ +# Default values for useradd(8) +# +# The SHELL variable specifies the default login shell on your +# system. +# Similar to DHSELL in adduser. However, we use "sh" here because +# useradd is a low level utility and should be as general +# as possible +SHELL=/bin/foobar +# +# The default group for users +# 100=users on Debian systems +# Same as USERS_GID in adduser +# This argument is used when the -n flag is specified. +# The default behavior (when -n and -g are not specified) is to create a +# primary user group with the same name as the user being added to the +# system. +GROUP=10 +# +# Addional supplementary groups for users +GROUPS=bin,adm,man,cdrom +# +# The default home directory. Same as DHOME for adduser +# +HOME=/tmp +# +# The number of days after a password expires until the account +# is permanently disabled +INACTIVE=12 +# +# The default expire date +EXPIRE=2007-12-02 +# +# The SKEL variable specifies the directory containing "skeletal" user +# files; in other words, files such as a sample .profile that will be +# copied to the new user's home directory when it is created. +# SKEL=/etc/skel +# +# Defines whether the mail spool should be created while +# creating the account +# CREATE_MAIL_SPOOL=yes diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/group b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/group new file mode 100644 index 00000000..10123908 --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/group @@ -0,0 +1,41 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/gshadow b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/gshadow new file mode 100644 index 00000000..ae424865 --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/gshadow @@ -0,0 +1,41 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/passwd b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/passwd new file mode 100644 index 00000000..43fc135a --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/passwd @@ -0,0 +1,19 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/shadow b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/shadow new file mode 100644 index 00000000..5f50d187 --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/config/etc/shadow @@ -0,0 +1,19 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/group b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/group new file mode 100644 index 00000000..b5b6ce2f --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/group @@ -0,0 +1,42 @@ +root:x:0: +daemon:x:1: +bin:x:2: +sys:x:3: +adm:x:4: +tty:x:5: +disk:x:6: +lp:x:7: +mail:x:8: +news:x:9: +uucp:x:10: +man:x:12: +proxy:x:13: +kmem:x:15: +dialout:x:20: +fax:x:21: +voice:x:22: +cdrom:x:24: +floppy:x:25: +tape:x:26: +sudo:x:27: +audio:x:29: +dip:x:30: +www-data:x:33: +backup:x:34: +operator:x:37: +list:x:38: +irc:x:39: +src:x:40: +gnats:x:41: +shadow:x:42: +utmp:x:43: +video:x:44: +sasl:x:45: +plugdev:x:46: +staff:x:50: +games:x:60: +users:x:100: +nogroup:x:65534: +crontab:x:101: +Debian-exim:x:102: +foo:x:999: diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/gshadow b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/gshadow new file mode 100644 index 00000000..bfc06753 --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/gshadow @@ -0,0 +1,42 @@ +root:*:: +daemon:*:: +bin:*:: +sys:*:: +adm:*:: +tty:*:: +disk:*:: +lp:*:: +mail:*:: +news:*:: +uucp:*:: +man:*:: +proxy:*:: +kmem:*:: +dialout:*:: +fax:*:: +voice:*:: +cdrom:*:: +floppy:*:: +tape:*:: +sudo:*:: +audio:*:: +dip:*:: +www-data:*:: +backup:*:: +operator:*:: +list:*:: +irc:*:: +src:*:: +gnats:*:: +shadow:*:: +utmp:*:: +video:*:: +sasl:*:: +plugdev:*:: +staff:*:: +games:*:: +users:*:: +nogroup:*:: +crontab:x:: +Debian-exim:x:: +foo:!:: diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/passwd b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/passwd new file mode 100644 index 00000000..640a0ccc --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/passwd @@ -0,0 +1,20 @@ +root:x:0:0:root:/root:/bin/bash +daemon:x:1:1:daemon:/usr/sbin:/bin/sh +bin:x:2:2:bin:/bin:/bin/sh +sys:x:3:3:sys:/dev:/bin/sh +sync:x:4:65534:sync:/bin:/bin/sync +games:x:5:60:games:/usr/games:/bin/sh +man:x:6:12:man:/var/cache/man:/bin/sh +lp:x:7:7:lp:/var/spool/lpd:/bin/sh +mail:x:8:8:mail:/var/mail:/bin/sh +news:x:9:9:news:/var/spool/news:/bin/sh +uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh +proxy:x:13:13:proxy:/bin:/bin/sh +www-data:x:33:33:www-data:/var/www:/bin/sh +backup:x:34:34:backup:/var/backups:/bin/sh +list:x:38:38:Mailing List Manager:/var/list:/bin/sh +irc:x:39:39:ircd:/var/run/ircd:/bin/sh +gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh +nobody:x:65534:65534:nobody:/nonexistent:/bin/sh +Debian-exim:x:102:102::/var/spool/exim4:/bin/false +foo:x:101:999::/tmp/foo:/bin/foobar diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/shadow b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/shadow new file mode 100644 index 00000000..823c4c05 --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/data/shadow @@ -0,0 +1,20 @@ +root:$1$NBLBLIXb$WUgojj1bNuxWEADQGt1m9.:12991:0:99999:7::: +daemon:*:12977:0:99999:7::: +bin:*:12977:0:99999:7::: +sys:*:12977:0:99999:7::: +sync:*:12977:0:99999:7::: +games:*:12977:0:99999:7::: +man:*:12977:0:99999:7::: +lp:*:12977:0:99999:7::: +mail:*:12977:0:99999:7::: +news:*:12977:0:99999:7::: +uucp:*:12977:0:99999:7::: +proxy:*:12977:0:99999:7::: +www-data:*:12977:0:99999:7::: +backup:*:12977:0:99999:7::: +list:*:12977:0:99999:7::: +irc:*:12977:0:99999:7::: +gnats:*:12977:0:99999:7::: +nobody:*:12977:0:99999:7::: +Debian-exim:!:12977:0:99999:7::: +foo:!:@TODAY@:::::: diff --git a/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/useradd.test b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/useradd.test new file mode 100755 index 00000000..835c1eeb --- /dev/null +++ b/tests/usertools/useradd/70_useradd-r_default_GROUPS_name/useradd.test @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +cd "$(dirname $0)" + +. ../../../common/config.sh +. ../../../common/log.sh + +log_start "$0" "useradd ignores supplementary groups from GROUPS field in /etc/default/useradd for system user" + +save_config + +# restore the files on exit +trap 'log_status "$0" "FAILURE"; restore_config' 0 + +change_config + +printf "Create system user foo, without group associations with bin,adm,man,cdrom..." +useradd -r foo +printf "OK\n" + +printf "Check the passwd file..." +../../../common/compare_file.pl data/passwd /etc/passwd +printf "OK\n" +printf "Check the group file..." +../../../common/compare_file.pl data/group /etc/group +printf "OK\n" +printf "Check the shadow file..." +../../../common/compare_file.pl data/shadow /etc/shadow +printf "OK\n" +printf "Check the gshadow file..." +../../../common/compare_file.pl data/gshadow /etc/gshadow +printf "OK\n" + +log_status "$0" "SUCCESS" +restore_config +trap '' 0 +