linux下的文件属性和文件权限

linux系统下,一切都是文件,不管是硬件设备接口还是磁盘,都是有一个个的文件组成,称为包。在此,linux下磁盘分区是很重要的,可以看我之前写的关于linux分区。现在我们来看看文件的权限和属性,在linux王国下,文件就像是linux国王的各个大臣,有什么权限,去干什么,能做什么不能做什么。就像财政大臣管理财务,叫他去做其他的就越权了。



如果你在终端 ls -l查看文件时,会出现如上图所示:

1. 文件种类:

[d] :代表的是一个目录

[-]:代表的是一个文件

[l]:代表的是连接文件(linkfile),如:lrwxrwxrwx  1 root root      23 9月   5 15:42 vtrgb -> /etc/alternatives/vtrgb,vtrgb就是连接文件,指向后面的源文件。

[b]:表示块(block)设备文件里面的可供存储的接口设备

[c]:表示字符(charactor)设备文件里面的串行端口设备,例如鼠标键盘等一次性读取连续的设备

[s]:数据接口文件,用在网络socket连接上

[p]:管道文件(FIFO pipe)解决多个程序同时访问一个文件所造成的错误问题,


2. 文件权限:

在文件权限里,存在三个重要的权限。第一,文件拥有者的权限;第二,同用户组的权限;第三,其他非同用户组的用户权限,

他们拥有的对文件的权限是读r(Read),写w(Write),执行x(eXecute)三种方式,在上面图片中,我们可以看到:rw-rw-rw-的文件权限,可以理解为:

前三个 rw- 是拥有者的权限:可读,可写,不可执行(因为它是一个空文件,没有任何的格式,所以没有任何的执行可言)

中间三个 rw- 是用户组的权限:可读,可写,不可执行

后面三个 rw- 其他用户的权限:可读,可写,不可执行

我们在新建文件的时候,系统会默认定义我们的文件属性。如果你和你同事是在同一个开发组,现在你新建的文件想让他也有duxie执行的权限,那该怎么办呢?很简单,通过更改文件属性与权限,如下:

chmod :改变文件的权限

(一). 数据类型改变文件权限, 定义三个属性的值:

r : 4

w : 2

x : 1

权限就是对应的值相加,如:

$ chmod 764 test3,得到:

-rwxrw-r-- 1 root  root   64 9月  13 21:13 test3

 (二). 符号类型改变文件的权限,定义用户身份:

u:user用户

g:group用户组

o:others其他用户

a:all代表以上三种

+:加入,如:$ chmod g+x test3

-:减去, $chmod g-x test3

=:直接设置权限, chmod u=rwx, g=rwx, o=rw test3


 修改完了文件权限和属性。。。。额,顺序是不是有点搞错了,不是的。接下来我们来看看怎么创建文件权限和属性,你会发现很简单的


3. 文件默认的权限:umask

你新建一个文件的时候,系统会默认文件的权限:

新建文件默认权限:-rw-rw-rw-,最大为666,只有rw,没有x执行

新建目录默认权限:drwxrwxrwx, 最大为777,满权限

touch test6(创建一个文件)

-rw-rw-rw- 1 root root   0 9月  13 22:45 test6
mkdir test7(创建一个目录)

drwxrwxrwx 2 root root 4096 9月  13 22:46 test7


如果你不满意linux系统给你默认的这个权限,你可以自定义默认权限:umask

查看umask值:$ umask

自定义umask值:$ umask 022

$ touch test8

-rw-r--r-- 1 root root    0 9月  13 22:54 test8

022的意思是在默认权限下需要减去的权限,也就是(-rw-rw-rw-)-(- --- -w- -w-) = (-rw-r--r--)


现在够烦了吧,这么多的文件属性和权限,应该够了吧,哈哈哈,你想多了,linux国王后宫佳丽何止三千。

我们来看看贵妃娘娘,文件隐藏属性:chattr和lsattr

4. chattr:设置文件的隐藏属性

chattr [+-=] [ASacdistu] 文件或者路径名称

参数:

+:单单增加一个特殊参数,其他不变

-:删除一个特殊参数

=:仅仅有后面的参数,其他参数删除


A:保持访问时间atime不变,可避免/O较慢的机器过度访问磁盘

S:同步写入文件,一般文件是异步写入的

a:只能在文件后面增加数据,不能删除或者修改(root或者sudo才能设置)

c:存储时自动压缩文件,读取时自动解压,对于大文件有用

d:当执行dump程序时,设置d可使文件或目录不会被dump备份

i:不死金身,设置i可使文件不能被删除,增加数据,修改数据等(root或sudo)

s:设置s,删除文件时文件将从磁盘永久删除

u:和s相反,可根据内容恢复文件


5. lsattr:显示文件隐藏属性

lsattr [-adR] 文件或目录

参数:

-a:将隐藏文件的属性也显示出来

-d:如果接的是目录,仅列出目录本身的属性

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


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

好烦人,现在先不讲,不为别的,就因为现在就够烦的了。。。(和后面的知识有关系,先放一放,后面讲到系统账号和process时再讲~~偷懒中。。因为感冒了,就把权限和属性赶紧补完,回去休息)




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章