Linux的权限

1. 怎么看权限? (ls -l)

在终端输入 ls -l,你会看到类似下面的一行"天书":

Bash

复制代码
drwxr-xr-x  2  user  dev  4096  Dec 12 10:00  project/

我们需要关注的是最前面的 10 个字符 drwxr-xr-x,它分为 4 个部分解读:

|--------------|--------|--------------------|-------------------------------------------|
| 字符位置 | 字符 | 含义 | 解释 |
| 第 1 位 | d | 文件类型 | d = 目录 (Directory) - = 普通文件 l = 软连接 |
| 第 2-4 位 | rwx | 所有者权限 (User) | 文件主人的权限 |
| 第 5-7 位 | r-x | 所属组权限 (Group) | 同组同事的权限 |
| 第 8-10 位 | r-x | 其他人权限 (Others) | 既不是主人也不是同事的路人权限 |

  • r**(Read)** : 读。对文件是查看内容;对目录是列出文件名 ( ls**)**。
  • w**(Write)** : 写。对文件是修改内容;对目录是新建/删除文件
  • x**(Execute)** : 执行。对文件是运行程序;对目录是进入目录 ( cd**)**。
  • -: 无权限。

2. 怎么改权限? (chmod)

chmod (Change Mode) 是修改权限的核心命令。有两种改法:

方法 A:数字法 (最常用,适合配合记忆)

这是高手的用法,简单快捷。每个权限对应一个数字:

  • r = 4
  • w = 2
  • x = 1

你把这三个数字加起来,就是该角色的权限值。

  • rwx = 4 + 2 + 1 = 7 (全开)
  • rw- = 4 + 2 + 0 = 6 (读写)
  • r-x = 4 + 0 + 1 = 5 (读+执行)

常见组合:

  • chmod 777 file: 所有人都有所有权限(极不安全,慎用)。
  • chmod 755 file: 自己全权负责,别人只能看和运行(程序/脚本的标准配置)。
  • chmod 644 file: 自己读写,别人只读(配置文件的标准配置)。
  • chmod 600 file: 只有自己能读写,别人无权访问(SSH 密钥/私密文件的标准配置)。
方法 B:字母法 (逻辑清晰)

适合只修改某个角色的特定权限。

  • 角色:u (User), g (Group), o (Others), a (All)
  • 操作:+ (增加), - (删除), = (设定)
  • 权限:r, w, x

例子:

  • chmod +x script.sh: 给所有人增加执行权限。
  • chmod u+x script.sh: 只给文件主人增加执行权限。
  • chmod go-w file.txt: 删掉组和其他人的写权限。

3. 怎么改归属? (chown)

有时候权限没问题,但文件主人错了(比如 root 创建的文件,普通用户改不动)。这时需要 chown (Change Owner)。

Bash

复制代码
# 语法:chown 用户名:组名 文件路径

# 1. 改变文件所有者为 user
sudo chown user file.txt

# 2. 改变文件所有者为 user,所属组为 dev
sudo chown user:dev file.txt

# 3. 递归改变整个目录及其下所有文件的归属(常用!)
sudo chown -R user:dev /var/www/html

进阶:特殊权限 (SetUID, Sticky Bit)

除了 rwx,Linux 还有几个特殊权限,面试或高阶操作会用到。

  • SetUID ( s****权限,出现在 User 的 x****位)
    • 现象 : rwsr-xr-x
    • 作用 : 普通用户运行这个程序时,临时获得该程序所有者(通常是 root)的身份
    • 例子 : passwd 命令。普通用户也能改密码(修改 /etc/shadow),就是因为它有 SetUID 权限。
  • Sticky Bit ( t****权限,出现在 Others 的 x****位)
    • 现象 : rwxrwxrw**t**
    • 作用 : 在这个目录下,只有文件的主人才能删除自己的文件,别人(哪怕有写权限)也不能删你的。
    • 例子 : /tmp 目录。大家都能往里写东西,但不能互删别人的临时文件。
相关推荐
我是谁??7 小时前
Linux上检查U盘可读和修复
linux·运维·服务器
南棱笑笑生8 小时前
20251213给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配CTP触摸屏FT5X06
linux·c语言·开发语言·rockchip
杰克逊的日记8 小时前
怎么排查pod重启
linux·运维·服务器
hgz07108 小时前
JMeter性能压测执行与Linux环境部署
java·linux·jmeter
KingRumn8 小时前
Linux进程间通信之共享内存与消息队列的竞争问题(同步策略)对比
linux·运维·服务器
qq_401700419 小时前
Linux文件锁解决多进程并发
linux·服务器·算法
南棱笑笑生9 小时前
20251213给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配type-C0
linux·c语言·开发语言·rockchip
RisunJan11 小时前
Linux命令-gpasswd命令(管理用户组的重要工具)
linux·运维·服务器
where happens11 小时前
centos创建目录并授予权限
linux·运维·服务器·centos