当前位置:首页>Linux>零基础学Linux文件权限:从"Permission denied"到游刃有余

零基础学Linux文件权限:从"Permission denied"到游刃有余

  • 2026-09-08 10:17:10
零基础学Linux文件权限:从"Permission denied"到游刃有余

零基础学Linux文件权限:从"Permission denied"到游刃有余

摘要:深入浅出讲解Linux文件权限的核心概念,从三个角色(所有者、所属组、其他人)和三种权限(读、写、执行)入手,详细解读符号表示法和数字表示法,配合chmod、chown命令实战案例,帮你彻底解决"Permission denied"困扰。适合Linux新手和想系统学习权限管理的用户。阅读时长:约12分钟

你是否遇到过这样的困惑?

  • • 想执行脚本,终端却冷冰冰地提示 Permission denied
  • • 想修改配置文件,编辑器警告你没有写入权限
  • • 用 ls -l 查看文件,面对 drwxr-xr-x 这样一串神秘代码发呆

别担心,每个Linux新手都经历过这个阶段。文件权限是Linux系统的核心安全机制,理解它不仅能帮你解决日常问题,更是成为Linux高手的必经之路。

本文将用最简单的方式,带你彻底搞懂Linux文件权限。


第一部分:权限的本质——三个角色,三种权利

Linux是一个多用户操作系统,每个文件都属于某个用户,同时也要考虑"其他人能不能访问"。因此,Linux把用户分成了三个角色,赋予不同的权利。

三个角色

角色
英文标识
含义
典型场景
所有者
u (user)
文件的创建者
你的个人文档、脚本
所属组
g (group)
文件所属的用户组
项目组共享的代码
其他人
o (others)
除上述两者外的所有用户
系统全局配置文件

还有一个特殊标识 a (all),表示所有用户(u + g + o)。

三种权利

每种角色可以被赋予三种基本权利:

权限
符号
对文件的作用
对目录的作用
读
r (read)
查看文件内容
列出目录内容 (ls)
写
w (write)
修改文件内容
在目录中创建/删除文件
执行
x (execute)
运行程序或脚本
进入目录 (cd)

一个容易混淆的点:执行权限

很多人不理解为什么目录也有"执行"权限。记住这个区别:

  • • 对文件:执行权限意味着你可以运行这个程序或脚本
  • • 对目录:执行权限意味着你可以"进入"这个目录(使用 cd 命令)

如果你对目录没有执行权限,即使有读权限,也无法 cd 进去,只能看到目录名称而已。


第二部分:读懂权限表示——数字和符号

在Linux中,权限有两种表示方式:符号表示法和数字表示法。

符号表示法

执行 ls -l 命令,你会看到类似这样的输出:

drwxr-xr-x  3 user group 4096 Mar 20 10:00 Documents-rw-r--r--  1 user group  256 Mar 20 10:00 notes.txt

让我们拆解第一列的权限表示:

d rwx r-x r-x│ │   │   ││ │   │   └── 其他人权限:读 + 执行│ │   └────── 所属组权限:读 + 执行│ └────────── 所有者权限:读 + 写 + 执行└──────────── 文件类型:d=目录,-=普通文件,l=链接

数字表示法

每个权限对应一个数字:

权限
数值
r (读)
4
w (写)
2
x (执行)
1

把三个数值相加,就得到一个0-7之间的数字:

组合
计算
结果
rwx
4+2+1
7
rw-
4+2+0
6
r-x
4+0+1
5
r--
4+0+0
4
-wx
0+2+1
3
-w-
0+2+0
2
--x
0+0+1
1
---
0+0+0
0

所以 rwxr-xr-x 可以表示为 755,rw-r--r-- 可以表示为 644。

常见权限组合速查

权限
数字
典型用途
rwxr-xr-x
755
可执行程序、目录
rw-r--r--
644
普通文件(文档、配置)
rw-rw-r--
664
团队共享文件
rwx------
700
私密脚本或目录
rw-------
600
敏感信息文件(如SSH密钥)

第三部分:修改权限——chmod命令实战

理解了权限的含义,接下来学习如何修改权限。chmod (change mode) 是最常用的权限修改命令。

符号模式(推荐新手)

符号模式更直观,适合初学者理解:

# 给所有者添加执行权限chmod u+x script.sh# 给所有人添加读权限chmod a+r file.txt# 移除其他人的写权限chmod o-w config.conf# 同时设置多种权限chmod u=rwx,g=rx,o=r file.txt

符号说明:

  • • + 添加权限
  • • - 移除权限
  • • = 设置精确权限(覆盖原有)

数字模式(简洁高效)

熟练之后,数字模式更快:

# 设置755权限chmod 755 script.sh# 设置644权限chmod 644 document.txt# 递归设置目录及其下所有文件chmod -R 755 /var/www/html

实战案例:解决"Permission denied"

场景1:执行脚本提示权限不足

