目录
1.3、chown(改所有者/所属组) chgrp(改所属组)-à身份修改
1.5、特殊权限位(SUID/SGID/Sticky bit)
2.2.1、针对文件:(后面的rwx也可以替换成八进制数字0-7)
1、文件权限相关
1.1、相关概念
è定义:一个用户(或组)针对一个目录或者文件具备什么样的操作权限。
è身份:一个用户对于一个文件或者目录而言,是一个什么样的角色。
è身份分类:
文件的所有者(拥有者)owner
所属的同组用户 group
其他人 other
è权限:
r: Readable 可读——能够读取文件或者目录内容的权限,用八进制数字4表示
w:Writeable 可写——能够修改文件或者目录的内容,用八进制数字2表示
x:Executable ——针对文件而言,x 叫可执行;针对目录而言,x是否能够成为一个用户的工作目录(简而言之就是能不能cd切换进去),用八进制数字1表示
tips:
- root用户是超级管理员,但root组是普通组
- 创建一个新文件或目录时,这个文件或目录的拥有者和拥有组,分别是创建这个文件的用户和这个用户的主要组。
- 对于文件的权限设定:
- r表示可读取文件内容
- w 表示可修改文件内容
- x 表示文件可执行
- 对于目录的权限设定:
r表示可用ls命令查看目录下的文件列表
w表示可在目录下创建、删除文件
x表示可以通过cd命令进入目录
1.2、chmod命令(权限修改)
记号法:rwx
数值法:r→4 w→2 x→1,每个位置的数字为赋予的权限和(八进制)。
1.3、chown(改所有者/所属组) chgrp(改所属组)-à身份修改
>> 改所有者 chown test1
>> 改所属组 chown :test1 = chgrp test1 = chown .test1
>> 同时修改所有者和所属组 chown test1:test1 = chown test1.test1
>> 递归修改(对目录生效)chown/chgrp -R
1.4、默认权限和反掩码umask
默认权限
一个目录的创建权限等于:满权限(777)-umask值,即777-022=755
一个文件的创建权限等于:满权限(666)-umask值,即666-022=644
注意:基于系统安全考虑,Linux 系统默认文件一开始不能有执行权限。
反掩码
>>为何创建文件夹时权限755,创建文件时权限644?是因为有一个默认属性在起作用,即umask(反掩码)
>>root用户和普通用户的反掩码值不一样的(查看/etc/profile文件)
UID >=200:0002
UID < 200:0022
>>修改umask值:
a、临时修改:umask XXX
b、永久修改:vim /etc/profile,修改后需要source /etc/profile之后永久生效。
1.5、特殊权限位(SUID/SGID/Sticky bit)
1.5.1、SUID
普通用户能不能修改自己的密码?(能)
修改密码,最终是修改哪个文件(/etc/shadow)
既然无权限,普通用户是怎样把密码写进去的呢?这里要看看普通用户修改密码执行的是哪个二进制文件(passwd)。
普通文件:rwx 带SUID的文件:rws
SUID:当一个s权限出现在文件所有者的x位上
作用:当一个普通用户(如student)去执行一个带有SUID的二进制文件(passwd),那么这个用户(student)在执行过程中,会暂时获得这个二进制文件(passwd)的拥有者(root)的权限,后续操作比如修改密码(passwd)的时候,会拿着(root)这个拥有
者的身份去执行,这个操作仅针对二进制文件生效。
原理:普通用户执行passwd → /etc/shadow → root身份去执行修改密码操作
Tips:如果是rwS,则本身文件是没执行权限的,仅仅获得了SUID功能而已,SGID同样适用。
操作方法:chmod u+s filename(chmod 4XXX filename)
1.5.2、SGID
SGID:当一个s权限出现在所属组的x位上
1)针对二进制文件:文件执行过程中获取文件属组的权限。
2)针对目录:
默认情况下,我们新建一个文件或目录的时候,它的属组是当前用户的初始组。
加上SGID之后,其下新建的目录及文件会继承该目录的所属组。
操作方法:chmod g+s filename/dirname(chmod 2XXX filename/dirname)
1.5.3、Sticky bit (粘滞位)
Sticky bit:仅对目录生效,若该目录其他人的执行权限出现了t,那么该目录下的子文件或目录,仅文件夹所有者及root用户能删除。
tips:
- 粘滞位权限只能针对目录设置,对于文件无效。
- 设置了粘滞位权限的目录,使用ls命令查看其属性时,其他用户权限处的“x”将变为“t”,原本没有x执行权限则会被写成"T"
操作方法:chmod o+t dirname(chmod 1XXX dirname)
超级权限数值法:suid 4XXX / sgid 2XXX / sticky bit 1XXX
1.5.4、写保护特殊权限(硬写保护+i和软写保护+a)
操作方法:
修改命令:chattr +i/+a filename
查询命令:lsattr filename
+i:硬写保护,只能读不能写,不能删除
+a:软写保护,只能读不能写,不能删除文件及其原有内容,但是能通过重定向追加更新内容。
2、使用ACL控制对文件的访问
使用的功能:文件访问控制列表(File Access Control List)
存在必要,原因之一默认的身份不够用
需求:
1、为了安全,不允许修改owner、group
2、 两组用户,group1 跟 group2 对文件的权限需要设置不同
2.1、查看(getfacl命令)
#getfacl filename/dirname
2.2、设置(setfacl命令)
参数解析:
-m, --modify-acl 更改文件的访问控制列表
2.2.1、针对文件:(后面的rwx也可以替换成八进制数字0-7)
2.2.2、针对目录
无递归情况下,FACL仅对当前目录生效:
若采用递归设置(加上-R参数),则对子目录以及子文件同样生效:
递归情况下:
-->使用 rwx:文件默认的mask(最大权限掩码)会根据所设的权限变成rwx
-->使用 rwX:默认的mask(最大权限掩码)不变,遵循默认权限设置(文件夹rwx,文件rw-)
对于特定组的权限设置:setfacl -m g:test4:rwx dir1
2.3、删除FACL记录
参数解释:
-x, --remove=acl 根据文件中访问控制列表移除条目
-b, --remove-all 删除所有扩展访问控制列表条目
10.3.1、删除单挑FACl记录(setfacl -x u/g:用户名/组名 文件名/目录名)
10.3.2、删除所有FACL记录( setfacl -b 文件名/目录名, -R代表递归)
10.4、mask(最大权限掩码)
命令格式
#setfacl -m m::权限 文件名/目录名
10.5、default(默认权限:仅针对于文件夹)
参数解释
-k, --remove-default 移除默认访问控制列表
#setfacl -Rm d:u/g:名字:权限 目录名
删除默认权限:setfacl -k 目录名