当前位置: 首页 > news >正文

Linux 文件权限到底怎么回事

Linux 文件权限到底怎么回事

不讲复杂的 SELinux,只讲日常最常用的文件权限。


从一次报错开始

$sshuser@server $ ./deploy.sh -bash: ./deploy.sh: Permission denied

第一反应是加权限:

chmod777deploy.sh

虽然能跑,但 777 意味着任何人都可以改这个文件——这是安全风险。看懂权限之后,你会知道应该用chmod +x755


先看懂ls -l的输出

ls-ldeploy.sh
-rwxr-xr-x 1 root root 123 Apr 28 10:00 deploy.sh

拆成三块来看。

第一块:文件类型和权限(10 个字符)

- rwx r-x r-x │ └┬─ └┬─ └┬─ │ │ │ └── 其他人(other) │ │ └────── 同组用户(group) │ └─────────── 文件所有者(user) └─────────────── 文件类型(- 普通文件,d 目录,l 符号链接)

每个三位的含义:

r w x 读 写 执行 4 2 1
  • rwx= 4+2+1 = 7(可读可写可执行)
  • r-x= 4+0+1 = 5(可读可执行,不可写)
  • r--= 4+0+0 = 4(只读)
  • ---= 0+0+0 = 0(没有权限)

第二块:所有者和组

root root └┬── └┬── │ └── 所属组 └──────── 文件所有者
  • 谁是这个文件的主人(owner)
  • 这个文件属于哪个(group)

第三块:大小和修改时间

123 Apr 28 10:00 大小 修改时间

三种改权限的命令

chmod— 改权限位

用数字方式(推荐):

chmod755deploy.sh# rwxr-xr-x 所有者可读写执行,其他人只读执行chmod644config.cfg# rw-r--r-- 所有者可读写,其他人只读chmod600id_rsa# rw------- 只有所有者能读写chmod700private/# rwx------ 只有所有者能进入目录chmod777file# 不推荐,任何人可读写执行

用字母方式(单次操作可读性更好):

chmod+x deploy.sh# 加执行权限(不影响已有权限)chmod-xdeploy.sh# 去掉执行权限chmodu+w config.cfg# 给所有者(u)加写(w)权限chmodg+r config.cfg# 给组(g)加读(r)权限chmodo-r config.cfg# 去掉其他人(o)的读权限chmoda+x script.sh# 所有人(a)加执行权限

递归修改(目录及其内部所有文件):

chmod-R755/path/to/dir

chown— 改所有者

chownuser file.txt# 改文件所有者为 userchownuser:group file.txt# 改所有者和组chown:group file.txt# 只改组chown-Ruser:group /data# 递归改目录下所有

chgrp— 只改所属组

chgrpdevelopers config.cfg

目录权限和文件权限不一样

这是一定要分清的地方:

权限对文件的意义对目录的意义
r(读)可以查看文件内容可以列出目录内容(ls)
w(写)可以修改文件内容可以创建/删除目录里的文件
x(执行)可以执行文件(脚本/程序)可以进入目录(cd)

文件x是执行,目录x是"穿过"(进入)。

典型配置

chmod755/var/www/html# drwxr-xr-x 可以进入和查看chmod700~/.ssh# drwx------ 只有自己能进入

目录一般至少需要r-x(可以lscd)才有意义。


实战:问题排查

1. 上传的脚本不能执行

$ ./deploy.sh -bash: ./deploy.sh: Permission denied

解决:

ls-ldeploy.sh# 确认没有 x 权限chmod+x deploy.sh# 加执行权限

2. Nginx 报 403 Forbidden

没权限读静态文件:

# 看 Nginx 以什么用户运行psaux|grepnginx# 通常是 www-data 或 nginx# 看文件权限和所有者ls-l/var/www/html/# 修复sudochown-Rwww-data:www-data /var/www/html/sudochmod-R755/var/www/html/

3. SSH 密钥不生效

$sshuser@server Permissions 0644for'id_rsa'are too open.

SSH 对私钥文件权限很敏感——太松就拒绝使用:

chmod600~/.ssh/id_ed25519chmod700~/.sshchmod600~/.ssh/authorized_keys

4. 别人创建的文件我删不掉

$rm/shared/tmp/file.txt rm: cannot remove: Permission denied

在目录有写权限才能删里面的文件:

ls-ld/shared/tmp/# 看目录权限sudochmod777/shared/tmp/# 让所有人能删(不推荐)# 或者加 sticky bit(更合理)sudochmod1777/shared/tmp/# 只有文件所有者和 root 能删

SUID / SGID / Sticky Bit

这三个特殊权限不那么常用,但看到了要知道是什么意思。

SUID(Set User ID)

ls-l/usr/bin/passwd
-rwsr-xr-x 1 root root ... /usr/bin/passwd

