编程技术分享平台

网站首页 > 技术教程 正文

如何使用 Chmod 更改 Linux 上的文件和文件夹权限?

xnh888 2025-06-04 02:53:41 技术教程 5 ℃ 0 评论

在 Linux 的世界里,权限就是秩序的基础。一个系统的安全性、文件访问策略、用户协作边界,无一不依赖于文件和目录权限的精细控制。而 chmod(Change Mode)命令,正是你手中调整权限的利剑。

这篇文章将从最基础的权限概念讲起,深入剖析 chmod 的使用方式,包括数字表示法、符号表示法、权限继承、批量修改、常见问题,以及实际运维案例,力求让你对权限操作了然于心、运用自如。

一、Linux 权限基础:三种角色 + 三类权限

每个文件和目录在 Linux 中都绑定有以下三种用户角色

  • owner:文件所有者,通常是创建文件的用户。
  • group:所属用户组。
  • others:系统中其他用户。

每种角色又对应三类基本权限:

权限

符号

含义

读取

r

查看文件内容,列出目录内容

写入

w

修改文件内容,创建/删除目录内文件

执行

x

执行文件(如脚本),进入目录

可以通过 ls -l 查看:

$ ls -l example.sh
-rwxr-xr-- 1 user group 1234 May 29 10:00 example.sh

第一列解释如下:

- rwx r-x r--  │ │   │   └── 其他人权限(others):读取│ │   └───── 用户组权限(group):读取 + 执行│ └──────── 文件所有者权限(owner):读取 + 写入 + 执行└────────── 文件类型(- 为普通文件,d 为目录)

二、数字 VS 符号:chmod 的两种用法

1. 数字表示法(最常用)

每个权限对应一个值:

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

组合后求和:

权限组合

数字表示

rwx

7

rw-

6

r-x

5

r--

4

---

0

使用示例:

chmod 755 script.sh

解释:

  • 7 → 所有者 rwx
  • 5 → 用户组 r-x
  • 5 → 其他人 r-x

目录建议权限:

  • 普通文件:644(rw-r--r--)
  • 可执行文件:755(rwxr-xr-x)
  • 目录:755 或 700(rwxr-xr-x / rwx------)

2. 符号表示法(更灵活)

语法格式:

chmod [角色][操作][权限] 文件名
  • 角色:u(用户)、g(组)、o(其他人)、a(全部)
  • 操作:+(添加)、-(删除)、=(赋值)
  • 权限:r、w、x

示例:

chmod u+x hello.sh     # 给所有者添加执行权限
chmod go-w data.txt    # 去掉组和其他人的写权限
chmod a=r file.log     # 所有角色仅有读权限

三、应用场景实战

1. 只允许所有者访问的私密文件夹

mkdir secrets
chmod 700 secrets

此时其他用户无法 cd 进入该目录。

2. 给脚本文件添加执行权限

chmod +x deploy.sh

相当于 chmod ugo+x deploy.sh,适用于快速授权。

3. 去掉敏感配置的组写权限

chmod g-w /etc/ssh/sshd_config

避免配置文件被意外修改。

4. 批量修改多个文件权限

chmod 644 *.conf
chmod +x *.sh

配合 find 更强大:

find . -type f -name "*.sh" -exec chmod +x {} \;

四、特殊权限:s、t 和 SGID

除了基本权限外,还有三种特殊模式:

权限位

名称

作用与应用

s(Setuid)

让执行程序以文件所有者身份运行

应用于如 passwd 命令

s(Setgid)

目录中创建的文件继承该组

团队协作常用

t(Sticky Bit)

只允许文件拥有者删除

应用于 /tmp

示例:

chmod u+s /usr/bin/somebinary   # 设置 setuid
chmod g+s /data/shared          # 设置 setgid
chmod +t /tmp                   # 设置 sticky bit

配合 ls -l 可以看到特殊位:

drwxrwsr-x 2 dev team 4096 May 29 12:00 /data/shared

五、深入理解目录权限组合的行为

权限

作用说明

r

能否列出目录中的文件(如 ls

w

能否在该目录中创建/删除/重命名文件

x

能否 cd 进入该目录、访问其中内容

示例说明:

  • r-x:能进入目录并列出内容,但无法创建文件。
  • --x:只能进入目录,但不知道目录内有什么(除非你知道具体文件名)。

快速对照表

chmod 值

含义

应用场景

777

所有人可读写执行

开发测试环境(不推荐生产使用)

755

所有者全权限,其它只读执行

公共脚本或服务程序

700

所有者独享

私人脚本、文件夹

644

所有者可读写,其它只读

配置文件、文档

600

所有者只读写,其它无权限

私密密钥文件(如 .ssh/id_rsa


权限陷阱与排错技巧

1. 有执行权限但运行时报“权限被拒绝”?

可能的原因:

  • 缺少“x”权限的目录。
  • 文件系统挂载为 noexec
  • 文件属于 root,当前用户无权运行。

2. 目录权限设置正确但文件无法创建?

检查是否有 w 权限和 x 权限:

chmod u+wx /path/to/dir

3. 使用 chmod 无效?

文件可能是符号链接,建议使用 -h 参数:

chmod -h 644 symlink

权限即责任,掌握 chmod 是每个 Linux 用户的必修课

在 Linux 中,每一次权限的修改都意味着一次对资源访问策略的定义。chmod 不仅是文件安全的基础工具,更是运维、开发、安全团队日常工作的关键部分。

掌握 chmod,你就拥有了管理整个系统权限秩序的钥匙。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表