-----------------------------------------------------------------
su 权限设置
[root@localhost ~]# vim /etc/pam.d/su //pam认证
开启:auth required pam_wheel.so use_uid //去掉#
[root@localhost ~]# vim /etc/group
wheel:x:10:han //han账户加入wheel,可以使用su
[han@localhost ~]$ su - lisi //han可以切换
Password:
[lisi@localhost ~]$ su - han //lisi不可以切换
Password:
su: incorrect password
-----------------------------------------------------------------
Pam模块
Linux系统中的Pam模块为可热插拔的认证模块(*.so)
1、配置文件
# ls /etc/pam.d/
atd other subscription-manager
……
newrole su
其中system-auth和password-auth配置文件是RHEL6实现用户名验证机制配置文件,大多数服务的配置将都会调用它们。

2、模块,如果是32为系统则路径是/lib/security/,如果是64为系统则在/lib64/security/目录下
# ls /lib64/security/
pam_access.so pam_gnome_keyring.so pam_namespace.so ……
pam_ftp.so pam_mysql.so pam_stress.so

3、验证阶段
分四个验证管理阶段:不同的阶段完成整个用户登录到登录成功再到退出登录之前整个过程的管理,同一个阶段可以有多个模块来共同 完
成管理,但是这些模块都是依次从上往下的顺序进行,四个阶段必须是从 auth-->account-->password--->session的顺序进行。每个阶段代表
的意思如下:
(1)auth 验证授权阶段,验证用户名是否存在,对应的密码是否正确
(2)account 验证帐号阶段,验证用户是否有效,是否被禁止登录或者是否被允许登录,帐号是否过期
(3)password 密码阶段,用户约束密码修改的时候策略以及和密码相关的任何操作
(4)session 会话阶段,用来约束用户成功登录系统之后的一切操作。
控制标记:
(1)required 必要条件,该模块必须通过验证,如果验证失败不会马上返回失败的结果,而是等同一个阶段后续的模块判断完成之后才返
回失败的结果。
(2)requisite 必要条件,该模块必须通过验证,如果验证失败马上返回失败的结果,不会继续验证同一个阶段后续的模块。
(3)sufficient 充要条件,只要该条件成立,而且该条件前面的必要条件模块也成立了,那么马上返回成功结果,无需再继续验证同一个
阶段后续的模块,如果该条件的模块验证失败,它就会变成可选条件,不影响整个阶段的验证,会继续完成后续的判断。
(4)optional 可选条件,不影响判断结果的条件
(5)include 包含指定的配置文件(相当于把对应的配置文件的同一个阶段的所有选项加载该行)

4、示例
例子1、禁止所有普通用户登录本地系统
(1)首先判断一下登录系统的过程涉及到的配置文件
/bin/login ---> /etc/pam.d/login
(2)搜索需要用到的模块
# find /usr/share/man -iname "pam_*" | grep login
/usr/share/man/man8/pam_loginuid.8.gz
/usr/share/man/man8/pam_nologin.8.gz
此时我们可以看到禁用应该是使用pam_nologin模块,所以通过man文件查看此模块的用法
# man pma_nologin
(3)查看到man文件是需要在login文件中添加一行pam_nologin.so并且需要自己创建nologin文件
# vim /etc/pam.d/login
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth include system-auth
account required pam_nologin.so
account include system-auth

然后再创建nologin
# touch /etc/nologin
(4)认证,测试发现除了root可以登录之外,其他普通账户无法登录系统。
也可以:禁止root登录
#vim /etc/ssh/sshd_config 添加 UsePAM yes
#vim /etc/pam.d/sshd 行首添加:
session required pam_listfile.so item=user sense=deny file=/etc/ssh/denyuser onerr=succeed
#echo "root" >> /etc/ssh/denyuser
列在/etc/ssh/denyuser中的用户, 都会被拒绝使用密码登录!!

例子2、限制普通账户只能在上班时间通过ssh登录系统。
同样的利用上面的步骤方法进行配置
(1)涉及到的配置文件
/etc/pam.d/sshd
(2)涉及到的模块
[root@vpn ~]# find /usr/share/man -iname "*pam_*" |grep time
/usr/share/man/man8/pam_timestamp_check.8.gz
/usr/share/man/man8/pam_time.8.gz
/usr/share/man/man8/pam_timestamp.8.gz
可以通过查看man文档,是pam_time是符合我们的需求,并且得知pam_time的使用方法
# man pam_time
............(省略其他代码)
通man知道需要配置/etc/security/time.conf和在/etc/pam.d/ssh中添加account required pam_time.so
(3)配置/etc/pam.d/sshd
# vim /etc/pam.d/sshd
#%PAM-1.0
auth required pam_sepermit.so
auth include password-auth
account required pam_nologin.so
account required pam_time.so
account include password-auth
..............
(4)配置/etc/security/time.conf
# vim /etc/security/time.conf
在里面添加一行
sshd;*;abc;Wk0800-1800 & !Wd0000-2400
此代码表示普通账户abc可以在工作时间早上8点到下午18点通过ssh登录系统的任何一个安全终端。

