一、概述
众所周知,在Linux下对很多文件进行修改都需要有root权限,比如创建、删除用户等操作,但是很多情况下我们仅仅只是以普通用户的身份登录到系统的,因为安全性考虑往往不会让除网络管理员之外的人员用root的身份登录,那么我们要完成一些特定的临时任务怎么办呢?
方法有2个:
- 用su切换到root用户登陆系统,进行管理操作,但必须要知道root密码,而且因为身份切换过来了他就可以进行任何root可以的操作,这也是非常不安全的
- 在执行的命令前面加上sudo进行部分操作,这个相对于su灵活,允许哪些用户,执行哪些命令都可以配置
二、永久提权su
su root也可以切换到root,虽然是root的身份,但是环境变量不变,如图:
三、临时提权sudo
1、编辑配置
sudo的配置文件是 /etc/sudoers ,我们可以用他的专用工具visudo编辑,此工具的好处是在添加规则不太准确时,保存退出时会提示给我们错误信息,配置好后,可以通过sudo -l 来查看哪些命令是可以执行或禁止的
2、格式
格式:用户/组 主机名 命令(默认每一行代表一个规则)
- 用户/组:组前面要加%号,比如%wheel ,中间不能有空格,用户不需要
- 主机:使用sudo的主机名,localhost或者是实际主机名
- 命令:需要完整路径,多个命令之间用逗号隔开
wheel组相当于Windows系统中的administrators组,在linux中具有特权的组
3、记录日志
默认情况下,通过sudo方式执行的操作是不记录的,若要启用sudo日志以备管理员查看,应在/etc/sudoers文件中增加“Defaults logfile”设置
四、PAM安全认证
1、概念
PAM(Pluggable Authentication Modules)是linux系统可插拔认证模块。
2、作用
- PAM是一种高效而且灵活便利的用户级别认证方式,它也是当前linux服务器普遍使用的认证方式
- PAM提供了对所有服务进行认证的中央机制,适用于login,远程登录telnet,ftp等,su等应用程序
- 系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略
2、原理
- PAM认证一般遵循的顺序:service(服务)–>PAM(配置文件)–>pam_*.so
- PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(/etc/pam.d下)最后调用认证文件(/lib/security下)进行安全认证
- 用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证,不同的应用程序所对应的PAM模块也是不同的
如果想查看某个程序是否支持PAM认证,可以用ls命令
3、构成
- 认证类型
- 控制类型
- PAM模块及其参数
4、认证类型
- Auth 账号的认证和授权
- Account 帐户的有效性,与账号管理相关的非认证类的功能,如:用来限制/允许用户对某个服务的访问时间,限制用户的位置(例如:root用户只能从控制台登录)
- Password 用户修改密码时密码复杂度检查机制等功能
- Session 用户会话期间的控制,如:最多打开的文件数,最多的进程数等
- -type 表示因为缺失而不能加载的模块将不记录到系统日志,对于那些不总是安装在系统上的模块有用
5、控制类型
控制类型也可以称做Control Flags,用于PAM验证类型的返回结果
- required :验证失败时仍然继续,但返回fail
- requisite :验证失败立刻结束整个验证过程,返回fail
- sufficient :验证成功立即返回,不再继续,否则忽略结果并继续
- optional :不用于验证,只是显示信息,常用于session
6、su模块案例
仅允许用户radmin使用su命令:
1、编辑su的pam配置文件
2、把第六行auth这一行前面的#去掉
3、然后编辑用户账号限制的配置文件/etc/login.defs
4、最后一行输入以下内容SU_WHEEL_ONLY yes
5、验证非wheel组的用户无法使用su
6、新建一个radmin用户,将他加入wheel组
7、验证可以使用su切换到其他用户
转载:https://blog.csdn.net/shengjie87/article/details/106907178