/etc/security/limits.conf配置文件的设置语法如下:
<domain> <type> <item> <value>
配置文件语法格式中的“domain”列可以是用户名、采用@group语法的组名,还可以用通配符“*”来表示任何用户,以及使用“%”通配符来只限制maxlogins,并可以采用%group的语法格式。
配置文件语法格式中的“type”列有两个值:
soft:用来设置对系统资源的软限制,它允许用户所使用的系统资源可以在设定的硬限制值的规定范围来上下浮动。
hard:用来设置对系统资源的硬限制,这些硬限制由超级用户设置,并由系统内核来执行。普通用户对系统资源的使用率不能超过设置的硬限制设定值。
配置文件语法格式中的“item”和“value”是成对使用的,“item”表示某类具体的系
统资源,而“value”就是“item”的值。在limits.conf配置文件中可以设置的系统资源有:
core: 核心文件的大小 (KB)
data: 最大的数据包大小(KB)
fsize: 最大的文件大小(KB)
memlock: 最大可用的内存空间(KB)
nofile: 最大可以打开的文件数量
rss: 最大的可驻留空间(KB)
stack: 最大的堆栈空间(KB)
cpu: 最大的CPU占用时间(minutes)
nproc: 最大允许运行的进程数量
as: 地址空间限制(KB)
maxlogins: 用户可以登录到系统的最多次数,UID=0的用户除外
priority: 优先运行的用户进程(负值越高的进程优先)
sigpending: 最大数量的等待信号(Linux2.6及以上内核)
msqqueue: POSIX信息队列的最大可使用的内存(bytes)(Linux2.6及以上内核)
locks: 最大可锁定文件的数目(Linux2.4及以上内核的系统)
上面这些“item”项目是一些对系统资源使用情况非常有用的,新版本的PAM中还新加入了其它一些项目,你可以通过它的帮助文档得到它们的说明。需要注意的是,用户的限制优先级要高于组的限制,如果你为一个组设置了某种系统资源限制,但是其中的某个用户设置了另一级别的系统资源限制,那么,系统将会优先按用户级别的限制处理。另外,如果无限制可以使用“-”号表示。
优先级高。
(4)、pam_time验证模块
pam_time验证模块通常与account验证类型一起使用。它并不对用户提供验证服务,而是用来限制用户在指定的日期、时间及终端线路上对系统或特定应用程序进行访问。
要正确使用Pam_time验证模块,必需有一个正确的/etc/security/time.conf相配套。此配置文件中每一行的语法格式为:
services;ttys;users;times
services字段:表示应用PAM功能的服务名称。
ttys字段:应用此规则的终端名,可以“*”号表示任何终端,“!”表示非。
users字段:应用此规则的用户名单或网络组名,可以“*”号表示任何用户,“!”表示非。
times字段:指定时间,通常使用日期/时间范围的格式来表示。可以用星期几英文单词前两个字母来表示具体的日期,例如MoTuSa就是指星期一星期二和星期六。注意:重复的日期将会被取消,比如MoMo表示任何一天都没有。两个字母的组合有: Mo、Tu、We、Th、Fr、Sa、Su、Wk、Wd、Al, Mo到Su分别指从星期一到星期天,Wk指每一天,Wd指周末,Al也指每一天,例如AlFr指除星期五外的每一天。 时间采用24小时制,即HHMM(时分)的形式。日期/时间范围前可有“!”表表除此以外的所有日期/时间,用“-”连接指定的时间范围,如果结束时间小于开始时间,就表明时间持续到第二天的结束时间,例如Al1800-0800就是指每天下午6点整到第二天的早晨8点整。
(5)、pam_listfile验证模块
pam_listfile验证模块通常与auth验证类型一起使用。此模块提供根据某个指定的文件来允许或禁止用户访问某个应用程序或服务的功能,这些被指定的文件必需事先存在,然后通过file参数来指定该文件。pam_listfile验证模块可以根据用户名、tty、rhost、ruser、用户组、使用的shell来对用户进行访问控制。
Pam_listfile验证模块可以使用的选项有:
item=[tty|user|rhost|ruser|group|shell]:设置访问控制的对象类型。
sense=allow|deny:用来指定当在保存“item”对象的文件中找不到item指定的对象时的动作方式,如果在文件中找不到相应的对象,则执行相反的动作。
onerr=succeed|fail:用来指定当某类事件(如无法打开配置文件)发生时的返回值。
file=filename:指定保存有“item”对象的文件位置。
apply=[user|@group]:用指定使用非用户和组类别时,这些规则所适用的对象。当item=[user|ruser|group]时,这个选项没有任何意义,只有当item=[tty|rhost|shell]时才有意思。
(6)、pam_unix验证模块
pam_unix提供基于/etc/passwd 和 /etc/shadow文件的类UNIX风格的认证。它适用所有的验证类型,包括:auth、account、 password、session。
当pam_unix验证模块与auth验证类型一起使用时,此模块可以使用的选项有debug、audit、use_first_pass、try_first_pass、nullok和nodelay,主要功能是验证用户密码的有效性,在缺省情况下(即不带任何参数时),该模块的主要功能是禁止密码为空的用户提供服务;
在作为account类型使用时,此时该模块可识别的参数有debug、audit,该模块主要执行建立用户帐号和密码状态的任务,然后执行提示用户修改密码,用户采用新密码后才提供服务之类的任务;
在作为password类型使用时,此时该模块可识别的参数有debug、 audit、 nullok;、not_set_pass、use_authtok、try_first_pass、use_first_pass、md5、bigcrypt、shadow、nis、
remember,该模块完成让用户更改密码的任务;
在作为session类型使用时,此时该模块没有可识别的参数,该模块仅仅完成记录用户名和服务名到日志文件的工作。
Pam_unix验证模块可以使用的选项有:
debug:将调试信息写入系统日志,当pam_unix验证模块与所有验证类别使用时都有效。
audit:提供比debug更多诊断调试,它只有当pam_unix验证模块与 auth、account及password验证类型使用时有效。
nullok:默认情况下,如果密码为空,那么就不允许用户访某项服务,而使用此项后将则覆盖这个默认动作。它只有当pam_unix验证模块与 auth、和password验证类型使用时有效。
nodelay:当用户验证失败后,系统在给出错误信息时会有一个延迟,默认为2秒钟。当使用此选项后,将取消这个延迟。它只有当pam_unix验证模块与 auth验证类型使用时有效。
try_first_pass:当pam_unix验证模块与auth验证类型一起使用时,使用该选项将在提示用户输入密码前,尝试使用以往的密码验证方式来对用户进行验证。而当pam_unix验证模块与password验证类型一起使用时,该选项主要用来防止用户新设定的密码与以前的旧密码相同。
use_first_pass:当pam_unix验证模块与auth验证类型一起使用时,使用该选项将在提示用户输入密码前,直接使用以往的密码验证方式来对用户进行验证。而当pam_unix验证模块与password验证类型一起使用时,该选项主要用来防止用户新设定的密码与前面password提供的密码相同。
use_authok:当用户修改时,使用此选项强制用户使用前面堆叠验证模块提供的密码,例如由pam_cracklib验证模块提供的新密码。当pam_unix验证模块与password验证类型一起使用时有效。
md5:采用md5对用户密码进行加密, 当pam_unix验证模块与password验证类型一起使用时有效。
shadow:使用用shadow密码,当pam_unix验证模块与password验证类型一起使用时有效。
sha256:使用此选项,当下次修改密码时将用SHA256算法加密,如果SHA256的libcrypt不存在,就会重新使用MD5加密密码。Sha512与此选项相同,只是加密强大不同而已。当pam_unix验证模块与password验证类型一起使用时有效。
rounds=n:用来指定使用SHA256和SHA512算法加密密码时重复哈希算法的次数。当pam_unix验证模块与password验证类型一起使用时有效。
remember=n:使用此选项将会将n个使用过的旧密码,以MD5的方式加密后保存到/etc/security/opasswd文件中。当pam_unix验证模块与password验证类型一起使用时有效。
(7)、pam_deny验证模块可以用来禁止所有的访问,当你设置PAM配置文件时,为了安全,在开始的行可以使用它来禁止所有的访问,以减少错误配置引起的安全风险。而pam_permit验证模块却总是允许所有的访问,你要谨慎的使用此验证模块。它们都适用于所有的验证类型。
(8)、pam_rootok验证模块允许/etc/pam.d/su中的用户不需要任何验证就可以登录系统。因此,你应当小心设置/etc/pam.d/su文件,并且在使用时要与pam_wheel验证模块一同使用,以保证root权限只允许在pam_wheel的限制中进行。它只适用于auth验证类型。
(9)、pam_security验证模块只对root用户有影响。当root用户登录时,pam_security验证模块会参考/etc/securetty目录中的控制终端列表,来保证root用户不会从不安全的终端登录。它一般与auth验证类型一现使用。
(10)、pam_nologin验证模块,如果/etc/nologin文件存在,此模块将禁止所有的登录。它一般与auth和account验证类型一同使用。
(11)、pam_echo验证模块用来给用户显示通过file选项指定的文件中的内容,它适用于所有的验证类型。pam_motd验证模块允许将/etc/motd文件中的内容显示给用户,它只适用于session验证类型。
(12)、pam_lastlog显示用户上次登录的日期和时间,它主要通过读取/var/log/lastlog文件来显示。它只适用与session验证类型。
(13)、pam_warn将刚登录的信息记录到系统日志当中,它一般与auth和password验证类型一同使用。
(15)、pam_wheel验证模块,当使用此验证模块后,只有加入到了一个wheel group中的的根用户,并且提交的密码有效,才能访问指定的服务或系统。将它与pam_rootok一同使用能增加对根用户的限制。它只适用于auth和account验证类型。
在/lib/security/或/lib64/security/目录中还有许多没有在上面列出的验证模块,由于它们的使用频率不高,加上文章篇幅的限制,就不再在此对它们做相应的说明,大家可以参考PAM管理员指南来得到它们的详细说明。