所有者位的x变成了s。普通用户执行passwd时会临时有 root 权限(因为文件所有者是 root),这样才能改/etc/shadow

数字是 4:chmod 4755 file

SGID(Set Group ID)

ls-l/shared/dir
drwxr-sr-x 2 user developers ...

组位的x变成了s。在这个目录里新建的文件,所属组自动继承目录的组。

数字是 2:chmod 2755 dir

Sticky Bit

ls-ld/tmp
drwxrwxrwt 10 root root ...

其他人位的x变成了t。在 /tmp 里,任何人都能创建文件,但只能删自己的文件

数字是 1:chmod 1777 /tmp


最常用的权限组合

权限数字应用场景
rwx------700私钥目录~/.ssh
rw-------600私钥文件、密码配置文件
rwxr-xr-x755可执行脚本、目录通用权限
rw-r--r--644配置文件、代码文件
rwxr-xr-x+ setgid2755团队共享目录
rwxrwxrwt1777/tmp 类共享临时目录

日常 90% 的情况只用到 755 和 644

chmod755script.sh# 脚本可以执行chmod644config.yaml# 配置文件只读chmod600.secret# 敏感文件只有自己能看到

一行命令快速定位权限问题

# 找当前目录下权限有问题(太松的)的文件find.-perm/o+w-ls# 找没有执行权限的 .sh 文件find.-name"*.sh"!-executable-ls# 看所有者和组find.!-usermyuser-o!-groupmygroup-ls

总结

你想干什么用什么命令
让文件能执行chmod +x file
让文件只有自己能读chmod 600 file
把文件给另一个用户chown user file
让目录可进入可查看chmod 755 dir
删不掉提示 Permission denied看目录权限,不是看文件权限

关于 777——尽量别用。权限的本质是最小够用原则:需要读就给读,需要执行就给执行,不需要就不给。

http://www.jsqmd.com/news/729345/

相关文章:

  • AI 时代前端必看|只会用 AI 不算会!底层逻辑才是核心竞争力
  • AutoDock Vina含硼配体对接:从参数配置到精准对接的完整实践指南
  • NVIDIA NeMo Data Curator:高效处理万亿级LLM训练数据
  • ComfyUI-AnimateDiff-Evolved完整指南:从零开始掌握AI动画生成
  • 2026年Q2常开防火门厂家选型推荐:合规/性能/维保全维度解析 - 优质品牌商家
  • 第十二节:极限降本——模型量化部署与性能调优(AWQ/GPTQ)
  • 手把手教你学Simulink——基于Simulink的LQR最优PFC电流跟踪设计
  • 第十三节:高并发压测与生产级成本核算指南
  • 视觉概念创意融合的技术挑战与Vibe Space解决方案
  • PyTorch模型保存与加载实战:state_dict()的妙用,以及它与parameters()的那些事儿
  • Phi-3.5-Mini-Instruct惊艳效果:数学推理链(Chain-of-Thought)生成实录
  • NVIDIA NeMo荷兰语与波斯语语音识别模型技术解析
  • Windows Internals 读书笔记 10.4.6:WMI 安全模型——为什么 WMI 能访问系统资源,但不能随便访问?
  • 如何通过LinkSwift实现八大网盘直链下载:完整使用指南
  • 终极指南:让Windows用户完整享受AirPods智能体验的解决方案
  • Windows Internals 读书笔记 10.4.7:WMI 命名空间安全配置——把 WMI 权限关进正确的边界里
  • HoRain云--SciPy插值:从入门到精通
  • 告别SignalTap!用Quartus Prime 21的ISSP工具实时调试FPGA内部信号(保姆级图文)
  • Armv9 SME2架构下的BFloat16计算优化与实现
  • 四川礼品彩盒包装核心技术拆解与靠谱厂家选型参考:四川土特产纸箱包装、四川家具纸箱包装、四川工业纸箱包装、四川彩盒包装选择指南 - 优质品牌商家
  • 开源贡献者隐形职业加速器使用手册
  • 5分钟快速上手:RuoYi-Vue3-FastAPI 企业级中后台管理系统完整指南
  • 第十五节:综合大练兵——构建企业级私有知识库与自动化客服 Agent
  • 别急着进 BAS,先在 SAP Fiori Apps Reference Library 里把扩展路子看清楚
  • 【C++】26:用哈希表封装unordered_set和unordered_map
  • 经营分析会怎么开?经营分析会开好了,解决90%管理问题!
  • 2026 年 4 月 AI 行业全景观察:模型爆发、智能体落地、聚合化成必然趋势
  • 人工智能核心—大语言模型技术解密,从入门到精通(全攻略)
  • 终极指南:三步打造专业级foobar2000歌词显示体验
  • 终极指南:如何用ROFL-Player轻松播放和分析英雄联盟回放文件