su和sudo Linux基础之系统安全及应用( 二 )


第二步:修改/etc/pam.d/su认证配置启用认证
vim /etc/pam.d/su#编辑/etc/pam.d/su文件auth sufficient pam_rootok.so#pam_rootok.so模块的主要作用是使uid为0的用户root能够直接通过认证而不用输入密码...#省略部分auth required pam_wheel.so use_uid #pam_wheel.so作用是让wheel组内的用户使用su命令,其他人(包括root)无法使用su命令每种状态的解释:两行都注释:所有用户都能使用su命令,切换时root和普通用户都需要密码验证开启第一行,注释第二行:(默认状态)允许所有用户间使用su命令进行切换的,切换时,root不需要密码,其他用户需要密码 。注释第一行,开启第二行:只有wheel组内的用户才能使用su命令,root用户也无法切换 。两行都开启:只有root用户和wheel组内的用户才可以使用su命令 。
例:修改文档将命令前面的注释符“#”删除,并“wq”保存 。
切换用户,此时lisi在wheel组中,所以和root一样可以切换,但需要密码认证,而不在wheel组中,所以su命令拒绝了请求,切换失败 。
(3)查看su操作的记录
/var/log/是su的安全日志,使用su命令切换用户的操作都会被记录,所以可以查看此文件来看记录 。
例如:cat /var/log/secure
查看/var/log/文件
下图就是我上面部分切换用户的记录,可以看到每行里的参数,大概意思能看懂即可 。

su和sudo  Linux基础之系统安全及应用

文章插图
2、PAM安全认证
在su命令时,有提到认证,这里对PAM补充一些内容 。
(1)PAM及其作用(2)PAM认证原理
如果想查看某个程序是否支持 PAM 认证,可以用 ls 命令进行查看/etc/pam.d/ 。例如:ls /etc/pam.d | grep su#查看su是否支持PAM模块认证
(3)PAM认证的构成
查看一个login配置文件,先cd /etc/pam.d/,ls 查看有哪些,cat 选定一个 。
各个分区的解释
第一列:PAM有以下四种模块类型,分别代表四种不同的任务
认证模块类型作用
auth
对用户身份进行识别,如提示输入密码,判断是否为root 。
对账号各项属性进行检查,如是否允许登录系统,帐号是否已经过期,是否达到最大用户数等 。
使用用户信息来更新数据,如修改用户密码 。
定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统 。
第二列:PAM使用控制类型来处理和判断各个模块的返回值
控制类型作用
需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败 。该行以及所涉及模块的成功是用户通过鉴别的必要条件
与类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败 。
如果此模块返回成功,则不管后面的验证,直接向程序返回成功,表示验证通过,如果返回失败,则可以看成 。(慎用)
不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于类型) 。不管成功、失败,继续下一模块的验证,且此模块的服务也能享用 。
表示在验证过程中调用其他的PAM配置文件 。比如很多应用通过完整调用/etc/pam.d/-auth(主要负责用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项 。
第三列:
第四列:
这张图PAM工作过程是我自己的理解,如果有错误或补充请联系我 。