Linux / Unix 中的文件权限:如何读取、写入和更改?
Linux是UNIX的克隆,UNIX是一种可以被多个用户同时访问的多用户操作系统。Linux也可以在大型机和服务器上使用,无需任何修改。但这会引发安全问题,因为不受欢迎或恶意的用户可能会损坏、更改或删除关键数据。为了实现有效的安全,Linux将授权分为两个级别。
- 所有权
- 权限
Linux 文件权限和所有权的概念在Linux中至关重要。在这里,我们将解释Linux权限和所有权,并讨论两者。让我们从所有权开始。
如果视频无法访问,请点击此处
Linux 文件所有权
您的Unix/Linux系统上的每个文件和目录都指定了以下3种所有者。
用户
用户是文件的所有者。默认情况下,创建文件的人成为其所有者。因此,用户有时也称为所有者。
分组
用户组可以包含多个用户。属于该组的所有用户将拥有相同Linux组的权限来访问文件。假设您有一个项目,其中许多人需要访问一个文件。您可以将所有用户添加到组中,然后为文件分配组权限,以便只有该组的成员才能读取或修改文件,而无需手动为每个用户分配权限。
其他
任何有权访问文件的其他用户。这个人既没有创建文件,也不属于可以拥有该文件的用户组。实际上,这意味着所有其他人。因此,当您为其他人设置权限时,它也被称为对全世界设置权限。
现在,最大的问题来了:Linux如何区分这三种用户类型,以便用户“A”不能影响包含其他用户“B”的文件的重要信息/数据?这就好比您不希望在您的Linux电脑上工作的同事查看您的图片。这就是权限发挥作用的地方,它们定义了用户行为。
让我们来理解Linux上的权限系统。
Linux 文件权限
您UNIX/Linux系统上的每个文件和目录都为上述所有3种所有者定义了以下3种权限。
- 读取:此权限授予您打开和读取文件的权限。目录上的读取权限授予您列出其内容的权限。
- 写入:写入权限授予您修改文件内容的权限。目录上的写入权限授予您在目录中添加、删除和重命名文件的权限。考虑一种情况,您对文件有写入权限,但对存储该文件的目录没有写入权限。您将能够修改文件内容。但您将无法重命名、移动或从目录中删除该文件。
- 执行:在Windows中,可执行程序通常具有“.exe”扩展名,您可以轻松运行它。在Unix/Linux中,除非设置了执行权限,否则您无法运行程序。如果未设置执行权限,您可能仍然能够查看/修改程序代码(前提是设置了读写权限),但无法运行它。
让我们通过示例查看Linux中的文件权限
终端上的ls – l会给出
ls - l
这里,我们重点关注了‘-rw-rw-r–‘,这段看起来奇怪的代码告诉我们授予所有者、用户组和所有人的Unix权限。
这里,第一个‘–‘表示我们选择的是一个文件。
否则,如果它是一个目录,就会显示d。
这些字符很容易记住。
r = 读取权限
w = 写入权限
x = 执行权限
– = 无权限
让我们这样看。
代码的第一部分是‘rw-‘。这表明所有者“Home”可以
- 读取文件
- 写入或编辑文件
- 由于执行位设置为‘-’,他无法执行该文件。
根据设计,许多Linux发行版,如Fedora、CentOS、Ubuntu等,会将用户添加到与用户名同名的组中。因此,用户“tom”会被添加到名为“tom”的组中。
第二部分是‘rw-‘。它用于用户组“Home”,组内成员可以
- 读取文件
- 写入或编辑文件
第三部分是为所有人(即任何用户)设置的。它显示为‘r–’。这意味着该用户只能
- 读取文件
使用“chmod”命令更改Linux中的文件/目录权限
假设您不想让同事查看您的个人图片。这可以通过更改文件权限来实现。
我们可以使用‘chmod’命令,它是“change mode”的缩写。使用此命令,我们可以为文件/目录的所有者、组和所有人设置权限(读取、写入、执行)。
语法
chmod permissions filename
有2种使用命令的方法——
- 绝对模式
- 符号模式
Linux中的绝对(数字)模式
在此模式下,文件权限不表示为字符,而是三位八进制数。
下表为所有权限类型提供了数字。
数字 | 权限类型 | 符号 |
---|---|---|
0 | 无权限 | — |
1 | 执行 | –x |
2 | 写入 | -w- |
3 | 执行+写入 | -wx |
4 | 读取 | r– |
5 | 读取+执行 | r-x |
6 | 读+写 | rw- |
7 | 读+写+执行 | rwx |
让我们看看chmod权限命令的实际应用。
在上面提供的终端窗口中,我们将文件“sample”的权限更改为“764”。
‘764’绝对代码表示以下含义:
- 所有者可以读、写和执行
- 用户组可以读和写
- 所有人只能读
这显示为‘-rwxrw-r–’
这就是如何通过分配绝对数字来更改文件上的用户权限。
Linux中的符号模式
在绝对模式下,您可以更改所有3个所有者的权限。在符号模式下,您可以修改特定所有者的权限。它利用数学符号来修改Unix文件权限。
运算符 | 描述 |
---|---|
+ |
向文件或目录添加权限 |
– |
删除权限 |
= |
设置权限并覆盖之前设置的权限。 |
各种所有者表示为——
用户表示 | |
---|---|
u |
用户/所有者 |
g |
组 |
o |
其他 |
a |
全部 |
我们将不使用像755这样的数字来表示权限,而是使用rwx这样的字符。让我们看一个例子
更改Linux中的所有权和组
要更改文件/目录的所有权,可以使用以下命令
chown user filename
如果您想更改文件或目录的用户和组,请使用命令
chown user:group filename
让我们看看实际操作
如果您只想更改组所有者,请使用命令
chgrp group_name filename
‘chgrp’代表更改组。
提示
- 文件/etc/group包含系统中定义的所有组
- 您可以使用“groups”命令查找您是成员的所有组
- 您可以使用newgrp命令作为默认组以外的其他组的成员进行工作
- 您不能让2个组拥有同一文件。
- Linux中没有嵌套组。一个组不能是另一个组的子组
- 目录的x-执行意味着允许“进入”一个目录并可能访问子目录
- 在文件和目录上可以设置其他权限,这些将在后续的高级教程中介绍
摘要
- Linux作为多用户系统,使用权限和所有权来保障安全。
- Linux系统上有三种用户类型:用户、组和其他。
- Linux将文件权限分为读、写和执行,分别用r、w和x表示。
- 文件的权限可以通过‘chmod’命令更改,该命令可进一步分为绝对模式和符号模式。
- ‘chown’命令可以更改文件/目录的所有权。使用以下命令:chown user file 或 chown user:group file。
- ‘chgrp’命令可以更改组所有权chgrp group filename
- 目录的x-执行意味着什么?A:允许“进入”目录并可能访问子目录。