04 CentOS 7:su&sudo详解

本文详细介绍了Linux系统中的su和sudo命令,包括它们的定义、语法、环境变量处理、权限、安全性和审计,以及sudo权限的配置方法。重点强调了sudo的灵活性和安全性特性以及推荐的sudoers文件编辑方式。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1. 前言

Linux 系统中,susudo 都是用于执行权限提升操作的命令。

2. su (Switch User)

2.1. 定义

suswitch user 的缩写,用于切换到另一个用户账户。默认情况下,如果没有指定用户名,则默认尝试切换到 root 用户。

2.2. 语法

# su 命令的基本语法
su [选项] [用户名]

其中,方括号 [ ] 内的内容是可选的。下面是一些常用的选项及其含义:

选项简述
无任何选项。su 默认切换到 root 用户。需要输入 root 账户密码。
---login此选项会让 su 命令模拟一个完整的登录过程,包括读取目标用户的初始化文件(如 .profile.bashrc),并改变当前目录到目标用户的家目录。
语法:su - [用户名]su --login [用户名]
-c "[命令]"允许以另一个用户的身份执行一个命令,然后立即返回到当前用户。
语法:su -c "[命令]" [用户名],这里 命令需要用引号包裹 以避免 shell 解析问题。
-f--fast此选项主要对 cshtcsh shell 有用。它告诉 shell 不要读取启动文件,从而加快切换速度。
-m-p--preserve-environment切换用户时保持当前环境变量不变,这对于需要原用户环境的某些操作很有用。
-s [shell脚本]指定要作为目标用户执行的 shell
语法: su -s [shell脚本] [用户名]

2.3. 环境变量

使用 su 仅切换用户身份,而不改变当前的环境变量和工作目录。使用 su -su --login 可以启动一个新的登录 shell ,这样会加载目标用户的环境变量,并将工作目录改为该用户的家目录。

2.4. 权限

切换后,用户将拥有目标用户的全部权限,直到退出该用户会话。

2.5. 安全性和审计

su 不具备像 sudo 那样的细粒度权限控制和操作审计功能。

3. sudo (SuperUser DO)

3.1. 定义

sudo 允许授权用户以其他用户(通常是 root)的权限运行命令,而无需直接变成那个用户。

3.2. 语法

# sudo 命令的基本语法
sudo [选项] 命令

其中,方括号 [ ] 内的内容是可选的。sudo 允许授权用户以另一个用户(通常是 root)的权限执行命令。下面是一些常用的选项及其含义:

选项简述
最简单的形式。直接在 sudo 后面跟上想以特权模式执行的命令。例如:sudo ls /root 会以 root 权限列出 /root 目录的内容。
-l--list列出当前用户在 sudoers 文件中被允许执行的命令。
-u [用户名]指定以哪个用户的身份执行命令。如果不指定,默认为 root。例如:sudo -u user1 systemctl restart apache2 将以 user1 用户重启 Apache 服务。
-s--shell启动一个新的 shell,通常是作为目标用户(默认是 root)。例如:sudo -s 会以 root 用户启动一个交互式 shell
-i--login类似于 -s,但还会初始化环境变量,相当于进行了一个完整的登录过程。例如:sudo -i 会启动一个具有 root 环境的交互式 shell
-H--set-home-s-i 一起使用时,会把 HOME 环境变量设置为目标用户的家目录。
-k--reset-timestamp清除过去成功执行 sudo 命令的缓存时间戳,下次使用 sudo 时需要重新输入密码。
-v--validate更新 sudo 的时间戳,如果密码仍然有效则不提示输入密码。

3.3. 密码要求

使用 sudo 执行命令时,需要输入当前用户的密码,而不是目标用户的密码(默认配置下)。这意味着普通用户可以用自己的密码临时获得执行特定命令的超级用户权限。

3.3. 环境变量

sudo 默认保留当前用户的环境变量,但可以通过 sudo -isudo -s 启动一个类似登录 shell 的环境,以获取目标用户的环境变量。

3.4. 权限

sudo 提供的权限提升是临时的,通常一次命令执行后权限即恢复原状,这减少了权限误用的风险。

3.5. 灵活性和安全性

通过 /etc/sudoers 配置文件,管理员可以详细控制哪些用户或用户组可以执行哪些命令。这提供了更细粒度的权限管理和审计记录,提高了系统的安全性。

4. sudo权限配置

4.1. 方式一(不推荐)

使用 vim 直接修改。 sudoers 文件默认是只读的。
需要用 root 用户手动授权。执行 chmod u+w /etc/sudoers ,给写权限后再进行编辑。

vim /etc/sudoers

# 添加如下内容(二选一进行添加)
# 用户名  被管理主机的地址=(可使用的身份)授权命令(绝对路径)
[用户名称] ALL=(ALL)      ALL # 添加此行,使用sudo命令时需要输入密码
[用户名称] ALL=(ALL)      NOPASSWD:ALL # 添加此行,使用sudo命令时不需要输入密码

在这里插入图片描述
编辑完后,记得再把写权限收回。执行如下命令:

chmod u-w /etc/sudoers

使用这种方式编辑文件存在一个潜在的问题:如果忘记保存并退出,将会导致 sudoers 文件的不完整,从而影响系统授权。

4.2. 方式二(推荐)

使用如下命令进行编辑:

visudo

在这里插入图片描述

# 添加如下内容(二选一进行添加)
# 用户名  被管理主机的地址=(可使用的身份)授权命令(绝对路径)
[用户名称] ALL=(ALL)      ALL # 添加此行,使用sudo命令时需要输入密码
[用户名称] ALL=(ALL)      NOPASSWD:ALL # 添加此行,使用sudo命令时不需要输入密码

推荐使用 visudo 来编辑 sudoers 文件,并确保正确保存并退出。使用 visudo 以安全模式触发一个编辑器,用户可以在其中修改授权信息。修改完成后,要保存并退出 visudo ,需要掌握以下几个技巧:

  • 按下Esc键,以确保你在命令模式下。
  • 输入 :wq 或者 :x 以保存并退出 visudo
  • 输入 :q! 以退出 visudo 并放弃改变。

本文隶属于 个人专栏01 Linux📋📋📋
到这里 04 CentOS 7:su&sudo详解 就结束了!!!🎉🎉🎉
欢迎小伙伴们学习和指正!!!😊😊😊
祝大家学习和工作一切顺利!!!😎😎😎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值