账号管理
-新增与移除使用者: useradd, useradd 参考档, passwd, chage, usermod, userdel
-用户功能:finger, chfn, chsh, id
-新增与移除群组:groupadd, groupmod, groupdel, gpasswd 群组管理员
主机的细部权限规划:ACL
ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限配置。ACL 可以针对单一使用者,单一文件或目录来进行 r,w,x 的权限规范,对于需要特殊权限的使用状况非常有帮助。
他主要可以针对几个项目:
使用者 (user):可以针对使用者来配置权限;
群组 (group):针对群组为对象来配置其权限;
默认属性 (mask):还可以针对在该目录下在创建新文件/目录时,规范新数据的默认权限;
-ACL 的配置技巧: setfacl, getfacl, ACL 的配置(user, group mask, default)
使用者身份切换
一般使用者转变身份成为 root 主要有两种方式:
1.以『 su - 』直接将身份变成 root 即可,但是这个命令却需要 root 的口令;
2.以『 sudo 命令 』运行 root 的命令串,由于 sudo 需要事先配置妥当,且 sudo 需要输入用户自己的口令, 因此多人共管同一部主机时, sudo 要比 su 来的好,至少 root 口令不会流出去!
su
su :读取的变量配置方式为 non-login shell 的方式
su - :读取的变量配置方式为 login shell 的方式
sudo
由于 sudo 可以让你以其他用户的身份运行命令 (通常是使用 root 的身份来运行命令),因此并非所有人都能够运行 sudo , 而是仅有规范到 /etc/sudoers 内的用户才能够运行 sudo 这个命令。
sudo 默认仅有 root 能使用,它的运行流程:
当用户运行 sudo 时,系统于 /etc/sudoers 文件中搜寻该使用者是否有运行 sudo 的权限;
若使用者具有可运行 sudo 的权限后,便让使用者『输入用户自己的口令』来确认;
若口令输入成功,便开始进行 sudo 后续接的命令(但 root 运行 sudo 时,不需要输入口令);
若欲切换的身份与运行者身份相同,那也不需要输入口令。
visudo 与 /etc/sudoers:
除了 root 之外的其他账号,若想要使用 sudo 运行属于 root 的权限命令,则 root 需要先使用 visudo 去修改 /etc/sudoers ,让该账号能够使用全部或部分的 root 命令功能。为什么要使用 visudo 呢?这是因为 /etc/sudoers 是有配置语法的,如果配置错误那会造成无法使用 sudo 命令的不良后果。因此才会使用 visudo 去修改, 并在结束离开修改画面时,系统会去检验 /etc/sudoers 的语法。
使用者的特殊 shell: /sbin/nologin
系统帐号使用的shell就是/sbin/nologin,系统帐号是不需要登录,也无法登录的。
所谓的『无法登陆』指的仅是:『这个使用者无法使用 bash 或其他 shell 来登陆系统』而已, 并不是说这个账号就无法使用其他的系统资源。
我们可以创建『 /etc/nologin.txt 』这个文件, 并且在这个文件内说明不能登陆的原因,那么下次当这个用户想要登陆系统时, 屏幕上出现的就会是 /etc/nologin.txt 这个文件的内容。
PAM 模块简介
PAM (Pluggable Authentication Modules),可以说是一套应用程序编程接口,他提供了一连串的验证机制,只要使用者将验证阶段的需求告知 PAM 后, PAM 就能够回报使用者验证的结果 (成功或失败)。
由于 PAM 仅是一套验证的机制,又可以提供给其他程序所呼叫引用,因此不论你使用什么程序,都可以使用 PAM 来进行验证,如此一来,就能够让账号口令或者是其他方式的验证具有一致的结果!
PAM 藉由一个与程序相同文件名的配置文件来进行一连串的认证分析需求。
当你运行 passwd 后,这支程序呼叫 PAM 的流程是:
用户开始运行 /usr/bin/passwd 这支程序,并输入口令;
passwd 呼叫 PAM 模块进行验证;
PAM 模块会到 /etc/pam.d/ 找寻与程序 (passwd) 同名的配置文件;
依据 /etc/pam.d/passwd 内的配置,引用相关的 PAM 模块逐步进行验证分析;
将验证结果 (成功、失败以及其他信息) 回传给 passwd 这支程序;
passwd 这支程序会根据 PAM 回传的结果决定下一个动作 (重新输入新口令或者通过验证!)
我们来看看 /etc/pam.d/passwd 这个配置文件的内容:
[root@www ~]# cat /etc/pam.d/passwd
#%PAM-1.0 <==PAM版本的说明
auth include system-auth <==每一行都是一个验证的过程
account include system-auth
password include system-auth
验证类别 控制标准 PAM 模块与该模块的参数
第一个字段:验证类别 (Type)
验证类别主要分为四种,分别说明如下:
auth是 authentication (认证) 的缩写,这种类别主要用来检验使用者的身份验证,通常是需要口令来检验的, 所以后续接的模块是用来检验用户的身份。
account(账号) 则大部分是在进行 authorization (授权),这种类别则主要在检验使用者是否具有正确的权限, 举例来说,当你使用一个过期的口令来登陆时,当然就无法正确的登陆了。
session 是会议期间的意思,所以 session 管理的就是使用者在这次登陆 (或使用这个命令) 期间,PAM 所给予的环境配置。 这个类别通常用在记录用户登陆与注销时的信息!例如,如果你常常使用 su 或者是 sudo 命令的话, 那么应该可以在 /var/log/secure 里面发现很多关于 pam 的说明,而且记载的数据是『session open, session close』的信息!
password 就是口令,主要在提供验证的修订工作,举例来说,就是修改/变更口令。
*这四个验证的类型通常是有顺序的,不过也有例外。 会有顺序的原因是,(1)我们总是得要先验证身份 (auth) 后, (2)系统才能够藉由用户的身份给予适当的授权与权限配置 (account),而且(3)登陆与注销期间的环境才需要配置, 也才需要记录登陆与注销的信息 (session)。如果在运行期间需要口令修订时,(4)才给予 password 的类别。
第二个字段:验证的控制旗标 (control flag)
required:此验证若成功则带有 success (成功) 的标志,若失败则带有 failure 的标志,但不论成功或失败都会继续后续的验证流程。 由于后续的验证流程可以继续进行,因此相当有利于数据的登录 (log) ,这也是 PAM 最常使用 required 的原因。
requisite:若验证失败则立刻回报原程序 failure 的标志,并终止后续的验证流程。若验证成功则带有 success 的标志并继续后续的验证流程。 这个项目与 required 最大的差异,就在于失败的时候还要不要继续验证下去?由于 requisite 是失败就终止, 因此失败时所产生的 PAM 信息就无法透过后续的模块来记录了。
sufficient:若验证成功则立刻回传 success 给原程序,并终止后续的验证流程;若验证失败则带有 failure 标志并继续后续的验证流程。 这玩意儿与 requisits 刚好相反!
optional:这个模块控件目大多是在显示信息而已,并不是用在验证方面的。
login 的 PAM 验证机制流程是:
1.验证阶段 (auth):首先,(a)会先经过 pam_securetty.so 判断,如果使用者是 root 时,则会参考 /etc/securetty 的配置; 接下来(b)经过 pam_env.so 配置额外的环境变量;再(c)透过 pam_unix.so 检验口令,若通过则回报 login 程序;若不通过则(d)继续往下以 pam_succeed_if.so 判断 UID 是否大于 500 ,若小于 500则回报失败,否则再往下 (e)以 pam_deny.so 拒绝联机。
2.授权阶段 (account):(a)先以 pam_nologin.so 判断 /etc/nologin 是否存在,若存在则不许一般使用者登陆; (b)接下来以 pam_unix 进行账号管理,再以 (c) pam_succeed_if.so 判断 UID 是否小于 500 ,若小于 500 则不记录登录信息。(d)最后以 pam_permit.so 允许该账号登陆。
3.口令阶段 (password):(a)先以 pam_cracklib.so 配置口令仅能尝试错误 3 次;(b)接下来以 pam_unix.so 透过 md5, 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 的功能。
Linux 主机上的用户信息传递
-查询使用者: w, who, last, lastlog
-使用者对谈: write, mesg, wall
-使用者邮件信箱: mail