【Linux命令】su、sudo、sudo su、sudo -i、sudo -l的用法和区别

su 命令

su (Switch User切换用户),允许用户切换到另一个用户的身份,默认情况下是切换到 root 用户。

默认行为: 如果只运行 su,则系统会要求输入 root 用户的密码 来切换到 root 用户,获取管理员权限。

切换到其他用户: 也可以通过 su - username 来切换到其他用户的账户,而不仅仅是 root 用户。例如,su - user1 会切换到 user1 用户的环境。

bash 复制代码
su             # 切换到 root 用户,需要 root 密码
su - user1     # 切换到 user1 用户,需要 user1 密码

注意: su 切换用户后,将直接进入该用户的环境 (如 root 用户的环境),即可以获得该用户的所有权限 ,直到你退出(通过 exit 命令)。

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

sudo 命令

sudo (Super User Do ),允许普通用户以管理员权限 (root 权限)执行特定命令,但并不切换到 root 用户的环境

权限控制: sudo 是基于配置文件 /etc/sudoers 来控制的,系统管理员可以配置哪些用户可以执行哪些命令,并且可以设定是否需要输入密码。

临时获得 root 权限 :使用 sudo 执行命令时,只需要输入自己的用户密码 (而不是 root 密码),并且只对当前命令有效

bash 复制代码
sudo ls /root       # 以 root 权限列出 /root 目录的内容
sudo rm -rf /dir    # 以 root 权限删除目录 /dir

注意: sudo 只会执行单个命令 ,并且执行命令后会退出 root 权限 。如果想要连续执行多个 root 权限的命令,通常会使用 sudo -i 来打开一个 root shell

sudo su 命令

sudo su 是一个组合命令 ,首先使用 sudo 提升权限 ,然后执行 su 切换用户的操作。其行为是以普通用户的身份通过 sudo 获取 root 权限,然后运行 su 切换到 root 用户的 shell。

用途: 如果想要临时获得 root 用户的环境 ,并且需要在该环境中执行多个命令 时,sudo su 比单纯的 su 更方便,因为不需要输入 root 密码

bash 复制代码
sudo su  # 以 root 权限进入 root 用户环境

注意: sudo su 和直接执行 su 有不同之处,sudo su 会让以当前用户(具有 sudo 权限的用户)的身份来执行 su ,而 su 需要你输入 root 密码。 使用 sudo su 时,你的 sudo 配置文件会决定是否允许你执行这个命令。如果你没有 sudo 权限,无法使用 sudo su。

sudo -i 命令

sudo -i 选项用于以 root 用户身份 打开一个交互式 shell(即获取一个 root 用户的终端环境)。这意味着你将进入一个新的 shell,模拟 root 用户的登录环境。

用途: 当你需要执行多个命令,且希望在 root 用户环境中执行时,可以使用 sudo -i。它不仅提升了你当前命令的权限 ,还切换到了 root 用户的环境

**行为:**执行 sudo -i 时,sudo 会:

1.启动一个新的 shell(类似于 su 命令的行为)。

2.设置 root 用户的环境变量(如 PATH)。

3.你不需要每次执行命令时都输入 sudo,可以直接在 root 环境下执行命令。

bash 复制代码
sudo -i
# 进入 root 用户的 shell,模拟 root 用户的环境
# 你现在可以在 root 用户环境下执行多个命令,直到退出该 shell

sudo -l 命令

sudo -l 选项用于列出当前用户能够以 sudo 权限执行的所有命令。它会显示 /etc/sudoers 配置文件中,当前用户被允许执行的命令和权限。

用途: sudo -l 主要用于查看当前用户的 sudo 权限,了解哪些命令是允许执行的,哪些命令需要管理员批准。

行为: 执行 sudo -l 时,sudo 会显示当前用户可以执行的命令列表 ,和它们所需的权限(例如是否需要输入密码)。 如果用户有权限执行某些命令,它会列出允许的命令。如果没有权限执行任何命令,则会提示"没有权限"。

bash 复制代码
sudo -l
# 显示当前用户有权执行的命令
# 输出类似于:允许执行的命令列表
相关推荐
qwy7152292581632 小时前
13-R数据重塑
服务器·数据库·r语言
anddddoooo4 小时前
域内证书维权
服务器·网络·网络协议·安全·网络安全·https·ssl
zhoupenghui1685 小时前
golang时间相关函数总结
服务器·前端·golang·time
lllsure5 小时前
Linux 实用指令
linux·物联网
努力的小T5 小时前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
Nerd Nirvana5 小时前
OpenSSL crt & key (生成一套用于TLS双向认证的证书密钥)
linux·ssl·shell·认证·加密·tls·oepnssl
不修×蝙蝠6 小时前
HTTP 协议(Ⅲ)
服务器·http·javaee·http协议
letisgo56 小时前
记录一次部署PC端网址全过程
linux·阿里云·服务器运维
梨落秋溪、6 小时前
输入框元素覆盖冲突
java·服务器·前端
枫叶落雨2226 小时前
08-Elasticsearch
运维·jenkins