Linux文件权限

49 阅读5分钟

🧱 一、Linux 为什么要有权限?

想象一下:

  • 你写了一个程序,不想让别人删掉 → 需要“写保护”
  • 你有一个密码文件,不想让别人看 → 需要“读保护”
  • 你写了一个脚本,想让别人运行但不能改 → 需要“执行权限”

👉 Linux 是多用户系统,权限就是“谁可以对文件做什么”的规则!


👥 二、权限是给“谁”设置的?

Linux 把“谁能访问文件”分成 三类人

类别英文说明
🧑 所有者Owner (u)创建文件的人(比如你 wn
👥 所属组Group (g)和你同一个组的用户(比如 developers 组)
🌍 其他人Others (o)除了你和你组以外的所有人

💡 每个文件都有一个“所有者”和一个“所属组”


🔐 三、权限有哪些类型?

对每一类人,可以设置三种权限:

权限字母数字说明(文件)说明(目录)
r4可以查看文件内容可以 ls 列出目录内容
w2可以修改文件内容可以在目录里创建/删除文件
执行x1可以运行程序/脚本可以 cd 进入目录

⚠️ 目录的“x”权限特别重要!没有 x,你连 cd 都进不去!


🔢 四、数字权限 vs 字母权限(核心!)

Linux 权限有两种表示法:

✅ 1. 字母表示法(可视化,适合人看)

ls -l 查看:

bash
深色版本
ls -l myfile.txt
-rw-r--r-- 1 wn wn 0 Sep 16 20:00 myfile.txt

解释:

深色版本
- rw- r-- r--
│  │   │   └─ Others(其他人):r-- = 只读
│  │   └───── Group(组):r-- = 只读
│  └───────── Owner(所有者):rw- = 读+写
└──────────── 文件类型(- = 普通文件,d = 目录)

✅ 2. 数字表示法(八进制,适合命令用)

把 r/w/x 转换成数字:

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

👉 把你需要的权限加起来!

权限组合字母数字说明
无权限---0什么都不能做
只读r--4能看不能改
只写-w-2能改不能看(很少用)
读+写rw-6最常用!能看能改
读+执行r-x5能看、能运行(脚本)
读+写+执行rwx7全能!开发常用

👉 所以,权限用三位数字表示:

深色版本
   Owner Group Others
    6     4     4     → 644
    7     5     5     → 755
    7     0     0     → 700
    6     0     0     → 600

🛠️ 五、如何查看和修改权限?

✅ 1. 查看权限

bash
深色版本
ls -l 文件名      # 查看文件权限
ls -ld 目录名     # 查看目录权限(必须加 -d)

✅ 2. 修改权限 —— chmod

➤ 用数字法(推荐新手):

bash
深色版本
chmod 600 myfile.txt    # 只有自己能读写
chmod 755 myscript.sh   # 自己全能,别人能读能执行
chmod 644 config.conf   # 自己能改,别人只能看

➤ 用字母法(适合微调):

bash
深色版本
chmod u+x script.sh     # 给所有者加执行权限
chmod g-w file.txt      # 给组去掉写权限
chmod o+r public.txt    # 给其他人加读权限
chmod a+x all.sh        # 给所有人(all)加执行权限

💡 u=user(owner), g=group, o=others, a=all


📁 六、目录权限 vs 文件权限(重点!)

很多新手搞混:为什么目录权限和文件权限行为不一样?

操作文件需要权限目录需要权限
查看内容(cat)r
修改内容(echo >)w
运行(./script)x
列出内容(ls)r
进入目录(cd)x
创建/删除文件w + x

⚠️ 没有 x 权限的目录,你连 cd 都进不去!

🧪 实验:

bash
深色版本
mkdir testdir
chmod 644 testdir   # 只给 r 权限,不给 x
cd testdir          # ❌ 失败!Permission denied
ls testdir          # ❌ 也失败!即使有 r 权限也不行

chmod 755 testdir   # 加上 x 权限
cd testdir          # ✅ 成功!

🎯 七、常用权限设置(开发必备)

场景权限说明
私人配置文件600只有自己能读写(如 ~/.ssh/id_rsa)
源代码文件644自己能改,别人能看
可执行程序755自己全能,别人能运行
私人脚本700只有自己能运行和修改
团队共享目录775组内成员全能,其他人能读+执行
临时开放文件666所有人都能读写(⚠️ 危险!)
完全开放777所有人都能读写执行(🚨 高危!慎用!)

🧩 八、特殊权限(进阶,了解即可)

除了 rwx,Linux 还有三个“特殊权限位”:

✅ 1. SUID(Set User ID)→ 用所有者的身份运行

bash
深色版本
chmod u+s /usr/bin/passwd
ls -l → -rwsr-xr-x  # 注意 s

👉 比如 passwd 命令,普通用户运行时,临时获得 root 权限改密码!

✅ 2. SGID(Set Group ID)→ 用组的身份运行 / 目录下新文件继承组

bash
深色版本
chmod g+s /shared/project
ls -l → drwxr-sr-x

👉 在共享目录中,新创建的文件自动属于该组!

✅ 3. Sticky Bit → 目录中,只有文件所有者能删除文件

bash
深色版本
chmod +t /tmp
ls -l → drwxrwxrwt

👉 /tmp 目录,你只能删自己的文件,不能删别人的!


🛡️ 九、安全建议(小白必看)

  1. 私密文件用 600(如密钥、密码)
  2. 脚本用 755 或 700
  3. 源代码用 644
  4. 目录至少要有 755(rwxr-xr-x)
  5. 不要随便用 777!除非你明确知道后果!
  6. 用 ls -l 经常检查权限!

🎁 十、小练习(巩固知识)

bash
深色版本
# 1. 创建文件和目录
touch myfile.txt
mkdir mydir

# 2. 查看默认权限
ls -l myfile.txt
ls -ld mydir

# 3. 修改为私人文件
chmod 600 myfile.txt
ls -l → -rw-------

# 4. 修改为可执行脚本
chmod 755 myfile.txt
ls -l → -rwxr-xr-x

# 5. 修改目录权限
chmod 700 mydir
ls -ld → drwx------

# 6. 尝试进入目录
cd mydir        # ✅ 应该成功
touch test.txt  # ✅ 应该成功

# 7. 改成无执行权限
chmod 600 mydir
cd mydir        # ❌ 应该失败!