Linux名称解析服务(nss)与验证机制(pam)
名称解析服务
nsswitch:网络服务转换开关
配置文件/etc/nsswitch.conf,这个配置文件可以为众多的名称解析机制提供名称解析库。
例如:
hostname:file dns
当解析主机名时有两种手段,先去文件中去找,当找不到了才去dns
root解析到UID必须通过应用程序查找文件找到对于的id号,这些应用程序就是库文件。
现在看看库文件
cd /usr/lib , ubuntu 为 /lib/x86_64-linux-gnu
ls | grep nss可以得到:
上面例子中指定为file就可以到libnss_files.so库文件中查找。
下面看下/etc/nsswitch.conf里面的内容:
文件nsswitch.conf中的每一行配置都指明了如何搜索信息,比如用户的口令。nsswitch.conf每行配置的格式如下:
信息:方法[动作项]。。。。。
例如 hosts: dns [!UNAVAIL=return] files 信息为hosts 方法为dns 动作项为[!UNAVAIL=return] files是另一个方法。
信息内容可查看man nsswitch.conf
方法有:
files 搜索本地文件,如/etc/passwd和/etc/hosts
nis 搜索NIS数据库,nis还有一个别名,即yp
dns 查询DNS(只查询主机)
compat passwd、group和shadow文件中的±语法
动作项:
STATUS
STATUS的取值如下。
l NOTFOUND——方法已经执行,但是并没有找到待搜索的值。默认的动作是continue。
l SUCCESS——方法已经执行,并且已经找到待搜索的值,没有返回错误。默认动作是return。
l UNAVAIL——方法失败,原因是永久不可用。举例来说,所需的文件不可访问或者所需的服务器可能停机。默认的动作是continue。
l TRYAGAIN——方法失败,原因是临时不可用。举例来说,某个文件被锁定,或者某台服务器超载。默认动作是continue。
action
action的取值如下:
l return——返回到调用例程,带有返回值,或者不带返回值。
l continue——继续执行下一个方法。任何返回值都会被下一个方法找到的值覆盖。
** 认证服务**
认证服务也是由库文件完成,库文件在/lib/security或者/lib64/security下
配置文件在/etc/pam.d下以login举例,可以看到如下内容
account:审核用户帐号是否有效
password:用户修改密码是否被允许,密码是否符合要求。
session:会话定义操作过程相关属性
多行是指每一种认证有多种手段。
/etc/pam.d/service(必须小写)格式
type control module-path module-arguments
type:有auth、account、password、session
control :当某一种类型有多个时,多行之间如何建立关系(require:必须的过,如果没通过则不通过但是还要一定要检查同组其他的,requisite如果不过,后面不需在检查,一定不过,sufficient:如果过了则过来,后面不需要检查,optional:可选,include:权利移交给其它)
module-path:完成功能的模块
几个常用模块
1、pam_unix在password,shadow验证用户时用到,选项nullok(运行为空)shadow(基于shadow格式密码) md5(加密算法)
2、pam_permit:运行访问
3、pam_deny:拒绝访问
4、pam_cracklib.so:检查密码通过字典查看是否容易破解,选项minlen:密码最短长度,difok:密码与此前是否相同,dcredit=N,包含记为数字,ucredit=N,包含几位大写字母 lcredit=N,小写字母 ocredit=N,特殊字符,retry=N,最多尝试多少次
5、pam_shell:用户登录默认shell为/etc/shells,检测合法shell
6、pam_securetty:限定管理员只能特殊设备登陆, 设备在/etc/securetty中写明
7、pam_listfile:到某一文件验证某一服务用户帐号的允许与拒绝item=tty/user/ruser/group/shell/rhost
sense=allow/deny file=/path/filename onen(出现故障)=[succeed(通过)/fail(不通过)] [apply=[user/@group]][quiet]
8、pam_rootok:只要root用户就可以
9、pam_limits:一次会话里面能够使用系统资源的限定。配置文件在/etc/security/limits.conf或者是/etc/security/limits.d/,普通用户只能软限制,普通用户用命令ulimit来调整 -u用户所能打开最大进程数,-n修改打开最大文件数
10、pam_env在用户登录根据/etc/security/pam_env.conf来为用户设置环境变量。
11、pam_wheel用来设定哪些用户可以su到root,只要wheel中用户才可以
12、pam_succeed_if:检查用户的特性来看用户是否可以登录
13、pam_time:根据用户设定登录系统的时间,配置文件/etc/security/time.conf,格式:服务 终端 用户 时间
module-arguments:模块参数
/etc/pam.d下还有个other文件,定义默认规则(没有对应文件)
实验:
/etc/pam.d/login只对本地管用。
先备份下/etc/pam.d/system-auth-ac文件
在第二行加入
auth required pam_listfile.so item=group sense=allow file=/etc/pam_allowgroups
建立文件,并添加内容
vim /etc/pam_allowgroups
查看hxk这个用户
[root@hxk pam.d]# id hxk
uid=2527(hxk) gid=2527(hxk) 组=2527(hxk)
不在allowgrp这个组里,试着让hxk登录
usermod -a -G hxk allowgrp
可以登录。