一、su命令——切换用户 使用su 命令可以切换为指定的另一个用户,从而具有该用户的所有权限。当切换时需要对目标用户的密码进行验证( root 用户切换其他用户时除外)。 如图我们在root用户下执行“su - lisi”命令可以直接切换到lisi用户,然而我们在lisi用户下切换root 用户就需要数密码,若我们知晓密码便可直接切换root用户。 上述命令操作中,选项“-”表示切换用户后进入目标用户的登录 Shell 环境,若缺少此选项则仅切换身份、不切换用户环境。 su命令的安全隐患: 默认情况下,任何用户都允许使用 su 命令,从而有机会反复尝试其他用户(如 root)的登录密码,这样带来了安全风险。为了加强 su 命令的使用控制,可以借助于 pam_wheel认证模块,只允许极个别用户使用 su 命令进行切换。 如图我们执行“vim /etc/pam.d/su”去到认证配置里,将开头的“#”符号删除并保存退出配置文件接口启用pam_wheel认证。 如图可见用户lisi不在wheel组中,而用户czt在wheel组中。 启用 pam_wheel 认证以后,未加入到 wheel 组内的其他用户将无法使用 su 命令,尝试进行切换时将提示“拒绝权限”,从而将切换用户的权限控制在最小范围内。 二、PAM 安全认证 PAM(Pluggable Authentication Modules),是 Linux 系统可插拔认证模块,是一种高效而且灵活便利的用户级别的认证方式,它也是当前 Linux 服务器普遍使用的认证方式 。 PAM 认证原理: PAM 认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.so; 1、PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security 下)进行安全认证; 2、用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到 PAM 模块进行认证。 3、不同的应用程序所对应的 PAM 模块也是不同的。 如图我们执行“ls /etc/pam.d | grep su”命令查看一下拿下程序支持 PAM 认证,可见su是众支持PAM认证的。 如图我们可以执行“cat /etc/pam.d/su”命令查看su 的 PAM 配置文件的具体内容。 1)每一行都是一个独立的认证过程; 2)每一行可以区分为三个字段: (1)认证类型 (2)控制类型 (3)PAM 模块及其参数 PAM 认证类型包括四种:  认证管理:接受用户名和密码,进而对该用户的密码进 行认证;  帐户管理:检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的限制等;  密码管理:主要是用来修改用户的密码;  会话管理:主要是提供对会话的管理和记账。 控制类型也可以称做 Control Flags,用于 PAM 验证类型的返回结果。 1)required 验证失败时仍然继续,但返回 Fail 2)requisite 验证失败则立即结束整个验证过程,返回 Fail 3)sufficient 验证成功则立即返回,不再继续,否则忽略结果并继续 4)optional 不用于验证,只是显示信息(通常用于 session 类型) 三、sudo命令——提升权限 su 命令可以非常方便地切换为另一个用户,但前提条件是必须知道目标用户的登录密码。然而每多一个认证的root密码,安全分风险就越大,我们可以使用sudo命令来指定某一些用户可以行使超级用户(其他用户)的某一些命令。 配置文件:/etc/sudoers,授权记录的基本配置格式如图。 授权配置主要包括用户、主机、命令三个部分,各部分的具体含义如下。 用户(user):直接授权指定的用户名,或采用“%组名”的形式(授权一个组的所有用户)。 主机(MACHINE):使用此配置文件的主机名称。此部分主要是方便在多个主机间共用同一份 sudoers 文件,一般设为 localhost 或者实际的主机名即可。 命令(COMMANDS):允许授权的用户通过 sudo 方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。 如图我们使用管理员终端执行“vim /etc/sudoers”进入配置文件中,然后在空行处编写“lisi localhost=/sbin/ifconfig”内容保存退出即可。 下面我们来验证一下sudo方式执行命令的过程。 1、我们执行“ifconfig”命令查看当前IP地址。 2、在lisi用户的终端执行“sudo ifconfig ens33 192.168.174.111”命令即可用来修改IP地址。