Linux 文件权限
Linux 是 UNIX 的一个副本,它是多用户操作系统,可以被许多用户同时访问。Linux 也可以在大型机和服务器中使用而无需任何修改。但这会引发安全问题,因为恶意的用户可能会损坏、更改或删除关键数据。为了有效的安全性,Linux 将授权分为两个级别。
- 所有权
- 许可
权限和所有权的概念在 Linux 中至关重要。在这里,我们将学习它们。让我们从所有权开始。
Linux 文件的所有权
Unix/Linux 系统上的每个文件和目录都分配了 3 种类型的所有者,如下所示。
用户
用户是文件的所有者。默认情况下,创建文件的人将成为其所有者。因此,用户有时也被称为所有者。
用户组
用户组可以包含多个用户。属于某个组的所有用户对该文件具有相同的访问权限。假设你有一个项目,许多人需要访问文件。你可以将所有用户添加到组中,而不是手动为每个用户分配权限,并将组权限分配给文件,以便只有该组成员才能读取或修改文件。
其他
有权访问文件的任何其他用户。此人既没有创建文件,也没有属于可以拥有该文件的用户组。实际上,它意味着其他所有人。
现在,最大的问题是 Linux 如何区分这三种用户类型,这样用户 A
就不会影响其他用户 B
重要信息/数据的文件。这是权限设置的地方,它们定义用户行为。
让我们了解 Linux 上的权限系统。
权限
UNIX/Linux 系统中的每个文件和目录都具有为上面讨论的所有 3 个所有者定义的以下 3 个权限。
- 读此权限授予你打开和读取文件的权限。你有目录的读取权限的话,你就能够列出其内容。
- 写写权限授予你修改文件内容的权限。对目录的写入权限使你有权添加、删除和重命名存储在目录中的文件。假如你必须在文件上写入权限,但对存储文件的目录没有写入权限。你将能够修改文件内容。但是你将无法从目录重命名、移动或删除该文件。
- 执行在 Windows 中,可执行程序通常具有扩展名
.exe
,你可以轻松运行它们。在 Unix/Linux 中,除非设置了执行权限,否则无法运行程序。如果未设置执行权限,你仍可以查看/修改程序代码(提供读写权限),但不能运行它。
ls -l
在终端上会列出文件和文件夹的权限信息,
dishan@vultr:~$ ls - l
-rw-rw-r-- 1 home home 0 2018-09-14 18:35 TestFile
在这里,-rw-rw-r--
代码是告诉我们所有者、用户组和其他人对文件的权限代码。
这里,第一个 -
表示我们选择了一个文件,
否则,如果是目录,则会显示 d
。
drw-rw-r-- 2 home home 80 2018-09-14 18:35 Desktop
权限代码字母也很容易记住。
权限代码 | 说明 |
---|---|
r |
读取权限 |
w |
写入权限 |
x |
执行权限 |
- |
没有权限 |
让我们这样来看看刚才的例子,
代码的第一部分是 rw-
。这表明所有者 Home
可以:
- 读文件
- 编写或编辑文件
- 由于执行位设置为
-
,因此无法执行该文件。
根据设计,许多 Linux 发行版如 Fedora,CentOS,Ubuntu 等都会将用户添加到与用户名相同的组名中。因此,用户 tom
被添加到名为 tom
的组中。
第二部分是 rw-
。用户组 Home
和组成员可以:
- 读文件
- 编写或编辑文件
第三部分是其他任何用户。r--
。这意味着用户只能:
- 读文件
使用 chmod
命令更改文件/目录权限
假设你不希望其他用户访问某些文件,这可以通过更改文件权限来实现。
我们可以使用 chmod
命令代表 change mode
。使用该命令,我们可以在所有者、用户组和其他用户的文件/目录上设置权限(读,写,执行)。语法如下,
chmod permissions filename
有两种方法可以使用该命令 -
- 绝对模式
- 符号模式
绝对(数字)模式
在此模式下,文件权限不用字符表示,而是三位八进制数。
下表给出了所有权限类型的数字。
数字 | 许可类型 | 符号 |
---|---|---|
0 |
没有许可 | --- |
1 |
执行 | --x |
2 |
写 | -w- |
3 |
执行+写入 | -wx |
4 |
读 | r-- |
5 |
读+执行 | r-x |
6 |
读+写 | rw- |
7 |
读+写+执行 | rwx |
让我们看看 chmod
命令的运行情况。
在上面给出的终端窗口中,我们已将文件 sample
的权限更改为 764
。
764
绝对代码说明如下:
- 所有者可以读,写和执行
- 用户组可以读写
- 其他用户只读
这是通过分配绝对数字来更改文件权限的方法。
符号模式
在绝对模式下,你可以更改所有 3 个所有者的权限。在符号模式下,你可以修改特定所有者的权限。它利用数学符号来修改文件权限。
操作符 | 说明 |
---|---|
+ |
添加文件或目录的权限 |
- |
删除权限 |
= |
设置权限并覆盖先前设置的权限 |
不同的用户用不同的字母来表示,
用户符号 | |
---|---|
u |
用户/所有者 |
g |
小组 |
o |
其他 |
a |
所有用户 |
我们不会在像 755
这样的数字中使用权限,而是使用像 rwx
这样的字符。比如,
dishan@vultr:~$ chmod o=rwx test
dishan@vultr:~$ chmod g+x test
dishan@vultr:~$ chmod u-r test
改变所有权和用户组
要更改文件/目录的所有权,可以使用以下命令:
chown user
如果要更改用户以及文件或目录的用户组,可以用以下命令,
chown user:group filename
让我们看看例子,
下面命令将文件所有者更改为 testuser
dishan@vultr:~$ sudo chown testuser sample.txt
下面命令将文件所有者和用户组更改为 root
dishan@vultr:~$ sudo chown root:root sample.txt
如果你只想更改组所有者,请使用下面的命令
chgrp group_name filename
chgrp
代表 change group
。
提示
- 文件
/etc/group
包含系统中定义的所有组 - 你可以使用命令
groups
查找你所属的所有组 - 你可以使用命令
newgrp
作为默认组以外的组的成员 - 你不能拥有 2 个拥有相同文件的组。
- 你在 Linux 中没有嵌套组。其中一组不能成为其他组的子组
复习
- 作为多用户系统的 Linux 使用权限和所有权来实现安全性。
- Linux 系统上有三种用户类型即。用户,用户组和其他用户
- Linux 将文件权限分为读,写和执行,由
r
,w
和x
表示 - 可以通过
chmod
命令更改文件的权限,该命令可以进一步分为绝对模式和符号模式 chown
命令可以更改文件/目录的所有权。使用以下命令:chown user file
或chown user:group file
chgrp
命令可以更改组所有权chrgrp group filename