除了基本r, w, x权限外,在Linux的Ext2/Ext3文件系统下,我们还能够配置其它的系统隐藏属性, 这部份可使用 chattr来配置,而以 lsattr 来查看。

 

 文件默认权限:umask

umask 就是指定眼下使用者在创建文件或文件夹时候的权限默认值。

# umask
0022             <==与一般权限有关的是后面三个数字!
# umask -S
u=rwx,g=rx,o=rx

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

在默认权限的属性上,文件夹与文件是不一样的。

默认的情况例如以下:

若使用者创建为文件,则默认没有可执行( x )权限。亦即仅仅有 rw 这两个项目。也就是最大为 666 分,默认权限例如以下:
-rw-rw-rw-

若使用者创建为文件夹,则因为 x 与能否够进入此文件夹有关。因此默觉得全部权限均开放,亦即为 777 分。默认权限例如以下:
drwxrwxrwx

要注意的是,umask 的分数指的是该默认值须要减掉的权限。

假设以上面的样例来说明的话,由于 umask 为 022 ,所以 user 并没有被拿掉不论什么权限。只是 group 与 others 的权限被拿掉了 2 (也就是 w 这个权限)。那么当使用者:

创建文件时:(-rw-rw-rw-)- (-----w--w-) ==> -rw-r--r--
创建文件夹时:(drwxrwxrwx)- (d----w--w-) ==> drwxr-xr-x

文件隐藏属性:

chattr (配置文件隐藏属性)

要先强调的是,底下的chattr命令仅仅能在Ext2/Ext3的文件系统上面生效, 其它的文件系统可能就无法支持这个命令了。

# chattr [+-=][ASacdistu]文件或文件夹名称
选项与參数:
+   :加入某一个特殊參数。其它原本存在參数则不动。

- :移除某一个特殊參数。其它原本存在參数则不动。 = :配置一定,且仅有后面接的參数 A :当配置了 A 这个属性时,若你有存取此文件(或文件夹)时,他的存取时间 atime 将不会被改动。可避免I/O较慢的机器过度的存取磁碟。

这对速度较慢的计算机有帮助 S :一般文件是非同步写入磁碟的,假设加上 S 这个属性时。当你进行不论什么文件的改动,该更动会同步写入磁碟中。

a :当配置 a 之后,这个文件将仅仅能加入数据。而不能删除也不能改动数据。仅仅有root 才干配置这个属性。 c :这个属性配置之后,将会自己主动的将此文件压缩,在读取的时候将会自己主动解压缩, 可是在储存的时候,将会先进行压缩后再储存 d :当 dump 程序被执行的时候。配置 d 属性将可使该文件(或文件夹)不会被 dump 备份 i :他能够让一个文件不能被删除、改名、配置连结也无法写入或新增数据!

』对於系统安全性有相当大的助益。

仅仅有 root 能配置此属性 s :当文件配置了 s 属性时,假设这个文件被删除,他将会被全然的移除出这个硬盘 空间,所以假设误删了。全然无法救回来了 u :与 s 相反的,当使用 u 来配置文件时,假设该文件被删除了,则数据内容事实上还 存在磁碟中,能够使用来救援该文件

将该文件的 i 属性取消

# chattr -i attrtest

lsattr (显示文件隐藏属性)

# lsattr [-adR] 文件或文件夹
选项与參数:
-a :将隐藏档的属性也秀出来;
-d :假设接的是文件夹。仅列出文件夹本身的属性而非文件夹内的档名;
-R :连同子文件夹的数据也一并列出来

# chattr +aij attrtest
# lsattr attrtest
----ia---j--- attrtest

使用 chattr 配置后,能够利用 lsattr 来查阅隐藏的属性。只是, 这两个命令在使用上必需要特别小心。否则会造成非常大的困扰。

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

# ls -ld /tmp ; ls -l /usr/bin/passwd
drwxrwxrwt 7 root root 4096 Sep 27 18:23/tmp
-rwsr-xr-x 1 root root 22984 Jan  7  2007/usr/bin/passwd

Set UID

当 s 这个标志出如今文件拥有者的 x 权限上时,比如刚刚提到的 /usr/bin/passwd 这个文件的权限状态:『-rwsr-xr-x』。此时就被称为 Set UID,简称为 SUID 的特殊权限。

基本上SUID有这种限制与功能:

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

执行者对于该程序须要具有 x的可执行权限;

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

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


                                                                       SUID程序执行的过程示意图

另外。SUID 仅可用在binary program 上, 不可以用在 shell script 上面。这是由于 shell script 仅仅是将非常多的 binary 执行文件叫进来执行而已。所以 SUID 的权限部分,还是得要看shell script 呼叫进来的程序的配置, 而不是 shell script 本身。当然,SUID 对于文件夹也是无效的。

Set GID

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

SGID 对二进位程序实用;与 SUID 不同的是,SGID 能够针对文件或文件夹来配置。假设是对文件来说, SGID 有例如以下的功能:

程序执行者对于该程序来说。需具备 x 的权限;

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

使用者若对于此文件夹具有 r 与 x 的权限时。该使用者可以进入此文件夹;

使用者在此文件夹下的有效群组(effectivegroup)将会变成该文件夹的群组;

用途:若使用者在此文件夹下具有w 的权限(能够新建文件),则使用者所创建的新文件,该新文件的群组与此文件夹的群组同样。

Sticky Bit

这个 Sticky Bit,SBIT 眼下仅仅针对文件夹有效,对文件已经没有效果了。

SBIT 对文件夹的作用是:

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

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

换句话说:当甲这个使用者于A文件夹是具有群组或其它人的身份。而且拥有该文件夹 w 的权限, 这表示甲使用者对该文件夹内不论什么人创建的文件夹或文件均可进行 "删除/更名/搬移" 等动作。只是,假设将 A 文件夹加上了 SBIT 的权限项目时。 则甲仅仅可以针对自己创建的文件或文件夹进行删除/更名/移动等动作,而无法删除他人的文件。

SUID/SGID/SBIT 权限配置

数字型态更改权限的方式为三个数字的组合, 那么在这三个数字之前再加上一个数字的话,最前面的那个数字就代表这几个权限了。

4 为 SUID

2 为 SGID

1 为 SBIT

如果要将一个文件权限改为-rwsr-xr-x时,因为s 在使用者权限中,所以是 SUID ,因此。 在原先的 755 之前还要加上 4 。也就是: chmod 4755 filename 来配置。

观察文件类型:file

假设你想要知道某个文件的基本数据。就能够利用 file 这个命令来查看。

# file ~/.bashrc
/root/.bashrc: ASCII text  <==告诉我们是 ASCII 的纯文字档