RHCSA之账户与安全_用户身份切换详解(su.sudo)

前言

我们都知道Linux系统中,超级用户root具有超级管理权限。由于权限太大,如果管理不好,就会对系统安全带来严重隐患。在工作场景中,我们只在必要时才使用超级用户root的权限。一般的临时性处理都是以普通用户的身份完成的,那么,当普通用户需要超级用户的权限时,是怎么进行切换管理工作的呢?

这就不得不提到两个重要的用户身份切换命令su和sudo。下面我们就讲解这两个命令是如何完成用户切换工作的,达到系统管理目的的?

在Linux系统中,每个文件、目录和进程,都是归属于某一个用户的,没有其用户的许可,其它的普通用户时无法操作的,root除外。root用户的特权还表现在root可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行程序的执行、终止;对硬件设备的添加、创建和移动等;也可以对文件和目录进行属主和权限进行修改。

su

描述:
切换用户身份的命令
语法:
su [选项] [-c 命令] [username]
选项:

选项功能作用
-单纯使用-,如“su -”,代表使用login-shell的变量文件读取方式来登录系统;若用户名没有写,则默认代表切换为root用户
-l与-类似,但后面需要加欲切换的用户账号,也是login-shell的方式
-m-m与-p是一样的,表示使用目前的环境变量设置,而不读取新用户的配置文件
-c仅进行一次命令,所以-c后面可以加上命令

核心作用

比如:我们以普通用户Redhat登录到系统后,当要在系统执行useradd添加用户时,会发现Redhat用户没有这个权限,这个权限只能由root权限执行。

解决办法

  1. 退出Redhat用户,重新以root用户登录。
  2. 直接在Redhat用户下,使用su命令来切换到root下进行添加用户的工作,等工作完成后再退出root用户。

毫无疑问,上面两个方法,通过su命令切换是一种比较好的办法。

注解

通过su命令可以在用户之间切换,超级权限用户root向普通或虚拟用户切换不需要密码验证,其他普通用户之间或者普通用户切换到root,都需要切换用户的密码验证。

默认只是切换身份,并没有切换环境变量,环境变量依然是普通用户的,“”切换用户身份时,用户的环境变量也切换成新用户的环境变量,所以“”不能省略,不然有些操作无法执行。

sudo

su命令的缺陷

使用su命令切换用户身份虽然简单,但是,也有一些致命的缺点:

  1. 普通用户必须知道root密码才可以切换到root,这样root密码就泄露了。相当于把“刀把”交给了别人。
  2. 使用su命令切换身份,无法对切换后的身份做精细的控制,拿到超级权限的人可以为所欲为。甚至可以改掉root密码,让真正的管理员无法再拥有root权限。

问题解决

那么,怎么来解决最高管理员不泄露root密码,而又能让普通用户拥有一定的超级权限来管理系统,并且能让超级特权可控呢?这就要引出sudo命令。

sudo精髓所在

通过sudo命令,我们可以把某些超级用户权限分类有针对性(精细),授权给指定的普通用户,并且普通用户不需要知道root密码就可以使用得到的授权(管理员真正允许的root权限)。因此,毫不夸张的说,sudo命令相对于su命令来说,在系统用户的分权管理方面进步了很多,使得集权式管理在理论上的到了保证,从而使系统的安全性方面加强了很多。

sudo:使用超级用户来执行命令,一般指的是root用户,想要使用sudo首先得在/etc/sudoers中添加该用户,先利用su - 进入root用户,接着输入vim sudo命令编写sudoers文件。

详解说明

## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL   #root代表的用户,ALL代表主机,括号里的ALL代表以什么身份运行,最后一个ALL代表要执行的命令;
redhat  ALL=ALL)      /usr/sbin/useradd


%redhat  ALL=(ALL)       ALL   # %用户组  机器=(授权使用哪个角色的权限)  ALL

参数代表含义

  1. 用户账号:系统哪个账号可以使用sudo这个命令。默认为root用户。
  2. 登陆者的来源主机:这个账号由哪台主机连接到本地Linux主机。默认值root可来自任何一台网络主机。
  3. 可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人。
  4. 可执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。

ALL是关键字,代表任何身份、主机或命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SLASH-YONG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值