Linux学习日记-文件与目录管理(四)

文件与目录的默认权限与隐藏权限

一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略提过了(chgrp,chown,chmod) 

除了基本r, w, x权限外,在Linux的Ext2/Ext3文件系统下,我们还可以配置其他的系统隐藏属性, 这部份可使用chattr来配置,而以lsattr来查看,最重要的属性就是可以配置其不可修改的特性!让连文件的拥有者都不能进行修改! 这个属性可是相当重要的,尤其是在安全机制上面 (security)!

文件默认权限:umask


查阅的方式有两种,一种可以直接输入 umask ,就可以看到数字型态的权限配置分数, 一种则是加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限了! 

umask 的分数指的是『该默认值需要减掉的权限!』因为 r、w、x 分别是 4、2、1 分,所以罗!也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉运行与写入的权限,也就是 3 分。

如果以上面的例子来说明的话,因为 umask 为 022 ,所以 user 并没有被拿掉任何权限,不过 group 与 others 的权限被拿掉了 2 (也就是 w 这个权限),那么当使用者:

创建文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--

创建目录时:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

文件隐藏属性:

    chattr (配置文件隐藏属性)

[root@www ~]# chattr [+-=][ASacdistu] 文件或目录名称

选项与参数:+  :添加某一个特殊参数,其他原本存在参数则不动。-  :移除某一个特殊参数,其他原本存在参数则不动。=  :配置一定,且仅有后面接的参数

A  :当配置了 A 这个属性时,若你有存取此文件(或目录)时,他的存取时间 atime

    将不会被修改,可避免I/O较慢的机器过度的存取磁碟。这对速度较慢的计算机有帮助

S  :一般文件是非同步写入磁碟的(原理请参考第五章sync的说明),如果加上 S 这个

    属性时,当你进行任何文件的修改,该更动会『同步』写入磁碟中。

a  :当配置 a 之后,这个文件将只能添加数据,而不能删除也不能修改数据,只有root

    才能配置这个属性。

c  :这个属性配置之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,

    但是在储存的时候,将会先进行压缩后再储存(看来对於大文件似乎蛮有用的!)

d  :当 dump 程序被运行的时候,配置 d 属性将可使该文件(或目录)不会被 dump 备份

i  :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、配置连结也无法

    写入或新增数据!』对於系统安全性有相当大的助益!只有 root 能配置此属性

s  :当文件配置了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘

    空间,所以如果误删了,完全无法救回来了喔!

u  :与 s 相反的,当使用 u 来配置文件时,如果该文件被删除了,则数据内容其实还

    存在磁碟中,可以使用来救援该文件喔!

注意:属性配置常见的是 a 与 i 的配置值,而且很多配置值必须要身为 root 才能配置

    lsattr (显示文件隐藏属性)


[root@www ~]# lsattr [-adR] 文件或目录

选项与参数:-a :将隐藏档的属性也秀出来;-d :如果接的是目录,仅列出目录本身的属性而非目录内的档名;-R :连同子目录的数据也一并列出来! 

文件特殊权限: SUID, SGID, SBIT

Set UID

当 s 这个标志出现在文件拥有者的 x 权限上时,例如刚刚提到的 /usr/bin/passwd 这个文件的权限状态:『-rwsr-xr-x』,此时就被称为 Set UID,简称为 SUID 的特殊权限。 那么SUID的权限对於一个文件的特殊功能是什么呢?基本上SUID有这样的限制与功能:

SUID 权限仅对二进位程序(binary program)有效;

运行者对於该程序需要具有 x 的可运行权限;

本权限仅在运行该程序的过程中有效 (run-time);

运行者将具有该程序拥有者 (owner) 的权限。

Set GID

当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID, SGID 

SGID 对二进位程序有用;与 SUID 不同的是,SGID 可以针对文件或目录来配置!如果是对文件来说, SGID 有如下的功能:

        程序运行者对於该程序来说,需具备 x 的权限;

        运行者在运行的过程中将会获得该程序群组的支持

SGID 也能够用在目录上:

            使用者若对於此目录具有 r 与 x 的权限时,该使用者能够进入此目录;

            使用者在此目录下的有效群组(effective group)将会变成该目录的群组;

            用途:若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同。

Sticky Bit

这个 Sticky Bit, SBIT 目前只针对目录有效,对於文件已经没有效果了。 SBIT 对於目录的作用是:

            当使用者对於此目录具有 w, x 权限,亦即具有写入的权限时;

            当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件

当甲这个使用者於 A 目录是具有群组或其他人的身份,并且拥有该目录 w 的权限, 这表示『甲使用者对该目录内任何人创建的目录或文件均可进行 "删除/更名/搬移" 等动作。』 不过,如果将 A 目录加上了 SBIT 的权限项目时, 则甲只能够针对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人的文件。

SUID/SGID/SBIT 权限配置

假设要将一个文件权限改为『-rwsr-xr-x』时,由於 s 在使用者权限中,所以是 SUID ,因此, 在原先的 755 之前还要加上 4 ,也就是:『 chmod 4755 filename 』来配置!此外,还有大 S 与大 T 的产生喔!参考底下的范例啦!

[root@www ~]# cd /tmp

[root@www tmp]# touch test                  <==创建一个测试用空档

[root@www tmp]# chmod 4755 test; ls -l test <==加入具有 SUID 的权限

-rwsr-xr-x 1 root root 0 Sep 29 03:06 test

[root@www tmp]# chmod 6755 test; ls -l test <==加入具有 SUID/SGID 的权限

-rwsr-sr-x 1 root root 0 Sep 29 03:06 test

[root@www tmp]# chmod 1755 test; ls -l test <==加入 SBIT 的功能!

-rwxr-xr-t 1 root root 0 Sep 29 03:06 test

[root@www tmp]# chmod 7666 test; ls -l test <==具有空的 SUID/SGID 权限

-rwSrwSrwT 1 root root 0 Sep 29 03:06 test


大写S、S、T表示空的,即没有该权限

你可能感兴趣的:(Linux学习日记-文件与目录管理(四))