shadow/old/orig-config.h

455 lines
13 KiB
C

/*
* Copyright 1989 - 1994, Julianne Frances Haugh
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of Julianne F. Haugh nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Configuration file for login.
*
* $Id: orig-config.h,v 1.2 1997/05/01 23:11:59 marekm Exp $
*/
#ifndef _CONFIG_H
#define _CONFIG_H
#ifdef __linux__
#include <sys/types.h>
#include <sys/param.h>
#include <stdio.h>
#endif
/*
* Pathname to the run-time configuration definitions file.
*/
#define LOGINDEFS "/etc/login.defs"
/*
* Define SHADOWPWD to use shadow [ unreadable ] password file.
* Release 3 has a requirement that SHADOWPWD always be defined.
*/
#define SHADOWPWD
/*
* Define AUTOSHADOW to have root always copy sp_pwdp to pw_passwd
* for getpwuid() and getpwnam(). This provides compatibility for
* privileged applications which are shadow-ignorant. YOU ARE
* ENCOURAGED TO NOT USE THIS OPTION UNLESS ABSOLUTELY NECESSARY.
*/
/*
* Yes, don't do it (and don't build libc with the SHADOW_COMPAT=true
* option) unless you REALLY know what you're doing. It might work,
* but can lead to unshadowing your passwords. This is not the right
* way to support shadow passwords! You have been warned. --marekm
*/
#undef AUTOSHADOW
/*
* Define SHADOWGRP to user shadowed group files. This feature adds
* the concept of a group administrator. You MUST NOT define this
* if you disable SHADOWPWD.
*/
#define SHADOWGRP /**/
/*
* Define these if you have shadow password/group support functions in
* your version of libc. This removes these functions from libshadow.a
* (the ones from libc will be used instead).
*
* Finally upgraded to ELF, so...
*/
#define HAVE_SHADOWPWD
#define HAVE_SHADOWGRP
/*
* Define MD5_CRYPT to support the MD5-based password hashing algorithm
* compatible with FreeBSD. All programs using pw_encrypt() instead of
* crypt() will understand both styles: old (standard, DES-based), and
* new (MD5-based).
*
* This means that it is possible to copy encrypted passwords from FreeBSD.
* Programs to change passwords (like passwd) will still use the old style
* crypt() for compatibility.
*
* To enable the use of the new crypt() for new passwords (if you don't
* need to copy them to other systems, except FreeBSD and Linux), set the
* MD5_CRYPT option in /etc/login.defs to "yes".
*
* This algorithm supports passwords of any length (the getpass() limit
* is 127 on Linux) and salt strings up to 8 (instead of 2) characters.
*
* This is experimental, and currently requires that all programs use
* pw_encrypt() from libshadow.a instead of crypt() from libc. This is
* problematic especially on ELF systems (libc5 has getspnam() so there
* is otherwise no need to link with the static libshadow.a). On most
* a.out systems you have to link with libshadow.a anyway, no problem.
*/
#define MD5_CRYPT
/*
* Define DOUBLESIZE to use 16 character passwords. Define SW_CRYPT
* to use 80 character passwords with SecureWare[tm]'s method of
* generating ciphertext.
* Not recommended because of some potential weaknesses. --marekm
*/
#undef DOUBLESIZE
#undef SW_CRYPT
/*
* Define SKEY to allow dual-mode SKEY/normal logins
*/
#undef SKEY
/*
* Define AGING if you want the password aging checks made.
* Release 3 has a requirement that AGING always be defined.
*/
#define AGING
/*
* Pick your version of DBM. If you define either DBM or NDBM, you must
* define GETPWENT. If you define NDBM you must define GETGRENT as well.
*/
/*
* DBM support is untested, not recommended yet. It might make more
* sense if someone could add it to getpwnam() etc. in libc so that all
* programs (such as ls) can benefit from it. Any volunteers?
*
* The old DBM (as opposed to NDBM) support may be removed in a future
* release if no one complains. It's too braindamaged for the number
* of #ifdefs it adds (only one database per process at a time).
*
* On Linux, NDBM is actually implemented using GDBM, which is licensed
* under the GPL (not LGPL!) - I'm not sure if it is legal to link it
* with non-GPL code (such as the shadow suite). Consult your lawyers,
* or just modify the code to use db instead. Welcome to the wonderful
* world of copyrights. Yuck!
*
* The current DBM support code has a subtle design flaw. See my
* comment in pwdbm.c for details...
*
* Unless you have 2000 users or so, DBM probably doesn't make things
* much faster, and it does make things more complicated (= possibly
* more buggy). Do it only if you know what you're doing! --marekm
*/
#undef DBM
#undef NDBM
/*
* Define USE_SYSLOG if you want to have SYSLOG functions included in your code.
*/
#define USE_SYSLOG
/*
* Enable RLOGIN to support the "-r" and "-h" options.
* Also enable UT_HOST if your /etc/utmp provides for a host name.
*/
#define RLOGIN
#define UT_HOST
/*
* Define NO_RFLG to remove support for login -r flag if your system has
* a new-style rlogind which doesn't need it. --marekm
*/
#define NO_RFLG
/*
* Define the "success" code from ruserok(). Most modern systems use 0
* for success and -1 for failure, while certain older versions use 1
* for success and 0 for failure. Please check your manpage to be sure.
*/
#define RUSEROK 0
/*
* Select one of the following
*/
#undef DIR_XENIX /* include <sys/ndir.h>, use (struct direct) */
#undef DIR_BSD /* include <ndir.h>, use (struct direct) */
#define DIR_SYSV /* include <dirent.h>, use (struct dirent) */
/*
* Various system environment definitions.
*/
/*
* Define if you have sgetgrent() in libc, to remove this function from
* libshadow.a (some versions of libc5 reportedly have it, most reports
* so far are from Red Hat 2.1 users, more information is welcome).
*/
#undef HAVE_SGETGRENT
/*
* Only important if you compile with GETGRENT defined (use my getgr*()
* but still use fgetgrent() from libc if HAVE_FGETGRENT defined).
*/
#undef HAVE_FGETGRENT
#define HAVE_SIGACTION
#define HAVE_GETUSERSHELL /* Define if your UNIX supports getusershell() */
#define HAVE_LL_HOST /* Define if "struct lastlog" contains ll_host */
#define HAVE_ULIMIT /* Define if your UNIX supports ulimit() */
#define HAVE_RLIMIT /* Define if your UNIX supports setrlimit() */
#undef GETPWENT /* Define if you want my GETPWENT(3) routines */
#undef GETGRENT /* Define if you want my GETGRENT(3) routines */
#define NEED_AL64 /* Define if library does not include a64l() */
#undef NEED_MKDIR /* Define if system does not have mkdir() */
#undef NEED_RMDIR /* Define if system does not have rmdir() */
#undef NEED_RENAME /* Define if system does not have rename() */
#undef NEED_STRSTR /* Define if library does not include strstr() */
#undef NEED_PUTPWENT /* Define if library does not include putpwent()*/
#define SIGTYPE void /* Type returned by signal() */
/*
* These definitions MUST agree with the values defined in <pwd.h>.
*/
#undef BSD_QUOTA /* the pw_quota field exists */
#undef ATT_AGE /* the pw_age field exists */
#undef ATT_COMMENT /* the pw_comment field exists */
#define UID_T uid_t /* set to be the type of UID's */
#define GID_T gid_t /* set to be the type of GID's */
#ifndef UID_T
#if defined(SVR4) || defined(_POSIX_SOURCE)
#define UID_T uid_t
#else
#define UID_T int
#endif
#endif
#ifndef GID_T
#if defined(SVR4) || defined(_POSIX_SOURCE)
#define GID_T gid_t
#else
#define GID_T int
#endif
#endif
/*
* Define NDEBUG for production versions
*/
#define NDEBUG
/*
* Define PWDFILE and GRPFILE to the names of the password and
* group files. //jiivee
*/
#define PASSWD_FILE "/etc/passwd"
#define PASSWD_PAG_FILE "/etc/passwd.pag"
#define GROUP_FILE "/etc/group"
#define GROUP_PAG_FILE "/etc/group.pag"
#ifdef SHADOWPWD
#define SHADOW_FILE "/etc/shadow"
#define SHADOW_PAG_FILE "/etc/shadow.pag"
#ifdef SHADOWGRP
#define SGROUP_FILE "/etc/gshadow"
#define SGROUP_PAG_FILE "/etc/gshadow.pag"
#endif
#endif
/*
* The structure of the utmp file. There are two kinds of UTMP files,
* "BSD" and "USG". "BSD" has no PID or type information, "USG" does.
* If you define neither of these, the type will be defaulted by using
* BSD, SUN, SYS3 and USG defines.
*/
#define _UTMP_FILE "/var/run/utmp"
#define _WTMP_FILE "/var/log/wtmp"
#define USG_UTMP /**/
/* #define BSD_UTMP */
#if !defined(USG_UTMP) && !defined(BSD_UTMP)
#if defined(BSD) || defined(SYS3) || defined(SUN)
#define BSD_UTMP
#else
#define USG_UTMP
#endif /* BSD || SYS3 || SUN */
#endif /* !USG_UTMP || !BSD_UTMP */
/*
* From where to look for legal user shells
*/
#ifndef SHELLS_FILE
#define SHELLS_FILE "/etc/shells"
#endif
/*
* Default issue file location
*/
#ifndef ISSUE_FILE
#define ISSUE_FILE "/etc/issue"
#endif
/*
* Logoutd message file
*/
#define HUP_MESG_FILE "/etc/logoutd.mesg"
/*
* Mail spool directory. This is used if mailspool cannot be located otherwise
*/
#ifndef MAIL_SPOOL_DIR
#define MAIL_SPOOL_DIR "/var/spool/mail"
#endif
/*
* Where are new user default setup files kept
*/
#define SKEL_DIR "/etc/skel"
/*
* New user defaults. The NEW_USER_FILE must have 6 X's in the end of name
*/
#define USER_DEFAULTS_FILE "/etc/default/useradd"
#define NEW_USER_FILE "/etc/default/nuaddXXXXXX"
/*
* Telinit program. If your system uses /etc/telinit to change run
* level, define TELINIT and then define the RUNLEVEL macro to be the
* run-level to switch INIT to. This is used by sulogin to change
* from single user to multi-user mode.
*
* From bluca@www.polimi.it: instead, set up /etc/inittab properly
* ~0:S:wait:/sbin/sulogin
* ~9:S:wait:/sbin/telinit -t0 2
*/
#undef TELINIT
#undef PATH_TELINIT "/sbin/telinit"
#undef RUNLEVEL "2"
/*
* Crontab and atrm. Used in userdel.c - see user_cancel(). Verify
* that these are correct for your distribution. --marekm
*/
#if 0 /* old Slackware */
#define CRONTAB_COMMAND "/usr/bin/crontab -d -u %s"
#define CRONTAB_FILE "/var/cron/tabs/%s"
#else
/* Debian 0.93R6 (marekm): */
#define CRONTAB_COMMAND "/usr/bin/crontab -r -u %s"
#define CRONTAB_FILE "/var/spool/cron/crontabs/%s"
/* Red Hat 2.1 (jiivee@iki.fi): */
/* #define CRONTAB_FILE "/var/spool/cron/%s" */
#endif
/*
* Hmmm, had to #undef this since at-2.8a on Linux doesn't have an option
* to remove all jobs owned by some user.
*
* Fortunately, atrun will not run any at jobs for users not listed in
* /etc/passwd. Unfortunately, if you remove a user and add a new user
* with the same UID before it is time to run the old at job, atrun will
* not notice this and run the old job. Not good. The best fix right
* now is to remove any at jobs left over by hand, and not reuse any
* previously used UID values.
*
* We probably should discuss this with the at maintainer... It might
* be better to store at jobs by user names, not UIDs. --marekm
*/
#undef ATRM_COMMAND
/*
* Login times log file location.
*/
#define LASTLOG_FILE "/var/log/lastlog"
/*
* Linux FSSTND recommends that the chfn, chsh, gpasswd, passwd commands
* are in /usr/bin, not /bin (not needed before mounting /usr). --marekm
*/
#define CHFN_PROGRAM "/usr/bin/chfn"
#define CHSH_PROGRAM "/usr/bin/chsh"
#define GPASSWD_PROGRAM "/usr/bin/gpasswd"
#define PASSWD_PROGRAM "/usr/bin/passwd"
/*
* On most Linux systems, the login prompt is "hostname login: ". Some
* automatic login scripts depend on it. If not defined, the default is
* just "login: ". %s is replaced by the hostname. --marekm
*/
#define LOGIN_PROMPT "%s login: "
/*
* Define to enable (warning: completely unsupported by me) administrator
* defined authentication methods. Most programs are not aware of them,
* so we can remove some code and possibly some bugs :-). PAM (when done)
* will replace much of this anyway... --marekm
*/
/* #define AUTH_METHODS */
/*
* Define to enable detailed login access control (a la logdaemon/FreeBSD)
* and su access control (much more powerful/fascist than the traditional
* BSD-style "wheel group" feature). Any volunteers to convince the GNU
* folks that they should add access control to their version of su?
* Call me a fascist, but then I'll have to call you a communist :-).
*/
#define LOGIN_ACCESS
#define SU_ACCESS
/* see faillog.h for more info what it is */
#define FAILLOG_LOCKTIME
/* see lmain.c and login.defs.linux */
#define CONSOLE_GROUPS
#endif /* _CONFIG_H */