9 g- Y: T _! I3 h和目录(大多数的系统目录),可写的目录允许移动文件,会引起安全问题. 9 Z6 t4 Y3 W& W6 f U
& h, o: ~- \0 V ?! i系统管理员应经常检查系统文件和目录的许可权限和所有者.可做一个程 ) w0 u6 {& ~5 t# Z4 g
& n# @* ?0 P b& x$ w1 H
序根据系统提供的规则文件(在/etc/permlist文件中)所描述的文件所有者和 & E6 c1 A5 ^* |8 E2 l4 y( Q+ E
! F7 B: N. z2 v% | e
许可权规则检查各文件. - l2 H8 U3 J+ D/ I, ]5 v& p
# O+ J4 h( R# }! L
(源程序清单将在今后发表) 8 i$ f G( A! h; \- R9 Y" Q6 n $ V+ W, D. t9 P7 R2 ~! z% V注意:如果系统的安全管理不好,或系统是新安装的,其安全程序不够高, % a/ \& _3 |9 v, {/ M8 j E; P! y7 q
可以用make方式在安全强的系统上运行上述程序,将许可规则文件拷贝到新系 - \5 l0 L2 s7 G% c' n' S
4 L( B: x2 t* n1 E. e
统来,再以设置方式在新系统上运行上述程序,就可提高本系统的安全程序.但 ' G% u" J- ^' X1 l5 h( r) E
$ y7 |7 H% a* i( T s% b/ G
要记住,两个系统必须运行相同的UNIX系统版本. * x) E9 T6 [3 N 5 i* h0 o) m- S# e9 [# x 3 F% ~" T. ?) G! y3.作为root运行的程序 : @' W1 [9 i2 V& c) x' ^! x
6 f' \# T9 v1 O, i
在UNIX系统中,有些程序由系统作为root进程运行.这些程序并不总是具有 6 x, x8 ~ [5 v/ d6 \ ! @6 ~. S* ~% a9 K% eSUID许可,因为其不少程序仅由root运行,系统管理员需要清楚这些程序做什么, ( W+ J6 V0 h% Y6 }# p/ W
( m9 _, Q9 ]# z! A! ~
以及这些程序还将运行其它什么程序. r. I4 `. F, D5 d1 K% a$ N
7 o8 E" T0 ^: w( i& q8 S% d$ T
! b4 U T3 K+ Z" M2 k. w; y
(1)启动系统 1 Y' P7 p# S! O: g& z- m
' w" H5 r! G, V
当某些UNIX系统(如SCO UNIX/XENIX)启动时,是以被称为单用户的方式运 ) g+ B* m1 y8 P1 C* P. n! Q8 F
$ j5 z6 U+ u N
行,在这种方式中普通用户不能登录,唯有的进程是init,swapper,以及一些由 8 |/ [6 c9 {4 R" S; ^
2 I1 Z8 m8 @3 u# H7 Q: p7 h
系统管理员从控制台运行的进程.UNIX系统的单用户方式启动,使系统管理员 & C7 l8 R) `5 c( x$ j; Y
' T4 B) H- u2 M% ^8 Z
能在允许普通用户登录以前,先检查系统操作,确保系统一切正常,当系统处于 8 \4 I# y$ Z" c2 }9 I# P ( w2 C/ {# W7 A- k ^" ^1 e* y6 O) `) f单用户方式时,控制台作为超级用户,命令揭示是"#",有些UNIX系统不要确认 + ^- E+ p p! h1 U" { 0 S6 U, F' ]' N, l2 q8 n! N6 ^超级用户口令就认可控制台是root,给出#提示符.这就可能成为一个安全问题. ; W9 p- q2 a0 i5 z" V y" z. b : v1 H$ g) `; A* I) e! S3 z( V6 F; O4 G9 Z. m; N
(2)init进程 # P4 _+ G' p; H. S0 N4 w: q
& C% t @4 o, k; Z2 jUNIX系统总是以某种方式或称为某种级运行,系统有若干种运行级,这些 9 w- J4 f5 G& D3 ]& ]% b6 }) i0 e# N" P$ l& }$ i% G$ d |
运行级由init进程控制. 6 C+ a; H" c2 E4 r
3 o) [& q8 N" X) a1 }: @# P' A, N5 SUNIX系统启动时以单用户方式运行,也叫1级或S级. * B9 t# P: V2 k w0 F8 z
6 ?; E$ ?5 v# B. \" C2 X, \2 R对于其他用户登录进入系统,UNIX有一种多用户运行方式,也叫2级. # Y3 ]/ X: n6 |2 B! Q4 |* l- I& D/ x I# q! y3 a+ F9 a% O
init进程控制系统运行级,它读入文件/etc/inittab,该文件详细地规定 4 p# W2 A. k6 x4 e
1 H/ O) N. P( h2 P1 }. D+ C0 |
了哪些进程在哪一级运行.当root敲入init n(数字),系统就进入n级.init读 . d0 P! g, A \+ y' M0 v ) U& ?# Y* x. Y; z9 {, {8 M该文件以确定终止哪些进程,启动哪些进程. / V$ Z" l5 v" Q; [1 G1 `, D5 v $ S; Y; m2 |" ~) D) Y" g有效的运行级的数值是从0到6与s. 7 ~& y7 w5 U7 T. `. d
! Y- z4 Y! P! p. B' x6 |注意:由init建立的进程以UID为0运行(root)从/etc/inittab运行的程序 8 \" S. V4 ~. D5 M0 N, L! ~. O/ \. ]" b' d$ f) e
也作为root运行,所以系统管理员要确保自己知道/etc/inittab中的程序做什 . O; Z1 i$ I* Y) P
/ { B* i4 l1 W么工作,确保这些程序以及这些程序所在的目录直到/和/etc/inittab除root 5 Q3 m; W# C' ?/ o6 g) x/ |/ u9 |( y2 i* |+ K( V2 y8 c% z
外无人可写. 1 Z; _- }4 q {8 t8 n, z7 Z; U. v2 t$ o0 F/ X/ J) t* g8 L
0 O6 c1 \! l3 t; J1 g
(3)进入多用户 2 `% w b& Z! c
. z& _$ n2 m5 j5 g+ B. C) Y# R/ i' F! w$ Z! k# K1 T _
(5)系统V的cron程序 ' U U+ g0 F9 G/ m, A$ v: }3 B1 }# p' u( W
cron在UNIX系统是多用户方式时运行,根据规定的时间安排执行指定的命 2 u# g/ `+ ^/ s" P, ^$ A5 @, a5 Z/ e R; i
令,每隔一分钟检查一次文件/usr/lib/crontab,寻找是否有应当运行的程序? 8 t' ^( `0 _+ S# K
" _; I5 r! ?- B如果找到要运行的程序,就运行该程序,否则睡眠等待一分钟. 4 {! t* K% m" H+ u- g 4 M# x; A" q4 i实际的/usr/lib/crontab用于根据全天的规则时间表运行程序,也可在夜 6 E" {3 F5 {$ a8 F 3 ]' R/ K* G8 \ x4 U" V) q晚运行白天不愿运行怕降低其他用户速度的程序.通常由cron运行的程序是如 ' L$ ^* s) x3 j9 J3 y 3 R5 l! Q& n$ z0 _记帐,存文件这样的程序.cron一般在系统进入多用户后由/etc/rc启动,当 % d; T/ Z+ l0 U2 ^% n4 O) z 1 ]* n: [( Z: ~shutdown运行killall命令时便终止运行.由cron运行的程序作为root,所以应 / d$ \" z4 z! }5 p% U) l c! ^' q2 o
9 E8 J) Z( ~. V0 E
当注意放什么程序在crontab中,还要确保/usr/lib/crontab和该表中列出的 3 v2 o, p) S" r$ J+ U
1 n. E5 n s+ }6 S l& [7 p任何程序对任何人不可写. 5 N/ J7 P! l! o b0 i 6 N- z: C# r Q1 h6 [' _如果用户需要由cron执行一个程序,系统管理员可用su命令在crontab表 , Y I- b( Y, s# N% {6 e3 U 6 u$ t& g# ~: e. O中建立一个入口,使用户的程序不能获得root的权限. - U( }+ K8 I) Z7 _: d