Linux 下的文件权限备忘

✍🏼 写于 2019年09月28日   
❗️ 注意:离本文创建时间已经过去了 天,请注意时效性
🖥  说明:本文是当初在学习 Linux 基础的时候写的一篇博客, 从旧的 WordPress 博客迁移而来

前言

经常使用命令行的同学会看到一些文件之前有这样一些字符 -rw-r--r-- 共十位, 这代表了不同用户组对当前文件/文件夹操作权限. 如:

1
2
3
4
drwxr-xr-x   9 x  staff   288  9 25 23:37 .
drwxr-xr-x  15 x  staff   480  9 24 23:48 ..
drwxr-xr-x  16 x  staff   512  9 26 08:18 .git
-rw-r--r--@  1 x  staff    68  9 13 00:34 README.md

下面从左往右依次解释.

位置及字符含义

  1. 第 1 位表示当前文件是文件夹还是文件 文件则为 -, 文件夹则为 d, 软链接则为 l
  2. 第 2 到第 4 位表示文件所属用户权限, 即文件创建者的权限
  3. 第 5 到第7 位表示文件所属用户组中用户的权限
  4. 第 8 到第 10 位表示除了当前用户组外, 其他用户的权限
  5. 第 2 ~ 4, 第 5 ~ 7, 第 8 ~ 10位中, 每 3 个表示一组权限信息:
    1. 第 1 位用 r 表示, 代表 read, 即 的权限, 十数字表示为 4, 二进制表示为 100, 没有该权限使用 - 表示
    2. 第 2 位用 w 表示, 代表 write, 即 的权限, 十进制表示为 2, 二进制表示为 010, 没有该权限使用 - 表示
    3. 第 3 位用 x 表示, 代表 execute, 即 执行 的权限, 十进制表示为 1, 二进制表示为 001, 没有该权限使用 - 表示
  6. root 用户总是拥有所有的权限, 即 rwx, 十进制表示为 777(即每个位相加 4 + 2 + 1), 二进制表示为 111

示例

-r-xrwxr-- 表示当前是文件, 当前文件所有者有读取和执行的权限, 但是不能修改; 文件所有者用户组的其他用户可以读取修改和执行, 其他用户可以阅读但是不能修改和执行

基本使用

chmod 修改文件 hello.js 为可读写可执行: chmod 777 hello.js 或者 chmod rwx hello.js

其他

以数字表示权限的(数字表示的权限不含有字母/字符表示权限的最高位 -/d/l信息)还可以用四位数字表示, 即在权限前面添加一位IE, 如 0777, 其最高位的 0 表示 suid 和 guid 的概念:

  1. suid 表示执行相应脚本的用户(前提是有执行权限)具有文件所属用户的权限 7
  2. guid 表示执行相应脚本的用户具有文件所述用户组的权限 5

设置 suid 需要将 0 变成 4, 设置 guid 需要将 0 变成 2: 4777 和 2777, 或者 都有则 6777.

- EOF -
本文最先发布在: Linux 下的文件权限备忘 - Xheldon Blog