Skip to content

管理用户访问权限

在这篇文章中

权限:类型

Linux 采用灵活的权限系统,有助于控制谁可以访问文件和目录以及如何访问。这极大地增强了系统安全性。

只有超级用户 root 对整个系统拥有完全控制权,这就是为什么使用 root 执行日常任务被认为是有风险的:任何错误都可能导致严重损坏。普通用户默认只能在他们的家目录中工作,并且无法访问系统文件,从而防止意外或恶意的更改。

对于每个文件或目录,定义了三种类型的权限:

  • r (read) – 读取,
  • w (write) – 写入(更改内容),
  • x (execute) – 执行(针对文件)或进入(针对目录)。

这些权限适用于三类用户:

  1. Owner – 文件的所有者(通常是创建者)。
  2. Group – 一组用户;他们获得对该文件的共享权限。
  3. Others – 不属于前两类的所有其他用户。

每类用户都可以拥有自己独立的权限集。

权限有两种表达方式:

  • 字母数字格式:例如,rwxr-xr--
  • 数字格式:每个权限编码为一个数字(读 = 4,写 = 2,执行 = 1),总和即为最终值。
    例如,7 = 4+2+1 = rwx

数值按 所有者其他 的顺序书写。
因此,755 (rwxr-xr-x) 意味着:

  • 所有者可以读取、写入和执行(或进入目录)。
  • 其他人可以读取和执行(或查看目录内容并进入)。

典型权限示例:

  • 600 (rw-------) – 只有所有者可以读取和编辑文件。
  • 644 (rw-r--r--) – 所有者可以编辑;其他人只能读取。
  • 700 (rwx------) – 仅所有者拥有完全访问权限。
  • 755 (rwxr-xr-x) – 所有者可以执行所有操作;其他人只能查看和使用(执行文件或进入目录)。

备注

请特别注意目录权限:要允许用户不仅查看文件列表,还要查看其属性(例如大小或所有者),他们至少需要 读取 + 执行 r-x(即 5)。仅读取 r-- 允许他们查看文件名,但无法查看其属性,而没有执行权限 x 他们甚至无法 cd 进入目录。

配置权限

通过 SSH 配置权限

Linux 中的文件和目录权限使用 chmod 命令进行管理。主要有两种使用方式。

方法 1:数字(绝对)模式

在此方法中,您立即使用三位数字为所有三类用户——所有者、组和其他人——设置完整的权限集。

命令格式:

chmod XXX 对象名称

示例:

  • chmod 755 test.php – 所有者获得完整的 rwx 权限,而组和其他人仅获得读取和执行权限 (r-x)。
  • chmod 644 test.php – 所有者可以读取和编辑;其他人只能读取。
  • chmod 755 dir – 目录的类似权限。

要将权限递归应用于文件夹内的所有文件和子目录,请使用 -R 标志:

chmod -R 755 *

备注

使用 -R 时要小心——该命令将更改目录中 所有内容 的权限,包括嵌套文件夹和文件。

方法 2:符号(相对)模式

在此方法中,您仅修改 所需的权限部分,而不影响其余部分。这对于小幅调整非常有用。

命令格式:

chmod [类别][操作][权限] 对象名称

类别:

  • u – 所有者 (user)
  • g – 组 (group)
  • o – 其他人 (others)
  • a – 所有 (all)

操作:

  • + – 添加权限
  • - – 移除权限
  • = – 设置确切值(移除其他权限)

权限 指定为 rwx(例如,rx,而不是 r-x)。

示例:

  • chmod g+rx test.php – 允许组读取和执行文件。
  • chmod g-w test.php – 拒绝组写入访问。
  • chmod o-rw test.php – 移除其他人的读取和写入权限。
  • chmod go+rx dir1 – 授予组和其他人查看和进入目录的权限。
  • chmod -R go+r new_directory – 递归允许组和其他人读取 new_directory 内的所有文件和目录。

此方法更灵活且更安全,特别是在重要的是不干扰现有权限时。

通过 FTP 客户端配置权限

使用 FTP 客户端更改和设置权限也非常方便。让我们使用免费的 FileZilla 客户端逐步介绍此过程。

  1. 连接到服务器并选择所需的文件或目录。
  2. 右键单击并从上下文菜单中选择 File Permissions…
  3. 设置所需的权限。

查看当前权限

要查看分配的权限,请使用 ls 命令。

当前目录中文件的权限:

username@server:~/my_directory$ ls -l

特定文件或目录(例如,text.docdir1)的权限:

ls -l text.doc
ls -l dir1

当前目录中所有嵌套子目录中文件的权限:

ls -Rl

备注

在验证新会话是否正常工作之前,请勿关闭当前的 SSH 会话。否则,您可能会失去对服务器的访问权限。

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×