一、默认权限:umask


  • 系统创建文件和目录时的默认权限

  • 创建文件时:rw-rw-rw-
  • 创建目录时:rwxrwxrwx

  • 上面的是系统的默认权限,​我们自己设置的权限=系统默认权限-umask显示的值

查看默认权限的两种方式


  • 第一种:umask

  • 第一种查看出来会显示4个数字,第1个数字先不用管,默认权限与后面3位数有关
  • 后三位分别代表:拥有者、用户组、其他人的权限,数字代表我们自己在创建文件时:系统默认权限要减去的值的组合(r:4,w:2,x:1)

  • 下面例如我的是0002,分别代表:--- --- -w-

  • 我的系统在创建文件时,文件的权限为:(rw-rw-rw-) - (--- --- -w-)===>rw-rw-r--
  • 我的系统在创建目录时,目录的权限为:(rwxrwxrwx) - (--- --- -w-)===>rwxrwxr-x


Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_SUID

Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_Linux umask默认权限_02

  • 第二种:umask -S

  • 原理和上面一样的
  • 我的系统是002,则umask -S查看显示的是:u=rwx,g=rwx,o=rx

Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_SUID_03

二、隐藏属性:chattr、lsattr


  • 配置文件隐藏属性:chattr
  • 格式:

  • chattr [+-=] [选项]  文件/目录
  • +、-、=分别代表对文件/目录属性的增、减、赋值

  • 选项:

  • A:设置了这个权限,当你在存取文件时,它的存取时间(atime)将不会被修改,可避免I/O较慢的机器过度的读写磁盘
  • S:一般的文件时非同步写入磁盘的(sync),如果设置了S,则文件直接同步到磁盘
  • a:​文件将只能增加数据,不能删除或者修改数据(只有root才能设置这个权限)
  • c:自动将文件进行压缩,在读取的时候自动解压。在存储的时候,将会先进行压缩再存储(对大文件比较有用)
  • d:当dump程序被执行的时候,d属性可使该文件不会被dump备份
  • i:很重要​。它可以让一个文件不能被删除、改名、设置链接、无法写入更新数据。对系统安全性很有帮助(只有root才能设置这个权限)
  • s:如果该文件被删除,将从硬盘上完全删除,不能恢复
  • u:与s相反。如果该文件被删除,数据还存在磁盘中,可以恢复

  • 注意事项

  • 上面的参数只能在ext2、ext3、ext4的Linux文件系统上生效,xfs文件系统仅支持[AadiS]这几个参数
  • 很多选项只能root权限才能设置


查看文件的隐藏属性:lsattr


  • 格式​:lsattr  [选项]  [文件/目录]
  • 选项

  • -a:将隐藏文件的属性也显示出来
  • -d:如果后面是目录,仅列出目录本身的属性
  • -R:如果后面是目录,连同子目录的数据也一起列出来


Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_SBIT_04


  • 前面的文章我们介绍过了r、w、x权限,分别代表读、写、执行
  • 接下来介绍s与t权限。这两个权限与系统的账号以及系统的进程管理较为相关

三、SUID(Set UID)


  • 概念:​当s权限出现在文件拥有者的x权限上时,例如:-rwsr-xr-x,此时就被称为Set UID,简称SUID
  • SUID权限的特殊功能与特点

  • 重点:​SUID权限仅对​二进制程序​有效(不能够用在shell脚本上面,因为shell脚本只是将很多的二进制文件调用执行而已)
  • 执行者对于程序需要具有​x​的可执行权限
  • 本权限仅在该​程序执行的过程中​有效
  • 执行者在执行的时候将​获得程序拥有者​的权限


举例说明,更容易理解


  1. ①引入:​我们Linux系统中,所有账号的密码都存在与/etc/shadow这个文件里面,其属性为:​-rw-r-----​(我的系统下是这样),代表只有root才可以修改密码。既然只有root才可以修改密码,为什么我们一般用户(例如使用dongshao)使用passwd命令时也可以修改密码哪?这就牵扯到passwd命令的属性了
  2. 我们列出passwd命令的属性可以看到:​-rwsr-xr-x​(在拥有者的x权限上出现了s属性)

Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_SBIT_05

  • 解释原因:​当我们用一般用户dongshao去执行passwd这个命令时

  • dongshao属于passwd的其他人,拥有x权限
  • 当dongshao去执行passwd这个程序时,因为拥有者具有s权限,所以donbgshao在执行的过程中,获得了拥有者的权限
  • 获得拥有者权限之后,dongshao就可以通过passwd这个命令去修改密码(/etc/shadow这个文件可以被dongshao执行的passwd命令所修改)

Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_SGID_06

