su命令
su 是 Linux 中用于切换用户身份的命令,其名称来源于 Switch User(切换用户)。它允许你在不退出当前会话的情况下,切换到另一个用户的身份,常用于临时获取 root 权限或切换到其他普通用户。
/var/log/secure
可以查看访问用户记录
基本用法
su [选项] [用户名]
1. 最常用的形式
| su | 切换到 root 用户,但不加载 root 的环境变量(路径等),当前目录不变 |
| su – | 切换到 root 用户,并完整加载 root 的环境变量,同时切换到 root 的家目录(/root) |
| su – 用户名 | 切换到指定用户,并加载该用户的环境(推荐) |
| su 用户名 | 切换到指定用户,但不加载环境变量,当前目录保持不变 |
示例:
# 切换到 root(不加载环境)
su
# 需要输入 root 密码(如果 root 有密码)
# 切换到 root(完整切换,推荐)
su –
# 需要输入 root 密码
# 切换到普通用户 zhang
su – zhang
# 需要输入 zhang 的密码
2. su 和 su – 的区别
| 环境变量 | 保留原用户的环境变量 | 加载目标用户的环境变量 |
| 当前目录 | 保持当前所在目录 | 切换到目标用户的家目录 |
| PATH 变量 | 可能不是目标用户的完整 PATH | 使用目标用户的完整 PATH |
| 推荐程度 | ❌ 不推荐(可能导致意外行为) | ✅ 推荐(完整切换) |
示例演示:
# 当前用户是 zzw,在 /home/zzw 目录下
$ pwd
/home/zzw
$ su user2
# 切换到 user2,但仍在 /home/zzw
$ pwd
/home/zzw
$ su – user2
# 切换到 user2,并切换到 user2 的家目录
$ pwd
/home/user2
3. 常用选项
| – 或 -l | 登录 Shell 切换(完整加载环境变量) | su – zhang |
| -c | 以目标用户身份执行单条命令,执行后立即返回 | su -c "ls -l /root" |
| -s | 指定使用的 Shell | su -s /bin/zsh |
| -m 或 -p | 保留当前环境变量(不重置) | su -m user2 |
4. 实战场景
① 临时切换到 root 执行管理员操作
su –
# 输入 root 密码
# 现在你已经是 root 了
apt update && apt upgrade -y
exit # 返回原用户
② 以 root 身份执行单条命令(不切换)
su -c "ls -la /root"
# 输入 root 密码后,以 root 身份执行 ls,执行完自动返回
③ 切换到普通用户
su – zhang
# 输入 zhang 的密码
# 现在以 zhang 身份操作
exit
④ 切换到其他用户并执行多条命令
su – zhang -c "mkdir /home/zhang/test && echo 'done'"
5. su vs sudo
这两个命令经常被混淆,但它们的哲学完全不同:
| 切换方式 | 切换身份,完全变成另一个用户 | 以另一个用户身份执行命令,执行后返回 |
| 密码需求 | 需要目标用户的密码(如 root 密码) | 需要当前用户的密码 |
| 作用范围 | 之后的所有命令都切换了身份 | 只对当前这一条命令生效 |
| 安全风险 | 较高(暴露 root 密码,切换后无限制) | 较低(只在需要时提权,可精细控制) |
| 推荐程度 | ⚠️ 谨慎使用 | ✅ 日常推荐 |
使用建议:
- 日常提权执行命令 → 用 sudo
- 临时完整切换到 root 环境 → 用 su -(如果知道 root 密码)
- 临时切换到其他普通用户环境 → 用 su – 用户名
6. 如何配置 /etc/sudoers 允许用户 su?
默认情况下,只有 wheel 组(RHEL/CentOS)或 sudo 组(Ubuntu)的用户才能执行 sudo。
将用户加入 wheel 组(CentOS/RHEL):
sudo usermod -aG wheel zhang
将用户加入 sudo 组(Ubuntu/Debian):
sudo usermod -aG sudo zhang
7. 常见问题
Q1:为什么 su 提示 authentication failure?
- 你可能输入了当前用户的密码,但 su 需要的是目标用户的密码。
- 目标用户(如 root)可能没有设置密码,或被锁定。
Q2:如何切换到 root 但不知道 root 密码?
- 如果 root 密码未知,且你是 sudo 用户,可以用 sudo -i 或 sudo su – 切换。
sudo -i # 切换到 root(需要当前用户密码)
sudo su – # 同上
Q3:su – 和 sudo -i 的区别?
- 两者都能切换到 root,但 su – 需要 root 密码,sudo -i 需要当前用户的密码。在大多数现代系统中,更推荐用 sudo -i。
一句话总结
su 是切换用户身份的工具:
- su 切换到 root(不完整加载环境,不推荐)
- su – 完整切换到 root(推荐)
- su – 用户名 切换到指定用户
- su -c "命令" 以目标用户执行单条命令
记住一个原则: 需要完整切换身份用 su -,需要临时提权执行命令用 sudo。两者配合使用,就能灵活管理权限。
Linux 文件系统权限详解
文件系统权限是 Linux 安全模型的核心。简单来说,它决定了谁能对文件或目录做什么。
1. 权限的基本概念
Linux 权限通过“三组身份 + 三种权限”的模型来管理。
三组身份(访问级别):
| 所有者(User) | u | 文件的创建者,或通过 chown 指定的用户 |
| 所属组(Group) | g | 文件所属的用户组,组内成员共享权限 |
| 其他人(Others) | o | 既不是所有者,也不在所属组中的用户 |
三种权限(操作类型):
| 读(Read) | r | 查看文件内容 | 列出目录下的文件名 |
| 写(Write) | w | 修改文件内容 | 在目录中创建/删除/重命名文件 |
| 执行(Execute) | x | 运行文件(脚本/程序) | 进入目录(cd) |
2. 查看权限:ls -l
执行 ls -l 可以看到文件或目录的权限信息:
$ ls -l
-rw-r–r–. 1 zzw zzw 1024 Sep 9 10:00 file.txt
drwxr-xr-x. 2 zzw zzw 4096 Sep 9 10:00 folder/
权限字符串拆解(以 -rw-r–r– 为例):
– rw- r– r–
│ │ │ │
│ │ │ └── 其他人的权限 (r–:只读)
│ │ └─────── 所属组的权限 (r–:只读)
│ └──────────── 所有者的权限 (rw-:读写)
└─────────────── 文件类型 (-:普通文件, d:目录, l:链接)

