Linux文件权限以及权限控制

简介: Linux文件权限以及权限控制

前言

为什么是文件的权限?

因为:Linux一切皆文件

查看文件权限

通过 ls --help 可以看到 l 参数的意思是 使用长列表格式

使用如下命令,以长列表格式查看根目录有哪些文件

ls -l /
输出比较多,咱这边拿 etc 目录来做一个例子
drwxr-xr-x.  77 root root 8192 Mar 30  2019 etc
咱们对输出的内容先做一个拆分,一个个来解释说明,这里总共拆分成12段内容

d rwx r-x r-x . 77 root root 8192 Mar 30 2019 etc

第一段:文件类型

  • -表示普通文件
  • d表示目录
  • l表示链接文件
  • p表示管道文件
  • b表示块设备文件(一般在 /dev 目录下 )
  • c表示字符设备文件(一般在 /dev 目录下 )
  • s表示套接字文件
由此可以看出,我们的 etc 是一个目录类型的文件
shell 默认文件类型颜色
前提是使用 系统缺省的配色方案
  • 灰白色表示普通文件
  • 亮绿色表示可执行文件
  • 亮红色表示压缩文件
  • 灰蓝色表示目录
  • 亮蓝色表示链接文件(文件名称后面会有 -> <路径>
  • 亮黄色表示设备文件

第二、三、四段:UGO权限

从左往右依次为 (所属用户权限)U (所属组权限)G (其他用户权限)O (所属用户和所属组和第七段,第八段有关)

  • r 读取权限

    • 针对文件:可以查看文件内容
    • 针对目录:可以查看目录下有哪些文件和目录
  • w 写入权限

    • 针对文件:可以修改、删除、移动
    • 针对目录:可以删除、移动
  • x 执行权限

    • 针对文件:具有执行权限
    • 针对目录:具有进入目录的权限
  • - 无权限

    • 举例:

      • r-x:表示具有读取和执行权限,没有写入权限
      • rw-:表示具有读取和写入权限,没有执行权限
  • 特殊权限

    • SUID:仅适用于二进制可执行文件,所具有的功能是,只要用户对设有 SUID 的文件有执行权限,那么当用户执行此文件时,会以文件所有者的身份去执行此文件,一旦文件执行结束,身份的切换也随之消失

      • 所属用户权限的x权限位置显示为s
    • SGID:既可以对文件进行配置,也可以对目录进行配置。默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录

      • 所属组权限的x权限位置显示为s
    • SBIT:权限仅对目录有效,一旦目录设定了 SBIT 权限,则用户在此目录下创建的文件或目录,就只有自己和 root 才有权利修改或删除该文件

      • 其他用户权限的x权限位置显示为t
UMASK 默认权限
执行 umask 命令可以看到 root用户默认的值是 0022,普通用户默认的值是 0002

第一个数字用来表示SUIDSGIDSBIT

第二个数字用来表示所属用户U

第三个数字用来表示所属组G

第四个数字用来表示其他用户O

以数字的形式代替 rwx 权限
  • r:4
  • w:2
  • x:1
  • SUID:4
  • SGID:2
  • SBIT:1
文件和目录创建时的默认权限
计算公式:文件或目录的最高权限 - UMASK默认值 = 文件或目录创建时的默认权限

出于安全考虑,文件的最高权限为666,也就是rw-rw-rw-,默认都不提供执行权限

目录的最高权限为777,也就是rwxrwxrwx

计算UMASK创建默认权限,一般只看最后三位数字(除了特殊需求)

  • 文件创建时默认权限

    • 666 - 022 = 644

      • 因此 root 用户创建的文件,默认权限为rw-r--r--
    • 666 - 002 = 664

      • 因此普通用户创建的文件,默认权限为rw-rw-r--
  • 目录创建时默认权限

    • 777 - 022 = 755

      • 因此 root 用户创建的目录,默认权限为rwx-r-x-r-x
    • 777 - 002 = 775

      • 因此普通用户创建的目录,默认权限为rwxrwxr-x
权限控制 之 chmod 命令
权限控制 之 chown 命令
权限控制 之 chgrp 命令
参考文档:

Linux SetUID(SUID)文件特殊权限用法详解

Linux SetGID(SGID)文件特殊权限用法详解

Linux Stick BIT(SBIT)文件特殊权限用法详解

Linux umask详解:令新建文件和目录拥有默认权限

文件权限管理

隐藏权限 chattr 命令
常用命令参数
  • A:即 Atime,告诉系统不要修改对这个文件的最后访问时间。
  • S:即 Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
  • a:即 Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
  • b:不更新文件或目录的最后存取时间。
  • c:将文件或目录压缩后存放。
  • d:当dump程序执行时,该文件或目录不会被dump备份。
  • D:检查压缩文件中的错误。
  • i:即 Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
  • s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
  • u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
  • t:文件系统支持尾部合并(tail-merging)。
  • X:可以直接访问压缩文件的内容。
  • R:递归修改指定目录下的子目录和文件
  • +:在原有参数设定基础上,追加参数。
  • -:在原有参数设定基础上,移除参数。
  • =:更新为指定参数设定。
chattr 命令的用法

先生成一个有内容的文件

echo 'hello world' > text.txt
只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件,不允许删除这个文件
chattr +a text.txt
查看隐藏权限
lsattr text.txt
-----a---------- text.txt

追加内容到 text.txt 文件

    echo 'test' >> text.txt
删除 text.txt 文件
rm -f text.txt
rm: cannot remove ‘text.txt’: Operation not permitted 此时就会返回如下信息,不能删除

解除隐藏权限

此时再去删除文件,文件就可以被删除了

chattr -a text.txt
参考文档:

Linux chattr 命令详解

(总结)Linux的chattr与lsattr命令详解

第五段:SELINUX 和 ACL 权限

  • .:表示有 SELINUX 安全上下文,没有 ACL 权限

    • SELINUX 开启时创建的安全上下文,在 SELINUX 被关闭后依然存在,不会被删除
    • SELINUX 被关闭后创建的文件或目录,不再显示.
  • +:表示有 ACL 权限,至于有没有 SELINUX 安全上下文,需要使用 ls -Z 命令查看了
参考文档:

Linux ACL权限设置(setfacl和getfacl)

第六段:链接数

对于目录文件,表示它的第一级子目录的个数。注意此处看到的值要减2才等于该目录下的子目录的实际个数。

比如这里的include目录下,其实是没有子目录的,所以应该是0,但是它这里却显示2,这是因为要加上.目录和..目录。在linux下,.目录表示当前目录,..目录表示上一级目录。

这也可以解释上图中第一行的.目录下的3和第二行..目录下的26。因为当前目录下有一个include目录,所以加上.目录和..目录这2个目录就等于3,所以第一行会显示3。而上一级目录共有24个目录,加上上一级目录的.目录和..目录这2个目录,所以这里的第二行显示的是26。

对于其他文件,表示指向它的链接文件的个数。

目录
相关文章
|
29天前
|
存储 Linux 数据安全/隐私保护
Linux文件权限及用户管理
Linux文件权限及用户管理
15 0
|
1月前
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解Linux文件权限
【Linux】深入理解Linux文件权限
32 0
|
4月前
|
存储 Linux 数据安全/隐私保护
哇~~真的是你呀!今天是Linux文件权限与归档压缩。
Linux文件权限可以控制文件和目录的读取、写入和执行权限,保护系统和用户文件的安全性和私密性。文件权限通常使用r、w、x三个字母来表示,分别表示读取、写入和执行的权限。Linux中文件权限被分成三个等级:用户(user)、用户组(group)、其他人(other)。每个用户可以被分配为不同的用户组,同时用户也可以独立属于一个用户组。
55 0
|
4月前
|
Linux Go 数据安全/隐私保护
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
63 2
|
5月前
|
安全 Linux Shell
Linux加强篇005-用户身份与文件权限
山重水复疑无路,柳暗花明又一村
278 2
Linux加强篇005-用户身份与文件权限
|
6月前
|
运维 Linux Go
【Linux】管理Linux文件权限属性介绍
【Linux】管理Linux文件权限属性介绍
62 0
【Linux】管理Linux文件权限属性介绍
|
7月前
|
安全 Linux 数据安全/隐私保护
Linux 文件权限基础:文件和目录权限管理指南
Linux 文件权限基础:文件和目录权限管理指南
272 0
|
22天前
|
安全 Ubuntu Shell
Linux之用户权限和文件权限详解
Linux之用户权限和文件权限详解
|
5月前
|
安全 Linux
Linux文件权限详解
Linux是一款功能强大的操作系统,其文件权限系统是确保文件和系统安全的关键组成部分。正确理解和配置文件权限对于维护系统安全至关重要。
106 4
Linux文件权限详解
|
1月前
|
Linux
Linux 文件权限详细教程
Linux 文件权限是系统中非常重要的概念之一,用于控制对文件和目录的访问。权限分为读(Read)、写(Write)、执行(Execute)三个部分,分别表示对文件的读取、修改和执行操作的权限。 文件权限可以分为三类用户:文件所有者(Owner)、文件所属组(Group)、其他用户(Others)。 查看文件权限 可以使用 ls -l 命令来查看文件的详细权限信息。 执行该命令后,会显示包括权限、所有者、所属组、文件大小、创建时间等信息。
51 2