linux--用户管理(2)

PAM模块

当用户登录Linux主机时,需要通过/etc/passwd和/etc/shadow的验证并取得相关得权限数据,最后获得一个shell。在登入系统前,还需要通过PAM (Pluggable Authentication Modules, 嵌入式模块)地验证。

PAM模块除了可以在用户登录时进行身份验证之外,还可以辅助一些应用程序的验证,例如passwd。

以/usr/bin/passwd这个程序来说明PAM的使用过程:

  1. 用户开始执行 /usr/bin/passwd 这支程序,并输入密码;
  2. passwd 开始呼叫 PAM 模块,PAM 模块会搜寻 passwd 程序的 PAM 相关文件, 这个设定文件一般是在 /etc/pam.d/ 里面的与程序同名的文件,所以,在本例中, PAM 会去搜寻/etc/pam.d/passwd 这个文件;
  3. 经由 /etc/pam.d/passwd 文件的数据,取用 PAM 所提供的相关模块来进行验证;
  4. 将验证结果回传给 passwd 这支程序,而 passwd 这支程序会根据 PAM 回传的结果决定下一个动作 (重新输入新密码或者通过验证)
[root@localhost pam.d]# cat /etc/pam.d/passwd
#%PAM-1.0
auth       include      system-auth
account    include      system-auth
password   substack     system-auth
-password   optional    pam_gnome_keyring.so


#每一行为一个动作,一个动作分为四个字段,分别为:
#验证的类别 验证的控制标准 使用的PAM模块  该模块能使用的参数

#验证的类别共分为四种类,分别为:
#• auth
#主要用来检验用户的身份验证,通常是需要密码来检验。
#• account
#主要在检验用户是否具有正确的使用权限,例如,当使用一个过期的密码来登入时, 无法正确的登入。
#• session
#主要在管理当用户正确的使用该程序时的环境设定。。
#• password
#这种类别主要在提供验证的修订工作,就是修改/变更密码。


#验证的控制标准有四种方式,分别是:
#• required
#当模块设定为required时,该模块的验证必须要成功,否则就会回传一个 failure 的讯息。
#不过,不论此一动作的模块是否成功,接下去的模块都还会继续动作。
#• requisite
#当模块设定为 requisite 时,该模块的认证要求验证成功。若失败,则不会进行下一步。
#• optional
#这个模块控件大多是在显示讯息而已,并不是用在验证方面的。
#• sufficient
#相对于 requisite 是『发生错误时,立刻回报原执行程序failure , 并且中断 PAM 的运作』,
 #sufficient 则是『顺利通过验证时,立刻回报原程序通过的讯息, 并且中断 PAM 的运作』。

查询用户:w,who,last,lastlog

#显示已经登录的用户以及它们在做什么
[root@localhost ~]# w
 04:56:39 up 14:08,  3 users,  load average: 0.19, 0.09, 0.06
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     :0               Sun14   14:08m 27.47s 27.47s /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/au
root     pts/0    :0.0             Sun14   34.00s  0.47s  0.36s bash
root     pts/1    192.168.190.1    04:56    0.00s  0.18s  0.13s w
#查看谁在使用系统
[root@localhost ~]# who
root     tty1         2020-02-09 14:48 (:0)
root     pts/0        2020-02-09 14:57 (:0.0)
root     pts/1        2020-02-10 04:56 (192.168.190.1)
#显示最近登录用户的信息
[root@localhost ~]# last
root     pts/1        192.168.190.1    Mon Feb 10 04:56   still logged in   
root     pts/2        192.168.190.1    Mon Feb 10 01:08 - 04:44  (03:36)    
root     pts/1        192.168.190.1    Sun Feb  9 15:48 - 02:13  (10:24)    
root     pts/0        :0.0             Sun Feb  9 14:57   still logged in   
root     tty1         :0               Sun Feb  9 14:48   still logged in   
reboot   system boot  2.6.32-642.el6.x Sun Feb  9 14:48 - 04:56  (14:08)    
root     tty1         :0               Thu Nov  1 12:19 - crash (465+03:28) 
reboot   system boot  2.6.32-642.el6.x Thu Nov  1 12:18 - 04:56 (465+17:38) 
 
wtmp begins Thu Nov  1 12:18:03 2018
#lastlog 会去读取 /var/log/lastlog 文件,结果将数据输出
[root@localhost ~]# lastlog
Username         Port     From             Latest
root             pts/1    192.168.190.1    Mon Feb 10 04:56:36 -0500 2020
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
lp                                         **Never logged in**
sync                                       **Never logged in**
shutdown                                   **Never logged in**
halt                                       **Never logged in**
mail                                       **Never logged in**
uucp                                       **Never logged in**
operator                                   **Never logged in**
games                                      **Never logged in**
gopher                                     **Never logged in**
ftp                                        **Never logged in**
nobody                                     **Never logged in**
dbus                                       **Never logged in**
....

检查工具

手动修改账户时,需要这些命令的检查。

pwck

检查/etc/passwd这个文件中的信息,可以检查家目录是否存在,或者比对/etc/passwd和/etc/shadow的信息是否一致。

pwunconv

将 /etc/shadow 内的密码栏数据写回 /etc/passwd 当中, 并且删除/etc/shadow 档案。

chpasswd

读入未加密前的密码,并且经过加密后, 将加密后的密码写入/etc/shadow 当中。这个指令很常被使用在大量建置账号的情况中。

手动创建账户流程

  1. 先建立所需要的群组 ( vi /etc/group );
  2. 将 /etc/group 与 /etc/gshadow 同步化 ( grpconv );
  3. 建立账号的各个属性 ( vi /etc/passwd );
  4. 将 /etc/passwd 与 /etc/shadow 同步化 ( pwconv );
  5. 建立该账号的密码 ( passwd accountname );
  6. 建立使用者家目录 ( cp -a /etc/skel /home/accountname );
  7. 更改使用者家目录的属性 ( chown -R accountname.group /home/accountname )。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值