login_cap.h revision 25658
125658Sdavidn/*- 225658Sdavidn * Copyright (c) 1996 by 325658Sdavidn * Sean Eric Fagan <sef@kithrup.com> 425658Sdavidn * David Nugent <davidn@blaze.net.au> 525658Sdavidn * All rights reserved. 625658Sdavidn * 725658Sdavidn * Redistribution and use in source and binary forms, with or without 825658Sdavidn * modification, is permitted provided that the following conditions 925658Sdavidn * are met: 1025658Sdavidn * 1. Redistributions of source code must retain the above copyright 1125658Sdavidn * notice immediately at the beginning of the file, without modification, 1225658Sdavidn * this list of conditions, and the following disclaimer. 1325658Sdavidn * 2. Redistributions in binary form must reproduce the above copyright 1425658Sdavidn * notice, this list of conditions and the following disclaimer in the 1525658Sdavidn * documentation and/or other materials provided with the distribution. 1625658Sdavidn * 3. This work was done expressly for inclusion into FreeBSD. Other use 1725658Sdavidn * is permitted provided this notation is included. 1825658Sdavidn * 4. Absolutely no warranty of function or purpose is made by the authors. 1925658Sdavidn * 5. Modifications may be freely made to this file providing the above 2025658Sdavidn * conditions are met. 2125658Sdavidn * 2225658Sdavidn * Low-level routines relating to the user capabilities database 2325658Sdavidn * 2425658Sdavidn * Was login_cap.h,v 1.9 1997/05/07 20:00:01 eivind Exp 2525658Sdavidn * $Id$ 2625658Sdavidn */ 2725658Sdavidn 2825658Sdavidn#ifndef _LOGIN_CAP_H_ 2925658Sdavidn#define _LOGIN_CAP_H_ 3025658Sdavidn 3125658Sdavidn#define LOGIN_DEFCLASS "default" 3225658Sdavidn#define LOGIN_DEFSTYLE "passwd" 3325658Sdavidn#define LOGIN_DEFSERVICE "login" 3425658Sdavidn#define LOGIN_DEFUMASK 022 3525658Sdavidn#define LOGIN_DEFPRI 0 3625658Sdavidn#define _PATH_LOGIN_CONF "/etc/login.conf" 3725658Sdavidn#define _FILE_LOGIN_CONF ".login_conf" 3825658Sdavidn#define _PATH_AUTHPROG "/usr/libexec/login_" 3925658Sdavidn 4025658Sdavidn#define LOGIN_SETGROUP 0x0001 /* set group */ 4125658Sdavidn#define LOGIN_SETLOGIN 0x0002 /* set login (via setlogin) */ 4225658Sdavidn#define LOGIN_SETPATH 0x0004 /* set path */ 4325658Sdavidn#define LOGIN_SETPRIORITY 0x0008 /* set priority */ 4425658Sdavidn#define LOGIN_SETRESOURCES 0x0010 /* set resources (cputime, etc.) */ 4525658Sdavidn#define LOGIN_SETUMASK 0x0020 /* set umask, obviously */ 4625658Sdavidn#define LOGIN_SETUSER 0x0040 /* set user (via setuid) */ 4725658Sdavidn#define LOGIN_SETENV 0x0080 /* set user environment */ 4825658Sdavidn#define LOGIN_SETALL 0x00ff /* set everything */ 4925658Sdavidn 5025658Sdavidn#define BI_AUTH "authorize" 5125658Sdavidn#define BI_AUTH2 "authorise" 5225658Sdavidn#define BI_REJECT "reject" 5325658Sdavidn#define BI_REMOVE "remove" 5425658Sdavidn#define BI_ROOTOKAY "root" 5525658Sdavidn#define BI_SECURE "secure" 5625658Sdavidn#define BI_SETENV "setenv" 5725658Sdavidn 5825658Sdavidn#ifndef AUTH_NONE /* Protect against <rpc/auth.h> */ 5925658Sdavidn#define AUTH_NONE 0x00 6025658Sdavidn#endif 6125658Sdavidn#define AUTH_OKAY 0x01 6225658Sdavidn#define AUTH_ROOTOKAY 0x02 /* root login okay */ 6325658Sdavidn#define AUTH_SECURE 0x04 /* secure login */ 6425658Sdavidn 6525658Sdavidntypedef struct login_cap { 6625658Sdavidn char *lc_class; 6725658Sdavidn char *lc_cap; 6825658Sdavidn char *lc_style; 6925658Sdavidn} login_cap_t; 7025658Sdavidn 7125658Sdavidntypedef struct login_time { 7225658Sdavidn u_short lt_start; /* Start time */ 7325658Sdavidn u_short lt_end; /* End time */ 7425658Sdavidn #define LTM_NONE 0x00 7525658Sdavidn #define LTM_SUN 0x01 7625658Sdavidn #define LTM_MON 0x02 7725658Sdavidn #define LTM_TUE 0x04 7825658Sdavidn #define LTM_WED 0x08 7925658Sdavidn #define LTM_THU 0x10 8025658Sdavidn #define LTM_FRI 0x20 8125658Sdavidn #define LTM_SAT 0x40 8225658Sdavidn #define LTM_ANY 0x7F 8325658Sdavidn #define LTM_WK 0x3E 8425658Sdavidn #define LTM_WD 0x41 8525658Sdavidn u_char lt_dow; /* Days of week */ 8625658Sdavidn} login_time_t; 8725658Sdavidn#define LC_MAXTIMES 64 8825658Sdavidn 8925658Sdavidn#include <sys/cdefs.h> 9025658Sdavidn__BEGIN_DECLS 9125658Sdavidnstruct passwd; 9225658Sdavidn 9325658Sdavidnvoid login_close __P((login_cap_t *)); 9425658Sdavidnlogin_cap_t *login_getclassbyname __P((const char *, const char *homedir)); 9525658Sdavidnlogin_cap_t *login_getclass __P((const struct passwd *)); 9625658Sdavidnlogin_cap_t *login_getuserclass __P((const struct passwd *)); 9725658Sdavidn 9825658Sdavidnchar *login_getcapstr __P((login_cap_t*, const char *, char *, char *)); 9925658Sdavidnchar **login_getcaplist __P((login_cap_t *, const char *, const char *)); 10025658Sdavidnchar *login_getstyle __P((login_cap_t *, char *, const char *)); 10125658Sdavidnrlim_t login_getcaptime __P((login_cap_t *, const char *, rlim_t, rlim_t)); 10225658Sdavidnrlim_t login_getcapnum __P((login_cap_t *, const char *, rlim_t, rlim_t)); 10325658Sdavidnrlim_t login_getcapsize __P((login_cap_t *, const char *, rlim_t, rlim_t)); 10425658Sdavidnchar *login_getpath __P((login_cap_t *, const char *, char *)); 10525658Sdavidnint login_getcapbool __P((login_cap_t *, const char *, int)); 10625658Sdavidn 10725658Sdavidnint setclasscontext __P((const char*, unsigned int)); 10825658Sdavidnint setusercontext __P((login_cap_t*, const struct passwd*, uid_t, unsigned int)); 10925658Sdavidnvoid setclassresources __P((login_cap_t *)); 11025658Sdavidnvoid setclassenvironment __P((login_cap_t *, const struct passwd *, int)); 11125658Sdavidn 11225658Sdavidnint authenticate __P((const char*, const char*, const char*, const char*)); 11325658Sdavidnint auth_script __P((const char*, ...)); 11425658Sdavidnint auth_env __P((void)); 11525658Sdavidnint auth_scan __P((int)); 11625658Sdavidnint auth_rmfiles __P((void)); 11725658Sdavidnvoid auth_checknologin __P((login_cap_t*)); 11825658Sdavidnint auth_cat __P((const char*)); 11925658Sdavidn 12025658Sdavidnint auth_ttyok __P((login_cap_t*, const char *)); 12125658Sdavidnint auth_hostok __P((login_cap_t*, const char *, char const *)); 12225658Sdavidnint auth_timeok __P((login_cap_t*, time_t)); 12325658Sdavidn 12425658Sdavidnstruct tm; 12525658Sdavidn 12625658Sdavidnlogin_time_t parse_lt __P((const char *)); 12725658Sdavidnint in_ltm __P((const login_time_t *, struct tm *, time_t *)); 12825658Sdavidnint in_ltms __P((const login_time_t *, struct tm *, time_t *)); 12925658Sdavidn 13025658Sdavidn/* auxiliary functions */ 13125658Sdavidn 13225658Sdavidnint login_strinlist __P((char **, char const *, int)); 13325658Sdavidnint login_str2inlist __P((char **, const char *, const char *, int)); 13425658Sdavidnlogin_time_t * login_timelist __P((login_cap_t *, char const *, int *, login_time_t **)); 13525658Sdavidnint login_ttyok __P((login_cap_t *, const char *, const char *, const char *)); 13625658Sdavidnint login_hostok __P((login_cap_t *, const char *, const char *, const char *, const char *)); 13725658Sdavidn 13825658Sdavidn__END_DECLS 13925658Sdavidn 14025658Sdavidn#endif /* _LOGIN_CAP_H_ */ 14125658Sdavidn 142