权限管理
(!调用上一次的命令)
普通权限、特殊权限、ACL权限、隐藏权限
普通权限
所有者
所有组
其他人
- rw- r-- r-- . root root
类型 所有者权限 所有组权限 其他人权限 所有者是谁 所有组是谁
. 代表文件或目录带有“selinux”的安全上下文。
类型:
d 目录
- 普通文件
l 链接文件
b 块设备
c 字符设备
s sockets文件(接口文件,通信大多数用于网络之间)
p 数据传输文件 (通信,大多数用于进程之间)
字母表示权限
文件 目录
r 读 查看文件内容 查看列表
w 写 修改内容(增、删、改) 创建、删除文件|目录
x 执行 运行 能否进入该目录
大多数情况下,文件可以没有执行权限,但是目录一定要有执行权限
数字表示权限
r=4 w=2 x=1
修改权限chmod
语法:chmod [{u/g/o/a}{+/-/=}rwx][数字] 文件名|目录名
u=user g=group o=other a=all
chmod -R (递归处理)
修改所有者及所有组 chown
语法: chown 所有者:|.所有组 文件名|目录名
chown -R (递归处理)
单独修改所有组的一个命令chgrp -R (递归处理)
root默认创建文件权限是644 目录是755
普通用户-----------------664 ----775
umask 控制linux系统建立目录或文件的默认权限
root umask 022 777-umask 755 (目录)
666-umask 644 (文件)
普通用户 umansk 002 777-umask 775 (目录)
666-umask 664 (文件)
隐藏权限
linux ext2 ext3 ext4
lsattr(查看隐藏权限)/chattr(设置隐藏权限)
语法: chattr +/-/= 参数 filename
R 递归处理
A 访问时间atime不可被修改
S I/O同步
########a 只能添加数据,不能删除,(一般推荐日志使用)
c 文件存取时,是否压缩
d 不能被dump程序备份
################i 不能被删除、改名、设定连接关系、写入、新增内容(root用户都不行)
j 使用比较新的形式管理文件系统(日志格式)
s 保密性的删除文件
u 最大限度的保存数据
特殊权限
SUID :如果一个可执行(二进制文件)文件被设置SUID权限,那么不管是谁来执行此文件,系统都会认为是文件所有者在执行
SGID:如果一个可执行(二进制文件)文件被设置SGID权限,那么不管是谁来执行此文件,系统都会认为是文件所有组在执行
locate 查找,在数据库中查找,所以他比find要快,查找之前要更新数据库(updatedb)
数据库:/var/lib/mlocate/mlocate.db
eg: locate /etc/sh 搜索etc目录下以sh开头的文件
eg:locate ~/m 搜索用户家目录下以m开头的文件
eg:locate -i ~/m --------------------------- 并忽略大小写
STICKBIT(SBIT):只有所有者能执行删除移动的操作(root除外)
怎么使用特殊权限
chmod SUID 4 SGID 2 STICKBIT(SBIT) 1
语法:chmod (特殊权限)普通权限 filename/目录名
eg:chmod 777 filename
eg:chmod 4777 filename
SUID会在所属用户权限本应该是x的地方显示s 如果该用户没有执行权限是S,有执行权限是s
SGID--------组------------------------- -------组-----------------------------
SBIT--------其他人--------------------t ------其他人------------T-------------t
特殊权限是建立在普通权限之上的,也受普通权限限制
超级权限: UID=0 具有超级权限
ACL权限(access control list)
优先级高于普通权限
确认分区是否支持acl 6版本一般默认支持
查看是否支持acl
tune2fs -l 设备名
eg:tune2fs -l /dev/VolGroup/lv_root
Default mount options 字段是否包含acl字段
如果没有,开启分区的acl功能
1、永久开启
tune2fs -o acl 设备名
2、临时开启
mount -o remount,acl 设备名 临时开启,重启后消失
3、永久开启
vim /etc/fstab (控制文件系统挂载的)
/dev/VolGroup/lv_root / ext4 defaults,acl 1 1
mount -a | reboot
getfacl(查看ACL权限)|setfacl(设置ACL权限)
语法:getfacl filename|目录名
setfacl
语法:setfacl 选项|参数 filename|目录名
m 更改ACL权限***************
x 删除指定acl权限* (删除不需要加权限)
b 删除所有acl权限**************
k 删除默认acl权限**
(d 指定默认acl权限)********
R 递归**
test 测试模式,只显示操作结果,不对文件进行任何更改
setfacl -m [d:]u:<UID|USERNAME>:rwx 指定用户的acl
setfacl -m [d:]g:<GID|GROUPNAME>:rwx ----组-----
setfacl -m [d:]o:rwx ----其他人-----
setfacl -m m:rwx 设置有效权限
如果文件|目录设置了ACL权限 在查看文件列表时会在权限位后面出现一个“+”
如果一个目录设置默认acl权限,那么在这个目录下创建的子目录继承父目录的ACL权限,(文件不行)
mask是用来指定最大有效权限的。如果我们给用户赋予了acl权限,是需要和mask的权限进行逻辑运算(与操作)才能得到用户的真正权限。
使用mask值作用就是避免我们在设置acl权限的时候误操作造成权限过大。
普通的acl权限
默认acl权限
mask最大有效权限