linux文件系统权限详解

作者: huip 发布时间: 2018-10-20

linux系统是一种多用户的操作系统,为了保证文件的安全性,linux系统的提出了『所有者』和『权限』这两个概念,通过这两个概念控制用户是否可以查看或者修改文件。在接下来的文章中,我们将学习这两个概念,并介绍如何通过命令去操作它们。

用户和用户组

在我们讨论『所有者』这个概念之前,我们先了解一下什么是『用户』和『用户组』。linux系统通过『用户』的概念去区分使用系统的所有用户,每个用户都有属于它们自己的一些属性,比如『用户ID』和『用户目录』。为了更好的管理用户,我们通常会将用户加入一个用户组。

如果你想查看你系统上的所有用户,你可以通过在终端中输入下面的命令查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cat /etc/password

##
# User Database
#
# Note that this file is consulted directly only when the system is running
# in single-user mode. At other times this information is provided by
# Open Directory.
#
# See the opendirectoryd(8) man page for additional information about
# Open Directory.
##
nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
...

命令行每一行会详细的列出用户的信息,每一行『:』之前的就是用户的用户名

同样的,你可以通过运行下面的命令行查看所有的『用户组』

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat /etc/group
##
# Group Database
#
# Note that this file is consulted directly only when the system is running
# in single-user mode. At other times this information is provided by
# Open Directory.
#
# See the opendirectoryd(8) man page for additional information about
# Open Directory.
##
nobody:*:-2:
nogroup:*:-1:
...

同样的,每一行『:』之前的就是用户的用户组。

当你运行上面的命令的时候,你会看到一些不是你创建的用户和用户组,它们属于系统用户和系统用户组。

所有者和权限

在linux系统中,我们通过权限来控制一个用户是否可以操作文件和目录。linux系统有三种权限:

权限名称 文件 目录
Read(可读) 用户可以查看文件的内容 用户是否可以查看目录下的文件或者是子目录
Write(可写) 用户可以修改和删除文件 用户可以修改文件内容(创建、删除和重命名目录下的文件)。然而,该权限对目录没有作用除非该目录同时具备可执行权限
Execute(可执行) 可写的权限允许被执行。只有可读权限被开启时可执行权限才会生效 可写权限允许用户进入该目录的子目录和查看该目录下的文件的元数据

你可能会想:为什么可写权限不能作用于目录如果该目录没有可执行权限?这是因为只有被设置了可执行的目录才能被检索到。 如果没有设置可执行权限,操作系统不能准确的知道该目录是否真正的具备可写权限。

文件和目录只能被一个用户和用户组所拥有。当文件或者目录被创建时,文件的『所有者』就为创建它用户和该用户所在的用户组。

如果你认为我的文章对你有帮助,欢迎点击上方按钮对我打赏

推荐阅读

前端开发工程师必读的10本书

详解前端开发中的存储方案