DevToolBox免费
博客

Linux 文件权限详解:chmod 777、755、644 的含义

9 分钟阅读作者 DevToolBox

Linux 文件权限控制谁可以读取、写入和执行文件。理解 chmod 和权限表示法对于使用服务器、Docker 或 CI/CD 的开发者至关重要。

理解权限系统

Linux 中每个文件和目录都有三组权限:所有者(user)、所属组(group)和其他人(others)。每组可授予三种访问权限:

  • r读取 (r) — 查看文件内容或列出目录条目
  • w写入 (w) — 修改文件内容或在目录中创建/删除文件
  • x执行 (x) — 以程序方式运行文件或进入目录
-rwxr-xr-x  1 user group  4096 Feb 10 file.sh
 │││ │││ │││
 │││ │││ └── Others: r-x (read + execute = 5)
 │││ └──── Group:  r-x (read + execute = 5)
 └────── Owner:  rwx (read + write + execute = 7)

 Result: 755

八进制表示法详解

每组权限可以用 0-7 的单个数字表示,数字是权限值的总和:

  • 4读取 = 4
  • 2写入 = 2
  • 1执行 = 1
  • 0无权限 = 0

八进制参考表

OctalrwxMeaning
0---No permission
1--xExecute only
2-w-Write only
3-wxWrite + Execute
4r--Read only
5r-xRead + Execute
6rw-Read + Write
7rwxRead + Write + Execute

常用权限值

777777 — 所有人完全访问。生产环境中避免使用!仅用于临时调试。
755755 — 所有者完全权限;组和其他人可读取和执行。目录和可执行文件的标准权限。
644644 — 所有者可读写;组和其他人只读。普通文件的标准权限。
600600 — 仅所有者可读写。用于私密配置文件和 SSH 密钥。
400400 — 仅所有者只读。用于证书等敏感只读文件。

chmod 命令语法

数字模式一次设置所有权限:

chmod 755 script.sh        # rwxr-xr-x
chmod 644 config.json      # rw-r--r--
chmod 600 id_rsa           # rw-------
chmod -R 755 /var/www/html # Recursive

符号模式修改特定权限:

chmod u+x script.sh        # Add execute for owner
chmod g-w file.txt         # Remove write from group
chmod o+r file.txt         # Add read for others
chmod a+x script.sh        # Add execute for all (a = all)
chmod u=rwx,go=rx dir/     # Set owner=rwx, group+others=rx

实用示例

# Web server setup
chmod 755 /var/www/html
chmod 644 /var/www/html/index.html
chmod 644 /var/www/html/style.css

# SSH key permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys

# Script permissions
chmod +x deploy.sh
chmod 755 /usr/local/bin/my-tool

# Docker volume permissions
chmod -R 777 /tmp/build    # Temporary build dir only!

特殊权限:SUID、SGID、Sticky Bit

SUID (4xxx)

SUID (4xxx) — 以文件所有者身份运行。例如 /usr/bin/passwd 以 root 运行。

chmod 4755 /usr/bin/passwd
SGID (2xxx)

SGID (2xxx) — 以文件组身份运行,或目录中新文件继承组。

chmod 2755 /shared/project
Sticky Bit (1xxx)

Sticky Bit (1xxx) — 仅文件所有者可删除目录中的文件。例如 /tmp。

chmod 1777 /tmp

常见错误和安全提示

  • 生产环境中不要使用 chmod 777 — 它给所有人完全访问权限。
  • SSH 密钥必须是 600 或 400 — SSH 拒绝使用组/其他人可访问的密钥。
  • Web 服务器文件应为 644(文件)和 755(目录)。
  • 谨慎使用 chmod -R — 递归更改可能破坏系统。
  • 更改前后用 ls -la 检查权限。

试试我们的交互式 Chmod 计算器

Chmod Calculator →

FAQ

chmod 777 是什么意思?

chmod 777 给所有者、组和其他人读取(4)、写入(2)和执行(1)权限 — 所有人完全访问。这是安全风险,应在生产环境中避免。

755 和 644 有什么区别?

755 给所有者完全权限,其他人读取+执行(用于目录和脚本)。644 给所有者读写,其他人只读(用于普通文件)。

为什么 SSH 拒绝我的密钥文件?

SSH 要求私钥文件权限为 600 或更严格。运行:chmod 600 ~/.ssh/id_rsa

什么是 Sticky Bit?

Sticky bit (chmod 1xxx 或 chmod +t) 防止用户删除共享目录中非自己所有的文件。/tmp 目录使用此功能。

如何查看当前文件权限?

运行 ls -la 查看 rwx 格式的权限。第一列显示如 -rwxr-xr-x(等于 755)的权限字符串。

𝕏 Twitterin LinkedIn
这篇文章有帮助吗?

保持更新

获取每周开发技巧和新工具通知。

无垃圾邮件,随时退订。

试试这些相关工具

🔐Chmod Calculator.ht.htaccess Generator🔑Password Generator

相关文章

Git 命令速查表:开发者必备命令大全

完整的 Git 命令速查表:涵盖配置、分支、合并、变基、暂存和高级工作流程。

Linux chmod、chown 和 chgrp:文件权限指南

Linux 文件权限完全指南:chmod 数字和符号模式、chown、chgrp、特殊权限(setuid、setgid、sticky bit)和 ACL。