本文将探讨 Linux 中的文件权限和访问控制列表(ACL)。了解文件权限对于管理 Linux 系统中文件和目录的访问,确保安全性和数据完整性是至关重要的。
文件权限概述
还记得使用ls -al
这个命令,可以显示文件和目录的详细信息列表吗?其中就有权限的信息。在 Linux 中,每个文件和目录都有一组权限,决定谁可以读取、写入以及执行它们。权限会分配给三类用户:所有者(Owner)、组(Group)以及其他(Other)。
所有者(Owner)
所有者是文件或应用程序的创建用户。所有者对文件拥有最高级别的控制权限,包括更改权限,修改内容和删除文件的能力。
要更改文件或目录的所有权,我们使用 chown
命令。例如:
chown new_owner file.txt
如下案例:
代码语言:javascript复制[root@localhost test]# touch testfile.txt
[root@localhost test]# ls -al
total 3
drwxr-xr-x. 6 root root 4096 Nov 26 10:34 .
dr-xr-x---. 10 root root 270 Nov 26 09:43 ..
-rw-r--r--. 1 root root 0 Nov 26 10:34 testfile.txt
[root@localhost test]# sudo useradd user1
[root@localhost test]# chown user1 testfile.txt
[root@localhost test]# ls -al
total 3
drwxr-xr-x. 6 root root 4096 Nov 26 10:34 .
dr-xr-x---. 10 root root 270 Nov 26 09:43 ..
-rw-r--r--. 1 user1 root 0 Nov 26 10:34 testfile.txt
组(Group)
拥有文件或应用程序的组是一组共享该文件共同权限的用户。当多个用户需要访问同一文件时,组权限就非常有用,可以让他们高效协作。
要更改文件或目录的组的所有权,请使用 chgrp
命令。例如:
chgrp new_group file.txt
其他(Other)
其他类别包括所有可以访问系统但既不是所有者也不是组内成员的用户。授予其他用户的权限定义了他们可以对文件或目录执行哪些操作。
要更改其他人的权限,可以使用 chmod
命令。例如:
chmod o rw file.txt
实践
1 更改用户权限
更改文件的用户权限并使用 ls -ltr
命令观察更改。以下是执行过程:
- 使用
touch
命令创建一个简单的文件 - 使用
ls -ltr
查看文件的详细信息 - 使用
chmod
更改文件的用户权限、例如,授予用户读写权限。 - 再次运行
ls -ltr
查看更新后的权限
[root@localhost test]# touch file.txt
[root@localhost test]# ls -ltr file.txt
-rw-r--r--. 1 root root 0 Nov 26 10:56 file.txt
[root@localhost test]# chmod o rw file.txt
[root@localhost test]# ls -ltr file.txt
-rw-r--rw-. 1 root root 0 Nov 26 10:56 file.txt
2 了解文件权限
Linux 中的文件权限在维护数据安全以及控制对文件和目录的访问方面发挥着至关重要的作用。它们遵循一组规则来确定授予所有者、组成员和其他用户的访问级别。下面,我们着重了解以下文件权限的关键方面:
- 读(r)权限:读权限允许用户查看文件的内容或列出目录中的文件 。有了读权限,用户可以执行
cat
、more
和ls -l
等命令来读取文件内容和目录列表。 - 写(w)权限:写权限授予用户修改文件内容或在目录中创建、重命名和删除文件的能力。具有写入权限的用户可以使用
vi
、echo
和rm
等命令来更改文件和目录。 - 执行(x)权限:执行权限是用户运行可执行文件或访问目录所必须的。它允许用户使用
./program
或cd directory
等命令执行程序文件或遍历目录。
上面权限的组合决定了授予不同用户类别的访问级别。对于每个用户类别,每个权限都可以**启用( )或禁用(-)**。例如,rwx
代表读、写、执行权限,而---
代表没有权限。
查看文件或目录的权限,可以使用 ls -l
命令。它会显示权限设置以及其他详细细腻些,如所有者,组,大小和修改时间戳。
需要注意的是,权限设置的顺序是所有者、组、其他。例如:-rw-r--r--
表示所有者由读写权限,而组和其他人只有读权限。
了解文件权限,我们就能控制对敏感数据的数据的访问,确保只有授权用户才能查看、修改或执行文件和目录。在授予必要权限和维护数据安全之间取得平衡至关重要。
访问控制列表(ACL)
访问控制列表(ACL)提供对文件权限更细粒度的控制。传统的文件权限仅向所有者、组和其他人授予访问权限,而 ACL 允许我们单独设置特定用户或组的权限。
使用 ACL 的两个有用命令是 getfacl
和 serfacl
。getfacl
命令显示文件或目录的 ACL 设置,而 setfacl
命令允许修改 ACL 条目。
要查看文件的 ACL 设置,请使用命令:getfacl file.txt
[root@localhost test]# getfacl file.txt
# file: file.txt
# owner: root
# group: root
user::rw-
group::r--
other::rw-
要修改 ACL 条目并向用户或组授权特定权限,可以使用 setfacl
命令。例如,授予用户读写权限:setfacl -m u:user:rw file.txt
[root@localhost test]# setfacl -m u:huang:rw file.txt
[root@localhost test]# getfacl file.txt
# file: file.txt
# owner: root
# group: root
user::rw-
user:huang:rw-
group::r--
mask::rw-
other::rw-
ACL 提供了一种灵活的方法来管理文件权限,特别是在需要向单个用户或组授予特定访问权限的需求场景中。以上就是今天学习 Linux 中文件权限和访问控制列表的基础知识。