例子3、通过pam_tally2进行配置凡是通过ssh登录系统密码错误3次则锁定5分钟
(1)配置/etc/pam.d/sshd
# vim /etc/pam.d/sshd
#%PAM-1.0
auth required pam_sepermit.so
auth required pam_tally2.so deny=3 even_deny_root unlock_time=300 (注意颜色变化)
auth include password-auth
account required pam_nologin.so
(2)测试
通过ssh登录时3次错误密码则此账户被锁定,5分钟解锁。查看账户登录锁定情况
# pam_tally2
Login Failures Latest failure From
abc 3 10/19/13 22:50:31 192.168.232.1
可以手动进行解锁。
# pam_tally2 -u abc -r
Login Failures Latest failure From
abc 3 10/19/13 22:50:31 192.168.232.1
禁止用户设置密码于前三次重复:
# /etc/pam.d/system-auth
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=3
用户登录3次以上就在20秒以内拒绝这个用户登录
# vim /etc/pam.d/login
添加:auth required pam_tally2.so deny=3 unlock_time=20
修改/etc/pam.d/system-auth文件
找到 password requisite pam_cracklib.so这么一行替换成如下:
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
参数含义:
尝试次数:5 最少不同字符:3 最小密码长度:10 最少大写字母:1 最少小写字母:3 最少数字:3 密码字典:/usr/share/cracklib/pw_dict
-------------------------------------------------------------
可设计一个基于PAM的vsftpd虚拟账户实验
--------------------------------------------------------------

su命令详解的更多相关文章

  1. Linux su命令详解

    su switch user,用于切换用户用 su常见命令参数 用法:su [选项]... [-] [用户 [参数]... ] Change the effective user id and gro ...

  2. android adb 命令详解

    ADB (Android Debug Bridge)  是android SDK中的工具,需要先配置环境变量才能使用.起调试桥的作用,可以管理安卓设备.(也叫debug工具) ---------查看设 ...

  3. linux cat 命令详解

    linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...

  4. Linux netstat命令详解

    Linux netstat命令详解 一  简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...

  5. linux netstat 命令详解

    linux netstat 命令详解 1.功能与说明 netstat 用于显示linux中各种网络相关信息.如网络链接 路由表  接口状态链接 多播成员等等. 2.参数含义介绍 -a (all)显示所 ...

  6. adb shell 命令详解,android

    http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android ...

  7. net user命令详解

    net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user: ...

  8. Linux常用命令详解(week1_day1_2)--技术流ken

    本节内容 aliasunaliasunamesuhostnamehistorywhichwcwwhowhoamipingkillseqdudffreedate 命令详解 1. alias 设置.’查看 ...

  9. Linux常用命令详解(week1_day1_1)--技术流ken

    本节内容 基础命令:lsmanpwdcdmkdirechotouchcpmvrmrmdircatmorelessheadtailclearpoweroffreboot进阶命令(下一章节):aliasu ...

随机推荐

  1. Git-用 cherry-pick 挑好看的小樱桃

         版权声明:本文为博主原创文章,转载请在文章明显位置标明文章原属哦. https://blog.csdn.net/qq_32452623/article/details/79449534 ti ...

  2. mysql中的几种日志了解

    前言 MySQL中有以下日志文件,分别是: 1:重做日志(redo log) 2:回滚日志(undo log) 3:二进制日志(binlog) 4:错误日志(errorlog) 5:慢查询日志(slo ...

  3. jenkins配置SSH远程服务器连接

    之前用jenkins做了一个自动发布测试,配置任务的Post Steps时,选择的是执行shell命令.如下图: 这是在本192.168.26.233服务器上测试的,此服务器上运行jenkins,to ...

  4. 关于golang.org/x包问题

    关于golang.org/x包问题 由于谷歌被墙,跟谷歌相关的模块无法通过go get来下载,解决方法: git clone https://github.com/golang/net.git $GO ...

  5. MySQL 字段内容区分大小写

    数据由Oracle 迁入MySQL ,由于之前Oracle区分大小写,MySQL的配置使用了默认配置,导致一些数据导入失败,有的唯一键报错,冲突. 将测试过程记录在下面. 数据库版本:MySQL 5. ...

  6. hadoop 管理命令dfsadmin

    hadoop 管理命令dfsadmin dfsadmin 命令用于管理HDFS集群,这些命令常用于管理员. 1. (Safemode)安全模式 动作 命令 把集群切换到安全模式 bin/hdfs df ...

  7. python爬虫之git的安装

      一.初始 1.发展历史 *最开始没有对代码的管理,导致很多东西混乱和丢失. *后来大家想了一个办法,用最简单最笨的方法,各种复制文件夹. *然后就出现了版本控制的工具. 1.单机版:RCS(198 ...

  8. static关键字的用法

    静态变量和静态方法 static关键字的基本用法: 1.修饰变量:被static修饰的变量属于类变量,可以用类名.变量名来引用,而不用直接new一个对象来引用. 2.修饰方法:被static修饰的方法 ...

  9. 莫烦keras学习自修第一天【keras的安装】

    1. 安装步骤 (1)确保已经安装了python2或者python3 (2)安装numpy,python2使用pip2 install numpy, python3则使用pip3 install nu ...

  10. Vue簡介

    vue使用由下向上的增量開發模型: vue是javascript的漸進框架: vue的目標是盡量使用簡單的API實現響應的數據綁定和組合的視圖組件.