1、linux文件属性权限简介
生活中很多时候,都是你拥有什么权限,就享受什么待遇。就像你充值会员,享受成长加速一样,我们系统中的文件也是针对不同对象,设定了相应的操作权限的。linux把访问对象定义为三类:owner、group、other。给予他们的权限也细分为三种:r、w、x(read、write、eXecute)。
文件的权限位分为三段表示,每一段对应上述的一位对象, -rwx-rw-r-- 第一个-代表文件的类型为普通文件,rwx表示文件所属者拥有该文件的所有权限,rw-表示文件所属组拥有对该文件读写的操作,r- -表示其他人(非主人,非组人),只拥有读的权限。这些权限对于目录文件和普通文件的意义是有差别的,这里主要体现在了x执行权限上。对目录来说x权限是基础权限,有了它可以进入目录下进一步操作,缺了它啥也干不了。
对于文件来说,文件拥有x权限是很危险的事情,一不小心就会酿成大错。所以目录的最大权限就是7即rwx,而文件的最大权限是6即rw-.这三种权限可以根据需要来灵活搭配,下面我们来具体介绍一下权限的作用:
(1)权限对普通文件的意义
r:可读取文件的内容
w:可以修改文件的内容
x:可以执行该文件(主要体现在执行脚本,不能单独使用,执行过程是从第一行执行到最后一行,所以要有r权限)
(2)权限对目录文件的意义
r - - :只能查看目录的文件列表,不能访问文件,也不能cd目录
-w-:单独使用对目录没意义,必须配合x权限才能生效
--x:可以cd,不能ls,可以访问目录中你所知道的文件,x是目录的基础权限
r-x :可以进入目录,且可以长列出
wx:能进入,能创建、删除,不能ls。用户能否删除文件与文件自身权限无关,与文件所在目录有关。
rw-相当于只有r
rwx 最高权限,支持对该文件所有操作
--- 没有权限
看了这么多组合,是不是有点蒙圈?来喝一口益生菌消化一下吧!
1) 门都进不去,更不要说看清和搬东西了。但是你可以从外面把房子给拆了,前提是小区门岗不管你(有文件所在目录的权限权限),
2) r仅仅是显示目录中的文件列表,有了x才能进入目录(如果只有一个x权限,哪怕你看不见吃的,只要你能摸到依然可以吃),有rx眼就能仔细看,有wx手就能修改破坏。
可能大家发现了,权限的表示方式有两种:一种是模式法、一种是数字法
目录的最大权限用数字法表示 777 用模式法表示就是 rwxrwxrwx
文件的最大权限用数字法表示 666 用模式法表示就是rw-rw-rw-
来放点干货
修改文件的属主和属组为指定用户、指定组
chown [uname]:[gname] filename
或chown [uname].[gname] filename
修改文件的属主为指定用户,属组为该用户的主要组
chown [uname]: filename
只修改属主
chown [uname] filename
只修改属组
chown :[gname] filename
chgrp [gname] filename
递归修改d1下的所有文件的所属人、所属组
chown -R mage:bin d1
2、权限的修改
数字法修改权限:
chmod 764 filename 修改文件权限为rwxrw-r- -
模式法修改权限:
chmod [ugoa] [+-=] [rwx] filename
选项中:u代表所属人、g代表所属组、o代表其他人、a代表所有人
eg:chmod u+x filename 为文件或目录的所属人加上执行权限
chmod o= filename 为文件其他人的权限重新赋值,- - -表示什么权限都没有。使用这种方法会覆盖之前的权限
chomd g-x filename 为文件所属组去除执行权限
chmod a=rw filename 为文件ugo给予rw权限
chmod a-x filename 为文件ugo去除执行权限
-R 递归修改权限
-X 仅为目录添加执行权限(这种方法就是为了避免递归修改x权限时普通文件也给加上执行权限)
chmod –R a=rwX dir2 给dir2下的目录赋予执行权限,文件赋予rw权限
chmod --reference a b b参考a的权限
3、默认权限
创建文件时会发现,我们没有给文件赋权限,它也会有一些权限,即默认权限。默认权限怎么看呢?
创建文件和复制文件时默认权限是不同的,具体如下:
(1)创建文件时:最大权限-umask=默认权限
(2)复制文件时:复制前权限-umask=复制后的权限
注:目录最大权限 777, 文件的最大权限666
设umask为:002 ,默认权限 775 664
默认文件是不可以有执行权限的,权限减到奇数就会加一(只针对文件的权限计算)
eg:666-345=(3+1)2(1+1)=422=-r---w--w-
umask 查看当前的uamsk值
umask -p 打印当前umask值
4、特殊权限
linux文件系统上的特殊权限:SUID,SGID,Stick
通常情况下,用户是不能直接访问文件的,需要通过系统提供的二进制程序,来对文件进行访问。我们都知道文件是有访问权限的,那么二进制程序有么?当然,它也是有权限的。
通过二进制程序访问文件的步骤如下:
(1) 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有权限
(2) 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
(3) 进程访问文件时的权限,取决于进程的发起者
SUID和SGID这两种特殊权限相当于发起人在启用进程时,进程的所属临时调用了二进制程序的所属,而不是发起人的所属。这就像是身份的临时转换,本来我是路人,是不可以进房间的,但是我把它租下来了,房东给我了一把钥匙,我就能进入房间了。身份也由路人转为了租客,当租期满后(进程结束)又变为路人。
(1)SUID和SGID作用在二进制的可执行程序上时:
SUID发起人调用二进制文件,身份临时转为程序的所属人
chmod u+s filename
-s
SGID 发起人调用二进制文件,身份临时转为程序的所属组
Chmod g+s filename
-s
(2)SGID作用在目录时
功能:新建文件的所属组自动继承父目录的所属组
(3)sticky 粘滞位
作用在目录上才有意义
chmod o+t filename
-t
功能:只有自己(文件所属人)才能删除自己的文件。覆盖范围仅是在增加了粘滞位的目录下的一级子目录,不会影响二级、三级..等目录。
5、例题
(1)刘关张,未来创建的文件/目录,其他人没有任何权限,而彼此之间可以相互读写。(三人的主组不相同),且不能删除别人创建的文件。
图1-1,创建三个用户,使他们共属于shuguo组(附属组),主组为各自的名称的组
图1-2,注释见图
图1-3,注释见图
图1-4,注释见图
图1-5,注释见图
图1-6,注释见图
图1-7,注释见图
图1-8,注释见图