一,文件默认权限:umask

     查询用户创建新的文件或者目录的默认权限:

[root@localhost ~]# umask
0022
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx

若使用者创建为『文件』则默认『没有可运行( 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 [+-=][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 才能配置


三、文件特殊权限: SUID, SGID, SBIT
  文件权限除了rwx  还有其他的特殊权限( s 跟 t )
   [root@localhost ~]# ls -l /usr/bin/passwd  ;ls -ld /tmp
-rwsr-xr-x. 1 root root 30768 Feb 17  2012 /usr/bin/passwd
drwxrwxrwt. 5 root root 4096 Jul 26 14:43 /tmp

1)Set UID
  当 s 这个标志出现在文件拥有者的 x 权限上时,例如刚刚提到的 /usr/bin/passwd 这个文件的权限状态:『-rwsr-xr-x』,此时就被称为 Set UID,简称为 SUID 的特殊权限。 那么SUID的权限对於一个文件的特殊功能是什么呢?基本上SUID有这样的限制与功能:
 
    SUID 权限仅对二进位程序(binary program)有效;
    运行者对於该程序需要具有 x 的可运行权限;
    本权限仅在运行该程序的过程中有效 (run-time);
    运行者将具有该程序拥有者 (owner) 的权限。
另外,SUID 仅可用在binary program 上, 不能够用在 shell script 上面!这是因为 shell script 只是将很多的 binary 运行档叫进来运行而已!所以 SUID 的权限部分,还是得要看 shell script 呼叫进来的程序的配置, 而不是 shell script 本身。当然,SUID 对於目录也是无效的~这点要特别留

例:/usr/bin/passwd 用户可以自己修改自己密码
     bird 对於 /usr/bin/passwd 这个程序来说是具有 x 权限的,表示 vbird 能运行 passwd;
     passwd 的拥有者是 root 这个帐号;
     vbird 运行 passwd 的过程中,会『暂时』获得 root 的权限;
     /etc/shadow 就可以被 vbird 所运行的 passwd 所修改。

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

SUID 不同的是,SGID 可以针对文件或目录来配置!如果是对文件来说, SGID 有如下的功能:
   SGID 对二进位程序有用;
   程序运行者对於该程序来说,需具备 x 的权限;
   运行者在运行的过程中将会获得该程序群组的支持!

 事实上 SGID 也能够用在目录上,这也是非常常见的一种用途! 当一个目录配置了 SGID 的权限后,他将具有如下的功能:
    使用者若对於此目录具有 r 与 x 的权限时,该使用者能够进入此目录;
    使用者在此目录下的有效群组(effective group)将会变成该目录的群组;
    用途:若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同。

3)Sticky Bit
  这个 Sticky Bit, SBIT 目前只针对目录有效,对於文件已经没有效果了。 SBIT 对於目录的作用是:
    当使用者对於此目录具有 w, x 权限,亦即具有写入的权限时;
    当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件
    果将 A 目录加上了 SBIT 的权限项目时, 则甲只能够针对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人的文件。

 
    以 root 登陆系统,并且进入 /tmp 当中;
    touch test,并且更改 test 权限成为 777 ;
    以一般使用者登陆,并进入 /tmp;
    尝试删除 test 这个文件!

SUID/SGID/SBIT 权限配置
 
    4 为 SUID
    2 为 SGID
    1 为 SBIT
    怎么会出现大写的 S 与 T 呢?不都是小写的吗? 因为 s 与 t 都是取代 x 这个权限的,但是你有没有发现阿,我们是下达 7666 喔!也就是说, user, group 以及 others 都没有 x 这个可运行的标志( 因为 666 嘛 ),所以,这个 S, T 代表的就是『空的』啦


    file ~/.bashrc
    file /usr/bin/passwd