1 |
#! /bin/sh |
2 |
# |
3 |
# Initial policy generator. |
4 |
# |
5 |
# Copyright (C) 2005-2008 NTT DATA CORPORATION |
6 |
# |
7 |
# Version: 1.5.3-pre 2008/01/15 |
8 |
# |
9 |
|
10 |
cd ${0%/*} |
11 |
export PATH=$PWD:/sbin:/bin:${PATH} |
12 |
|
13 |
PROFILE_TYPE="--full-profile" |
14 |
|
15 |
while [ $# -gt 0 ] |
16 |
do |
17 |
case "$1" in |
18 |
--file-only-profile|--full-profile) |
19 |
PROFILE_TYPE="$1" |
20 |
;; |
21 |
esac |
22 |
shift |
23 |
done |
24 |
|
25 |
# Verify realpath works. |
26 |
if ! realpath -n / > /dev/null; then |
27 |
echo "Can't execute program. Please make sure you installed correct package." |
28 |
exit 1 |
29 |
fi |
30 |
|
31 |
make_exception() { |
32 |
# |
33 |
# Make /sbin/modprobe and /sbin/hotplug as initializers, for they can be called by untrusted programs. |
34 |
# |
35 |
for i in `cat /proc/sys/kernel/modprobe /proc/sys/kernel/hotplug` |
36 |
do |
37 |
FILE=`realpath $i` |
38 |
[ -n "$FILE" -a -f "$FILE" -a -x "$FILE" -a ! -L "$FILE" ] && echo 'initialize_domain '$FILE |
39 |
done |
40 |
# |
41 |
# Make patterns for /proc/[number]/ and /proc/self/ directory. |
42 |
# |
43 |
for i in `find /proc/1/ /proc/self/ -type f` |
44 |
do |
45 |
echo "file_pattern "$i | sed 's@/[0-9]*/@/\\$/@g' |
46 |
done | sort | uniq |
47 |
|
48 |
# |
49 |
# Make patterns for /sys/ directory. |
50 |
# |
51 |
if [ -e /sys/block/ ] |
52 |
then |
53 |
for i in /sys/* |
54 |
do |
55 |
for j in `find $i | awk -F / ' { print NF-1 }'` |
56 |
do |
57 |
echo -n "file_pattern "$i; for k in `seq 3 $j`; do echo -n '/\*'; done; echo |
58 |
done |
59 |
done | grep -F '\' | sort | uniq |
60 |
fi |
61 |
|
62 |
# |
63 |
# Make patterns for /dev/ directory. |
64 |
# |
65 |
echo 'file_pattern /dev/pts/\$' |
66 |
echo 'file_pattern /dev/vc/\$' |
67 |
echo 'file_pattern /dev/tty\$' |
68 |
|
69 |
# |
70 |
# Make patterns for policy directory. |
71 |
# |
72 |
echo 'file_pattern /etc/ccs/system_policy.\$-\$-\$.\$:\$:\$.conf' |
73 |
echo 'file_pattern /etc/ccs/exception_policy.\$-\$-\$.\$:\$:\$.conf' |
74 |
echo 'file_pattern /etc/ccs/domain_policy.\$-\$-\$.\$:\$:\$.conf' |
75 |
|
76 |
# |
77 |
# Make patterns for man directory. |
78 |
# |
79 |
for i in `find /usr/share/man/ -type f | awk -F / ' { print NF }' | sort | uniq` |
80 |
do |
81 |
echo -n "file_pattern /usr/share/man"; for j in `seq 5 $i`; do echo -n '/\*'; done; echo |
82 |
done |
83 |
|
84 |
for i in `find /usr/X11R6/man/ -type f | awk -F / ' { print NF }' | sort | uniq` |
85 |
do |
86 |
echo -n "file_pattern /usr/X11R6/man"; for j in `seq 5 $i`; do echo -n '/\*'; done; echo |
87 |
done |
88 |
|
89 |
# |
90 |
# Make patterns for spool directory. (No trailing /, or detecting symlink fails.) |
91 |
# |
92 |
for i in /var/spool/clientmqueue /var/spool/mail /var/spool/mqueue /var/spool/at /var/spool/exim4/msglog /var/spool/exim4/input /var/spool/cron/atjobs /var/spool/postfix/maildrop /var/spool/postfix/incoming /var/spool/postfix/active /var/spool/postfix/bounce |
93 |
do |
94 |
[ -d $i/ -a ! -L $i ] && echo 'file_pattern '$i'/\*' |
95 |
done |
96 |
[ -d /var/spool/postfix/ ] && echo 'file_pattern /var/spool/postfix/deferred/\x/' |
97 |
[ -d /var/spool/postfix/ ] && echo 'file_pattern /var/spool/postfix/deferred/\x/\X' |
98 |
|
99 |
# |
100 |
# Make patterns for man(1). |
101 |
# |
102 |
echo 'file_pattern /tmp/man.\?\?\?\?\?\?' |
103 |
|
104 |
# Make patterns for mount(8). |
105 |
echo 'file_pattern /etc/mtab~\$' |
106 |
|
107 |
# |
108 |
# Make patterns for crontab(1). |
109 |
# |
110 |
grep -qF "Red Hat Linux" /etc/issue && echo 'file_pattern /tmp/crontab.\$' # RHL9 |
111 |
grep -qF "Fedora Core" /etc/issue && echo 'file_pattern /tmp/crontab.XXXX\?\?\?\?\?\?' # FC3 |
112 |
grep -qF "Debian" /etc/issue && echo 'file_pattern /tmp/crontab.\?\?\?\?\?\?/crontab' # Sarge |
113 |
|
114 |
# |
115 |
# Allow reading some data files. |
116 |
# |
117 |
for i in /etc/ld.so.cache /proc/meminfo /proc/sys/kernel/version /etc/localtime /usr/lib/gconv/gconv-modules.cache /usr/lib/locale/locale-archive /usr/share/locale/locale.alias /usr/share/locale/ja/LC_MESSAGES/coreutils.mo /usr/share/locale/ja/LC_MESSAGES/libc.mo |
118 |
do |
119 |
FILE=`realpath $i` |
120 |
[ -n "$FILE" -a -r "$FILE" -a ! -L "$FILE" ] && echo 'allow_read '$FILE |
121 |
done |
122 |
|
123 |
# |
124 |
# Allow reading information for current process. |
125 |
# |
126 |
for i in `find /proc/self/ -type f | grep -v '[0-9]'` |
127 |
do |
128 |
echo 'allow_read '$i |
129 |
done |
130 |
|
131 |
# |
132 |
# Allow reading DLL files registered with ldconfig(8). |
133 |
# |
134 |
for i in `ldconfig -NXp | grep -F '=>' | awk ' { print $NF } ' | sort | uniq` |
135 |
do |
136 |
FILE=`realpath $i` |
137 |
[ -n "$FILE" -a -s "$FILE" -a ! -L "$FILE" ] && echo 'allow_read '$FILE |
138 |
done | sort | uniq |
139 |
|
140 |
# |
141 |
# Mark programs under /etc/init.d/ directory as initializer. |
142 |
# |
143 |
for FILE in `for i in /etc/init.d/*; do realpath $i; done | sort | uniq` |
144 |
do |
145 |
[ -n "$FILE" -a -f "$FILE" -a -x "$FILE" -a ! -L "$FILE" ] && echo "initialize_domain "$FILE |
146 |
done |
147 |
|
148 |
# |
149 |
# Mark some programs that you want to assign short domainname as initializer. |
150 |
# |
151 |
# RHL9: /sbin/cardmgr /sbin/klogd /sbin/mingetty /sbin/portmap /sbin/rpc.statd /sbin/syslogd /usr/bin/jserver /usr/bin/spamd /usr/sbin/anacron /usr/sbin/apmd /usr/sbin/atd /usr/sbin/crond /usr/sbin/dhcpd /usr/sbin/gpm /usr/sbin/httpd /usr/sbin/nmbd /usr/sbin/rpc.mountd /usr/sbin/rpc.rquotad /usr/sbin/sendmail.sendmail /usr/sbin/smbd /usr/sbin/sshd /usr/sbin/vsftpd /usr/sbin/xinetd |
152 |
# FC3: /sbin/cardmgr /sbin/klogd /sbin/mingetty /sbin/portmap /sbin/rpc.statd /sbin/syslogd /sbin/udevd /usr/X11R6/bin/xfs /usr/bin/dbus-daemon-1 /usr/bin/mDNSResponder /usr/bin/nifd /usr/sbin/acpid /usr/sbin/anacron /usr/sbin/atd /usr/sbin/cannaserver /usr/sbin/cpuspeed /usr/sbin/crond /usr/sbin/cupsd /usr/sbin/gpm /usr/sbin/hald /usr/sbin/htt /usr/sbin/nmbd /usr/sbin/rpc.idmapd /usr/sbin/rpc.mountd /usr/sbin/rpc.rquotad /usr/sbin/smartd /usr/sbin/smbd /usr/sbin/sshd /usr/sbin/xinetd |
153 |
# Sarge: /sbin/getty /sbin/klogd /sbin/portmap /sbin/rpc.statd /sbin/syslogd /usr/sbin/afpd /usr/sbin/apache2 /usr/sbin/atalkd /usr/sbin/atd /usr/sbin/cron /usr/sbin/exim4 /usr/sbin/inetd /usr/sbin/lpd /usr/sbin/nmbd /usr/sbin/papd /usr/sbin/smbd /usr/sbin/sshd /usr/sbin/vmware-guestd |
154 |
# |
155 |
# You can choose from the list above or add as you like to the list below. |
156 |
# |
157 |
for FILE in /sbin/getty /sbin/init /sbin/mingetty /sbin/udevd /usr/sbin/anacron /usr/sbin/apache2 /usr/sbin/atd /usr/sbin/cron /usr/sbin/crond /usr/sbin/httpd /usr/sbin/inetd /usr/sbin/logrotate /usr/sbin/smbd /usr/sbin/squid /usr/sbin/sshd /usr/sbin/vsftpd /usr/sbin/xinetd |
158 |
do |
159 |
FILE=`realpath $FILE 2> /dev/null` |
160 |
[ -n "$FILE" -a -f "$FILE" -a -x "$FILE" -a ! -L "$FILE" ] && echo 'initialize_domain '$FILE |
161 |
done | sort | uniq |
162 |
|
163 |
# |
164 |
# Make patterns for unnamed pipes and sockets. |
165 |
# |
166 |
echo 'file_pattern pipe:[\$]' |
167 |
echo 'file_pattern socket:[\$]' |
168 |
|
169 |
# |
170 |
# Make patterns for emacs(1). |
171 |
# |
172 |
[ -d /root/.emacs.d/ ] && echo 'file_pattern /root/.emacs.d/auto-save-list/.saves-\$-\*' |
173 |
|
174 |
# |
175 |
# Make patterns for mh-rmail from emacs(1). |
176 |
# |
177 |
[ -d /root/Mail/inbox/ ] && echo 'file_pattern /root/Mail/inbox/\$' |
178 |
|
179 |
# |
180 |
# Make patterns for ksymoops(8). |
181 |
# |
182 |
[ -d /var/log/ksymoops/ ] && echo 'file_pattern /var/log/ksymoops/\*' |
183 |
|
184 |
# |
185 |
# Make patterns for squid(8). |
186 |
# |
187 |
if [ -d /var/spool/squid/ ]; then |
188 |
echo 'file_pattern /var/spool/squid/\*/' |
189 |
echo 'file_pattern /var/spool/squid/\*/\*/' |
190 |
echo 'file_pattern /var/spool/squid/\*/\*/\*' |
191 |
fi |
192 |
|
193 |
# |
194 |
# Make patterns for spamd(1). |
195 |
# |
196 |
SPAMD_PATH=`which spamd` |
197 |
if [ -n "$SPAMD_PATH" ]; then |
198 |
if grep -qF '/tmp/spamassassin-$$' $SPAMD_PATH; then |
199 |
echo 'file_pattern /tmp/spamassassin-\$/' |
200 |
echo 'file_pattern /tmp/spamassassin-\$/.spamassassin/' |
201 |
echo 'file_pattern /tmp/spamassassin-\$/.spamassassin/auto-whitelist\*' |
202 |
fi |
203 |
if grep -qF 'spamd-$$-init' $SPAMD_PATH; then |
204 |
echo 'file_pattern /tmp/spamd-\$-init/' |
205 |
echo 'file_pattern /tmp/spamd-\$-init/.spamassassin/' |
206 |
echo 'file_pattern /tmp/spamd-\$-init/.spamassassin/\*' |
207 |
fi |
208 |
fi |
209 |
|
210 |
# |
211 |
# Make patterns for mail(1). |
212 |
# |
213 |
MAIL_PATH=`which mail` |
214 |
if [ -n "$MAIL_PATH" ]; then |
215 |
grep -qF '/mail.XXXXXX' $MAIL_PATH && echo 'file_pattern /tmp/mail.\?\?\?\?\?\?' |
216 |
grep -qF '/mail.RsXXXXXXXXXX' $MAIL_PATH && echo 'file_pattern /tmp/mail.RsXXXX\?\?\?\?\?\?' |
217 |
grep -qF '/mail.ReXXXXXXXXXX' $MAIL_PATH && echo 'file_pattern /tmp/mail.ReXXXX\?\?\?\?\?\?' |
218 |
grep -qF '/mail.XXXXXXXXXX' $MAIL_PATH && echo 'file_pattern /tmp/mail.XXXX\?\?\?\?\?\?' |
219 |
grep -qF '/mail.RxXXXXXXXXXX' $MAIL_PATH && echo 'file_pattern /tmp/mail.RxXXXX\?\?\?\?\?\?' |
220 |
grep -qF '/mail.RmXXXXXXXXXX' $MAIL_PATH && echo 'file_pattern /tmp/mail.RmXXXX\?\?\?\?\?\?' |
221 |
grep -qF '/mail.RqXXXXXXXXXX' $MAIL_PATH && echo 'file_pattern /tmp/mail.RqXXXX\?\?\?\?\?\?' |
222 |
echo 'file_pattern /tmp/Rs\?\?\?\?\?\?' |
223 |
echo 'file_pattern /tmp/Rq\?\?\?\?\?\?' |
224 |
echo 'file_pattern /tmp/Rm\?\?\?\?\?\?' |
225 |
echo 'file_pattern /tmp/Re\?\?\?\?\?\?' |
226 |
echo 'file_pattern /tmp/Rx\?\?\?\?\?\?' |
227 |
fi |
228 |
|
229 |
# |
230 |
# Make patterns for udev(8). |
231 |
# |
232 |
if [ -d /dev/.udev/ ]; then |
233 |
echo 'file_pattern /dev/.udev/\*' |
234 |
echo 'file_pattern /dev/.udev/\*/' |
235 |
echo 'file_pattern /dev/.udev/\*/\*' |
236 |
echo 'file_pattern /dev/.udev/\*/\*/' |
237 |
echo 'file_pattern /dev/.udev/\*/\*/\*' |
238 |
echo 'file_pattern /dev/.udev/\*/\*/\*/' |
239 |
echo 'file_pattern /dev/.udev/\*/\*/\*/\*' |
240 |
echo 'file_pattern /dev/.udev/\*/\*/\*/\*/' |
241 |
echo 'file_pattern /dev/.udev/\*/\*/\*/\*/\*' |
242 |
fi |
243 |
[ -d /dev/.udevdb/ ] && echo 'file_pattern /dev/.udevdb/\*' |
244 |
|
245 |
# |
246 |
# Make patterns for sh(1). |
247 |
# |
248 |
grep -qF sh-thd /bin/sh && echo 'file_pattern /tmp/sh-thd-\$' |
249 |
|
250 |
# |
251 |
# Make patterns for smbd(8). |
252 |
# |
253 |
[ -d /var/log/samba/ ] && echo 'file_pattern /var/log/samba/\*' |
254 |
|
255 |
# |
256 |
# Make patterns for blkid(8). |
257 |
# |
258 |
[ -f /etc/blkid.tab ] && echo 'file_pattern /etc/blkid.tab-\?\?\?\?\?\?' |
259 |
[ -f /etc/blkid/blkid.tab ] && echo 'file_pattern /etc/blkid/blkid.tab-\?\?\?\?\?\?' |
260 |
|
261 |
# |
262 |
# Make patterns for gpm(8). |
263 |
# |
264 |
GPM_PATH=`which gpm` |
265 |
[ -n "$GPM_PATH" ] && grep -qF '/gpmXXXXXX' $GPM_PATH && echo 'file_pattern /var/run/gpm\?\?\?\?\?\?' |
266 |
|
267 |
# |
268 |
# Make patterns for mrtg(1). |
269 |
# |
270 |
[ -d /etc/mrtg/ ] && echo 'file_pattern /etc/mrtg/mrtg.cfg_l_\$' |
271 |
[ -d /var/lock/mrtg/ ] && echo 'file_pattern /var/lock/mrtg/mrtg_l_\$' |
272 |
|
273 |
# |
274 |
# Make patterns for autofs(8). |
275 |
# |
276 |
[ -x /etc/init.d/autofs ] && grep -qF '/tmp/autofs.XXXXXX' /etc/init.d/autofs && echo 'file_pattern /tmp/autofs.\?\?\?\?\?\?' |
277 |
|
278 |
# |
279 |
# Make patterns for dhcpd(8). |
280 |
# |
281 |
[ -f /var/lib/dhcp/dhcpd.leases ] && echo 'file_pattern /var/lib/dhcp/dhcpd.leases.\$' |
282 |
|
283 |
# |
284 |
# Make patterns for mlocate(1). |
285 |
# |
286 |
[ -d /var/lib/mlocate/ ] && echo 'file_pattern /var/lib/mlocate/mlocate.db.\?\?\?\?\?\?' |
287 |
|
288 |
# |
289 |
# Make patterns for mailman. |
290 |
# |
291 |
[ -d /var/mailman/locks/ ] && echo 'file_pattern /var/mailman/locks/gate_news.lock.\*' |
292 |
|
293 |
# |
294 |
# Make patterns for makewhatis(8). |
295 |
# |
296 |
MAKEWHATIS_PATH=`which makewhatis` |
297 |
if [ -n "$MAKEWHATIS_PATH" ]; then |
298 |
if grep -qF '/tmp/makewhatisXXXXXX' $MAKEWHATIS_PATH; then |
299 |
echo 'file_pattern /tmp/makewhatis\?\?\?\?\?\?/' |
300 |
echo 'file_pattern /tmp/makewhatis\?\?\?\?\?\?/w' |
301 |
fi |
302 |
if grep -qF '/tmp/whatis.XXXXXX' $MAKEWHATIS_PATH; then |
303 |
echo 'file_pattern /tmp/whatis.\?\?\?\?\?\?' |
304 |
fi |
305 |
fi |
306 |
|
307 |
# |
308 |
# Make patterns for automount(8). |
309 |
# |
310 |
AUTOMOUNT_PATH=`which automount` |
311 |
if [ -n "$AUTOMOUNT_PATH" ]; then |
312 |
if grep -qF '/var/lock/autofs' $AUTOMOUNT_PATH; then |
313 |
echo 'file_pattern /var/lock/autofs.\$' |
314 |
fi |
315 |
echo 'file_pattern /tmp/auto\?\?\?\?\?\?/' |
316 |
fi |
317 |
|
318 |
# |
319 |
# Make patterns for logwatch(8). |
320 |
# |
321 |
LOGWATCH_PATH=`which logwatch` |
322 |
if [ -n "$LOGWATCH_PATH" ]; then |
323 |
if grep -qF '/var/cache/logwatch' $LOGWATCH_PATH; then |
324 |
echo 'file_pattern /var/cache/logwatch/logwatch.XX\?\?\?\?\?\?/' |
325 |
echo 'file_pattern /var/cache/logwatch/logwatch.XX\?\?\?\?\?\?/\*' |
326 |
else |
327 |
echo 'file_pattern /tmp/logwatch.XX\?\?\?\?\?\?/' |
328 |
echo 'file_pattern /tmp/logwatch.XX\?\?\?\?\?\?/\*' |
329 |
fi |
330 |
fi |
331 |
|
332 |
# |
333 |
# Make patterns for logrotate(8). |
334 |
# |
335 |
LOGROTATE_PATH=`which logrotate` |
336 |
if [ -n "$LOGROTATE_PATH" ]; then |
337 |
if grep -qF '/logrotate.XXXXXX' $LOGROTATE_PATH; then |
338 |
echo 'file_pattern /tmp/logrotate.\?\?\?\?\?\?' |
339 |
echo 'aggregator /tmp/logrotate.\?\?\?\?\?\? /tmp/logrotate.tmp' |
340 |
fi |
341 |
fi |
342 |
|
343 |
# |
344 |
# Make patterns for cardmgr(8). |
345 |
# |
346 |
CARDMGR_PATH=`which cardmgr` |
347 |
if [ -n "$CARDMGR_PATH" ]; then |
348 |
if grep -qF '%s/cm-%d-%d' $CARDMGR_PATH; then |
349 |
echo 'file_pattern /var/lib/pcmcia/cm-\$-\$' |
350 |
fi |
351 |
fi |
352 |
|
353 |
# |
354 |
# Make patterns for anacron(8). |
355 |
# |
356 |
ANACRON_PATH=`which anacron` |
357 |
if [ -n "$ANACRON_PATH" ]; then |
358 |
echo 'file_pattern /tmp/file\?\?\?\?\?\?' |
359 |
fi |
360 |
|
361 |
# |
362 |
# Make patterns for run-crons(?). |
363 |
# |
364 |
if [ -x /usr/lib/cron/run-crons ] && grep -qF '/tmp/run-crons.XXXXXX' /usr/lib/cron/run-crons; then |
365 |
echo 'file_pattern /tmp/run-crons.\?\?\?\?\?\?/' |
366 |
echo 'file_pattern /tmp/run-crons.\?\?\?\?\?\?/run-crons.\*' |
367 |
fi |
368 |
|
369 |
# |
370 |
# Miscellaneous patterns. |
371 |
# |
372 |
if grep -qF "Red Hat Linux" /etc/issue; then |
373 |
[ -d /var/log/sa/ ] && echo 'file_pattern /var/log/sa/sa\*' |
374 |
echo 'file_pattern /tmp/man.\?\?\?\?\?\?' |
375 |
echo 'file_pattern /tmp/file.\?\?\?\?\?\?' |
376 |
fi |
377 |
|
378 |
if grep -qF "Fedora Core" /etc/issue || grep -qF "CentOS" /etc/issue ; then |
379 |
echo 'file_pattern /etc/.fstab.hal.\?' |
380 |
echo 'file_pattern /tmp/file\?\?\?\?\?\?' |
381 |
fi |
382 |
|
383 |
if grep -qF "Debian" /etc/issue; then |
384 |
echo 'file_pattern /tmp/ex4\?\?\?\?\?\?' |
385 |
echo 'file_pattern /tmp/tmpf\?\?\?\?\?\?' |
386 |
echo 'file_pattern /tmp/zcat\?\?\?\?\?\?' |
387 |
echo 'file_pattern /tmp/zman\?\?\?\?\?\?' |
388 |
echo 'file_pattern /var/cache/man/\$' |
389 |
echo 'file_pattern /var/cache/man/\*/\$' |
390 |
echo 'file_pattern /root/mbox.XXXX\?\?\?\?\?\?' |
391 |
fi |
392 |
|
393 |
if grep -qF "SUSE LINUX 10" /etc/issue; then |
394 |
echo 'file_pattern /tmp/used_interface_names.\*' |
395 |
echo 'file_pattern /var/run/fence\?\?\?\?\?\?' |
396 |
echo 'file_pattern /dev/shm/sysconfig/tmp/if-lo.\$' |
397 |
echo 'file_pattern /dev/shm/sysconfig/tmp/if-lo.\$.tmp' |
398 |
echo 'file_pattern /dev/shm/sysconfig/tmp/if-eth0.\$' |
399 |
echo 'file_pattern /dev/shm/sysconfig/tmp/if-eth0.\$.tmp' |
400 |
echo 'file_pattern /var/run/nscd/db\?\?\?\?\?\?' |
401 |
fi |
402 |
|
403 |
echo 'file_pattern /tmp/ib\?\?\?\?\?\?' |
404 |
echo 'file_pattern /tmp/PerlIO_\?\?\?\?\?\?' |
405 |
|
406 |
# |
407 |
# Make /var/log/ directory not rewritable by default. |
408 |
# |
409 |
for i in `find /var/log/ -type f | awk -F / ' { print NF }' | sort | uniq` |
410 |
do |
411 |
echo -n "deny_rewrite /var/log"; for j in `seq 4 $i`; do echo -n '/\*'; done; echo |
412 |
done |
413 |
} |
414 |
|
415 |
make_alias() { |
416 |
for MNT in `df | awk ' { print $NF } ' | grep / | sort | uniq` |
417 |
do |
418 |
for SYMLINK in `find $MNT -xdev -type l` |
419 |
do |
420 |
|
421 |
# Solve symbolic name. |
422 |
ENTITY=`realpath -n $SYMLINK` |
423 |
|
424 |
# Reject if it is not a regular file. |
425 |
[ -f "$ENTITY" -a -x "$ENTITY" ] || continue |
426 |
|
427 |
# Reject if basename is the same. |
428 |
F1=${ENTITY##*/} |
429 |
F2=${SYMLINK##*/} |
430 |
[ $F1 = $F2 ] && continue |
431 |
|
432 |
# Reject if file is not executable. |
433 |
file $ENTITY | grep -q executable || continue |
434 |
|
435 |
# Exclude /etc/rc?.d/ directory. |
436 |
echo $F2 | grep -q '^[SK][0-9][0-9]' && continue |
437 |
|
438 |
# This is a candidate. |
439 |
echo 'alias '$ENTITY' '$SYMLINK |
440 |
done |
441 |
done | sort | uniq |
442 |
} |
443 |
|
444 |
if [ ! -d /etc/ccs/ ]; then |
445 |
echo Creating policy directory. |
446 |
mkdir -p /etc/ccs |
447 |
fi |
448 |
chmod 700 /etc/ccs/ |
449 |
chown root:root /etc/ccs/ |
450 |
|
451 |
if [ ! -r /etc/ccs/manager.conf ]; then |
452 |
echo Creating manager policy. |
453 |
echo /usr/lib/ccs/loadpolicy > /etc/ccs/manager.conf |
454 |
echo /usr/lib/ccs/editpolicy >> /etc/ccs/manager.conf |
455 |
echo /usr/lib/ccs/setlevel >> /etc/ccs/manager.conf |
456 |
echo /usr/lib/ccs/setprofile >> /etc/ccs/manager.conf |
457 |
echo /usr/lib/ccs/ld-watch >> /etc/ccs/manager.conf |
458 |
echo /usr/lib/ccs/ccs-queryd >> /etc/ccs/manager.conf |
459 |
fi |
460 |
|
461 |
if [ ! -r /etc/ccs/profile.conf ]; then |
462 |
echo Creating default profile. |
463 |
case "$PROFILE_TYPE" in |
464 |
--file-only-profile) |
465 |
cat > /etc/ccs/profile.conf << EOF |
466 |
0-COMMENT=-----Disabled Mode----- |
467 |
0-MAC_FOR_FILE=0 |
468 |
0-TOMOYO_VERBOSE=0 |
469 |
1-COMMENT=-----Learning Mode----- |
470 |
1-MAC_FOR_FILE=1 |
471 |
1-TOMOYO_VERBOSE=0 |
472 |
2-COMMENT=-----Permissive Mode----- |
473 |
2-MAC_FOR_FILE=2 |
474 |
2-TOMOYO_VERBOSE=1 |
475 |
3-COMMENT=-----Enforcing Mode----- |
476 |
3-MAC_FOR_FILE=3 |
477 |
3-TOMOYO_VERBOSE=1 |
478 |
EOF |
479 |
;; |
480 |
*) |
481 |
cat > /etc/ccs/profile.conf << EOF |
482 |
0-COMMENT=-----Disabled Mode----- |
483 |
1-COMMENT=-----Learning Mode----- |
484 |
1-MAC_FOR_FILE=1 |
485 |
1-MAC_FOR_ARGV0=1 |
486 |
1-MAC_FOR_ENV=1 |
487 |
1-MAC_FOR_NETWORK=1 |
488 |
1-MAC_FOR_SIGNAL=1 |
489 |
1-DENY_CONCEAL_MOUNT=1 |
490 |
1-RESTRICT_CHROOT=1 |
491 |
1-RESTRICT_MOUNT=1 |
492 |
1-RESTRICT_UNMOUNT=1 |
493 |
1-RESTRICT_PIVOT_ROOT=1 |
494 |
1-RESTRICT_AUTOBIND=1 |
495 |
1-MAX_ACCEPT_ENTRY=2048 |
496 |
1-MAX_GRANT_LOG=1024 |
497 |
1-MAX_REJECT_LOG=1024 |
498 |
1-TOMOYO_VERBOSE=0 |
499 |
1-ALLOW_ENFORCE_GRACE=0 |
500 |
1-MAC_FOR_CAPABILITY::inet_tcp_create=1 |
501 |
1-MAC_FOR_CAPABILITY::inet_tcp_listen=1 |
502 |
1-MAC_FOR_CAPABILITY::inet_tcp_connect=1 |
503 |
1-MAC_FOR_CAPABILITY::use_inet_udp=1 |
504 |
1-MAC_FOR_CAPABILITY::use_inet_ip=1 |
505 |
1-MAC_FOR_CAPABILITY::use_route=1 |
506 |
1-MAC_FOR_CAPABILITY::use_packet=1 |
507 |
1-MAC_FOR_CAPABILITY::SYS_MOUNT=1 |
508 |
1-MAC_FOR_CAPABILITY::SYS_UMOUNT=1 |
509 |
1-MAC_FOR_CAPABILITY::SYS_REBOOT=1 |
510 |
1-MAC_FOR_CAPABILITY::SYS_CHROOT=1 |
511 |
1-MAC_FOR_CAPABILITY::SYS_KILL=1 |
512 |
1-MAC_FOR_CAPABILITY::SYS_VHANGUP=1 |
513 |
1-MAC_FOR_CAPABILITY::SYS_TIME=1 |
514 |
1-MAC_FOR_CAPABILITY::SYS_NICE=1 |
515 |
1-MAC_FOR_CAPABILITY::SYS_SETHOSTNAME=1 |
516 |
1-MAC_FOR_CAPABILITY::use_kernel_module=1 |
517 |
1-MAC_FOR_CAPABILITY::create_fifo=1 |
518 |
1-MAC_FOR_CAPABILITY::create_block_dev=1 |
519 |
1-MAC_FOR_CAPABILITY::create_char_dev=1 |
520 |
1-MAC_FOR_CAPABILITY::create_unix_socket=1 |
521 |
1-MAC_FOR_CAPABILITY::SYS_LINK=1 |
522 |
1-MAC_FOR_CAPABILITY::SYS_SYMLINK=1 |
523 |
1-MAC_FOR_CAPABILITY::SYS_RENAME=1 |
524 |
1-MAC_FOR_CAPABILITY::SYS_UNLINK=1 |
525 |
1-MAC_FOR_CAPABILITY::SYS_CHMOD=1 |
526 |
1-MAC_FOR_CAPABILITY::SYS_CHOWN=1 |
527 |
1-MAC_FOR_CAPABILITY::SYS_IOCTL=1 |
528 |
1-MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD=1 |
529 |
1-MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT=1 |
530 |
1-MAC_FOR_CAPABILITY::SYS_PTRACE=1 |
531 |
2-COMMENT=-----Permissive Mode----- |
532 |
2-MAC_FOR_FILE=2 |
533 |
2-MAC_FOR_ARGV0=2 |
534 |
2-MAC_FOR_ENV=2 |
535 |
2-MAC_FOR_NETWORK=2 |
536 |
2-MAC_FOR_SIGNAL=2 |
537 |
2-DENY_CONCEAL_MOUNT=2 |
538 |
2-RESTRICT_CHROOT=2 |
539 |
2-RESTRICT_MOUNT=2 |
540 |
2-RESTRICT_UNMOUNT=2 |
541 |
2-RESTRICT_PIVOT_ROOT=2 |
542 |
2-RESTRICT_AUTOBIND=1 |
543 |
2-MAX_ACCEPT_ENTRY=2048 |
544 |
2-MAX_GRANT_LOG=1024 |
545 |
2-MAX_REJECT_LOG=1024 |
546 |
2-TOMOYO_VERBOSE=1 |
547 |
2-ALLOW_ENFORCE_GRACE=0 |
548 |
2-MAC_FOR_CAPABILITY::inet_tcp_create=2 |
549 |
2-MAC_FOR_CAPABILITY::inet_tcp_listen=2 |
550 |
2-MAC_FOR_CAPABILITY::inet_tcp_connect=2 |
551 |
2-MAC_FOR_CAPABILITY::use_inet_udp=2 |
552 |
2-MAC_FOR_CAPABILITY::use_inet_ip=2 |
553 |
2-MAC_FOR_CAPABILITY::use_route=2 |
554 |
2-MAC_FOR_CAPABILITY::use_packet=2 |
555 |
2-MAC_FOR_CAPABILITY::SYS_MOUNT=2 |
556 |
2-MAC_FOR_CAPABILITY::SYS_UMOUNT=2 |
557 |
2-MAC_FOR_CAPABILITY::SYS_REBOOT=2 |
558 |
2-MAC_FOR_CAPABILITY::SYS_CHROOT=2 |
559 |
2-MAC_FOR_CAPABILITY::SYS_KILL=2 |
560 |
2-MAC_FOR_CAPABILITY::SYS_VHANGUP=2 |
561 |
2-MAC_FOR_CAPABILITY::SYS_TIME=2 |
562 |
2-MAC_FOR_CAPABILITY::SYS_NICE=2 |
563 |
2-MAC_FOR_CAPABILITY::SYS_SETHOSTNAME=2 |
564 |
2-MAC_FOR_CAPABILITY::use_kernel_module=2 |
565 |
2-MAC_FOR_CAPABILITY::create_fifo=2 |
566 |
2-MAC_FOR_CAPABILITY::create_block_dev=2 |
567 |
2-MAC_FOR_CAPABILITY::create_char_dev=2 |
568 |
2-MAC_FOR_CAPABILITY::create_unix_socket=2 |
569 |
2-MAC_FOR_CAPABILITY::SYS_LINK=2 |
570 |
2-MAC_FOR_CAPABILITY::SYS_SYMLINK=2 |
571 |
2-MAC_FOR_CAPABILITY::SYS_RENAME=2 |
572 |
2-MAC_FOR_CAPABILITY::SYS_UNLINK=2 |
573 |
2-MAC_FOR_CAPABILITY::SYS_CHMOD=2 |
574 |
2-MAC_FOR_CAPABILITY::SYS_CHOWN=2 |
575 |
2-MAC_FOR_CAPABILITY::SYS_IOCTL=2 |
576 |
2-MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD=2 |
577 |
2-MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT=2 |
578 |
2-MAC_FOR_CAPABILITY::SYS_PTRACE=2 |
579 |
3-COMMENT=-----Enforcing Mode----- |
580 |
3-MAC_FOR_FILE=3 |
581 |
3-MAC_FOR_ARGV0=3 |
582 |
3-MAC_FOR_ENV=3 |
583 |
3-MAC_FOR_NETWORK=3 |
584 |
3-MAC_FOR_SIGNAL=3 |
585 |
3-DENY_CONCEAL_MOUNT=3 |
586 |
3-RESTRICT_CHROOT=3 |
587 |
3-RESTRICT_MOUNT=3 |
588 |
3-RESTRICT_UNMOUNT=3 |
589 |
3-RESTRICT_PIVOT_ROOT=3 |
590 |
3-RESTRICT_AUTOBIND=1 |
591 |
3-MAX_ACCEPT_ENTRY=2048 |
592 |
3-MAX_GRANT_LOG=1024 |
593 |
3-MAX_REJECT_LOG=1024 |
594 |
3-TOMOYO_VERBOSE=1 |
595 |
3-ALLOW_ENFORCE_GRACE=0 |
596 |
3-MAC_FOR_CAPABILITY::inet_tcp_create=3 |
597 |
3-MAC_FOR_CAPABILITY::inet_tcp_listen=3 |
598 |
3-MAC_FOR_CAPABILITY::inet_tcp_connect=3 |
599 |
3-MAC_FOR_CAPABILITY::use_inet_udp=3 |
600 |
3-MAC_FOR_CAPABILITY::use_inet_ip=3 |
601 |
3-MAC_FOR_CAPABILITY::use_route=3 |
602 |
3-MAC_FOR_CAPABILITY::use_packet=3 |
603 |
3-MAC_FOR_CAPABILITY::SYS_MOUNT=3 |
604 |
3-MAC_FOR_CAPABILITY::SYS_UMOUNT=3 |
605 |
3-MAC_FOR_CAPABILITY::SYS_REBOOT=3 |
606 |
3-MAC_FOR_CAPABILITY::SYS_CHROOT=3 |
607 |
3-MAC_FOR_CAPABILITY::SYS_KILL=3 |
608 |
3-MAC_FOR_CAPABILITY::SYS_VHANGUP=3 |
609 |
3-MAC_FOR_CAPABILITY::SYS_TIME=3 |
610 |
3-MAC_FOR_CAPABILITY::SYS_NICE=3 |
611 |
3-MAC_FOR_CAPABILITY::SYS_SETHOSTNAME=3 |
612 |
3-MAC_FOR_CAPABILITY::use_kernel_module=3 |
613 |
3-MAC_FOR_CAPABILITY::create_fifo=3 |
614 |
3-MAC_FOR_CAPABILITY::create_block_dev=3 |
615 |
3-MAC_FOR_CAPABILITY::create_char_dev=3 |
616 |
3-MAC_FOR_CAPABILITY::create_unix_socket=3 |
617 |
3-MAC_FOR_CAPABILITY::SYS_LINK=3 |
618 |
3-MAC_FOR_CAPABILITY::SYS_SYMLINK=3 |
619 |
3-MAC_FOR_CAPABILITY::SYS_RENAME=3 |
620 |
3-MAC_FOR_CAPABILITY::SYS_UNLINK=3 |
621 |
3-MAC_FOR_CAPABILITY::SYS_CHMOD=3 |
622 |
3-MAC_FOR_CAPABILITY::SYS_CHOWN=3 |
623 |
3-MAC_FOR_CAPABILITY::SYS_IOCTL=3 |
624 |
3-MAC_FOR_CAPABILITY::SYS_KEXEC_LOAD=3 |
625 |
3-MAC_FOR_CAPABILITY::SYS_PIVOT_ROOT=3 |
626 |
3-MAC_FOR_CAPABILITY::SYS_PTRACE=3 |
627 |
EOF |
628 |
;; |
629 |
esac |
630 |
fi |
631 |
|
632 |
if [ ! -r /etc/ccs/exception_policy.conf ]; then |
633 |
echo Creating exception policy. This will take several minutes. |
634 |
make_exception > /etc/ccs/exception_policy.conf |
635 |
make_alias >> /etc/ccs/exception_policy.conf |
636 |
fi |
637 |
if [ ! -r /etc/ccs/system_policy.conf ]; then |
638 |
echo Creating system policy. |
639 |
touch /etc/ccs/system_policy.conf |
640 |
fi |
641 |
if [ ! -r /etc/ccs/domain_policy.conf ]; then |
642 |
echo Creating domain policy. |
643 |
echo '<kernel>' > /etc/ccs/domain_policy.conf |
644 |
echo 'use_profile 0' >> /etc/ccs/domain_policy.conf |
645 |
fi |