3. 数字模式(八进制权限)
权限可以用数字表示,这是最常用的设置方式:
| r(读) | 4 |
| w(写) | 2 |
| x(执行) | 1 |
权限组合:
| 7 | rwx(读写执行) | 可执行文件、目录 |
| 6 | rw-(读写) | 普通文件,无需执行 |
| 5 | r-x(读执行) | 只读程序,或进入目录 |
| 4 | r–(只读) | 只读配置文件 |
| 0 | —(无权限) | 完全禁止访问 |
三组数字对应关系: 所有者权限 所属组权限 其他人权限
chmod 755 file.sh
# 7 = 所有者:rwx
# 5 = 所属组:r-x
# 5 = 其他人:r-x
常见权限组合速查:
| 644 | rw-r–r– | 普通文件(文件默认) |
| 755 | rwxr-xr-x | 可执行脚本/程序 |
| 700 | rwx—— | 私密脚本(只有自己能执行) |
| 600 | rw——- | 私密文件(如 SSH 私钥) |
| 777 | rwxrwxrwx | ⚠️ 极度危险,所有用户可读写执行 |
4. 修改权限的命令
chmod — 修改权限
符号模式:
chmod u+x file.sh # 给所有者添加执行权限
chmod g-w file.txt # 移除所属组的写权限
chmod o+r file.txt # 给其他人添加读权限
chmod a+x script.sh # 给所有人添加执行权限(a = u+g+o)
chmod a=rwx file.txt #直接把所有人权限覆盖为rwx
数字模式(推荐):
chmod 755 script.sh # rwxr-xr-x
chmod 644 file.txt # rw-r–r–
chmod 600 private.key # 仅所有者可读写(SSH 私钥必须用这个权限)
递归修改目录权限:
chmod -R 755 folder/ # 修改 folder 及其所有子内容
5. 修改所有者和组的命令
chown — 修改所有者
chown zhang file.txt # 将所有者改为 zhang
chown zhang:zhang file.txt # 同时改所有者和组
chown :zhang file.txt # 只改所属组
chown -R zhang:zhang folder/ # 递归修改
chgrp — 只修改组
chgrp developers file.txt
6. 默认权限:umask
文件存在于目录中,所以用户执行命令访问文件的前提是访问目录,目录允许被访问的前提是有X权限,所以一般目录最好至少给你管理文件的用户加个x权限
默认新建文件权限示例(664:rw- rw- r–)

默认新建目录权限示例(775:rwx rwx r-x)

umask 决定了新创建的文件和目录的默认权限。
# 查看当前 umask
umask
# 输出:0002
计算方式:
- 文件的默认权限 = 666 – umask
- 目录的默认权限 = 777 – umask
示例: umask 002 时:
- 新文件权限 = 666 – 002 = 664(rw-r–r–)
- 新目录权限 = 777 – 002 = 775(rwxr-xr-x)
常用 umask 值:
| 002 | 664 | 775 | 默认(文件可读,目录可进入) |
| 027 | 640 | 750 | 组内可读写,其他人禁止 |
| 077 | 600 | 700 | 仅所有者可访问(私密) |
umask 027 # 临时生效
# 永久生效:写入 ~/.bashrc
7.常见命令所需权限

8. 一句话总结
Linux 权限管理的核心是 “三组身份 + 三种权限”:
- 身份:u(所有者)、g(所属组)、o(其他人)
- 权限:r(读)、w(写)、x(执行)
- 设置方式:
- 权限:chmod 755 文件
- 所有者:chown 用户:组 文件
- 默认权限:umask
安全原则: 权限给得越小越好,文件能用 644 就别用 755,目录能用 755 就别用 777。
网硕互联帮助中心



评论前必须登录!
注册