全部博文(135)
分类:
2011-08-11 14:53:03
用户在控制台登录基本流程是:由init进程启动getty产生几个虚拟控制台(tty1,tty2等)。在控制台上显示登录,当用户敲入用户时,getty执行(exec)登录(login)进程,进入登录认证过程过程,认证成功后,登录进程(login)会fork相应用户shell的子进程,至此登录过程结束。用户可以在对应的shell下工作。其过程是getty,login, shell一般是bash。
Getty getty有init启动,其配置在/etc/inittab中,getty可以启动虚拟控制台如tty1,也可以启动串口(可用于调试内核)和modem,在inittab中的配置文件如下。
# Format:
#
#LPI中文论坛3 N1 b* c) P# R% h6 S* m& C
# Note that on most Debian systems tty7 is used by the X Window System,| LPI Linux论坛|LPI Linux社区汇聚Linux人的力量!& u; i2 C6 w7 H& g
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1bbs.lpi-china.org: e* x- ^5 K8 M4 `! L" H/ i
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5bbs.lpi-china.org) f7 U9 N& v% w
6:23:respawn:/sbin/getty 38400 tty6LPI中文论坛- w* A2 Y! d& L9 l3 C4 V9 x
# Example how to put a getty on a serial line (for a terminal)
#| LPI Linux论坛|LPI Linux社区汇聚Linux人的力量!, B& D/ R! ^+ V p9 s. K: i
#T0:235:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100bbs.lpi-china.org4 n0 L$ ~" k' `* P; E/ y( y
LPI中文论坛1 ~) H1 q6 {% d; [1 `( i0 |2 @
getty启动是会读取/etc/issue文件并且在控制台上显示,一般是发行版的一些信息,节点名等。
Login过程 Login的基本流程如下图。LPI中文论坛9 @& }; v) `2 L6 s4 y! K6 N0 ^
LPI中文论坛8 i# V$ ]7 b1 `6 P2 J( k
login的配置文件是/etc/login.defs,其认证对应的重要文件是/etc/pam.d/login,这里定义了认证的限制(如怎么禁止非root用户登录,如何限制特定用户登录),以及认证成功后一些环境变量(如mail位置设定,资源限制设定)的设定。
bbs.lpi-china.org/ ^7 C# Q7 v* z' L. s& B; O
重要的login相关的pam配置文件设定:
用户的访问控制:
Disallows root logins except on tty's listed in /etc/securetty
# (Replaces the `CONSOLE' setting from login.defs)
auth [success=ok ignore=ignore user_unknown=ignore default=die] pam_securetty.soLPI中文论坛0 P" R, ?! [; r4 ]# ?
LPI中文论坛5 e1 l/ _3 F* F
# Disallows other than root logins when /etc/nologin exists* `7 A& `1 R9 n( ~' t0 y9 L
# (Replaces the `NOLOGINS_FILE' option from login.defs)" |" t( P4 }$ x' J
auth requisite pam_nologin.sobbs.lpi-china.org, k- n1 |: n. L7 v& ^. o4 F
# Uncomment and edit /etc/security/access.conf if you need toLPI中文论坛4 e& l- i/ l: _ t+ ^5 f6 R+ q
# set access limits.
# (Replaces /etc/login.access file)| LPI Linux论坛|LPI Linux社区汇聚Linux人的力量! I" t2 r' v- V6 u& C* }9 j
# account required pam_access.so| LPI Linux论坛|LPI Linux社区汇聚Linux人的力量!5 u& m& T9 U8 v
9 ^: _' c9 I! r" `
access.conf的文件格式比较复杂,请参考发行版的配置文件。
环境变量
# parsing /etc/environment needs "readenv=1"
session required pam_env.so readenv=1bbs.lpi-china.org& m% {! ~* R# q0 X+ }
# locale variables are also kept into /etc/default/locale in etch* d6 r% J2 b& x: ?8 v
# reading this file *in addition to /etc/environment* does not hurt| LPI Linux论坛|LPI Linux社区汇聚Linux人的力量!) }, Q" ^2 e6 v" s7 g
session required pam_env.so readenv=1 envfile=/etc/default/localebbs.lpi-china.org h. \1 a' v/ A# ]/ ~, @
; ^5 Z+ ^3 U$ ] n
0 N4 Y6 v1 H& s' D
# Sets up user limits according to /etc/security/limits.confbbs.lpi-china.org. W4 s$ H9 c# ^; a u1 [
# (Replaces the use of /etc/limits in old login)
session required pam_limits.so4 ~1 S( m2 T& F
Pasted from <>