访问与权限管理
在本指南中,我们将介绍如何通过 SSH 或使用 FileZilla 设置服务器上文件和目录的访问权限。
访问权限简介
Linux 操作系统中的访问控制系统能够灵活配置用户对文件和目录的权限,从而提高系统的安全性。
只有超级用户 root 拥有绝对的访问控制权(因此以 root 身份操作可能存在风险)。其他用户最初只能访问自己的家目录,无法对系统文件进行不必要的修改。
访问权限包括读取 (r)、写入 (w) 和执行 (x)。
权限可以分配给文件或目录,为用户提供特定的特权:
|
权限 |
对于文件 |
对于目录 |
|
r,读取 |
查看内容 |
查看内容,即目录中的对象列表(例如使用 cat、ls 命令) |
|
w,写入 |
修改内容 |
修改目录内容,即可以添加、删除文件(甚至是属于其他用户的文件)以及重命名文件 |
|
x,执行 |
运行可执行文件 |
进入目录(例如使用 cd 命令),查看目录中文件的属性 |
每个文件都定义了三类不同的用户:
- 所有者:创建文件或当前拥有该文件的用户。默认情况下,所有者拥有文件的全部权限。
- 所属组:系统中创建并分配给文件的具有特定权限的用户组。一个组可以由一个用户(所有者)或多个用户组成。如果组内包含多个用户,则所有成员都拥有分配给该组的权限。
- 其他用户:既不是文件所有者也不属于该文件关联组的所有其他用户。
可以为每一类用户针对特定文件设置其独有的权限集。
权限可以用两种方式表示:字母或数字。
|
数字记录 |
字母记录 |
权限 |
|
0 |
--- |
无权限 |
|
1 |
--x |
执行 |
|
2 |
-w- |
写入 |
|
3 |
-wx |
写入和执行 |
|
4 |
r-- |
读取 |
|
5 |
r-x |
读取和执行 |
|
6 |
rw- |
读取和写入 |
|
7 |
rwx |
读取、写入和执行 |
权限记录按顺序排列:首先是所有者,然后是所属组,最后是其他用户。例如,记录 755(或 rwxr-xr-x)表示为所有者提供读取、写入和执行权限(7 / rwx),为组提供读取和执行权限(5 / r-x),为所有其他用户也提供读取和执行权限(5 / r-x)。
以下是几种最常见的权限组合示例:
|
数字 |
字母 |
权限 |
|
600 |
rw------- |
所有者可以查看和修改内容,其他用户无权访问该对象 |
|
644 |
rw-r--r-- |
所有者可以查看和修改内容,其他用户只能查看 |
|
700 |
rwx------ |
所有者可以查看、修改和执行该对象,其他用户无权访问 |
|
755 |
rwxr-xr-x |
所有者拥有一切权限,其他用户可以查看和执行 |
在为目录授予访问权限时,重要的是要考虑到:为了能够正常操作目录,至少需要读取和执行权限(5 / r-x)。仅有读取权限(4 / r)只允许查看文件名,而无法查看其属性(如大小和所有者)。
查看已设置的权限
要查看当前目录中文件分配的权限,请使用命令 ls -l。
在输出结果中,文件在行首标记为 -,目录标记为 d。例如:
username@server:~/new_directory$ ls -l
total 4
drwx------ 2 username customers 4096 Mar 10 14:39 dir1
-rw-r--r-- 1 username customers 128 Mar 10 14:39 test.php
参数解析:
权限 所有者 所属组 文件大小 最后修改时间 文件名
rw-r--r-- username customers 0 Mar 10 14:39 test.php
如果您只想查看当前目录中特定文件或目录的权限,请指定其名称。例如:
ls -l test.php
ls -l dir5
要查看当前目录及其所有子目录中文件的权限,请使用 -R 标志:
ls -Rl
您也可以指定要查看其文件和子目录权限的具体目录名称:
ls -Rl dir1
设置访问权限
只有文件所有者或系统管理员(如 root 或拥有 sudo 权限的用户)才能更改文件的访问权限。
设置访问权限可以通过以下方式完成:
- 通过 SSH 连接;
- 通过 FTP 客户端。
通过 SSH
访问权限可以使用 chmod 命令进行设置。有两种应用方式。
方式 1 – 最简单的方式。每次更改权限时,都会为所有类别的用户指定完整的权限集。权限以数字格式指定。
命令语法:
chmod xxx 文件名
例如,使用以下命令可以为文件 test.php 设置 755 权限,这表示所有者拥有全部权限,而其他所有人拥有读取和执行权限。
chmod 755 test.php
要为 test.php 设置 644 权限,请执行:
chmod 644 test.php
为目录 dir 设置 755 权限:
chmod 755 dir
在某些情况下,可能需要使用 -R 标志,它允许递归设置权限。使用此选项时请务必小心,因为它会更改当前目录下所有子目录中所有文件的访问权限。
为当前目录中的所有对象(包括子目录)设置 755 权限:
chmod -R 755 *
方式 2 允许针对特定类别的用户指定具体的权限更改。这里使用符号表示法。
命令语法:
chmod 类别 动作 权限 文件名
用户类别代号如下:
- u — 所有者 (源自 user)
- g — 所属组 (源自 group)
- o — 其他用户 (源自 other)
- a — 所有类别 (源自 all)
权限更改动作提供以下选项:
- + — 添加指定权限
- - — 移除指定权限
- = — 将权限替换为指定权限
权限可以表示为 r、w 和 x。在组合时(例如读取和执行),不使用连字符,例如写成 rx,而不是 r-x。
例如,使用以下命令,您可以为所属组添加读取和执行权限。原有的其他权限保持不变:
chmod g+rx test.php
要移除 test.php 文件中所属组的写入权限,请使用以下命令:
chmod g-w test.php
要移除其他用户对 test.php 的读取和写入权限,请使用:
chmod o-rw test.php
要为所属组和其他用户授予对 dir1 目录的读取和执行权限,请使用:
chmod go+rx dir1
如果需要为所属组和其他用户递归授予对 new_directory 目录中所有文件和子目录的读取权限,请使用 -R 参数:
chmod -R go+r new_directory
通过 FTP/SFTP (FileZilla)
在 FTP 客户端中设置和更改访问权限是一项简单的任务。
- 使用 FileZilla 连接到服务器。
- 找到所需的文件或目录。
- 右键点击它并选择“权限” (或“属性”)。
- 设置所需的权限。在编辑目录权限时,还可以选择将更改应用到所有子目录。
- 保存所做的更改。
更改文件所有者或所属组
要更改文件或目录的所有者或所属组,请使用 chown 命令。
命令语法如下:
chown 所有者:所属组 文件名
例如,要将 user1 设置为 test.php 的所有者,请执行:
chown user1 test.php
如果您还需要将所属组更改为 customers,请执行:
chown user1:customers test.php
如果只想更改所属组,请执行:
chown :customers test.php