【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
# 显示当前用户有权执行的命令
# 输出类似于:允许执行的命令列表
相关推荐
蓁蓁啊2 小时前
GIT使用SSH 多账户配置
运维·git·ssh
路由侠内网穿透5 小时前
本地部署开源持续集成和持续部署系统 Woodpecker CI 并实现外部访问
服务器·网络·windows·ci/cd·开源
程序猿小三5 小时前
Linux下基于关键词文件搜索
linux·运维·服务器
虚拟指尖5 小时前
Ubuntu编译安装COLMAP【实测编译成功】
linux·运维·ubuntu
椎4956 小时前
苍穹外卖前端nginx错误之一解决
运维·前端·nginx
刘某的Cloud6 小时前
parted磁盘管理
linux·运维·系统·parted
啊?啊?6 小时前
4 解锁 Linux 操作新姿势:man、grep、tar ,创建用户及添加权限等 10 大实用命令详解
linux·服务器·实用指令
程序员老舅6 小时前
干货|腾讯 Linux C/C++ 后端开发岗面试
linux·c语言·c++·编程·大厂面试题
极验6 小时前
iPhone17实体卡槽消失?eSIM 普及下的安全挑战与应对
大数据·运维·安全
爱倒腾的老唐7 小时前
24、Linux 路由管理
linux·运维·网络