Linux 用户的特殊shell与PAM模块

对于一个主机系统而言,在系统中会存在一些无法的登陆的用户,然而他们也必须存在,我们所谓的无法登陆,指的就是这个用户无法使用bash或其他shell来登录系统而已,并不是说这个账号就无法使用其他的资源。举例来说,各个系统账号中,打印作业由ip这个账号在管理,WWW服务由Apache这个账号在管理,他们都可以进行系统管理的工作,但是就是无法登陆知己而已。

换个角度来想如果我的Linux主机提供的是邮件服务,所以说,在这台Linux主机上面的账号,其实大部分都是用来接受主机的信件而已,并不需要登录主机。这个时候,我们就可以考虑让单纯使用mail的账号以/sbin/nologin 作为他们的shell,这样,最起码当我的主机尝试想得到系统已取得shell环境时,可以拒绝该账号。

 

另外,如果我想要让某个具有/sbin/nologin 的用户知道,他们不能登陆主机时,其实我们可以新建“/etc/nologin.txt” 这个文件,并且在这个文件内说明不能登陆的原因,那么下次当这个用户想要登陆系统时,会出现文件内的内容


Linux 用户的特殊shell与PAM模块_第1张图片

说明:在创建不可登陆的用户时,也就是其所对应的shell为/sbin/nologin 那么每次的用户的登陆都会有相应的规则,也就是不能登陆主机,只是接受主机将要发送过来的某些信件而已,或者其他的功能,我们可以自行创建nologin.txt这个文档,每当系统登陆这些账号时。都将会发出此信息。

 

PAM可以是一套应用程序的变成接口(API),它提供了一连串的验证机制,只要用户将验证阶段的需求告知PAM后,PAM就能够回报用户验证的结果(成功或失败)

 

###PAM模块设置语法

就拿passwd举例:

1.    用户开始执行/user/bin/passwd 这支程序,并输入密码;

2.    Passwd调用PAM模块进行验证

3.    PAM模块会到/etc/pam.d/ 中找寻与程序 (passwd)同名的配置文件;

4.    依据/etc/pam.d/passwd内的设置,引用相关的PAM模块逐步进行验证分析;

5.    将验证结果回传给passwd这个程序;

6.    Passwd这个程序会根据PAM回传的结果决定下一个操作

Linux 用户的特殊shell与PAM模块_第2张图片

说明:/etc/pam.d 此时是一个配置文件

 

Linux 用户的特殊shell与PAM模块_第3张图片

说明:上面的第一列(也就是验证类型(type))

1.    auth

用来检验用户的身份验证,这种类型是需要密码来检验的,所以后续的模块是用来检验用户的身份

2.    session

 


你可能感兴趣的:(Linux 用户的特殊shell与PAM模块)