目录:权限介绍
一、修改权限命令
1.修改读写执行权限
数字权限
2.修改所有者
3.修改所属组
二、ACL权限
1.ACL权限简介与开启
2.ACL权限查看与设定
3.ACL最大有效权限与删除
4.ACL权限默认与递归
三、文件特殊权限
1.SetUID
2.SetGID
3.Sticky BIT
四、文件系统属性chattr权限
修改 chattr
查看 lsattr
一、权限介绍
Linux中的权限位共有10位,每一位都代表着不同的含义。
第1位 - 文件类型 -:普通文件 d:目录文件 l:软链接文件 b:块设备文件。存储设备都是这种文件,如分区文件/dev/sda1 c:字符设备文件。输入设备一般都是这种文件类型 键盘鼠标
第2-4位:表示文件所有者(用u表示)的权限,包括读(r)、写(w)和执行(x)权限。
第5-7位:代表文件所属组(用g表示)的权限,同样使用r、w、x表示。
第8-10位:代表其他人(用o表示)的权限,也使用r、w、x表示。
--如图所示--
最左边的就是权限
此外,Linux中的权限还可以通过数字来表示,其中:
4代表读(r)权限;
2代表写(w)权限;
1代表执行(x)权限。
二、修改读写执行权限
语法:chmod [选项] 权限模式 文件名 -R 递归设置权限,也就是给子目录中的所有文件设定权限
用户身份: u(所有者) g(所属组) o(其他用户) a(代表全部身份)
赋予方式: +(添加权限) -(去除权限) =(设置权限)
权限: r(读取权限) w(写权限) x(执行权限)
例:给用户添加执行权限
例:给组添加写入权限
例:给其他用户添加写入权限
如图所示 权限添加完成
---------------------------------修改读写执行权限(数字权限)-------------------------------------------------
基本权限数字
4 代表r权限(读)
2 代表w权限(写)
1 代表x权限(执行)
0 无任何权限
所有者权限 所属组权限 其他用户权限
644:所有者(读写) 所属组(读) 其他(读)
755:所有者(读写执行) 所属组(读执行) 其他(读执行)
777:所有者(读写执行) 所属组(读写执行) 其他(读写执行)
例:给文件file1.txt赋予644权限
如图所示 赋予权限成功
rw= 4+2
r=4
r=4
----------------------------------------------------修改所有者---------------------------------------------------------------
语法 chown [选项] 所有者:所属组 文件或目录
-R 递归设置权限
例:将my文件夹的所有者改成root
chown –R root:root my
如图所示 已经将所有者改为root
---------------------------------------------------------修改所属组---------------------------------------------------------chgrp 所属组 文件或目录
语法:chgrp 【选项】 文件/目录
-h
:如果目标是一个链接文件,则更改链接文件的所属组,而不是链接的文件本身。
-R
:递归更改目录及其下所有子目录和文件的组所有权。
例:更改test目录下的所有文件的组为mqy
chgrp -R mqy test
-------------------------------------------------umask-----------------------------------------------------------------------
获取umask值
umask目录的默认权限
\
umask文件的默认权限
为了验证以上所以测试是否和默认权限一致
例:创建一个free目录和一个ABC.txt文件 查看是否与默认值一致
mkdir free --创建free空目录
ll --查看权限
touch ABC.txt --创建ABC.txt文件
ll --查看权限
证明文件和目录权限 和如图一致
----------------------------------------------------------ACL-----------------------------------------------------------------
ACL权限是为了解决所有者,所属组,其他人三个权限用户身份分配不足的问题 普通权限只能指定u/g/o的权限类型,可以借助于acl特别指定某位用户的权限
ACL access control list 限制用户对文件的访问 访问 控制 列表
ACL是UGO的补充,或者说是加强版
如何开启分区ACL权限
vim /etc/fstab
在xfs后面的 defaults加,acl 1 1
注:Linux现在一般所有分区全部默认开启ACL,不用修改配置
--------------------------------------------------查询acl权限----------------------------------------------------------- getfacl 文件名 查看ACL命令 查看ACL权限
-----------------------------------------------修改acl权限---------------------------------------------------------
setfacl [选项] 文件名
-m:设定ACL权限
-x:删除指定的ACL权限
-b:删除所有的ACL权限
-d:设定默认的ACL权限
-k:删除默认ACL权限
-R:递归设定ACL权限
例:给其他用户名字为mqy的添加free目录的所有权限
setfacl -m u:mqy:rwx free
例:给其他用户名字为mqy的删除free目录的所有权限
setfacl -x u:mqy free
-----------------------------------ACL权限最大有效权限与删除----------------------------------------------------
getfacl 目录
获取目录的权限
更改free目录权限为rx
----------------------------------------------------权限的删除--------------------------------------------------------------
setfacl -x u:用户名 文件名 删除指定用户的ACL权限
setfacl -x g:组名 文件名 删除指定用户组的ACL权限
先获取free目录的权限
例:删除用户为mqy在free目录的权限
发现用户mqy没有了
----setfacl -b 文件名 会删除文件的所有ACL权限
删除所有权限之后查询 发现什么都没有了
------------------------------------------ACL权限默认与递归--------------------------------------------------------
递归ACL权限
递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限
命令: setfacl -m u:用户名:权限 -R 目录名 -R必须在这个位置
默认ACL权限
默认ACL权限的作用是如果给父目录设定默认ACL权限,那么父目录中所有新建的子文件和子目录都会继 承父目录的ACL权限
命令: setfacl -m d:u:用户名:权限 目录名 可以在权限后面加-R来进行递归
二、文件特殊权限
SetUID
针对文件所设置的一个特别权限 功能:使调用文件/程序的用户,临时具备属主的能力 只有可以执行的二进制程序才能设定SUID权限,普通文件或者目录没有意义
注:文件权限带有s才是有SUID权限的文件
所以 如何设置SUID权限呢?
设置SetUID
chmod 4755 文件名 4代表SUID权限
chmod u+s 文件名
4755 4代表SetUID,跟所有者有关
2755 2代表SetGID,跟所属组有关 1755
1代表SetBIT权限,跟其他人有关
----------------------------------------------------取消SetUID-------------------------------------------------------
chmod 755 文件名
chmod u-s 文件名
如果用户对文件没有执行权限,就会报错,此时给他加特殊权限,就会显示大S
权限取消了
SetGID
SetGID针对文件
只有可以执行的二进制程序才能设定SGID权限 命令执行者要对该程序拥有x(执行)权限 命令执行在执行程序的时候,组身份升级为该程序文件的所属组SetGID权限同只在该程序执行过程中有 效,也就是说组身份改变只在程序执行过程中有效
设定SetGID的方法
chmod 2755 文件名 2代表SGID权限
chmod g+s 文件名
取消SetUID的方法
chmod 755 文件名
chmod g-s 文件名
Sticky BIT
粘着位目前只对目录有效
设定粘着位的方法
chmod 1755 目录名
1代表粘着位
chmod o+t 目录名
取消粘着位的方法 chmod 755 目录名
chmod o-t 目录名
带有t就是代表粘着位
文件系统属性chattr权限
修改:
chattr [+ - =] [选项] 文件名或者目录名
+:增加权限 -:删除权限 =:等于某权限
i:如果对文件设置i属性,那么不允许对文件进行删除,改名,也不能添加和修改数据;
如果对目录设置 i属性,那么只能修改目录下文件的数据,但是不允许建立和删除文件
a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除或者修改数据;
如果对目录设置 a属性,那么只允许在目录中建立和修改文件,但是不允许删除文件
例:给文件file1设置i属性
尝试删除
因为设置file1的i权限 所以不能删除
查 看 :lsattr
语法 lsattr [选项] 文件名
-a:显示所有文件和目录
-d:若目标是目录,仅列出目录本身的属性,而不是子文件的