Print this page
Add libuserdefs and use in cmd/{oamuser,passwd}


   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*


  23  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T     */
  28 /*        All Rights Reserved   */
  29 
  30 
  31 #ifndef _USERDEFS_H
  32 #define _USERDEFS_H
  33 
  34 #pragma ident   "%Z%%M% %I%     %E% SMI"        /* SVr4.0 1.7.1.1 */
  35 
  36 #include <project.h>

  37 
  38 #ifdef  __cplusplus
  39 extern "C" {
  40 #endif
  41 
  42 /*
  43  * The definitions in this file are local to the OA&M subsystem.  General
  44  * use is not encouraged.










  45  */
  46 
  47 /* User/group default values */
  48 #define DEFGID          99      /* max reserved group id */
  49 #define DEFRID          99
  50 #define DEFPROJ         3
  51 #define DEFPROJNAME     "default"
  52 #define DEFGROUP        1
  53 #define DEFGNAME        "other"
  54 #define DEFPARENT       "/home"
  55 #define DEFSKL          "/etc/skel"
  56 #define DEFSHL          "/bin/sh"
  57 #define DEFROLESHL      "/bin/pfsh"
  58 #define DEFINACT        0
  59 #define DEFEXPIRE       ""
  60 #define DEFAUTH         ""
  61 #define DEFPROF         ""
  62 #define DEFROLEPROF     "All"
  63 #define DEFROLE         ""
  64 #define DEFLIMPRIV      ""
  65 #define DEFDFLTPRIV     ""
  66 #define DEFLOCK_AFTER_RETRIES   ""
  67 










  68 /* Defaults file keywords */
  69 #define RIDSTR          "defrid="
  70 #define GIDSTR          "defgroup="
  71 #define GNAMSTR         "defgname="
  72 #define PARSTR          "defparent="
  73 #define SKLSTR          "defskel="
  74 #define SHELLSTR        "defshell="
  75 #define INACTSTR        "definact="
  76 #define EXPIRESTR       "defexpire="
  77 #define AUTHSTR         "defauthorization="
  78 #define PROFSTR         "defprofile="
  79 #define ROLESTR         "defrole="
  80 #define PROJSTR         "defproj="
  81 #define PROJNMSTR       "defprojname="
  82 #define LIMPRSTR        "deflimitpriv="
  83 #define DFLTPRSTR       "defdefaultpriv="
  84 #define FHEADER         "#      Default values for useradd.  Changed "
  85 #define FHEADER_ROLE    "#      Default values for roleadd.  Changed "
  86 #define LOCK_AFTER_RETRIESSTR   "deflock_after_retries="
  87 
  88 /* Defaults file */
  89 #define DEFFILE         "/usr/sadm/defadduser"
  90 #define DEFROLEFILE     "/usr/sadm/defaddrole"
  91 #define GROUP           "/etc/group"
  92 
  93 /* various limits */
  94 #define MAXGLEN         9       /* max length of group name */
  95 #define MAXDLEN         80      /* max length of a date string */
  96 
  97 /* defaults structure */
  98 struct userdefs {
  99         int defrid;             /* highest reserved uid */
 100         int defgroup;           /* default group id */
 101         char *defgname;         /* default group name */
 102         char *defparent;        /* default base directory for new logins */
 103         char *defskel;          /* default skel directory */
 104         char *defshell;         /* default shell */
 105         int definact;           /* default inactive */
 106         char *defexpire;                /* default expire date */
 107         char *defauth;          /* default authorization */
 108         char *defprof;          /* default profile */
 109         char *defrole;          /* default role */
 110         projid_t defproj;       /* default project id */
 111         char *defprojname;      /* default project name */
 112         char *deflimpriv;       /* default limitpriv */
 113         char *defdfltpriv;      /* default defaultpriv */
 114         char *deflock_after_retries;    /* default lock_after_retries */
 115 
 116 };
 117 


























































 118 /* exit() values for user/group commands */
 119 
 120 /* Everything succeeded */
 121 #define EX_SUCCESS      0
 122 
 123 /* No permission */
 124 #define EX_NO_PERM      1
 125 
 126 /* Command syntax error */
 127 #define EX_SYNTAX       2
 128 
 129 /* Invalid argument given */
 130 #define EX_BADARG       3
 131 
 132 /* A gid or uid already exists */
 133 #define EX_ID_EXISTS    4
 134 
 135 /* PASSWD and SHADOW are inconsistent with each other */
 136 #define EX_INCONSISTENT 5
 137 




   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*
  23  * Copyright 2016 Gordon W. Ross
  24  *
  25  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  26  * Use is subject to license terms.
  27  */
  28 
  29 /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T     */
  30 /*        All Rights Reserved   */
  31 
  32 
  33 #ifndef _USERDEFS_H
  34 #define _USERDEFS_H
  35 


  36 #include <project.h>
  37 #include <stdio_tag.h>
  38 
  39 #ifdef  __cplusplus
  40 extern "C" {
  41 #endif
  42 
  43 /*
  44  * The definitions in this file are local to the OA&M subsystem.  General
  45  * use is not encouraged.
  46  *
  47  * Default values are taken from (in precedence order)
  48  *      /etc/default/add{user,role}
  49  *      /usr/sadm/defadd{user,role}
  50  *      (compiled-in values)
  51  *
  52  * Note that the "old" default locations may be used as a
  53  * "vendor" (or distro.) override of the compiled-in defaults.
  54  * If an administrator runs "useradd -D ...", those values are
  55  * stored in /etc/default/add*,  which overrides all others.
  56  */
  57 
  58 /* Defaults files */
  59 #define DEFFILE         "/etc/default/adduser"
  60 #define DEFROLEFILE     "/etc/default/addrole"

















  61 
  62 /* Old defaults files */
  63 #define ODEFFILE        "/usr/sadm/defadduser"
  64 #define ODEFROLEFILE    "/usr/sadm/defaddrole"
  65 
  66 #define GROUP           "/etc/group"
  67 
  68 /* various limits */
  69 #define MAXGLEN         9       /* max length of group name */
  70 #define MAXDLEN         80      /* max length of a date string */
  71 
  72 /* Defaults file keywords */
  73 #define RIDSTR          "defrid="
  74 #define GIDSTR          "defgroup="
  75 #define GNAMSTR         "defgname="
  76 #define PARSTR          "defparent="
  77 #define SKLSTR          "defskel="
  78 #define SHELLSTR        "defshell="
  79 #define INACTSTR        "definact="
  80 #define EXPIRESTR       "defexpire="
  81 #define AUTHSTR         "defauthorization="
  82 #define PROFSTR         "defprofile="
  83 #define ROLESTR         "defrole="
  84 #define PROJSTR         "defproj="
  85 #define PROJNMSTR       "defprojname="
  86 #define LIMPRSTR        "deflimitpriv="
  87 #define DFLTPRSTR       "defdefaultpriv="
  88 #define FHEADER         "#      Default values for useradd.  Changed "
  89 #define FHEADER_ROLE    "#      Default values for roleadd.  Changed "
  90 #define LOCK_AFTER_RETRIESSTR   "deflock_after_retries="
  91 









  92 /* defaults structure */
  93 struct userdefs {
  94         int defrid;             /* highest reserved uid */
  95         int defgroup;           /* default group id */
  96         char *defgname;         /* default group name */
  97         char *defparent;        /* default base directory for new logins */
  98         char *defskel;          /* default skel directory */
  99         char *defshell;         /* default shell */
 100         int definact;           /* default inactive */
 101         char *defexpire;                /* default expire date */
 102         char *defauth;          /* default authorization */
 103         char *defprof;          /* default profile */
 104         char *defrole;          /* default role */
 105         projid_t defproj;       /* default project id */
 106         char *defprojname;      /* default project name */
 107         char *deflimpriv;       /* default limitpriv */
 108         char *defdfltpriv;      /* default defaultpriv */
 109         char *deflock_after_retries;    /* default lock_after_retries */

 110 };
 111 
 112 extern struct userdefs *_get_userdefs(void);
 113 extern struct userdefs *_get_roledefs(void);
 114 
 115 extern void fread_defs(FILE *fp, struct userdefs *, boolean_t);
 116 extern int fwrite_roledefs(struct __FILE *, struct userdefs *);
 117 extern int fwrite_userdefs(struct __FILE *, struct userdefs *);
 118 
 119 extern char *userdef_get_by_uakey(struct userdefs *, const char *);
 120 void userdef_set_by_uakey(struct userdefs *, const char *, char *);
 121 
 122 /*
 123  * User/group default values
 124  * These are constants _only_ when compiling libuserdefs
 125  */
 126 #ifdef _USERDEFS_INTERNAL
 127 #define DEFRID          99      /* max reserved group id */
 128 #define DEFGROUP        1
 129 #define DEFGNAME        "other"
 130 #define DEFPARENT       "/home"
 131 #define DEFSKL          "/etc/skel"
 132 #define DEFSHL          "/bin/sh"
 133 #define DEFROLESHL      "/bin/pfsh"
 134 #define DEFINACT        0
 135 #define DEFEXPIRE       ""
 136 #define DEFAUTH         ""
 137 #define DEFPROF         ""
 138 #define DEFROLEPROF     "All"
 139 #define DEFROLE         ""
 140 #define DEFPROJ         3
 141 #define DEFPROJNAME     "default"
 142 #define DEFLIMPRIV      ""
 143 #define DEFDFLTPRIV     ""
 144 #define DEFLOCK_AFTER_RETRIES   ""
 145 #else   /* _USERDEFS_INTERNAL */
 146 /* Get these from libuserdefs */
 147 #define DEFRID          (_get_userdefs()->defrid)
 148 #define DEFGROUP        (_get_userdefs()->defgroup)
 149 #define DEFGNAME        (_get_userdefs()->defgname)
 150 #define DEFPARENT       (_get_userdefs()->defparent)
 151 #define DEFSKL          (_get_userdefs()->defskel)
 152 #define DEFSHL          (_get_userdefs()->defshell)
 153 #define DEFROLESHL      (_get_roledefs()->defshell)  /* ROLE */
 154 #define DEFINACT        (_get_userdefs()->definact)
 155 #define DEFEXPIRE       (_get_userdefs()->defexpire)
 156 #define DEFAUTH         (_get_userdefs()->defauth)
 157 #define DEFPROF         (_get_userdefs()->defprof
 158 #define DEFROLEPROF     (_get_roledefs()->defprof)   /* ROLE */
 159 #define DEFROLE         (_get_userdefs()->defrole)
 160 #define DEFPROJ         (_get_userdefs()->defproj)
 161 #define DEFPROJNAME     (_get_userdefs()->defprogname)
 162 #define DEFLIMPRIV      (_get_userdefs()->deflimpriv)
 163 #define DEFDFLTPRIV     (_get_userdefs()->defdfltpriv)
 164 #define DEFLOCK_AFTER_RETRIES   (_get_userdefs()->deflock_after_retries)
 165 #endif  /* _USERDEFS_INTERNAL */
 166 
 167 /* DEFGID is an alias for DEFRID.  Misleading... (!= DEFGROUP) */
 168 #define DEFGID          DEFRID          /* XXX delete this? */
 169 
 170 /* exit() values for user/group commands */
 171 
 172 /* Everything succeeded */
 173 #define EX_SUCCESS      0
 174 
 175 /* No permission */
 176 #define EX_NO_PERM      1
 177 
 178 /* Command syntax error */
 179 #define EX_SYNTAX       2
 180 
 181 /* Invalid argument given */
 182 #define EX_BADARG       3
 183 
 184 /* A gid or uid already exists */
 185 #define EX_ID_EXISTS    4
 186 
 187 /* PASSWD and SHADOW are inconsistent with each other */
 188 #define EX_INCONSISTENT 5
 189