$ ./install.shbash: ./install.sh: Permission denied# 查看当前权限$ ls -l install.sh-rw-r--r-- 1 user user 256 Mar 20 10:00 install.sh# 添加执行权限$ chmod +x install.sh# 再次执行$ ./install.shInstalling...

场景2:编辑系统配置文件

$ vim /etc/hosts# 底部显示:W10: Warning: Changing a readonly file# 使用sudo获取权限$ sudo vim /etc/hosts

场景3:批量设置Web目录权限

# 设置目录为755,文件为644find /var/www/html -type d -exec chmod 755 {} \;find /var/www/html -type f -exec chmod 644 {} \;

第四部分:修改所有者——chown和chgrp

除了修改权限,有时还需要修改文件的所有者或所属组。

chown:修改所有者

# 修改文件所有者sudo chown alice report.txt# 同时修改所有者和所属组sudo chown alice:developers project.txt# 递归修改整个目录sudo chown -R www-data:www-data /var/www/html

chgrp:修改所属组

# 修改文件所属组sudo chgrp developers project.txt# 递归修改sudo chgrp -R developers /opt/project

典型应用场景

  • • Web服务器:将网站目录所有者改为 www-data 或 nginx
  • • 共享项目:将文件所属组改为开发组,便于团队协作
  • • 数据迁移:复制文件后,所有者可能变成root,需要改回普通用户

第五部分:特殊权限——进阶知识

除了基本的rwx权限,Linux还有三种特殊权限,用于实现更精细的访问控制。

SUID(Set User ID)

  • • 作用:程序执行时,临时获得文件所有者的权限
  • • 数值:4
  • • 典型例子:/usr/bin/passwd
$ ls -l /usr/bin/passwd-rwsr-xr-x 1 root root 59976 Feb  1 10:00 /usr/bin/passwd

注意那个 s,表示设置了SUID。普通用户运行 passwd 时,会临时获得root权限,从而可以修改 /etc/shadow。

# 设置SUIDchmod 4755 /path/to/program# 或chmod u+s /path/to/program

SGID(Set Group ID)

  • • 作用:目录中新建的文件自动继承目录的所属组
  • • 数值:2
  • • 典型用途:团队共享目录
# 设置SGIDchmod 2775 /shared/project# 或chmod g+s /shared/project

设置SGID后,任何人在该目录创建的文件,所属组都会自动设为 project,便于团队成员协作。

Sticky Bit(粘滞位)

  • • 作用:目录中的文件只有所有者才能删除
  • • 数值:1
  • • 典型例子:/tmp 目录
$ ls -ld /tmpdrwxrwxrwt 15 root root 4096 Mar 20 10:00 /tmp

注意那个 t,表示设置了粘滞位。这样多个用户可以在 /tmp 中创建文件,但不能删除别人的文件。

# 设置粘滞位chmod 1777 /tmp# 或chmod +t /tmp

总结:核心要点速查

三个角色、三种权限

角色
标识
三种权限
所有者
u
r (4) / w (2) / x (1)
所属组
g
r (4) / w (2) / x (1)
其他人
o
r (4) / w (2) / x (1)

常用命令速查表

操作场景
命令
给脚本添加执行权限
chmod +x script.sh
设置文件为644
chmod 644 file.txt
设置目录为755
chmod 755 directory
递归修改目录权限
chmod -R 755 directory
修改文件所有者
sudo chown user file
修改文件所属组
sudo chgrp group file
同时修改所有者和组
sudo chown user:group file

权限设计原则

  1. 1. 最小权限原则:只给予必要的权限,不随意使用777
  2. 2. 文件用644,目录用755:这是最安全的默认配置
  3. 3. 敏感文件用600:如SSH密钥、密码文件
  4. 4. 共享目录用SGID:确保团队成员都能访问

常见问题FAQ

Q1: 为什么我用sudo可以执行任何操作?

sudo 让你以 root 身份运行命令。root 是Linux的超级管理员,拥有最高权限,不受任何文件权限限制。

Q2: 777权限安全吗?

不安全! 777 表示所有人都可以读写执行,这会带来严重的安全风险。一般只用于临时测试,正式环境应避免使用。

Q3: 文件权限和目录权限有什么区别?

文件权限控制对文件内容的操作(查看、修改、执行),目录权限控制对目录内文件的操作(列出、创建、删除、进入)。

一个常见误区:要删除一个文件,你需要的是所在目录的写权限,而不是文件本身的写权限。

Q4: 如何查看当前用户的权限?

# 查看当前用户whoami# 查看用户所属组groups# 查看用户ID信息id

下期预告

掌握了文件权限,你已经迈出了Linux学习的重要一步。下期我们将深入讲解 Linux用户和用户组管理,学习如何创建用户、管理组、配置sudo权限等内容。

敬请期待!


如果这篇文章帮到了你,欢迎点赞、收藏、分享。有任何问题,欢迎在评论区留言讨论!

最新文章

随机文章