linux 文件和目录的默认权限和隐藏权限 chattr lsattr SUID SGID SBIT file

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 来配置文件案时,如果该文件被删除了,则数据内容其实还存在磁盘中,可以使用来救援该文件喔!

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

注意 2:xfs 文件系统仅支援 AadiS 而已 范例:请尝试到/tmp 底下建立文件,并加入 i 的参数,尝试删除看看。

[root@study ~]# cd /tmp

[root@study tmp]# touch attrtest <==建立一个空文件

[root@study tmp]# chattr +i attrtest <==给予 i 的属性

[root@study tmp]# rm attrtest <==尝试删除看看

rm: remove regular empty file `attrtest'? y

rm: cannot remove `attrtest': Operation not permitted

# 看到了吗?呼呼!连 root 也没有办法将这个文件删除呢!赶紧解除设定!

范例:请将该文件的 i 属性取消!

[root@study tmp]# chattr -i attrtest

 

 

lsattr (显示文件隐藏属性)

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

选项与参数:

-a :将隐藏文件的属性也秀出来;

-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;

-R :连同子目录的数据也一并列出来!

[root@study tmp]# chattr +aiS attrtest

[root@study tmp]# lsattr attrtest --S-ia---------- attrtest

 

 

Set UID

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

基本上 SUID 有这样的限制与功能: 

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

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

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

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

 

 

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

如果是对文件来说, SGID 有如下的功能: 

SGID 对二进制程序有用; 

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

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

 

当一个目录设定了 SGID 的权限后,他将具有如下的功能: 

用户若对于此目录具有 r 与 x 的权限时,该用户能够进入此目录; 

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

 

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

 

 

Sticky Bit

这个 Sticky Bit, SBIT 目前只针对目录有效,对于文件已经没有效果了。

SBIT 对于目录的作用是: 

当用户对于此目录具有 w, x 权限,亦即具有写入的权限时; 

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

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

 

4 为 SUID 

2 为 SGID 

1 为 SBIT 

假设要将一个文件权限改为『-rwsr-xr-x』时,由于 s 在用户权力中,所以是 SUID ,因此, 在原 先的 755 之前还要加上 4 ,也就是:『 chmod 4755 filename 』来设定!此外,还有大 S 与大 T 的 

也可以透过符号法来处理喔!其中 SUID 为 u+s ,而 SGID 为 g+s ,SBIT 则是 o+t 啰!来看看如下的范例 

# 设定权限成为 -rws--x--x 的模样:
[root@study tmp]# chmod u=rwxs,go=x test; ls -l test -rws--x--x 1 root root 0 Jun 16 02:53 test 

# 承上,加上 SGID 与 SBIT 在上述的文件权限中! [root@study tmp]# chmod g+s,o+t test; ls -l test -rws--s--t 1 root root 0 Jun 16 02:53 test 

 

 

file,观察文件类型

ile ~/.bashrc
/root/.bashrc: ASCII text <==告诉我们是 ASCII 的纯文本档

posted @ 2019-02-21 18:11  猫不会游泳却爱吃鱼  阅读(221)  评论(0编辑  收藏  举报