四、SGID(Set GID)


  • 概念:
  • 当s权限出现在文件用户组的x权限上时,例如:-rwxr-sr-x,此时就被称为Set GID,简称SGID
  • SGID可以针对文件或目录来设置

SGID权限的特殊功能与特点


  • 对于文件来说​,SGID有如下功能

  •  SGID对二进制程序有效
  • 程序执行者对于程序来说,需要具备x权限。执行者在执行的过程中将会获得该程序用户组的支持

  • 对于目录来说​,SGID有如下功能

  • 用户若对于此目录具有r和x权限时,该用户能够进入此目录
  • 用户在此目录下的文件/目录的有效用户组都将会变成该目录的用户组
  • 用途:若用户在此目录下具有w权限时,则用户所建立的新文件,新文件的用户组就是此目录的用户组

  • 例如:​/usr/bin/locate这个程序可以查找/var/lib/mlocate/mlocate.db这个文件

  • /usr/bin/locate:-rwx--s--x. 1 root  slocate
  • /var/lib/mlocate/mlocate.db:-rw-r-----. 1 root slocate

  • 当我们使用dongshao这个账号去执行/usr/bin/locate这个程序去查找/var/lib/mlocate/mlocate.db这个文件时,会取得slocate用户组的支持,因此能够读取mlocate.db

五、SBIT(Sticky Bit)


  • 概念:​当t权限出现在文件其他人的x权限上时,例如:-rwxrwxrwt,此时就被称为Sticky Bit,简称SBIT
  • SBIT权限的特殊功能与特点

  • 重点:​此用户需要对此目录具有w、x权限,即具有写入功能
  • 当用户在该目录下建立文件或目录时,仅有自己与root才有权力删除该文件

  • 举例说明:

  • 例如甲这个用户对于A目录来说具有用户组或其他人的身份,并拥有该目录w的权限,代表甲用户可以对该目录内任何人建立的目录/文件进行删除、更名、移动等。不过如果,我们将A目录加上了SBIT权限后,则甲只能针对自己建立的文件或目录进行删除、更名、移动等操作,而无法删除它人的文件
  • 例如:我们的/tmp目录的权限是:drwxrwxrwt。代表任何人可以在/tmp目录下新增、修改文件,但是该文件仅有建立者和root可以删除


Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_SUID_07

六、设置SUID、SGID、SBIT权限


  • 设置:​SUID、SGID、SBIT可以使用前面文章介绍过的chmod命令修改。chmod修改可以又有两种格式
  • 数字格式设置:​r、w、x三个权限的数字分别为:4,2,1。SUID、SGID、SBIT也有三个数字代表,分别为加在rwx数字的前面

  • SUID:4
  • SGID:2
  • SBIT:1

  • 例如:​加入SUID权限chmod:chmod 4775 test;

Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_Linux umask默认权限_08

  • 加入SUID、SGID权限:chmod 6775;

Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_SUID_09


  • 符号法修改:​可以通过+、-、=三种符号修改

  • SUID:u+s
  • SGID:g+s
  • SBIT:o+t

  • 例如:

  • 将test文件修改为-rws--x--x:chmod u=rws,go=x test;
  • 承上,将test文件修改为-rws--s--t:chmod g+s,o+t test;


七、注意事项

  • 我们有时可能会看到一个文件的属性是以下这种情况
-rwSrwSrwT
  • 为什么S和T会是大写的哪?

  • 原因:上面介绍过,能使用s和t权限,执行者必须对文件/目录具有可执行的x权限,大写是因为执行者对于文件/目录不具有x权限,是无效的
  • 例如,我们修改一个文件的属性为7666,就会出现以下情况:666代表rw-rw-rw-,都不具有x权限,因此都是大写

Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_Linux umask默认权限_10


  • 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。

Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)_SBIT_11