Linux - 文件权限

Linux - 文件权限 首页 / Linux入门教程 / Linux - 文件权限

在本章中,我们将详细讨论Unix中的文件访问权限,文件所有权是Unix的重要组成部分,它提供了一种安全的文件存储方法。 Unix中的每个文件都具有以下属性-

  • Owner - 文件所有者权限决定了文件所有者可以对文件执行哪些操作。

  • Group -  用户组的权限确定用户可以对该文件执行哪些操作。

  • Other  - 其他权限表示所有其他用户可以对该文件执行什么操作。

查看文件权限

使用 ls -l 命令时,它显示与文件所有权相关的各种信息,如下所示-

$ls -l /home/learnfk
-rwxr-xr--  1 learnfk   users 1024  Nov 2 00:10  myfile
drwxr-xr--- 1 learnfk   users 1024  Nov 2 00:10  mydir

权限分为三部分,每组中的每个位置代表一个特定的权限,顺序为:读取(r),写入(w),执行(x)-

  • 第一组前三个字符(2-4) 表示文件所有者(Owner)的权限。如, -rwxr-xr-表示所有者拥有读(r),写(w)和执行(x)权限。

  • 第二组三个字符(5-7) 由文件所属组(Group)的权限组成。如, -rwxr-xr-表示该组具有读取(r)和执行(x)权限,但没有写权限。

  • 最后一组三个字符(8-10) 代表其他所有人(Other)的权限。如, -rwxr-xr-表示仅具有 read(r)权限。

文件存取模式

文件的权限是Unix系统安全性的第一道防线。 Unix权限的基本构建块是 read , write 和 execute 权限,下面对此进行了介绍-

    Read      - 读取(即查看文件内容)权限。

    Write     - 修改或删除文件内容的权限。

    Execute - 将文件作为程序运行权限。

目录访问模式

目录访问模式的列出和组织方式与其他任何文件相同,有一些差异需要提及-

    Read       - 用户可以查看目录内的文件。

    Write      - 用户可以在目录中添加或删除文件。

    Execute - 实际上没有任何意义,因此请将其视为遍历权限,用户必须具有对 bin 目录的 execute 访问权限,才能执行 ls 或 cd 命令。

更改权限

要更改文件或目录权限,请使用 chmod (更改模式) 命令。有两种使用chmod的方法 - 符号模式和绝对模式。

符号模式

初学者修改文件或目录权限的最简单方法是使用符号模式。使用符号权限,您可以使用下表中的运算符来添加,删除或指定所需的权限集。

Sr.No.Chmod operator & 描述
1

+

增加指定权限

链接:https://www.learnfk.comhttps://www.learnfk.com/linux/linux-file-permission.html

来源:LearnFk无涯教程网

2

-

删除指定权限。

3

=

赋值指定权限。

这是使用 testfile 的示例。在测试文件上运行 ls -1 表示文件的权限如下-

$ls -l testfile
-rwxrwxr--  1 learnfk   users 1024  Nov 2 00:10  testfile

然后,下表中的每个示例 chmod 命令都在测试文件上运行,然后是 ls –l ,因此您可以看到权限更改-

$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx  1 learnfk   users 1024  Nov 2 00:10  testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx  1 learnfk   users 1024  Nov 2 00:10  testfile
$chmod g=rx testfile
$ls -l testfile
-rw-r-xrwx  1 learnfk   users 1024  Nov 2 00:10  testfile

这是您如何在一行上合并这些命令的方法-

$chmod o+wx,u-x,g=rx testfile
$ls -l testfile
-rw-r-xrwx  1 learnfk   users 1024  Nov 2 00:10  testfile

绝对模式

使用chmod命令修改权限的第二种方法是使用数字来指定文件的每组权限。

如下表所示,为每个权限分配了一个值,每组权限的总数为该权限集提供了一个数字。

NumberOctal Permission RepresentationRef
0没有权限---
1执行权限--x
2写入权限-w-
3执行+写入权限,1 (execute) + 2 (write)=3-wx
4读取权限r--
5读取+执行权限,4 (read) + 1 (execute)=5r-x
6读取+写入权限,4 (read) + 2 (write)=6rw-
7读/写/执行权限, 4 (read) + 2 (write) + 1 (execute)=7rwx

这是使用测试文件的示例。在测试文件上运行 ls -1 表示文件的权限如下-

$ls -l testfile
-rwxrwxr--  1 learnfk   users 1024  Nov 2 00:10  testfile

然后,上表中的每个示例 chmod 命令都在测试文件上运行,然后是 ls –l ,因此您可以看到权限更改-

$chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 learnfk   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 learnfk   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 learnfk   users 1024  Nov 2 00:10  testfile

更改所有者和组

在Unix上创建帐户时,它为每个用户分配所有者ID 和组ID 。上面提到的所有权限也都是根据所有者和组分配的。

无涯教程网

有两个命令可用于更改所有者和文件组-

  • chown - chown 命令代表"change owner" ,用于更改文件的所有者。

  • chgrp  - chgrp 命令代表"change group" ,用于更改文件组。

改变所有权

chown 命令更改文件的所有权。基本语法如下-

$chown user filelist

用户的值可以是系统上用户的名称或系统上用户的用户ID(uid)。

以下示例将帮助您理解概念-

$chown learnfk testfile
$

将给定文件的所有者更改为用户 learnfk 。

更改组所有权

chgrp 命令更改文件的组所有权。基本语法如下-

$chgrp group filelist

group的值可以是系统上组的名称或系统上组的组ID(GID)。

以下示例可帮助您理解概念-

$chgrp special testfile
$

将给定文件的组更改为special组。

SUID和SGID文件权限

通常,执行命令时,必须以特殊特权执行命令才能完成其任务。

如,当您使用 passwd 命令更改密码时,新密码将存储在文件/etc/shadow 中。

作为普通用户,出于安全原因,您没有对该文件的 read 或 write 访问权限,但是在更改密码时,您需要对此文件具有写权限文件。这意味着 passwd 程序必须为您提供其他权限,以便您可以写入文件/etc/shadow 。

如,命令-

$ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

显示SUID位置1,并且该命令归根所有,要为任何目录设置SUID和SGID位,请尝试以下命令-

$chmod ug+s dirname
$ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

赵成的运维体系管理课 -〔赵成〕

深入浅出区块链 -〔陈浩〕

从0开始学大数据 -〔李智慧〕

苏杰的产品创新课 -〔苏杰〕

RPC实战与核心原理 -〔何小锋〕

Go 语言项目开发实战 -〔孔令飞〕

手把手带你写一门编程语言 -〔宫文学〕

反爬虫兵法演绎20讲 -〔DS Hunter〕

Go进阶 · 分布式爬虫实战 -〔郑建勋〕

好记忆不如烂笔头。留下您的足迹吧 :)