login
程序;若不通过则
(d)
继续往下以
pam_succeed_if.so
判断
UID
是否大于
1000
,若小于
1000
回报失败,否则再往下
(e)
pam_deny.so
拒绝联机。
2.
授权½段
(account)
(a)
先以
pam_nologin.so
判断
/etc/nologin
是否存在,若存在则不许一般使用者登入;
(b)
½下来以
pam_unix.so
pam_localuser.so
½行账号管理,再以
(c) pam_succeed_if.so
判断
UID
是否
小于
1000
,若小于
1000
则不记录登录信息。
(d)
最后以
pam_permit.so
允许该账号登入。
3.
密码½段
(password)
(a)
先以
pam_pwquality.so
设定密码½能尝试错误
3
次;
(b)
½下来以
pam_unix.so
sha512, shadow
等功能½行密码检验,若通过则回报
login
程序,若不通过则
(c)
pam_deny.so
拒绝
登入。
4.
会议½段
(session)
(a)
先以
pam_selinux.so
暂时关闭
SELinux
(b)
使用
pam_limits.so
设定好用户能够操
作的系统资源;
(c)
登入成功后开始记录相关信息在登录文件中;
(d)
pam_loginuid.so
规范不同的
UID
权限;
(e)
开启
pam_selinux.so
的功能。
总之,就是依据验证类别
(type)
来看,然后先由
login
的设定值去查阅,如果出现『
include
system-auth
就转到
system-auth
文件中的相同类别,去取得额外的验证流程就是了。然后再到下
一个验证类别,最终½所有的验证跑完!
就½束这次的
PAM
验证啦!
经过这样的验证流程,现在你知道为啥
/etc/nologin
存在会有问题,也会知道为何你使用一些远程联
机机制时,
老是无法使用
root
登入的问题了吧?没错!这都是
PAM
模块提供的功能啦!
例题:
为什么
root
无法以
telnet
直½登入系统,但是却能够使用
ssh
直½登入?
答:
一般来说,
telnet
会引用
login
PAM
模块,而
login
的验证½段会有
/etc/securetty
的限制!
由于远程联机
属于
pts/n (n
为数字
)
的动态终端机½口装置名称,并没有写入到
/etc/securetty
因此
root
无法以
telnet
入远程主机。至于
ssh
使用的是
/etc/pam.d/sshd
这个模块,
你可以查阅一下该模块,由于该模块的验证½段并
没有加入
pam_securetty
,因此就没有
/etc/securetty
的限制!故可以从远程直½联机到服务器端。
另外,关于
telnet
ssh
的细部说明,请参考
鸟哥的
Linux
私房菜服务器篇
13.5.5
其他相关
文件
除了前一小½谈到的
/etc/securetty
会影响到
root
可登入的安全终端机,
/etc/nologin
会影响到一般
使用者是否能够登入的功能之外,我们也知道
PAM
相关的配置文件在
/etc/pam.d
说明文件在
/usr/share/doc/pam-(
版本
)
,模块实际在
/lib64/security/
。那么还有没有相关的
PAM
文件呢?
是有
的,主要都在
/etc/security
这个目录内!我们底下½绍几个可能会用到的配置文件喔!
.
limits.conf
我们在第十章谈到的
ulimit
功能中,
除了修改使用者的
~/.bashrc
配置文件之外,其实系统管理员可
以统一½由
PAM
来管理的!
那就是
/etc/security/limits.conf
这个文件的设定了。这个文件的设定
很简单,你可以自行参考一下该文件内容。
我们这里½作个简单的½绍: