云计算百科
云计算领域专业知识百科平台

Linux权限管理基础

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 – 的区别

对比项susu –
环境变量 保留原用户的环境变量 加载目标用户的环境变量
当前目录 保持当前所在目录 切换到目标用户的家目录
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

这两个命令经常被混淆,但它们的哲学完全不同:

对比项susudo
切换方式 切换身份,完全变成另一个用户 以另一个用户身份执行命令,执行后返回
密码需求 需要目标用户的密码(如 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 值:

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。

赞(0)
未经允许不得转载:网硕互联帮助中心 » Linux权限管理基础
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!