blob: 853e00e2a536ec1785300e4794f2e327b72233ac [file] [log] [blame]
robbiew3f9a8802001-10-12 20:39:17 +00001#!/bin/sh
2
robbiew599ddd72001-11-28 21:31:41 +00003# Copyright (c) International Business Machines Corp., 2001
4#
5# This program is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 2 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
13# the GNU General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
17# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
19# FILE : IDcheck.sh
20# DESCRIPTION : checks for req'd users/groups and will create them if requested.
21# HISTORY :
22# 11/28/2001 Robbie Williamson (robbiew@austin.ibm.com)
23# written
robbiew631a9f52002-03-05 22:42:55 +000024# 03/05/2002 Jay Huie (wjh@us.ibm.com)
25# Changed script to only ask regarding creation of IDs if
26# necessary. Cleaner automation of the script and
27# most distos now have IDs already added
robbiew599ddd72001-11-28 21:31:41 +000028
29
30
robbiewd23f7242001-11-21 17:33:40 +000031# Prompt user if ids/groups should be created
robbiewc0f37e62001-11-27 19:14:19 +000032clear
33echo "Checking for required user/group ids"
34echo ""
robbiewd23f7242001-11-21 17:33:40 +000035
36# Check ids and create if needed.
37NOBODY_ID=0
38BIN_ID=0
39DAEMON_ID=0
40NOBODY_GRP=0
41BIN_GRP=0
42DAEMON_GRP=0
robbiew06e3bdf2003-04-08 15:23:33 +000043USERS_GRP=0
44SYS_GRP=0
robbiewcefffa72003-03-03 17:06:24 +000045I_AM_ROOT=0
robbiewd23f7242001-11-21 17:33:40 +000046
47id nobody > /dev/null
48if [ $? != "0" ]; then
49 NOBODY_ID=1
50fi
51
52id bin > /dev/null
53if [ $? != "0" ]; then
54 BIN_ID=1
55fi
56
57id daemon > /dev/null
58if [ $? != "0" ]; then
59 DAEMON_ID=1
60fi
61
plarsa040c122003-07-17 15:59:36 +000062grep -q ^nobody: /etc/group
robbiewd23f7242001-11-21 17:33:40 +000063if [ $? != "0" ]; then
64 NOBODY_GRP=1
65fi
66
plarsa040c122003-07-17 15:59:36 +000067grep -q ^bin: /etc/group
robbiewd23f7242001-11-21 17:33:40 +000068if [ $? != "0" ]; then
69 BIN_GRP=1
70fi
71
plarsa040c122003-07-17 15:59:36 +000072grep -q ^daemon: /etc/group
robbiewd23f7242001-11-21 17:33:40 +000073if [ $? != "0" ]; then
74 DAEMON_GRP=1
75fi
76
plarsa040c122003-07-17 15:59:36 +000077grep -q ^users: /etc/group
robbiew06e3bdf2003-04-08 15:23:33 +000078if [ $? != "0" ]; then
79 USERS_GRP=1
80fi
81
plarsa040c122003-07-17 15:59:36 +000082grep -q ^sys: /etc/group
robbiew06e3bdf2003-04-08 15:23:33 +000083if [ $? != "0" ]; then
84 SYS_GRP=1
85fi
86
robbiewcefffa72003-03-03 17:06:24 +000087whoami | grep root > /dev/null
88if [ $? == "0" ]; then
89 I_AM_ROOT=1
90fi
91
robbiew539fd462006-02-08 21:21:09 +000092if [ -n "$CREATE" ]; then
93 echo "CREATE variable set to $CREATE ..."
94else
95 if [ $NOBODY_ID != "0" ] || [ $BIN_ID != "0" ] || [ $DAEMON_ID != "0" ] || [ $NOBODY_GRP != "0" ] || [ $BIN_GRP != "0" ] || [ $DAEMON_GRP != "0" ] || [ $USERS_GRP != "0" ] || [ $SYS_GRP != "0" ] && [ $I_AM_ROOT != "0" ];
96 then
97 echo -n "If any required user ids and/or groups are missing, would you like these created? Y/N "
98 read ans
99 case $ans in
100 Y*|y*)
101 CREATE=1
102 ;;
103 *)
104 CREATE=0
105 ;;
106 esac
107 fi
robbiew631a9f52002-03-05 22:42:55 +0000108fi
109
robbiewd23f7242001-11-21 17:33:40 +0000110if [ $NOBODY_ID != "1" ] && [ $NOBODY_GRP != "1" ]; then
111 echo "Nobody user id and group exist."
112else
113 if [ $NOBODY_ID -eq "1" ] && [ $CREATE -eq "1" ]; then
114 echo nobody:x:99:99:Nobody:: >> /etc/passwd
115 fi
116 if [ $NOBODY_GRP -eq "1" ] && [ $CREATE -eq "1" ]; then
117 echo nobody:x:`id -u nobody`: >> /etc/group
118 fi
119fi
120
121if [ $BIN_ID != "1" ] && [ $BIN_GRP != "1" ]; then
122 echo "Bin user id and group exist."
123else
nstrazf9598e42001-12-19 15:45:24 +0000124 if [ $BIN_ID -eq "1" ] && [ $CREATE -eq "1" ]; then
robbiewd23f7242001-11-21 17:33:40 +0000125 echo bin:x:1:1:bin:: >> /etc/passwd
126 fi
nstrazf9598e42001-12-19 15:45:24 +0000127 if [ $BIN_GRP -eq "1" ] && [ $CREATE -eq "1" ]; then
robbiewd23f7242001-11-21 17:33:40 +0000128 echo bin:x:`id -u bin`:bin >> /etc/group
129 fi
130fi
131
nstrazf9598e42001-12-19 15:45:24 +0000132if [ $DAEMON_ID -ne "1" ] && [ $DAEMON_GRP -ne "1" ]; then
robbiewd23f7242001-11-21 17:33:40 +0000133 echo "Daemon user id and group exist."
134else
nstrazf9598e42001-12-19 15:45:24 +0000135 if [ $DAEMON_ID -eq "1" ] && [ $CREATE -eq "1" ]; then
robbiewd23f7242001-11-21 17:33:40 +0000136 echo daemon:x:2:2:daemon:: >> /etc/passwd
137 fi
nstrazf9598e42001-12-19 15:45:24 +0000138 if [ $DAEMON_GRP -eq "1" ] && [ $CREATE -eq "1" ]; then
robbiewd23f7242001-11-21 17:33:40 +0000139 echo daemon:x:`id -u daemon`:daemon >> /etc/group
140 fi
141fi
142
robbiew06e3bdf2003-04-08 15:23:33 +0000143if [ $USERS_GRP -ne "1" ]; then
144 echo "Users group exists."
145else
146 if [ $CREATE -eq "1" ]; then
147 echo users:x:100: >> /etc/group
148 fi
149fi
150
151if [ $SYS_GRP -ne "1" ]; then
152 echo "Sys group exists."
153else
154 if [ $CREATE -eq "1" ]; then
155 echo sys:x:3: >> /etc/group
156 fi
157fi
158
robbiewd23f7242001-11-21 17:33:40 +0000159id nobody > /dev/null
robbiew3f9a8802001-10-12 20:39:17 +0000160if [ $? -eq "0" ]; then
robbiewd23f7242001-11-21 17:33:40 +0000161 id bin > /dev/null
robbiew3f9a8802001-10-12 20:39:17 +0000162 if [ $? -eq "0" ]; then
robbiewd23f7242001-11-21 17:33:40 +0000163 id daemon > /dev/null
robbiew3f9a8802001-10-12 20:39:17 +0000164 if [ $? -eq "0" ]; then
robbiew90fc94c2002-04-08 14:55:37 +0000165 id -g nobody > /dev/null
robbiew3f9a8802001-10-12 20:39:17 +0000166 if [ $? -eq "0" ]; then
robbiewd23f7242001-11-21 17:33:40 +0000167 id -g bin > /dev/null
robbiew3f9a8802001-10-12 20:39:17 +0000168 if [ $? -eq "0" ]; then
robbiewd23f7242001-11-21 17:33:40 +0000169 id -g daemon > /dev/null
robbiew3f9a8802001-10-12 20:39:17 +0000170 if [ $? -eq "0" ]; then
robbiew06e3bdf2003-04-08 15:23:33 +0000171 grep users /etc/group | cut -d: -f1 | grep users > /dev/null
172 if [ $? -eq "0" ]; then
173 grep sys /etc/group | cut -d: -f1 | grep sys > /dev/null
174 if [ $? -eq "0" ]; then
175 echo "Required users/groups exist."
176 exit 0
177 fi
178 fi
robbiew3f9a8802001-10-12 20:39:17 +0000179 fi
180 fi
181 fi
182 fi
183 fi
184fi
robbiewd23f7242001-11-21 17:33:40 +0000185echo "*****************************************"
186echo "* Required users/groups do NOT exist!!! *"
187echo "* *"
188echo "* Some kernel/syscall tests will FAIL! *"
189echo "*****************************************"
190exit 1