一、权限的分类
普通权限
访问控制列表(ACL)
特殊权限
隐藏权限
二、普通权限
1、权限的赋予应遵循的原则
(1)可给可不给的不给
(2)赋权仅给予最恰当的权限
(3)对于不确定的权限应不赋权
(4)如确需赋权可给予最小权限
2.权限的识别
![]() |
|
3、Linux 的属主、数组、其他人解释
(1)属主(u):即文件 / 目录的主人
(2)属组(g):即文件 / 目录的主人所在组对其资源权 限
(3)其他人(o):即非属主、数组对其资源的权限
(4)所有人(a):即属主、属组、其他人
4、命令:chmod
命令:chmod 功能:改变用户/权限 语法格式:#chmod [选项] <目标> 选项:-R、-v、-f -R: 递归改变目标权限 -v: 改变权限时候显示详细动作 -f: 忽略在修改文件时的错误信息 | 操作运算符 : +: 增加某个权限 -: 去除某个权限 =: 只拥有某个权限 |
示例1:对/tmp/d1/f1文件的权限,属主增加rw,属组增加rw,其他人增加r权限 # chmod u+rw,g+rw,o+r f1 示例2:对/tmp/d1/f2文件的权限,属主增加rw,属组增加rw,其他人增加r权限 # chmod 664 f2 |
三、访问控制列表
对ACL而言就是设定某个特定的账户或组对某个文件/目录的操作权限。
1、dumpe2fs /dev/sda |grep option ——查看是否支持ACL权限
eg:显示Default mount options:user-xattr acl
2、查看本地文件的ACL的权限——getfacl
语法格式:getfacl [选项] 目标
getfacl f1
3、修改本地ACL权限
语法格式:setfacl [选项] 目标
常用命令:-m,-x,-b,-R,-d
(1)-m 设定文件ACL权限
(2)-x 删除文件/目录ACL规则
(3)-b 删除所有用户的ACL规则。(图中借用了-R递归)
(4)-d 设定默认的ACL,子目录中传递权限(只对目录有效)
四、特殊权限
1、set位
1>分类
SUID (4)<让其他用户以属主身份执行二进制可执行文件>
SGID (2)<让其他用户以属组身份执行二进制可执行文件>
SBIT (1)<确保用户仅可以删除自己的文件>
2>规则
SUID:①仅对二进制可执行程序生效
②普通用户对该文件有执行权限
③普通用户在执行该程序时身份临时切换为该程序所有者身份
④身份只在执行过程中有效,执行完恢复
举例:所有用户都可修改自己的密码,但/etc/shadow 文件的权限为000,也就是说除了root外其他用户不能对其进行查看操作。这里就用到了SUID,我们查看passwd 的属性
注意在所有者部分有个S,这就意味这赋予了passwd命令SUID权限,也就是说普通用户在使用passwd命令的时候临时”变成”root对文件进行修改
SGID:规则和SUID基本相同,在第3点变成切换成所属组身份
作用1;让执行者临时拥有属组的权限
作用2:在对设置了SGID目录下创建的目录/文件自动继承该目录的所属组
举例:使用locate命令访问mlocate.db
从图中可看出,mlocate.db文件只有所有者和所属组可读
当普通用户(不属于slocate组)执行locate命令时,因为locate命令设置了SGID权限,则普通用户临时具有所属组的身份,继而可以访问mlocate.db文件
SBIT:避免用户之间删除文件,只能删除自己的文件
举例:创建一个目录赋予777最大权限,在目录下创建文件
给赋予SBIT权限chmod o+t dd/ ,切换用户尝试删除a b c
显示被拒绝。这就是SBIT的效果
五、隐藏权限
命令:chattr
功能:更改文件/目录属性
格式:charrt <选项> 《属性》 《目标》
属性:
a:可追加数据,但无法修改 删除 重命名
i:只能读取数据
示例:
将文件f1增加a属性,并测试 #chattr +a f1
取消a属性 #chattr -a f1
将文件增加i属性 #chattr +i f1 取消 -i
六、su/sudo
1、su <切换当前用户>
su - user:完全切换
su user:部分切换<环境变量没有切换>
2、sudo <让普通用户根据配置文件临时获得root权限>
只有root用户才可以进行编辑
sudo的配置文件:/etc/sudoers #visudo打开,找到98行:
三种配置方式
①配置单用户
参照98行:
User1 ALL=(ALL) !/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root
表示user1用户可以以ALL身份(包括root)执行后面的命令
当user1以root身份执行命令的时候:
首先不能修改root的密码!/usr/bin/passwd
其次可以修改任何用户的密码(排除root密码!/usr/bin/passwd root)
②配置用户组
参照105行:
%wheel ALL=(ALL) !/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root
此命令表示在wheel组中的成员都可以任何身份执行后面的命令,设置完成后在99行前加##(##
表示是注释此行操作)
%wheel :代表某个用户组
③别名设置(必须大写主机别名、用户别名、命令别名)
设置用户别名:User_Alias NAME = user1,user2 【21行】
设置命令别名:Cmnd_Alias CMD = /usr/sbin/adduser,!/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root 【46行】
设置命令:NAME ALL=(ALL) CMD 【100行】
七、chow
命令:chown
功能:改变文件 / 目录的属主和 ( 或 ) 属组
语法格式:chown [ 选项 ] [ 属主 . 属组 ] < 目标 >
选项:
-R: 递归
-v: 执行时显示详细信息
示例:
- 改变文件属主
1、改变文件属组
2、改变目录属主与属组
3、改变目录、文件以及子目录、文件的属主与属组。
八、chgrp
命令:chgrp
功能:改变文件/目标的属组
语法格式:chgrp [选项] [属组] <目标>
选项:
-R: 递归
-v: 执行时显示详细信息