Compare commits
32 Commits
debian/1%4
...
update-man
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9698b06fef | ||
|
|
406dd68863 | ||
|
|
2ff04fd9b5 | ||
|
|
97a3bc0c43 | ||
|
|
485b374d09 | ||
|
|
25f0b936c0 | ||
|
|
776d4d23ac | ||
|
|
9f285306f3 | ||
|
|
f569ea06ff | ||
|
|
50defcfa5d | ||
|
|
56c7502686 | ||
|
|
7c66acdd2e | ||
|
|
4806645316 | ||
|
|
05a41bc4d5 | ||
|
|
75eb241552 | ||
|
|
d7ce68863e | ||
|
|
095f9d48ef | ||
|
|
b4c00e119f | ||
|
|
326f1566ef | ||
|
|
6ac9c8ffe1 | ||
|
|
860bfc3bc2 | ||
|
|
f960334281 | ||
|
|
e4bc4e00d3 | ||
|
|
3987cc7880 | ||
|
|
f17d14fa1d | ||
|
|
bdbb726365 | ||
|
|
e0c751974f | ||
|
|
8b93f459b4 | ||
|
|
658cda9512 | ||
|
|
8f8e8c66d6 | ||
|
|
9351646a53 | ||
|
|
9335ee4556 |
29
ChangeLog
29
ChangeLog
@@ -1,6 +1,31 @@
|
||||
2022-08-22 Serge Hallyn <serge@hallyn.com>
|
||||
2022-11-08 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
* Revert the removal of subid_init as pointed out by Balint.
|
||||
* useradd.8: fix default group ID (Tim Biermann)
|
||||
* Revert drop of subid_init() (Serge Hallyn)
|
||||
* Georgian translation (NorwayFun)
|
||||
* useradd: Avoid taking unneeded space: do not reset non-existent data
|
||||
in lastlog (David Kalnischkies)
|
||||
* relax username restrictions (Alexander Kanavin)
|
||||
* selinux: check MLS enabled before setting serange (genBTC)
|
||||
* copy_tree: use fchmodat instead of chmod (Samanta Navarro)
|
||||
* copy_tree: don't block on FIFOs (Samanta Navarro)
|
||||
* add shell linter (Jan Macku)
|
||||
* copy_tree: carefully treat permissions (Samanta Navarro)
|
||||
* lib/commonio: make lock failures more detailed (Luca BRUNO)
|
||||
* lib: use strzero and memzero where applicable (Christian Göttsche)
|
||||
* Update Dutch translation (Frans Spiesschaert)
|
||||
* Don't test for NULL before calling free (Alex Colomar)
|
||||
* Use libc MAX() and MIN() (Alejandro Colomar)
|
||||
* chage: Fix regression in print_date (Xiami)
|
||||
* usermod: report error if homedir does not exist (Iker Pedrosa)
|
||||
* libmisc: minimum id check for system accounts (Iker Pedrosa)
|
||||
* fix usermod -rG x y wrongly adding a group (xyz)
|
||||
* man: add missing space in useradd.8.xml (Iker Pedrosa)
|
||||
* lastlog: check for localtime() return value (Iker Pedrosa)
|
||||
* Raise limit for passwd and shadow entry length (Iker Pedrosa)
|
||||
* Remove adduser-old.c (Alejandro Colomar)
|
||||
* useradd: Fix buffer overflow when using a prefix (David Michael)
|
||||
* Don't warn when failed to open /etc/nsswitch.conf (Serge Hallyn)
|
||||
|
||||
2022-08-15 Serge Hallyn <serge@hallyn.com>
|
||||
|
||||
|
||||
20
configure
vendored
20
configure
vendored
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.71 for shadow 4.12.3.
|
||||
# Generated by GNU Autoconf 2.71 for shadow 4.13.
|
||||
#
|
||||
# Report bugs to <pkg-shadow-devel@lists.alioth.debian.org>.
|
||||
#
|
||||
@@ -621,8 +621,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='shadow'
|
||||
PACKAGE_TARNAME='shadow'
|
||||
PACKAGE_VERSION='4.12.3'
|
||||
PACKAGE_STRING='shadow 4.12.3'
|
||||
PACKAGE_VERSION='4.13'
|
||||
PACKAGE_STRING='shadow 4.13'
|
||||
PACKAGE_BUGREPORT='pkg-shadow-devel@lists.alioth.debian.org'
|
||||
PACKAGE_URL='https://github.com/shadow-maint/shadow'
|
||||
|
||||
@@ -1458,7 +1458,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.12.3 to adapt to many kinds of systems.
|
||||
\`configure' configures shadow 4.13 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -1529,7 +1529,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of shadow 4.12.3:";;
|
||||
short | recursive ) echo "Configuration of shadow 4.13:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@@ -1696,7 +1696,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
shadow configure 4.12.3
|
||||
shadow configure 4.13
|
||||
generated by GNU Autoconf 2.71
|
||||
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
@@ -2353,7 +2353,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.12.3, which was
|
||||
It was created by shadow $as_me 4.13, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
$ $0$ac_configure_args_raw
|
||||
@@ -3626,7 +3626,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='shadow'
|
||||
VERSION='4.12.3'
|
||||
VERSION='4.13'
|
||||
|
||||
|
||||
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
||||
@@ -20744,7 +20744,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.12.3, which was
|
||||
This file was extended by shadow $as_me 4.13, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@@ -20813,7 +20813,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.12.3
|
||||
shadow config.status 4.13
|
||||
configured by $0, generated by GNU Autoconf 2.71,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ m4_define([libsubid_abi_major], 4)
|
||||
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.12.3], [pkg-shadow-devel@lists.alioth.debian.org], [],
|
||||
AC_INIT([shadow], [4.13], [pkg-shadow-devel@lists.alioth.debian.org], [],
|
||||
[https://github.com/shadow-maint/shadow])
|
||||
AM_INIT_AUTOMAKE([1.11 foreign dist-xz])
|
||||
AC_CONFIG_MACRO_DIRS([m4])
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# This is a dummy Makefile.am to get automake work flawlessly,
|
||||
# and also cooperate to make a distribution for `make dist'
|
||||
|
||||
EXTRA_DIST = README adduser.c adduser-old.c adduser.sh adduser2.sh \
|
||||
EXTRA_DIST = README adduser.c adduser.sh adduser2.sh \
|
||||
atudel groupmems.shar pwdauth.c shadow-anonftp.patch \
|
||||
udbachk.tgz
|
||||
|
||||
@@ -293,7 +293,7 @@ target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
EXTRA_DIST = README adduser.c adduser-old.c adduser.sh adduser2.sh \
|
||||
EXTRA_DIST = README adduser.c adduser.sh adduser2.sh \
|
||||
atudel groupmems.shar pwdauth.c shadow-anonftp.patch \
|
||||
udbachk.tgz
|
||||
|
||||
|
||||
@@ -1,300 +0,0 @@
|
||||
/****
|
||||
** 03/17/96
|
||||
** hacked a bit more, removed unused code, cleaned up for gcc -Wall.
|
||||
** --marekm
|
||||
**
|
||||
** 02/26/96
|
||||
** modified to call shadow utils (useradd,chage,passwd) on shadowed
|
||||
** systems - Cristian Gafton, gafton@sorosis.ro
|
||||
**
|
||||
** 6/27/95
|
||||
** shadow-adduser 1.4:
|
||||
**
|
||||
** now it copies the /etc/skel dir into the person's dir,
|
||||
** makes the mail folders, changed some defaults and made a 'make
|
||||
** install' just for the hell of it.
|
||||
**
|
||||
** Greg Gallagher
|
||||
** CIN.Net
|
||||
**
|
||||
** 1/28/95
|
||||
** shadow-adduser 1.3:
|
||||
**
|
||||
** Basically a bug-fix on my additions in 1.2. Thanks to Terry Stewart
|
||||
** (stew@texas.net) for pointing out one of the many idiotic bugs I introduced.
|
||||
** It was such a stupid bug that I would have never seen it myself.
|
||||
**
|
||||
** Brandon
|
||||
*****
|
||||
** 01/27/95
|
||||
**
|
||||
** shadow-adduser 1.2:
|
||||
** I took the C source from adduser-shadow (credits are below) and made
|
||||
** it a little more worthwhile. Many small changes... Here's
|
||||
** the ones I can remember:
|
||||
**
|
||||
** Removed support for non-shadowed systems (if you don't have shadow,
|
||||
** use the original adduser, don't get this shadow version!)
|
||||
** Added support for the correct /etc/shadow fields (Min days before
|
||||
** password change, max days before password change, Warning days,
|
||||
** and how many days from expiry date does the account go invalid)
|
||||
** The previous version just left all of those fields blank.
|
||||
** There is still one field left (expiry date for the account, period)
|
||||
** which I have left blank because I do not use it and didn't want to
|
||||
** spend any more time on this. I'm sure someone will put it in and
|
||||
** tack another plethora of credits on here. :)
|
||||
** Added in the password date field, which should always reflect the last
|
||||
** date the password was changed, for expiry purposes. "passwd" always
|
||||
** updates this field, so the adduser program should set it up right
|
||||
** initially (or a user could keep thier initial password forever ;)
|
||||
** The number is in days since Jan 1st, 1970.
|
||||
**
|
||||
** Have fun with it, and someone please make
|
||||
** a real version(this is still just a hack)
|
||||
** for us all to use (and Email it to me???)
|
||||
**
|
||||
** Brandon
|
||||
** photon@usis.com
|
||||
**
|
||||
*****
|
||||
** adduser 1.0: add a new user account (For systems not using shadow)
|
||||
** With a nice little interface and a will to do all the work for you.
|
||||
**
|
||||
** Craig Hagan
|
||||
** hagan@opine.cs.umass.edu
|
||||
**
|
||||
** Modified to really work, look clean, and find unused uid by Chris Cappuccio
|
||||
** chris@slinky.cs.umass.edu
|
||||
**
|
||||
*****
|
||||
**
|
||||
** 01/19/95
|
||||
**
|
||||
** FURTHER modifications to enable shadow passwd support (kludged, but
|
||||
** no more so than the original) by Dan Crowson - dcrowson@mo.net
|
||||
**
|
||||
** Search on DAN for all changes...
|
||||
**
|
||||
*****
|
||||
**
|
||||
** cc -O -o adduser adduser.c
|
||||
** Use gcc if you have it... (political reasons beyond my control) (chris)
|
||||
**
|
||||
** I've gotten this program to work with success under Linux (without
|
||||
** shadow) and SunOS 4.1.3. I would assume it should work pretty well
|
||||
** on any system that uses no shadow. (chris)
|
||||
**
|
||||
** If you have no crypt() then try
|
||||
** cc -DNO_CRYPT -O -o adduser adduser.c xfdes.c
|
||||
** I'm not sure how login operates with no crypt()... I guess
|
||||
** the same way we're doing it here.
|
||||
*/
|
||||
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/timeb.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#define DEFAULT_SHELL "/bin/bash" /* because BASH is your friend */
|
||||
#define DEFAULT_HOME "/home"
|
||||
#define USERADD_PATH "/usr/sbin/useradd"
|
||||
#define CHAGE_PATH "/usr/sbin/chage"
|
||||
#define PASSWD_PATH "/usr/bin/passwd"
|
||||
#define DEFAULT_GROUP 100
|
||||
|
||||
#define DEFAULT_MAX_PASS 60
|
||||
#define DEFAULT_WARN_PASS 10
|
||||
/* if you use this feature, you will get a lot of complaints from users
|
||||
who rarely use their accounts :) (something like 3 months would be
|
||||
more reasonable) --marekm */
|
||||
#define DEFAULT_USER_DIE /* 10 */ 0
|
||||
|
||||
void main()
|
||||
{
|
||||
char foo[32];
|
||||
char uname[9],person[32],dir[32],shell[32];
|
||||
unsigned int group,min_pass,max_pass,warn_pass,user_die;
|
||||
/* the group and uid of the new user */
|
||||
int bad=0,done=0,correct=0,gets_warning=0;
|
||||
char cmd[255];
|
||||
struct group *grp;
|
||||
|
||||
/* flags, in order:
|
||||
* bad to see if the username is in /etc/passwd, or if strange stuff has
|
||||
* been typed if the user might be put in group 0
|
||||
* done allows the program to exit when a user has been added
|
||||
* correct loops until a password is found that isn't in /etc/passwd
|
||||
* gets_warning allows the fflush to be skipped for the first gets
|
||||
* so that output is still legible
|
||||
*/
|
||||
|
||||
/* The real program starts HERE! */
|
||||
|
||||
if(geteuid()!=0)
|
||||
{
|
||||
printf("It seems you don't have access to add a new user. Try\n");
|
||||
printf("logging in as root or su root to gain super-user access.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Sanity checks
|
||||
*/
|
||||
|
||||
if (!(grp=getgrgid(DEFAULT_GROUP))){
|
||||
printf("Error: the default group %d does not exist on this system!\n",
|
||||
DEFAULT_GROUP);
|
||||
printf("adduser must be recompiled.\n");
|
||||
exit(1);
|
||||
};
|
||||
|
||||
while(!correct) { /* loop until a "good" uname is chosen */
|
||||
while(!done) {
|
||||
printf("\nLogin to add (^C to quit): ");
|
||||
if(gets_warning) /* if the warning was already shown */
|
||||
fflush(stdout); /* fflush stdout, otherwise set the flag */
|
||||
else
|
||||
gets_warning=1;
|
||||
|
||||
gets(uname);
|
||||
if(!strlen(uname)) {
|
||||
printf("Empty input.\n");
|
||||
done=0;
|
||||
continue;
|
||||
};
|
||||
|
||||
/* what I saw here before made me think maybe I was running DOS */
|
||||
/* might this be a solution? (chris) */
|
||||
if (getpwnam(uname) != NULL) {
|
||||
printf("That name is in use, choose another.\n");
|
||||
done=0;
|
||||
} else
|
||||
done=1;
|
||||
}; /* done, we have a valid new user name */
|
||||
|
||||
/* all set, get the rest of the stuff */
|
||||
printf("\nEditing information for new user [%s]\n",uname);
|
||||
|
||||
printf("\nFull Name [%s]: ",uname);
|
||||
gets(person);
|
||||
if (!strlen(person)) {
|
||||
bzero(person,sizeof(person));
|
||||
strcpy(person,uname);
|
||||
};
|
||||
|
||||
do {
|
||||
bad=0;
|
||||
printf("GID [%d]: ",DEFAULT_GROUP);
|
||||
gets(foo);
|
||||
if (!strlen(foo))
|
||||
group=DEFAULT_GROUP;
|
||||
else
|
||||
if (isdigit (*foo)) {
|
||||
group = atoi(foo);
|
||||
if (! (grp = getgrgid (group))) {
|
||||
printf("unknown gid %s\n",foo);
|
||||
group=DEFAULT_GROUP;
|
||||
bad=1;
|
||||
};
|
||||
} else
|
||||
if ((grp = getgrnam (foo)))
|
||||
group = grp->gr_gid;
|
||||
else {
|
||||
printf("unknown group %s\n",foo);
|
||||
group=DEFAULT_GROUP;
|
||||
bad=1;
|
||||
}
|
||||
if (group==0){ /* You're not allowed to make root group users! */
|
||||
printf("Creation of root group users not allowed (must be done by hand)\n");
|
||||
group=DEFAULT_GROUP;
|
||||
bad=1;
|
||||
};
|
||||
} while(bad);
|
||||
|
||||
|
||||
fflush(stdin);
|
||||
|
||||
printf("\nIf home dir ends with a / then [%s] will be appended to it\n",uname);
|
||||
printf("Home Directory [%s/%s]: ",DEFAULT_HOME,uname);
|
||||
fflush(stdout);
|
||||
gets(dir);
|
||||
if (!strlen(dir)) { /* hit return */
|
||||
sprintf(dir,"%s/%s",DEFAULT_HOME,uname);
|
||||
fflush(stdin);
|
||||
} else
|
||||
if (dir[strlen(dir)-1]=='/')
|
||||
sprintf(dir+strlen(dir),"%s",uname);
|
||||
|
||||
printf("\nShell [%s]: ",DEFAULT_SHELL);
|
||||
fflush(stdout);
|
||||
gets(shell);
|
||||
if (!strlen(shell))
|
||||
sprintf(shell,"%s",DEFAULT_SHELL);
|
||||
|
||||
printf("\nMin. Password Change Days [0]: ");
|
||||
gets(foo);
|
||||
min_pass=atoi(foo);
|
||||
|
||||
printf("Max. Password Change Days [%d]: ",DEFAULT_MAX_PASS);
|
||||
gets(foo);
|
||||
if (strlen(foo) > 1)
|
||||
max_pass = atoi(foo);
|
||||
else
|
||||
max_pass = DEFAULT_MAX_PASS;
|
||||
|
||||
printf("Password Warning Days [%d]: ",DEFAULT_WARN_PASS);
|
||||
gets(foo);
|
||||
warn_pass = atoi(foo);
|
||||
if (warn_pass==0)
|
||||
warn_pass = DEFAULT_WARN_PASS;
|
||||
|
||||
printf("Days after Password Expiry for Account Locking [%d]: ",DEFAULT_USER_DIE);
|
||||
gets(foo);
|
||||
user_die = atoi(foo);
|
||||
if (user_die == 0)
|
||||
user_die = DEFAULT_USER_DIE;
|
||||
|
||||
printf("\nInformation for new user [%s] [%s]:\n",uname,person);
|
||||
printf("Home directory: [%s] Shell: [%s]\n",dir,shell);
|
||||
printf("GID: [%d]\n",group);
|
||||
printf("MinPass: [%d] MaxPass: [%d] WarnPass: [%d] UserExpire: [%d]\n",
|
||||
min_pass,max_pass,warn_pass,user_die);
|
||||
printf("\nIs this correct? [y/N]: ");
|
||||
fflush(stdout);
|
||||
gets(foo);
|
||||
|
||||
done=bad=correct=(foo[0]=='y'||foo[0]=='Y');
|
||||
|
||||
if(bad!=1)
|
||||
printf("\nUser [%s] not added\n",uname);
|
||||
}
|
||||
|
||||
bzero(cmd,sizeof(cmd));
|
||||
sprintf(cmd,"%s -g %d -d %s -s %s -c \"%s\" -m -k /etc/skel %s",
|
||||
USERADD_PATH,group,dir,shell,person,uname);
|
||||
printf("Calling useradd to add new user:\n%s\n",cmd);
|
||||
if(system(cmd)){
|
||||
printf("User add failed!\n");
|
||||
exit(errno);
|
||||
};
|
||||
bzero(cmd,sizeof(cmd));
|
||||
sprintf(cmd,"%s -m %d -M %d -W %d -I %d %s", CHAGE_PATH,
|
||||
min_pass,max_pass,warn_pass,user_die,uname);
|
||||
printf("%s\n",cmd);
|
||||
if(system(cmd)){
|
||||
printf("There was an error setting password expire values\n");
|
||||
exit(errno);
|
||||
};
|
||||
bzero(cmd,sizeof(cmd));
|
||||
sprintf(cmd,"%s %s",PASSWD_PATH,uname);
|
||||
system(cmd);
|
||||
printf("\nDone.\n");
|
||||
}
|
||||
|
||||
8
debian/NEWS
vendored
8
debian/NEWS
vendored
@@ -1,3 +1,11 @@
|
||||
shadow (1:4.13+dfsg1-2) unstable; urgency=medium
|
||||
|
||||
The previous entry falsely states that PREVENT_NO_AUTH in /etc/login.defs
|
||||
affects authentication. The historical default of letting all users with
|
||||
empty password field in without authentication is still in effect.
|
||||
|
||||
-- Balint Reczey <balint@balintreczey.hu> Mon, 25 Sep 2023 17:04:09 +0200
|
||||
|
||||
shadow (1:4.11.1+dfsg1-0exp1) experimental; urgency=medium
|
||||
|
||||
Login now prevents an empty password field to be interpreted as
|
||||
|
||||
68
debian/changelog
vendored
68
debian/changelog
vendored
@@ -1,3 +1,71 @@
|
||||
shadow (1:4.13+dfsg1-4.1) unstable; urgency=medium
|
||||
|
||||
* Enhance the manpage for vipw (closes #1064940).
|
||||
|
||||
-- Toni Mueller <toni@debian.org> Thu, 29 Feb 2024 16:37:32 +0000
|
||||
|
||||
shadow (1:4.13+dfsg1-4) unstable; urgency=medium
|
||||
|
||||
[ Helmut Grohne ]
|
||||
* DEP17: Move login and shadowconfig to /usr. (Closes: #1059915)
|
||||
|
||||
-- Serge Hallyn <serge@hallyn.com> Sun, 04 Feb 2024 20:28:27 +0000
|
||||
|
||||
shadow (1:4.13+dfsg1-3) unstable; urgency=medium
|
||||
|
||||
* Team upload
|
||||
* Remove myself from uploaders
|
||||
|
||||
-- Balint Reczey <balint@balintreczey.hu> Sun, 15 Oct 2023 19:10:52 +0200
|
||||
|
||||
shadow (1:4.13+dfsg1-2) unstable; urgency=medium
|
||||
|
||||
[ Balint Reczey ]
|
||||
* debian/gitlab-ci.yml: Use sudo to fix reprotest test
|
||||
* debian/login.pam: Drop reference to Debian Etch (Closes: #1040064)
|
||||
* debian/NEWS: Fix false claim about PREVENT_NO_AUTH affecting authentication.
|
||||
Also drop setting PREVENT_NO_AUTH in shipped login.defs. (Closes: #1041547)
|
||||
* Cherry-pick upstream patch to fix gpasswd passwd leak
|
||||
(CVE-2023-4641) (Closes: #1051062)
|
||||
* Cherry-pick upstream patch to fix chfn vulnerability allowing injection of
|
||||
control characters into some /etc/passwd fields.
|
||||
(CVE-2023-29383) (Closes: #1034482)
|
||||
|
||||
[ Gioele Barabucci ]
|
||||
* Support <nodoc> build profile
|
||||
`xsltproc`, `docbook` and all other XML-related packages are not needed
|
||||
when the `<nodoc>` build profile is active, as long as `./configure` is
|
||||
called with `--disable-man`. (Closes: #1051827)
|
||||
|
||||
|
||||
-- Balint Reczey <balint@balintreczey.hu> Tue, 26 Sep 2023 22:01:52 +0200
|
||||
|
||||
shadow (1:4.13+dfsg1-1) unstable; urgency=medium
|
||||
|
||||
[ Balint Reczey ]
|
||||
* debian/watch: Make watch file work with new GitHub UI
|
||||
* debian/control: Mark libsubid-dev as Multi-Arch: same
|
||||
* New upstream version 4.13
|
||||
- fix typo in useradd(8) (Closes: #1021380)
|
||||
* Refresh patches
|
||||
|
||||
[ Debian Janitor ]
|
||||
* Remove constraints unnecessary since buster (oldstable)
|
||||
* login: Drop versioned constraint on util-linux in Breaks.
|
||||
Changes-By: deb-scrub-obsolete
|
||||
|
||||
-- Balint Reczey <balint@balintreczey.hu> Fri, 11 Nov 2022 09:28:15 +0100
|
||||
|
||||
shadow (1:4.12.3+dfsg1-3) unstable; urgency=medium
|
||||
|
||||
[ Debian Janitor ]
|
||||
* Set upstream metadata fields: Bug-Database, Bug-Submit, Repository-Browse.
|
||||
|
||||
[ Balint Reczey ]
|
||||
* Fix tree copying regressions introduced in 4.12.2. (Closes: #1023132)
|
||||
|
||||
-- Balint Reczey <balint@balintreczey.hu> Sat, 05 Nov 2022 14:47:01 +0100
|
||||
|
||||
shadow (1:4.12.3+dfsg1-2) unstable; urgency=medium
|
||||
|
||||
* Cherry-pick upstream patch to fix regression in expiration date handling
|
||||
|
||||
17
debian/control
vendored
17
debian/control
vendored
@@ -1,7 +1,6 @@
|
||||
Source: shadow
|
||||
Maintainer: Shadow package maintainers <pkg-shadow-devel@lists.alioth.debian.org>
|
||||
Uploaders: Balint Reczey <balint@balintreczey.hu>,
|
||||
Serge Hallyn <serge@hallyn.com>
|
||||
Uploaders: Serge Hallyn <serge@hallyn.com>
|
||||
Section: admin
|
||||
Priority: required
|
||||
Build-Depends: debhelper-compat (= 13),
|
||||
@@ -9,13 +8,13 @@ Build-Depends: debhelper-compat (= 13),
|
||||
libcrypt-dev,
|
||||
libpam0g-dev,
|
||||
quilt,
|
||||
xsltproc,
|
||||
docbook-xsl,
|
||||
docbook-xml,
|
||||
libxml2-utils,
|
||||
xsltproc <!nodoc>,
|
||||
docbook-xsl <!nodoc>,
|
||||
docbook-xml <!nodoc>,
|
||||
libxml2-utils <!nodoc>,
|
||||
libselinux1-dev [linux-any],
|
||||
libsemanage-dev [linux-any],
|
||||
itstool,
|
||||
itstool <!nodoc>,
|
||||
bison,
|
||||
libaudit-dev [linux-any]
|
||||
Standards-Version: 4.6.1
|
||||
@@ -45,8 +44,7 @@ Pre-Depends: ${shlibs:Depends},
|
||||
${misc:Depends},
|
||||
libpam-runtime,
|
||||
libpam-modules
|
||||
Breaks: hurd (<< 20140206~) [hurd-any],
|
||||
util-linux (<< 2.32-0.2~)
|
||||
Breaks: hurd (<< 20140206~) [hurd-any]
|
||||
Conflicts: python-4suite (<< 0.99cvs20060405-1)
|
||||
Replaces: hurd (<< 20140206~) [hurd-any]
|
||||
Description: system login tools
|
||||
@@ -80,6 +78,7 @@ Package: libsubid-dev
|
||||
Section: libdevel
|
||||
Priority: optional
|
||||
Architecture: any
|
||||
Multi-Arch: same
|
||||
Depends: ${misc:Depends}, libsubid4 (= ${binary:Version})
|
||||
Description: subordinate id handling library -- shared library
|
||||
The library provides an interface for querying, granding and ungranting
|
||||
|
||||
4
debian/gitlab-ci.yml
vendored
4
debian/gitlab-ci.yml
vendored
@@ -1,5 +1,7 @@
|
||||
variables:
|
||||
RELEASE: 'unstable'
|
||||
RELEASE: 'unstable'
|
||||
# workaround for https://salsa.debian.org/salsa-ci-team/pipeline/-/issues/259
|
||||
SALSA_CI_REPROTEST_ARGS: --vary=domain_host.use_sudo=1
|
||||
include:
|
||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
|
||||
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
|
||||
|
||||
8
debian/login.defs
vendored
8
debian/login.defs
vendored
@@ -337,14 +337,6 @@ NONEXISTENT /nonexistent
|
||||
#
|
||||
#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
|
||||
|
||||
2
debian/login.install
vendored
2
debian/login.install
vendored
@@ -4,4 +4,4 @@ sbin/nologin usr/sbin
|
||||
usr/bin/faillog
|
||||
usr/bin/lastlog
|
||||
usr/bin/newgrp
|
||||
bin/login
|
||||
bin/login usr/bin
|
||||
|
||||
2
debian/login.pam
vendored
2
debian/login.pam
vendored
@@ -49,7 +49,7 @@ session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux
|
||||
#
|
||||
# parsing /etc/environment needs "readenv=1"
|
||||
session required pam_env.so readenv=1
|
||||
# locale variables are also kept into /etc/default/locale in etch
|
||||
# locale variables can also be set in /etc/default/locale
|
||||
# reading this file *in addition to /etc/environment* does not hurt
|
||||
session required pam_env.so readenv=1 envfile=/etc/default/locale
|
||||
|
||||
|
||||
2
debian/passwd.install
vendored
2
debian/passwd.install
vendored
@@ -1,5 +1,5 @@
|
||||
debian/default/useradd etc/default
|
||||
debian/shadowconfig sbin
|
||||
debian/shadowconfig usr/sbin
|
||||
usr/bin/chage
|
||||
usr/bin/chfn
|
||||
usr/bin/chsh
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
From e503fd574b7dbf6b21b1168e20938f0922807916 Mon Sep 17 00:00:00 2001
|
||||
From: Xiami <1927254+Xiami2012@users.noreply.github.com>
|
||||
Date: Wed, 5 Oct 2022 18:11:28 +0800
|
||||
Subject: [PATCH] chage: Fix regression in print_date
|
||||
|
||||
Introduced by c6c8130db4319613a91dd07bbb845f6c33c5f79f
|
||||
|
||||
After removing snprintf, the format string should get unescaped once.
|
||||
|
||||
Fixes #564
|
||||
|
||||
Reporter and patch author: DerMouse (github.com/DerMouse)
|
||||
---
|
||||
src/chage.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/chage.c b/src/chage.c
|
||||
index 8cf67794..01570d72 100644
|
||||
--- a/src/chage.c
|
||||
+++ b/src/chage.c
|
||||
@@ -228,7 +228,7 @@ static void print_date (time_t date)
|
||||
if (NULL == tp) {
|
||||
(void) printf ("time_t: %lu\n", (unsigned long)date);
|
||||
} else {
|
||||
- (void) strftime (buf, sizeof buf, iflg ? "%%Y-%%m-%%d" : "%%b %%d, %%Y", tp);
|
||||
+ (void) strftime (buf, sizeof buf, iflg ? "%Y-%m-%d" : "%b %d, %Y", tp);
|
||||
(void) puts (buf);
|
||||
}
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
137
debian/patches/0001-gpasswd-1-Fix-password-leak.patch
vendored
Normal file
137
debian/patches/0001-gpasswd-1-Fix-password-leak.patch
vendored
Normal file
@@ -0,0 +1,137 @@
|
||||
From 65c88a43a23c2391dcc90c0abda3e839e9c57904 Mon Sep 17 00:00:00 2001
|
||||
From: Alejandro Colomar <alx@kernel.org>
|
||||
Date: Sat, 10 Jun 2023 16:20:05 +0200
|
||||
Subject: [PATCH] gpasswd(1): Fix password leak
|
||||
|
||||
How to trigger this password leak?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
When gpasswd(1) asks for the new password, it asks twice (as is usual
|
||||
for confirming the new password). Each of those 2 password prompts
|
||||
uses agetpass() to get the password. If the second agetpass() fails,
|
||||
the first password, which has been copied into the 'static' buffer
|
||||
'pass' via STRFCPY(), wasn't being zeroed.
|
||||
|
||||
agetpass() is defined in <./libmisc/agetpass.c> (around line 91), and
|
||||
can fail for any of the following reasons:
|
||||
|
||||
- malloc(3) or readpassphrase(3) failure.
|
||||
|
||||
These are going to be difficult to trigger. Maybe getting the system
|
||||
to the limits of memory utilization at that exact point, so that the
|
||||
next malloc(3) gets ENOMEM, and possibly even the OOM is triggered.
|
||||
About readpassphrase(3), ENFILE and EINTR seem the only plausible
|
||||
ones, and EINTR probably requires privilege or being the same user;
|
||||
but I wouldn't discard ENFILE so easily, if a process starts opening
|
||||
files.
|
||||
|
||||
- The password is longer than PASS_MAX.
|
||||
|
||||
The is plausible with physical access. However, at that point, a
|
||||
keylogger will be a much simpler attack.
|
||||
|
||||
And, the attacker must be able to know when the second password is being
|
||||
introduced, which is not going to be easy.
|
||||
|
||||
How to read the password after the leak?
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Provoking the leak yourself at the right point by entering a very long
|
||||
password is easy, and inspecting the process stack at that point should
|
||||
be doable. Try to find some consistent patterns.
|
||||
|
||||
Then, search for those patterns in free memory, right after the victim
|
||||
leaks their password.
|
||||
|
||||
Once you get the leak, a program should read all the free memory
|
||||
searching for patterns that gpasswd(1) leaves nearby the leaked
|
||||
password.
|
||||
|
||||
On 6/10/23 03:14, Seth Arnold wrote:
|
||||
> An attacker process wouldn't be able to use malloc(3) for this task.
|
||||
> There's a handful of tools available for userspace to allocate memory:
|
||||
>
|
||||
> - brk / sbrk
|
||||
> - mmap MAP_ANONYMOUS
|
||||
> - mmap /dev/zero
|
||||
> - mmap some other file
|
||||
> - shm_open
|
||||
> - shmget
|
||||
>
|
||||
> Most of these return only pages of zeros to a process. Using mmap of an
|
||||
> existing file, you can get some of the contents of the file demand-loaded
|
||||
> into the memory space on the first use.
|
||||
>
|
||||
> The MAP_UNINITIALIZED flag only works if the kernel was compiled with
|
||||
> CONFIG_MMAP_ALLOW_UNINITIALIZED. This is rare.
|
||||
>
|
||||
> malloc(3) doesn't zero memory, to our collective frustration, but all the
|
||||
> garbage in the allocations is from previous allocations in the current
|
||||
> process. It isn't leftover from other processes.
|
||||
>
|
||||
> The avenues available for reading the memory:
|
||||
> - /dev/mem and /dev/kmem (requires root, not available with Secure Boot)
|
||||
> - /proc/pid/mem (requires ptrace privileges, mediated by YAMA)
|
||||
> - ptrace (requires ptrace privileges, mediated by YAMA)
|
||||
> - causing memory to be swapped to disk, and then inspecting the swap
|
||||
>
|
||||
> These all require a certain amount of privileges.
|
||||
|
||||
How to fix it?
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
memzero(), which internally calls explicit_bzero(3), or whatever
|
||||
alternative the system provides with a slightly different name, will
|
||||
make sure that the buffer is zeroed in memory, and optimizations are not
|
||||
allowed to impede this zeroing.
|
||||
|
||||
This is not really 100% effective, since compilers may place copies of
|
||||
the string somewhere hidden in the stack. Those copies won't get zeroed
|
||||
by explicit_bzero(3). However, that's arguably a compiler bug, since
|
||||
compilers should make everything possible to avoid optimizing strings
|
||||
that are later passed to explicit_bzero(3). But we all know that
|
||||
sometimes it's impossible to have perfect knowledge in the compiler, so
|
||||
this is plausible. Nevertheless, there's nothing we can do against such
|
||||
issues, except minimizing the time such passwords are stored in plain
|
||||
text.
|
||||
|
||||
Security concerns
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
We believe this isn't easy to exploit. Nevertheless, and since the fix
|
||||
is trivial, this fix should probably be applied soon, and backported to
|
||||
all supported distributions, to prevent someone else having more
|
||||
imagination than us to find a way.
|
||||
|
||||
Affected versions
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
All. Bug introduced in shadow 19990709. That's the second commit in
|
||||
the git history.
|
||||
|
||||
Fixes: 45c6603cc86c ("[svn-upgrade] Integrating new upstream version, shadow (19990709)")
|
||||
Reported-by: Alejandro Colomar <alx@kernel.org>
|
||||
Cc: Serge Hallyn <serge@hallyn.com>
|
||||
Cc: Iker Pedrosa <ipedrosa@redhat.com>
|
||||
Cc: Seth Arnold <seth.arnold@canonical.com>
|
||||
Cc: Christian Brauner <christian@brauner.io>
|
||||
Cc: Balint Reczey <rbalint@debian.org>
|
||||
Cc: Sam James <sam@gentoo.org>
|
||||
Cc: David Runge <dvzrv@archlinux.org>
|
||||
Cc: Andreas Jaeger <aj@suse.de>
|
||||
Cc: <~hallyn/shadow@lists.sr.ht>
|
||||
Signed-off-by: Alejandro Colomar <alx@kernel.org>
|
||||
---
|
||||
src/gpasswd.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/src/gpasswd.c
|
||||
+++ b/src/gpasswd.c
|
||||
@@ -896,6 +896,7 @@
|
||||
strzero (cp);
|
||||
cp = getpass (_("Re-enter new password: "));
|
||||
if (NULL == cp) {
|
||||
+ memzero (pass, sizeof pass);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
45
debian/patches/0002-Added-control-character-check.patch
vendored
Normal file
45
debian/patches/0002-Added-control-character-check.patch
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
From e5905c4b84d4fb90aefcd96ee618411ebfac663d Mon Sep 17 00:00:00 2001
|
||||
From: tomspiderlabs <128755403+tomspiderlabs@users.noreply.github.com>
|
||||
Date: Thu, 23 Mar 2023 23:39:38 +0000
|
||||
Subject: [PATCH] Added control character check
|
||||
|
||||
Added control character check, returning -1 (to "err") if control characters are present.
|
||||
---
|
||||
lib/fields.c | 11 +++++++----
|
||||
1 file changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/lib/fields.c b/lib/fields.c
|
||||
index 640be931..fb51b582 100644
|
||||
--- a/lib/fields.c
|
||||
+++ b/lib/fields.c
|
||||
@@ -21,9 +21,9 @@
|
||||
*
|
||||
* The supplied field is scanned for non-printable and other illegal
|
||||
* characters.
|
||||
- * + -1 is returned if an illegal character is present.
|
||||
- * + 1 is returned if no illegal characters are present, but the field
|
||||
- * contains a non-printable character.
|
||||
+ * + -1 is returned if an illegal or control character is present.
|
||||
+ * + 1 is returned if no illegal or control characters are present,
|
||||
+ * but the field contains a non-printable character.
|
||||
* + 0 is returned otherwise.
|
||||
*/
|
||||
int valid_field (const char *field, const char *illegal)
|
||||
@@ -45,10 +45,13 @@ int valid_field (const char *field, const char *illegal)
|
||||
}
|
||||
|
||||
if (0 == err) {
|
||||
- /* Search if there are some non-printable characters */
|
||||
+ /* Search if there are non-printable or control characters */
|
||||
for (cp = field; '\0' != *cp; cp++) {
|
||||
if (!isprint (*cp)) {
|
||||
err = 1;
|
||||
+ }
|
||||
+ if (!iscntrl (*cp)) {
|
||||
+ err = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
||||
61
debian/patches/0003-Overhaul-valid_field.patch
vendored
Normal file
61
debian/patches/0003-Overhaul-valid_field.patch
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
From 2eaea70111f65b16d55998386e4ceb4273c19eb4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com>
|
||||
Date: Fri, 31 Mar 2023 14:46:50 +0200
|
||||
Subject: [PATCH] Overhaul valid_field()
|
||||
|
||||
e5905c4b ("Added control character check") introduced checking for
|
||||
control characters but had the logic inverted, so it rejects all
|
||||
characters that are not control ones.
|
||||
|
||||
Cast the character to `unsigned char` before passing to the character
|
||||
checking functions to avoid UB.
|
||||
|
||||
Use strpbrk(3) for the illegal character test and return early.
|
||||
---
|
||||
lib/fields.c | 24 ++++++++++--------------
|
||||
1 file changed, 10 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/lib/fields.c b/lib/fields.c
|
||||
index fb51b582..53929248 100644
|
||||
--- a/lib/fields.c
|
||||
+++ b/lib/fields.c
|
||||
@@ -37,26 +37,22 @@ int valid_field (const char *field, const char *illegal)
|
||||
|
||||
/* For each character of field, search if it appears in the list
|
||||
* of illegal characters. */
|
||||
+ if (illegal && NULL != strpbrk (field, illegal)) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ /* Search if there are non-printable or control characters */
|
||||
for (cp = field; '\0' != *cp; cp++) {
|
||||
- if (strchr (illegal, *cp) != NULL) {
|
||||
+ unsigned char c = *cp;
|
||||
+ if (!isprint (c)) {
|
||||
+ err = 1;
|
||||
+ }
|
||||
+ if (iscntrl (c)) {
|
||||
err = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- if (0 == err) {
|
||||
- /* Search if there are non-printable or control characters */
|
||||
- for (cp = field; '\0' != *cp; cp++) {
|
||||
- if (!isprint (*cp)) {
|
||||
- err = 1;
|
||||
- }
|
||||
- if (!iscntrl (*cp)) {
|
||||
- err = -1;
|
||||
- break;
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
-
|
||||
return err;
|
||||
}
|
||||
|
||||
--
|
||||
2.34.1
|
||||
|
||||
2
debian/patches/008_login_log_failure_in_FTMP
vendored
2
debian/patches/008_login_log_failure_in_FTMP
vendored
@@ -6,7 +6,7 @@ Notes:
|
||||
|
||||
--- a/src/login.c
|
||||
+++ b/src/login.c
|
||||
@@ -829,6 +829,24 @@
|
||||
@@ -827,6 +827,24 @@
|
||||
(void) puts ("");
|
||||
(void) puts (_("Login incorrect"));
|
||||
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
From ebf9b232b012725d2be5e750876c7336cf1c37fd Mon Sep 17 00:00:00 2001
|
||||
From: David Kalnischkies <david@kalnischkies.de>
|
||||
Date: Wed, 24 Aug 2022 13:21:01 +0200
|
||||
Subject: [PATCH] useradd: Do not reset non-existent data in {last,fail}log
|
||||
|
||||
useradd does not create the files if they don't exist, but if they exist
|
||||
it will reset user data even if the data did not exist before creating
|
||||
a hole and an explicitly zero'd data point resulting (especially for
|
||||
high UIDs) in a lot of zeros ending up in containers and tarballs.
|
||||
---
|
||||
src/useradd.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/src/useradd.c
|
||||
+++ b/src/useradd.c
|
||||
@@ -1996,8 +1996,9 @@ static void faillog_reset (uid_t uid)
|
||||
struct faillog fl;
|
||||
int fd;
|
||||
off_t offset_uid = (off_t) (sizeof fl) * uid;
|
||||
+ struct stat st;
|
||||
|
||||
- if (access (FAILLOG_FILE, F_OK) != 0) {
|
||||
+ if (stat (FAILLOG_FILE, &st) != 0 || st.st_size <= offset_uid) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2033,8 +2034,9 @@ static void lastlog_reset (uid_t uid)
|
||||
int fd;
|
||||
off_t offset_uid = (off_t) (sizeof ll) * uid;
|
||||
uid_t max_uid;
|
||||
+ struct stat st;
|
||||
|
||||
- if (access (LASTLOG_FILE, F_OK) != 0) {
|
||||
+ if (stat (LASTLOG_FILE, &st) != 0 || st.st_size <= offset_uid) {
|
||||
return;
|
||||
}
|
||||
|
||||
10
debian/patches/429_login_FAILLOG_ENAB
vendored
10
debian/patches/429_login_FAILLOG_ENAB
vendored
@@ -20,7 +20,7 @@ Note: It could be removed if pam_tally could report the number of failures
|
||||
static void bad_time_notify (void);
|
||||
static void check_nologin (bool login_to_root);
|
||||
#else
|
||||
@@ -789,6 +789,9 @@
|
||||
@@ -787,6 +787,9 @@
|
||||
SYSLOG ((LOG_NOTICE,
|
||||
"TOO MANY LOGIN TRIES (%u)%s FOR '%s'",
|
||||
failcount, fromhost, failent_user));
|
||||
@@ -30,7 +30,7 @@ Note: It could be removed if pam_tally could report the number of failures
|
||||
fprintf (stderr,
|
||||
_("Maximum number of tries exceeded (%u)\n"),
|
||||
failcount);
|
||||
@@ -806,6 +809,14 @@
|
||||
@@ -804,6 +807,14 @@
|
||||
pam_strerror (pamh, retcode)));
|
||||
failed = true;
|
||||
}
|
||||
@@ -45,7 +45,7 @@ Note: It could be removed if pam_tally could report the number of failures
|
||||
|
||||
if (!failed) {
|
||||
break;
|
||||
@@ -829,6 +840,10 @@
|
||||
@@ -827,6 +838,10 @@
|
||||
(void) puts ("");
|
||||
(void) puts (_("Login incorrect"));
|
||||
|
||||
@@ -56,7 +56,7 @@ Note: It could be removed if pam_tally could report the number of failures
|
||||
if (getdef_str("FTMP_FILE") != NULL) {
|
||||
#ifdef USE_UTMPX
|
||||
struct utmpx *failent =
|
||||
@@ -1299,6 +1314,7 @@
|
||||
@@ -1295,6 +1310,7 @@
|
||||
*/
|
||||
#ifndef USE_PAM
|
||||
motd (); /* print the message of the day */
|
||||
@@ -64,7 +64,7 @@ Note: It could be removed if pam_tally could report the number of failures
|
||||
if ( getdef_bool ("FAILLOG_ENAB")
|
||||
&& (0 != faillog.fail_cnt)) {
|
||||
failprint (&faillog);
|
||||
@@ -1311,6 +1327,7 @@
|
||||
@@ -1307,6 +1323,7 @@
|
||||
username, (int) faillog.fail_cnt));
|
||||
}
|
||||
}
|
||||
|
||||
14
debian/patches/463_login_delay_obeys_to_PAM
vendored
14
debian/patches/463_login_delay_obeys_to_PAM
vendored
@@ -9,7 +9,7 @@ Note: If removed, FAIL_DELAY must be re-added to /etc/login.defs
|
||||
|
||||
--- a/src/login.c
|
||||
+++ b/src/login.c
|
||||
@@ -514,7 +514,6 @@
|
||||
@@ -512,7 +512,6 @@
|
||||
#if !defined(USE_PAM)
|
||||
char ptime[80];
|
||||
#endif
|
||||
@@ -17,7 +17,7 @@ Note: If removed, FAIL_DELAY must be re-added to /etc/login.defs
|
||||
unsigned int retries;
|
||||
bool subroot = false;
|
||||
#ifndef USE_PAM
|
||||
@@ -539,6 +538,7 @@
|
||||
@@ -537,6 +536,7 @@
|
||||
pid_t child;
|
||||
char *pam_user = NULL;
|
||||
#else
|
||||
@@ -25,7 +25,7 @@ Note: If removed, FAIL_DELAY must be re-added to /etc/login.defs
|
||||
struct spwd *spwd = NULL;
|
||||
#endif
|
||||
/*
|
||||
@@ -703,7 +703,6 @@
|
||||
@@ -701,7 +701,6 @@
|
||||
}
|
||||
|
||||
environ = newenvp; /* make new environment active */
|
||||
@@ -33,7 +33,7 @@ Note: If removed, FAIL_DELAY must be re-added to /etc/login.defs
|
||||
retries = getdef_unum ("LOGIN_RETRIES", RETRIES);
|
||||
|
||||
#ifdef USE_PAM
|
||||
@@ -719,8 +718,7 @@
|
||||
@@ -717,8 +716,7 @@
|
||||
|
||||
/*
|
||||
* hostname & tty are either set to NULL or their correct values,
|
||||
@@ -43,7 +43,7 @@ Note: If removed, FAIL_DELAY must be re-added to /etc/login.defs
|
||||
*
|
||||
* PAM_RHOST and PAM_TTY are used for authentication, only use
|
||||
* information coming from login or from the caller (e.g. no utmp)
|
||||
@@ -729,10 +727,6 @@
|
||||
@@ -727,10 +725,6 @@
|
||||
PAM_FAIL_CHECK;
|
||||
retcode = pam_set_item (pamh, PAM_TTY, tty);
|
||||
PAM_FAIL_CHECK;
|
||||
@@ -54,7 +54,7 @@ Note: If removed, FAIL_DELAY must be re-added to /etc/login.defs
|
||||
/* if fflg, then the user has already been authenticated */
|
||||
if (!fflg) {
|
||||
unsigned int failcount = 0;
|
||||
@@ -773,12 +767,6 @@
|
||||
@@ -771,12 +765,6 @@
|
||||
bool failed = false;
|
||||
|
||||
failcount++;
|
||||
@@ -67,7 +67,7 @@ Note: If removed, FAIL_DELAY must be re-added to /etc/login.defs
|
||||
|
||||
retcode = pam_authenticate (pamh, 0);
|
||||
|
||||
@@ -1114,14 +1102,17 @@
|
||||
@@ -1110,14 +1098,17 @@
|
||||
free (username);
|
||||
username = NULL;
|
||||
|
||||
|
||||
4
debian/patches/501_commonio_group_shadow
vendored
4
debian/patches/501_commonio_group_shadow
vendored
@@ -12,7 +12,7 @@ Fixes: #166793
|
||||
#include "nscd.h"
|
||||
#include "sssd.h"
|
||||
#ifdef WITH_TCB
|
||||
@@ -976,12 +977,23 @@
|
||||
@@ -970,12 +971,23 @@
|
||||
goto fail;
|
||||
}
|
||||
} else {
|
||||
@@ -49,7 +49,7 @@ Fixes: #166793
|
||||
NULL, /* head */
|
||||
--- a/lib/shadowio.c
|
||||
+++ b/lib/shadowio.c
|
||||
@@ -82,7 +82,7 @@
|
||||
@@ -84,7 +84,7 @@
|
||||
#ifdef WITH_SELINUX
|
||||
NULL, /* scontext */
|
||||
#endif /* WITH_SELINUX */
|
||||
|
||||
79
debian/patches/506_relaxed_usernames
vendored
79
debian/patches/506_relaxed_usernames
vendored
@@ -17,20 +17,28 @@ Details:
|
||||
|
||||
--- a/libmisc/chkname.c
|
||||
+++ b/libmisc/chkname.c
|
||||
@@ -31,6 +31,7 @@
|
||||
return true;
|
||||
@@ -32,44 +32,26 @@
|
||||
}
|
||||
|
||||
+#if 0
|
||||
/*
|
||||
* User/group names must match [a-z_][a-z0-9_-]*[$]
|
||||
*/
|
||||
@@ -50,6 +51,26 @@
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
+ /*
|
||||
- * User/group names must match gnu e-regex:
|
||||
- * [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[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 "..".
|
||||
- */
|
||||
- int numeric;
|
||||
-
|
||||
- if ('\0' == *name ||
|
||||
- ('.' == *name && (('.' == name[1] && '\0' == name[2]) ||
|
||||
- '\0' == name[1])) ||
|
||||
- !((*name >= 'a' && *name <= 'z') ||
|
||||
- (*name >= 'A' && *name <= 'Z') ||
|
||||
- (*name >= '0' && *name <= '9') ||
|
||||
- *name == '_' ||
|
||||
- *name == '.')) {
|
||||
+ * POSIX indicate that usernames are composed of characters from the
|
||||
+ * portable filename character set [A-Za-z0-9._-], and that the hyphen
|
||||
+ * should not be used as the first character of a portable user name.
|
||||
@@ -41,28 +49,38 @@ Details:
|
||||
+ || ('-' == *name)
|
||||
+ || ('~' == *name)
|
||||
+ || ('+' == *name)) {
|
||||
+ return false;
|
||||
+ }
|
||||
return false;
|
||||
}
|
||||
-
|
||||
- numeric = isdigit(*name);
|
||||
-
|
||||
- while ('\0' != *++name) {
|
||||
- if (!((*name >= 'a' && *name <= 'z') ||
|
||||
- (*name >= 'A' && *name <= 'Z') ||
|
||||
- (*name >= '0' && *name <= '9') ||
|
||||
- *name == '_' ||
|
||||
- *name == '.' ||
|
||||
- *name == '-' ||
|
||||
- (*name == '$' && name[1] == '\0')
|
||||
- )) {
|
||||
+ do {
|
||||
+ if ((':' == *name) || (',' == *name) || isspace(*name)) {
|
||||
+ return false;
|
||||
+ }
|
||||
return false;
|
||||
}
|
||||
- numeric &= isdigit(*name);
|
||||
- }
|
||||
+ name++;
|
||||
+ } while ('\0' != *name);
|
||||
|
||||
return true;
|
||||
- return !numeric;
|
||||
+ return true;
|
||||
}
|
||||
|
||||
bool is_valid_user_name (const char *name)
|
||||
--- a/man/useradd.8.xml
|
||||
+++ b/man/useradd.8.xml
|
||||
@@ -698,12 +698,20 @@
|
||||
</para>
|
||||
|
||||
<para>
|
||||
- Usernames must start with a lower case letter or an underscore,
|
||||
+ It is usually recommended to only use usernames that begin 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_-]*[$]?
|
||||
@@ -708,6 +708,14 @@
|
||||
the <command>ls</command> output.
|
||||
</para>
|
||||
<para>
|
||||
+ On Debian, the only constraints are that usernames must neither start
|
||||
@@ -78,15 +96,8 @@ Details:
|
||||
</refsect1>
|
||||
--- a/man/groupadd.8.xml
|
||||
+++ b/man/groupadd.8.xml
|
||||
@@ -64,12 +64,18 @@
|
||||
files as needed.
|
||||
</para>
|
||||
<para>
|
||||
- Groupnames must start with a lower case letter or an underscore,
|
||||
+ It is usually recommended to only use groupnames that begin 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_-]*[$]?
|
||||
@@ -72,6 +72,12 @@
|
||||
also disallowed.
|
||||
</para>
|
||||
<para>
|
||||
+ On Debian, the only constraints are that groupnames must neither start
|
||||
|
||||
9
debian/patches/series
vendored
9
debian/patches/series
vendored
@@ -1,10 +1,15 @@
|
||||
# CVE-2023-4641
|
||||
0001-gpasswd-1-Fix-password-leak.patch
|
||||
|
||||
# CVE-2023-29383
|
||||
0002-Added-control-character-check.patch
|
||||
0003-Overhaul-valid_field.patch
|
||||
|
||||
# These patches are only for the testsuite:
|
||||
#900_testsuite_groupmems
|
||||
#901_testsuite_gcov
|
||||
|
||||
0001-chage-Fix-regression-in-print_date.patch
|
||||
008_login_log_failure_in_FTMP
|
||||
301_lastlog_faillog_do_not_reset_non-existent_data
|
||||
401_cppw_src.dpatch
|
||||
# 402 should be merged in 401, but should be reviewed by SE Linux experts first
|
||||
402_cppw_selinux
|
||||
|
||||
6
debian/rules
vendored
6
debian/rules
vendored
@@ -21,6 +21,10 @@ DEB_CONFIGURE_EXTRA_FLAGS := --without-libcrack \
|
||||
--without-tcb \
|
||||
SHELL=/bin/sh
|
||||
|
||||
ifneq ($(filter nodoc,$(DEB_BUILD_PROFILES)),)
|
||||
DEB_CONFIGURE_EXTRA_FLAGS += --disable-man
|
||||
endif
|
||||
|
||||
# Set the default editor for vipw/vigr
|
||||
CFLAGS += -DDEFAULT_EDITOR="\"sensible-editor\""
|
||||
|
||||
@@ -38,7 +42,7 @@ endif
|
||||
dh_install -a
|
||||
ifeq ($(DEB_HOST_ARCH_OS),hurd)
|
||||
# /bin/login is provided by the hurd package.
|
||||
rm -f debian/login/bin/login
|
||||
rm -f debian/login/usr/bin/login
|
||||
endif
|
||||
|
||||
override_dh_installpam:
|
||||
|
||||
4
debian/upstream/metadata
vendored
Normal file
4
debian/upstream/metadata
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
Bug-Database: https://github.com/shadow-maint/shadow/issues
|
||||
Bug-Submit: https://github.com/shadow-maint/shadow/issues/new
|
||||
Repository-Browse: https://github.com/shadow-maint/shadow
|
||||
8
debian/watch
vendored
8
debian/watch
vendored
@@ -1,4 +1,6 @@
|
||||
version=4
|
||||
opts="pgpsigurlmangle=s/$/.asc/,dversionmangle=s/\+dfsg\d*$//,repacksuffix=+dfsg1" \
|
||||
https://github.com/shadow-maint/shadow/releases \
|
||||
(?:.*?/)?shadow-(\d[\d.]*)\.tar\.xz debian uupdate
|
||||
opts=downloadurlmangle=s/archive\/refs\/tags\/(.*)\.tar\.gz/releases\/download\/$1\/@PACKAGE@-$1\.tar\.xz/,\
|
||||
pgpsigurlmangle=s/$/.asc/,\
|
||||
dversionmangle=s/\+dfsg1//,repacksuffix=+dfsg1 \
|
||||
https://github.com/shadow-maint/@PACKAGE@/tags \
|
||||
/shadow-maint/@PACKAGE@/archive/refs/tags/([^v].*)\.tar\.gz
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
/* local function prototypes */
|
||||
static int lrename (const char *, const char *);
|
||||
static int check_link_count (const char *file);
|
||||
static int check_link_count (const char *file, bool log);
|
||||
static int do_lock_file (const char *file, const char *lock, bool log);
|
||||
static /*@null@*/ /*@dependent@*/FILE *fopen_set_perms (
|
||||
const char *name,
|
||||
@@ -85,23 +85,31 @@ int lrename (const char *old, const char *new)
|
||||
res = rename (old, new);
|
||||
|
||||
#ifdef __GLIBC__
|
||||
if (NULL != r) {
|
||||
free (r);
|
||||
}
|
||||
free (r);
|
||||
#endif /* __GLIBC__ */
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int check_link_count (const char *file)
|
||||
static int check_link_count (const char *file, bool log)
|
||||
{
|
||||
struct stat sb;
|
||||
|
||||
if (stat (file, &sb) != 0) {
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s file stat error: %s\n",
|
||||
shadow_progname, file, strerror (errno));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (sb.st_nlink != 2) {
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s: lock file already used (nlink: %u)\n",
|
||||
shadow_progname, file, sb.st_nlink);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -153,12 +161,7 @@ static int do_lock_file (const char *file, const char *lock, bool log)
|
||||
close (fd);
|
||||
|
||||
if (link (file, lock) == 0) {
|
||||
retval = check_link_count (file);
|
||||
if ((0==retval) && log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s: lock file already used\n",
|
||||
shadow_progname, file);
|
||||
}
|
||||
retval = check_link_count (file, log);
|
||||
unlink (file);
|
||||
return retval;
|
||||
}
|
||||
@@ -219,12 +222,7 @@ static int do_lock_file (const char *file, const char *lock, bool log)
|
||||
|
||||
retval = 0;
|
||||
if (link (file, lock) == 0) {
|
||||
retval = check_link_count (file);
|
||||
if ((0==retval) && log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s: lock file already used\n",
|
||||
shadow_progname, file);
|
||||
}
|
||||
retval = check_link_count (file, log);
|
||||
} else {
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
@@ -337,9 +335,7 @@ static void free_linked_list (struct commonio_db *db)
|
||||
p = db->head;
|
||||
db->head = p->next;
|
||||
|
||||
if (NULL != p->line) {
|
||||
free (p->line);
|
||||
}
|
||||
free (p->line);
|
||||
|
||||
if (NULL != p->eptr) {
|
||||
db->ops->free (p->eptr);
|
||||
@@ -395,10 +391,8 @@ int commonio_lock_nowait (struct commonio_db *db, bool log)
|
||||
err = 1;
|
||||
}
|
||||
cleanup_ENOMEM:
|
||||
if (file)
|
||||
free(file);
|
||||
if (lock)
|
||||
free(lock);
|
||||
free(file);
|
||||
free(lock);
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -1200,9 +1194,7 @@ int commonio_remove (struct commonio_db *db, const char *name)
|
||||
|
||||
commonio_del_entry (db, p);
|
||||
|
||||
if (NULL != p->line) {
|
||||
free (p->line);
|
||||
}
|
||||
free (p->line);
|
||||
|
||||
if (NULL != p->eptr) {
|
||||
db->ops->free (p->eptr);
|
||||
|
||||
@@ -310,14 +310,6 @@ extern char *strerror ();
|
||||
# define format_attr(type, index, check)
|
||||
#endif
|
||||
|
||||
/* ! Arguments evaluated twice ! */
|
||||
#ifndef MIN
|
||||
#define MIN(a,b) (((a) < (b)) ? (a) : (b))
|
||||
#endif
|
||||
#ifndef MAX
|
||||
#define MAX(x,y) (((x) > (y)) ? (x) : (y))
|
||||
#endif
|
||||
|
||||
/* Maximum length of usernames */
|
||||
#ifdef HAVE_UTMPX_H
|
||||
# include <utmpx.h>
|
||||
@@ -335,6 +327,9 @@ extern char *strerror ();
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Maximum length of passwd entry */
|
||||
#define PASSWD_ENTRY_MAX_LENGTH 32768
|
||||
|
||||
#ifdef HAVE_SECURE_GETENV
|
||||
# define shadow_getenv(name) secure_getenv(name)
|
||||
# else
|
||||
|
||||
@@ -388,10 +388,7 @@ int putdef_str (const char *name, const char *value)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (NULL != d->value) {
|
||||
free (d->value);
|
||||
}
|
||||
|
||||
free (d->value);
|
||||
d->value = cp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -418,9 +418,7 @@ static int split_groups (unsigned int max_members)
|
||||
/* Shift all the members */
|
||||
/* The number of members in new_gptr will be check later */
|
||||
for (i = 0; NULL != new_gptr->gr_mem[i + max_members]; i++) {
|
||||
if (NULL != new_gptr->gr_mem[i]) {
|
||||
free (new_gptr->gr_mem[i]);
|
||||
}
|
||||
free (new_gptr->gr_mem[i]);
|
||||
new_gptr->gr_mem[i] = new_gptr->gr_mem[i + max_members];
|
||||
new_gptr->gr_mem[i + max_members] = NULL;
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ void gr_free (/*@out@*/ /*@only@*/struct group *grent)
|
||||
{
|
||||
free (grent->gr_name);
|
||||
if (NULL != grent->gr_passwd) {
|
||||
memzero (grent->gr_passwd, strlen (grent->gr_passwd));
|
||||
strzero (grent->gr_passwd);
|
||||
free (grent->gr_passwd);
|
||||
}
|
||||
gr_free_members(grent);
|
||||
|
||||
@@ -59,7 +59,6 @@ void nss_init(const char *nsswitch_path) {
|
||||
// subid: files
|
||||
nssfp = fopen(nsswitch_path, "r");
|
||||
if (!nssfp) {
|
||||
fprintf(shadow_logfd, "Failed opening %s: %m\n", nsswitch_path);
|
||||
atomic_store(&nss_init_completed, true);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -483,7 +483,6 @@ extern bool valid (const char *, const struct passwd *);
|
||||
extern /*@maynotreturn@*/ /*@only@*//*@out@*//*@notnull@*/void *xmalloc (size_t size)
|
||||
/*@ensures MaxSet(result) == (size - 1); @*/;
|
||||
extern /*@maynotreturn@*/ /*@only@*//*@notnull@*/char *xstrdup (const char *);
|
||||
extern void xfree(void *ap);
|
||||
|
||||
/* xgetpwnam.c */
|
||||
extern /*@null@*/ /*@only@*/struct passwd *xgetpwnam (const char *);
|
||||
|
||||
@@ -56,7 +56,10 @@ static int passwd_put (const void *ent, FILE * file)
|
||||
|| (pw->pw_gid == (gid_t)-1)
|
||||
|| (valid_field (pw->pw_gecos, ":\n") == -1)
|
||||
|| (valid_field (pw->pw_dir, ":\n") == -1)
|
||||
|| (valid_field (pw->pw_shell, ":\n") == -1)) {
|
||||
|| (valid_field (pw->pw_shell, ":\n") == -1)
|
||||
|| (strlen (pw->pw_name) + strlen (pw->pw_passwd) +
|
||||
strlen (pw->pw_gecos) + strlen (pw->pw_dir) +
|
||||
strlen (pw->pw_shell) + 100 > PASSWD_ENTRY_MAX_LENGTH)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ void pw_free (/*@out@*/ /*@only@*/struct passwd *pwent)
|
||||
if (pwent != NULL) {
|
||||
free (pwent->pw_name);
|
||||
if (pwent->pw_passwd) {
|
||||
memzero (pwent->pw_passwd, strlen (pwent->pw_passwd));
|
||||
strzero (pwent->pw_passwd);
|
||||
free (pwent->pw_passwd);
|
||||
}
|
||||
free (pwent->pw_gecos);
|
||||
|
||||
@@ -122,12 +122,14 @@ static int semanage_user_mod (semanage_handle_t *handle,
|
||||
goto done;
|
||||
}
|
||||
|
||||
ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE);
|
||||
if (ret != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("Could not set serange for %s\n"), login_name);
|
||||
ret = 1;
|
||||
goto done;
|
||||
if (semanage_mls_enabled(handle)) {
|
||||
ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE);
|
||||
if (ret != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("Could not set serange for %s\n"), login_name);
|
||||
ret = 1;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
ret = semanage_seuser_set_sename (handle, seuser, seuser_name);
|
||||
@@ -179,13 +181,14 @@ static int semanage_user_add (semanage_handle_t *handle,
|
||||
goto done;
|
||||
}
|
||||
|
||||
ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE);
|
||||
if (ret != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("Could not set serange for %s\n"),
|
||||
login_name);
|
||||
ret = 1;
|
||||
goto done;
|
||||
if (semanage_mls_enabled(handle)) {
|
||||
ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE);
|
||||
if (ret != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("Could not set serange for %s\n"), login_name);
|
||||
ret = 1;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
ret = semanage_seuser_set_sename (handle, seuser, seuser_name);
|
||||
|
||||
@@ -54,8 +54,7 @@ static char **list (char *s)
|
||||
rbuf = malloc (size * sizeof (char *));
|
||||
}
|
||||
if (!rbuf) {
|
||||
if (members)
|
||||
free (members);
|
||||
free (members);
|
||||
members = 0;
|
||||
size = 0;
|
||||
return (char **) 0;
|
||||
@@ -89,8 +88,7 @@ struct group *sgetgrent (const char *buf)
|
||||
if (strlen (buf) + 1 > size) {
|
||||
/* no need to use realloc() here - just free it and
|
||||
allocate a larger block */
|
||||
if (grpbuf)
|
||||
free (grpbuf);
|
||||
free (grpbuf);
|
||||
size = strlen (buf) + 1000; /* at least: strlen(buf) + 1 */
|
||||
grpbuf = malloc (size);
|
||||
if (!grpbuf) {
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <stdio.h>
|
||||
#include <pwd.h>
|
||||
#include "prototypes.h"
|
||||
#include "shadowlog_internal.h"
|
||||
|
||||
#define NFIELDS 7
|
||||
|
||||
@@ -34,7 +35,7 @@
|
||||
struct passwd *sgetpwent (const char *buf)
|
||||
{
|
||||
static struct passwd pwent;
|
||||
static char pwdbuf[1024];
|
||||
static char pwdbuf[PASSWD_ENTRY_MAX_LENGTH];
|
||||
int i;
|
||||
char *cp;
|
||||
char *fields[NFIELDS];
|
||||
@@ -44,8 +45,12 @@ struct passwd *sgetpwent (const char *buf)
|
||||
* the password structure remain valid.
|
||||
*/
|
||||
|
||||
if (strlen (buf) >= sizeof pwdbuf)
|
||||
if (strlen (buf) >= sizeof pwdbuf) {
|
||||
fprintf (shadow_logfd,
|
||||
"%s: Too long passwd entry encountered, file corruption?\n",
|
||||
shadow_progname);
|
||||
return 0; /* fail if too long */
|
||||
}
|
||||
strcpy (pwdbuf, buf);
|
||||
|
||||
/*
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
#include "prototypes.h"
|
||||
#include "shadowlog_internal.h"
|
||||
#include "defines.h"
|
||||
#include <stdio.h>
|
||||
#define FIELDS 9
|
||||
@@ -25,7 +26,7 @@
|
||||
*/
|
||||
struct spwd *sgetspent (const char *string)
|
||||
{
|
||||
static char spwbuf[1024];
|
||||
static char spwbuf[PASSWD_ENTRY_MAX_LENGTH];
|
||||
static struct spwd spwd;
|
||||
char *fields[FIELDS];
|
||||
char *cp;
|
||||
@@ -37,6 +38,9 @@ struct spwd *sgetspent (const char *string)
|
||||
*/
|
||||
|
||||
if (strlen (string) >= sizeof spwbuf) {
|
||||
fprintf (shadow_logfd,
|
||||
"%s: Too long passwd entry encountered, file corruption?\n",
|
||||
shadow_progname);
|
||||
return 0; /* fail if too long */
|
||||
}
|
||||
strcpy (spwbuf, string);
|
||||
|
||||
@@ -128,7 +128,7 @@ void sgr_free (/*@out@*/ /*@only@*/struct sgrp *sgent)
|
||||
size_t i;
|
||||
free (sgent->sg_name);
|
||||
if (NULL != sgent->sg_passwd) {
|
||||
memzero (sgent->sg_passwd, strlen (sgent->sg_passwd));
|
||||
strzero (sgent->sg_passwd);
|
||||
free (sgent->sg_passwd);
|
||||
}
|
||||
for (i = 0; NULL != sgent->sg_adm[i]; i++) {
|
||||
|
||||
@@ -56,7 +56,9 @@ static int shadow_put (const void *ent, FILE * file)
|
||||
|
||||
if ( (NULL == sp)
|
||||
|| (valid_field (sp->sp_namp, ":\n") == -1)
|
||||
|| (valid_field (sp->sp_pwdp, ":\n") == -1)) {
|
||||
|| (valid_field (sp->sp_pwdp, ":\n") == -1)
|
||||
|| (strlen (sp->sp_namp) + strlen (sp->sp_pwdp) +
|
||||
1000 > PASSWD_ENTRY_MAX_LENGTH)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ void spw_free (/*@out@*/ /*@only@*/struct spwd *spent)
|
||||
if (spent != NULL) {
|
||||
free (spent->sp_namp);
|
||||
if (NULL != spent->sp_pwdp) {
|
||||
memzero (spent->sp_pwdp, strlen (spent->sp_pwdp));
|
||||
strzero (spent->sp_pwdp);
|
||||
free (spent->sp_pwdp);
|
||||
}
|
||||
free (spent);
|
||||
|
||||
@@ -380,9 +380,7 @@ shadowtcb_status shadowtcb_set_user (const char* name)
|
||||
return SHADOWTCB_SUCCESS;
|
||||
}
|
||||
|
||||
if (NULL != stored_tcb_user) {
|
||||
free (stored_tcb_user);
|
||||
}
|
||||
free (stored_tcb_user);
|
||||
|
||||
stored_tcb_user = strdup (name);
|
||||
if (NULL == stored_tcb_user) {
|
||||
|
||||
@@ -32,26 +32,44 @@ static bool is_valid_name (const char *name)
|
||||
}
|
||||
|
||||
/*
|
||||
* User/group names must match [a-z_][a-z0-9_-]*[$]
|
||||
*/
|
||||
* User/group names must match gnu e-regex:
|
||||
* [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[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 "..".
|
||||
*/
|
||||
int numeric;
|
||||
|
||||
if (('\0' == *name) ||
|
||||
!((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
|
||||
if ('\0' == *name ||
|
||||
('.' == *name && (('.' == name[1] && '\0' == name[2]) ||
|
||||
'\0' == name[1])) ||
|
||||
!((*name >= 'a' && *name <= 'z') ||
|
||||
(*name >= 'A' && *name <= 'Z') ||
|
||||
(*name >= '0' && *name <= '9') ||
|
||||
*name == '_' ||
|
||||
*name == '.')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
numeric = isdigit(*name);
|
||||
|
||||
while ('\0' != *++name) {
|
||||
if (!(( ('a' <= *name) && ('z' >= *name) ) ||
|
||||
( ('0' <= *name) && ('9' >= *name) ) ||
|
||||
('_' == *name) ||
|
||||
('-' == *name) ||
|
||||
( ('$' == *name) && ('\0' == *(name + 1)) )
|
||||
if (!((*name >= 'a' && *name <= 'z') ||
|
||||
(*name >= 'A' && *name <= 'Z') ||
|
||||
(*name >= '0' && *name <= '9') ||
|
||||
*name == '_' ||
|
||||
*name == '.' ||
|
||||
*name == '-' ||
|
||||
(*name == '$' && name[1] == '\0')
|
||||
)) {
|
||||
return false;
|
||||
}
|
||||
numeric &= isdigit(*name);
|
||||
}
|
||||
|
||||
return true;
|
||||
return !numeric;
|
||||
}
|
||||
|
||||
bool is_valid_user_name (const char *name)
|
||||
|
||||
@@ -126,12 +126,12 @@ static int perm_copy_path(const struct path_info *src,
|
||||
{
|
||||
int src_fd, dst_fd, ret;
|
||||
|
||||
src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
|
||||
src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC);
|
||||
if (src_fd < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
|
||||
dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC);
|
||||
if (dst_fd < 0) {
|
||||
(void) close (src_fd);
|
||||
return -1;
|
||||
@@ -152,12 +152,12 @@ static int attr_copy_path(const struct path_info *src,
|
||||
{
|
||||
int src_fd, dst_fd, ret;
|
||||
|
||||
src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
|
||||
src_fd = openat(src->dirfd, src->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC);
|
||||
if (src_fd < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_CLOEXEC);
|
||||
dst_fd = openat(dst->dirfd, dst->name, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC);
|
||||
if (dst_fd < 0) {
|
||||
(void) close (src_fd);
|
||||
return -1;
|
||||
@@ -354,12 +354,8 @@ static int copy_tree_impl (const struct path_info *src, const struct path_info *
|
||||
old_uid, new_uid,
|
||||
old_gid, new_gid);
|
||||
}
|
||||
if (NULL != src_name) {
|
||||
free (src_name);
|
||||
}
|
||||
if (NULL != dst_name) {
|
||||
free (dst_name);
|
||||
}
|
||||
free (src_name);
|
||||
free (dst_name);
|
||||
}
|
||||
}
|
||||
(void) closedir (dir);
|
||||
@@ -522,15 +518,14 @@ static int copy_dir (const struct path_info *src, const struct path_info *dst,
|
||||
return -1;
|
||||
}
|
||||
#endif /* WITH_SELINUX */
|
||||
if ( (mkdirat (dst->dirfd, dst->name, statp->st_mode) != 0)
|
||||
if ( (mkdirat (dst->dirfd, dst->name, 0700) != 0)
|
||||
|| (chownat_if_needed (dst, statp,
|
||||
old_uid, new_uid, old_gid, new_gid) != 0)
|
||||
|| (fchmodat (dst->dirfd, dst->name, statp->st_mode & 07777, AT_SYMLINK_NOFOLLOW) != 0)
|
||||
#ifdef WITH_ACL
|
||||
|| ( (perm_copy_path (src, dst, &ctx) != 0)
|
||||
&& (errno != 0))
|
||||
#else /* !WITH_ACL */
|
||||
|| (chmod (dst, statp->st_mode) != 0)
|
||||
#endif /* !WITH_ACL */
|
||||
#endif /* WITH_ACL */
|
||||
#ifdef WITH_ATTR
|
||||
/*
|
||||
* If the third parameter is NULL, all extended attributes
|
||||
@@ -719,12 +714,11 @@ static int copy_special (const struct path_info *src, const struct path_info *ds
|
||||
if ( (mknodat (dst->dirfd, dst->name, statp->st_mode & ~07777U, statp->st_rdev) != 0)
|
||||
|| (chownat_if_needed (dst, statp,
|
||||
old_uid, new_uid, old_gid, new_gid) != 0)
|
||||
|| (fchmodat (dst->dirfd, dst->name, statp->st_mode & 07777, AT_SYMLINK_NOFOLLOW) != 0)
|
||||
#ifdef WITH_ACL
|
||||
|| ( (perm_copy_path (src, dst, &ctx) != 0)
|
||||
&& (errno != 0))
|
||||
#else /* !WITH_ACL */
|
||||
|| (fchmodat (dst->dirfd, dst->name, statp->st_mode & 07777, AT_SYMLINK_NOFOLLOW) != 0)
|
||||
#endif /* !WITH_ACL */
|
||||
#endif /* WITH_ACL */
|
||||
#ifdef WITH_ATTR
|
||||
/*
|
||||
* If the third parameter is NULL, all extended attributes
|
||||
@@ -810,16 +804,15 @@ static int copy_file (const struct path_info *src, const struct path_info *dst,
|
||||
return -1;
|
||||
}
|
||||
#endif /* WITH_SELINUX */
|
||||
ofd = openat (dst->dirfd, dst->name, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC | O_NOFOLLOW | O_CLOEXEC, statp->st_mode & 07777);
|
||||
ofd = openat (dst->dirfd, dst->name, O_WRONLY | O_CREAT | O_EXCL | O_TRUNC | O_NOFOLLOW | O_CLOEXEC, 0600);
|
||||
if ( (ofd < 0)
|
||||
|| (fchown_if_needed (ofd, statp,
|
||||
old_uid, new_uid, old_gid, new_gid) != 0)
|
||||
|| (fchmod (ofd, statp->st_mode & 07777) != 0)
|
||||
#ifdef WITH_ACL
|
||||
|| ( (perm_copy_fd (src->full_path, ifd, dst->full_path, ofd, &ctx) != 0)
|
||||
&& (errno != 0))
|
||||
#else /* !WITH_ACL */
|
||||
|| (fchmod (ofd, statp->st_mode & 07777) != 0)
|
||||
#endif /* !WITH_ACL */
|
||||
#endif /* WITH_ACL */
|
||||
#ifdef WITH_ATTR
|
||||
/*
|
||||
* If the third parameter is NULL, all extended attributes
|
||||
|
||||
@@ -60,6 +60,13 @@ static int get_ranges (bool sys_group, gid_t *min_id, gid_t *max_id,
|
||||
(unsigned long) *max_id);
|
||||
return EINVAL;
|
||||
}
|
||||
/*
|
||||
* Zero is reserved for root and the allocation algorithm does not
|
||||
* work right with it.
|
||||
*/
|
||||
if (*min_id == 0) {
|
||||
*min_id = (gid_t) 1;
|
||||
}
|
||||
} else {
|
||||
/* Non-system groups */
|
||||
|
||||
|
||||
@@ -60,6 +60,13 @@ static int get_ranges (bool sys_user, uid_t *min_id, uid_t *max_id,
|
||||
(unsigned long) *max_id);
|
||||
return EINVAL;
|
||||
}
|
||||
/*
|
||||
* Zero is reserved for root and the allocation algorithm does not
|
||||
* work right with it.
|
||||
*/
|
||||
if (*min_id == 0) {
|
||||
*min_id = (uid_t) 1;
|
||||
}
|
||||
} else {
|
||||
/* Non-system users */
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netdb.h>
|
||||
|
||||
@@ -44,10 +44,3 @@
|
||||
{
|
||||
return strcpy (xmalloc (strlen (str) + 1), str);
|
||||
}
|
||||
|
||||
void xfree(void *ap)
|
||||
{
|
||||
if (ap) {
|
||||
free(ap);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: chfn
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: User Commands
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "CHFN" "1" "22/08/2022" "shadow\-utils 4\&.12\&.3" "User Commands"
|
||||
.TH "CHFN" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: groups
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: User Commands
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "GROUPS" "1" "22/08/2022" "shadow\-utils 4\&.12\&.3" "User Commands"
|
||||
.TH "GROUPS" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: id
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: User Commands
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "ID" "1" "22/08/2022" "shadow\-utils 4\&.12\&.3" "User Commands"
|
||||
.TH "ID" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: newgrp
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: User Commands
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "NEWGRP" "1" "22/08/2022" "shadow\-utils 4\&.12\&.3" "User Commands"
|
||||
.TH "NEWGRP" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: sg
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: User Commands
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "SG" "1" "22/08/2022" "shadow\-utils 4\&.12\&.3" "User Commands"
|
||||
.TH "SG" "1" "08/11/2022" "shadow\-utils 4\&.13" "User Commands"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: gshadow
|
||||
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "GSHADOW" "5" "22/08/2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuration"
|
||||
.TH "GSHADOW" "5" "08/11/2022" "shadow\-utils 4\&.13" "File Formats and Configuration"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: groupdel
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: Kommandoer for systemh\(oandtering
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "GROUPDEL" "8" "22/08/2022" "shadow\-utils 4\&.12\&.3" "Kommandoer for systemh\(oandterin"
|
||||
.TH "GROUPDEL" "8" "08/11/2022" "shadow\-utils 4\&.13" "Kommandoer for systemh\(oandterin"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: logoutd
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: Kommandoer for systemh\(oandtering
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "LOGOUTD" "8" "22/08/2022" "shadow\-utils 4\&.12\&.3" "Kommandoer for systemh\(oandterin"
|
||||
.TH "LOGOUTD" "8" "08/11/2022" "shadow\-utils 4\&.13" "Kommandoer for systemh\(oandterin"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: nologin
|
||||
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: Kommandoer for systemh\(oandtering
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "NOLOGIN" "8" "22/08/2022" "shadow\-utils 4\&.12\&.3" "Kommandoer for systemh\(oandterin"
|
||||
.TH "NOLOGIN" "8" "08/11/2022" "shadow\-utils 4\&.13" "Kommandoer for systemh\(oandterin"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: vipw
|
||||
.\" Author: Marek Micha\(/lkiewicz
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22/08/2022
|
||||
.\" Date: 08/11/2022
|
||||
.\" Manual: Kommandoer for systemh\(oandtering
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: Danish
|
||||
.\"
|
||||
.TH "VIPW" "8" "22/08/2022" "shadow\-utils 4\&.12\&.3" "Kommandoer for systemh\(oandterin"
|
||||
.TH "VIPW" "8" "08/11/2022" "shadow\-utils 4\&.13" "Kommandoer for systemh\(oandterin"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: chage
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "CHAGE" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "CHAGE" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: chfn
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "CHFN" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "CHFN" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: chsh
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "CHSH" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "CHSH" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: expiry
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "EXPIRY" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "EXPIRY" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: gpasswd
|
||||
.\" Author: Rafal Maszkowski
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "GPASSWD" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "GPASSWD" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: groups
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "GROUPS" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "GROUPS" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: id
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "ID" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "ID" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: login
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "LOGIN" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "LOGIN" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: newgrp
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "NEWGRP" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "NEWGRP" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: passwd
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "PASSWD" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "PASSWD" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: sg
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "SG" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "SG" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: su
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Dienstprogramme f\(:ur Benutzer
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "SU" "1" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Dienstprogramme f\(:ur Benutzer"
|
||||
.TH "SU" "1" "08.11.2022" "shadow\-utils 4\&.13" "Dienstprogramme f\(:ur Benutzer"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: shadow
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Bibliotheksaufrufe
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "SHADOW" "3" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Bibliotheksaufrufe"
|
||||
.TH "SHADOW" "3" "08.11.2022" "shadow\-utils 4\&.13" "Bibliotheksaufrufe"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: faillog
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "FAILLOG" "5" "22.08.2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuratio"
|
||||
.TH "FAILLOG" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuratio"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: gshadow
|
||||
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "GSHADOW" "5" "22.08.2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuration"
|
||||
.TH "GSHADOW" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: limits
|
||||
.\" Author: Luca Berra
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "LIMITS" "5" "22.08.2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuration"
|
||||
.TH "LIMITS" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: login.access
|
||||
.\" Author: Marek Micha\(/lkiewicz
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "LOGIN\&.ACCESS" "5" "22.08.2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuration"
|
||||
.TH "LOGIN\&.ACCESS" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: login.defs
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "LOGIN\&.DEFS" "5" "22.08.2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuration"
|
||||
.TH "LOGIN\&.DEFS" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: passwd
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "PASSWD" "5" "22.08.2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuration"
|
||||
.TH "PASSWD" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: porttime
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "PORTTIME" "5" "22.08.2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuration"
|
||||
.TH "PORTTIME" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: shadow
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "SHADOW" "5" "22.08.2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuration"
|
||||
.TH "SHADOW" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: suauth
|
||||
.\" Author: Marek Micha\(/lkiewicz
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: File Formats and Configuration Files
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "SUAUTH" "5" "22.08.2022" "shadow\-utils 4\&.12\&.3" "File Formats and Configuration"
|
||||
.TH "SUAUTH" "5" "08.11.2022" "shadow\-utils 4\&.13" "File Formats and Configuration"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: chgpasswd
|
||||
.\" Author: Thomas K\(/loczko <kloczek@pld.org.pl>
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "CHGPASSWD" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "CHGPASSWD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: chpasswd
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "CHPASSWD" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "CHPASSWD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: faillog
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "FAILLOG" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "FAILLOG" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: groupadd
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "GROUPADD" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "GROUPADD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
@@ -38,7 +38,7 @@ The
|
||||
\fBgroupadd\fR
|
||||
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\&.
|
||||
.PP
|
||||
Gruppennamen m\(:ussen mit einem Kleinbuchstaben oder einem Unterstrich beginnen\&. Nachfolgend d\(:urfen sie Kleinbuchstaben, Zahlen, Unterstriche und Gedankenstriche enthalten\&. Das letzte Zeichen darf auch ein Dollarzeichen sein\&. Als regul\(:arer Ausdruck: [a\-z_][a\-z0\-9_\-]*[$]?
|
||||
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\&.
|
||||
.PP
|
||||
Groupnames may only be up to 32 characters long\&.
|
||||
.SH "OPTIONEN"
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: groupdel
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "GROUPDEL" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "GROUPDEL" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: groupmems
|
||||
.\" Author: George Kraft, IV
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "GROUPMEMS" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "GROUPMEMS" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: groupmod
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "GROUPMOD" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "GROUPMOD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: grpck
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "GRPCK" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "GRPCK" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: lastlog
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "LASTLOG" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "LASTLOG" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: logoutd
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "LOGOUTD" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "LOGOUTD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: newusers
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "NEWUSERS" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "NEWUSERS" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: nologin
|
||||
.\" Author: Nicolas Fran\(,cois <nicolas.francois@centraliens.net>
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "NOLOGIN" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "NOLOGIN" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: pwck
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "PWCK" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "PWCK" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: pwconv
|
||||
.\" Author: Marek Micha\(/lkiewicz
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "PWCONV" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "PWCONV" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: sulogin
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "SULOGIN" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "SULOGIN" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: useradd
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "USERADD" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "USERADD" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
@@ -345,7 +345,8 @@ sets the path to the user\*(Aqs login shell\&. Without this option, the system w
|
||||
\fBSHELL\fR
|
||||
variable specified in
|
||||
/etc/default/useradd, or, if that is as well not set, the field for the login shell in
|
||||
/etc/passwdremains empty\&.
|
||||
/etc/passwd
|
||||
remains empty\&.
|
||||
.RE
|
||||
.PP
|
||||
\fB\-u\fR, \fB\-\-uid\fR\ \&\fIUID\fR
|
||||
@@ -464,7 +465,9 @@ Similarly, if the username already exists in an external user database such as N
|
||||
\fBuseradd\fR
|
||||
will deny the user account creation request\&.
|
||||
.PP
|
||||
Benutzernamen m\(:ussen mit einem Kleinbuchstaben oder einem Unterstrich beginnen\&. Sie d\(:urfen nur Kleinbuchstaben, Zahlen, Unterstriche oder Gedankenstriche enthalten\&. Sie k\(:onnen mit einem Dollarzeichen enden\&. Als regul\(:arer Ausdruck: [a\-z_][a\-z0\-9_\-]*[$]?
|
||||
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
|
||||
\fBls\fR
|
||||
output\&.
|
||||
.PP
|
||||
Benutzernamen d\(:urfen nur bis zu 32 Zeichen lang sein\&.
|
||||
.SH "KONFIGURATION"
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
.\" Title: userdel
|
||||
.\" Author: Julianne Frances Haugh
|
||||
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
|
||||
.\" Date: 22.08.2022
|
||||
.\" Date: 08.11.2022
|
||||
.\" Manual: Befehle zur Systemverwaltung
|
||||
.\" Source: shadow-utils 4.12.3
|
||||
.\" Source: shadow-utils 4.13
|
||||
.\" Language: German
|
||||
.\"
|
||||
.TH "USERDEL" "8" "22.08.2022" "shadow\-utils 4\&.12\&.3" "Befehle zur Systemverwaltung"
|
||||
.TH "USERDEL" "8" "08.11.2022" "shadow\-utils 4\&.13" "Befehle zur Systemverwaltung"
|
||||
.\" -----------------------------------------------------------------
|
||||
.\" * Define some portability stuff
|
||||
.\" -----------------------------------------------------------------
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user