一、基本权限
1.文件:
r:可读,可以使用类似cat等命令查看文件内容;
w:可写,可以编辑或删除此文件;
x: 可执行,eXacutable,可以命令提示符下当作命令提交给内核运行;
2.目录:
r: 可以对此目录执行ls以列出内部的所有文件;
w: 可以在此目录创建文件;
x: 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
3.权限:
r=4,w=2,x=1
000 ---:无权限
001 --x: 执行
010 -w-: 写
011 -wx: 写和执行
100 r--: 只读
101 r-x: 读和执行
110 rw-: 读写
111 rwx: 读写执行
4.三类用户:
u: 属主
g: 属组
o: 其它用户
5.相关命令
(1)chown:改变文件属主或属组
chown username:groupname file
-R:修改目录及其内部文件的属主或属组
(2)chgrp:更改用户属组
chgrp groupname file
-R
(3)chmod:修改文件权限
chmod MODE file
u,g,o,a
#chmod 755 file
#chmod u=r file 修改权限,属主对file只读
#chmod u+[-]x file 添加[移除]权限,属主对file可写
6.umask:反向掩码
umask: 023
文件:666-023=643 X
目录:777-023=754
二、特殊权限
1.SUID:
运行某程序时,相应进程的属主是程序文件自身的属主,而不是
用户本身了,只对二进制程序有效,执行者对于程序需要有x权限
chmod u+s file
chmod u+S file
#如果本身具有x,为s,否则为S
2.SGID:
对于文件:运行某程序时,相应进程的属组是程序文件自身的属组,而不是用户本身的基本组
对于目录:
用户对此目录有rx权限可以进入目录
用户进入此目录后,有效用户组会变成该目录的用户组
若用户在此目录有w权限,则用户创建的文件用户组与该目录用户组相同
chmod g+s file
3.Sticky(BIT):
cky (BIT): 只针对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有自己与root才可以删除。
在一个公共目录,每个人都可以创建文件,删除自己的文件,
但是不能删除别人的文件(冒险位,粘贴位)
chmod o+t dir
4.特殊权限
SUID=4,SGID=2,SBIT=1
chmod 7755 filename
#第一个7代表的就是这三个特殊命令,后面的755是普通权限
三、文件系统访问控制列表
FACL:filesystem access control list
利用文件的扩展属性,保存了额外的访问控制权限
getfacl 查看
setfacl 设置
语法:setfacl [-bkRd] [-m|-x acl 参数] 目标文件名
选项与参数:
-m:设置后续的acl参数,不可与-x一起使用
-x: 删除后续的acl参数,不可与-m一起使用
-b:删除所有的acl参数
-k:删除默认的acl参数
-R:递归设置acl参数
-d:设置默认acl参数,只对目录有效
#例:setfacl -m m:rw filename
# m=mask
-m设定,可以设定到用户或者是组上
u:uid:perm
g:gid:perm
#例:setfacl -m u:xiaoyu:rw filename
owner>facl,user> group > facl group>
所有权限都不能超过mask的权限
setfacl -m m:rwx [filename or directory_name]
-x取消
# setfacl -x u:uid filename
为目录设定默认访问控制列表:
d:u:uid:perm file_name
dumpe2fs -h 设备路径 (查看是否支持ACL)
tune2fs -o
四、通过sudo提权
一、sudo: 某个用户能够以另外一个用户的身份通过某主机执行某命令
sudo的配置文件:/etc/sudoers
命令:visudo
基本配置格式:
<user list> <host list> = <operator list> <tag list> <command list>
user list:用户/组,或者已经设置的用户的别名列表, 用户名直接 username,用户组加上%,比如%admin
host list:主机名或别名列表
operator list:runas用户,即可以以哪个用户、组的权限来执行
command list:可以执行的命令或列表
tag list:这个经常用到的是 NOPASSWD: ,添加这个参数之后可以不用输入密码
别名机制:类似定义了一个组
用户别名:User_Alias
主机别名:Hosts_Alias
参照用户:Runas_Alias
命令别名:Cmnd_Alias
别名的名字只能使用大写的英文字母组合
别名:可使用"!"取反
User_Alias USERADMIN = 系统用户名 或 %组名 或用户别名
Hosts_Alias 主机名 IP 网络地址 其它主机名 可以嵌套
Runas_Alias 用户名 #UID 别名
Cmnd_Alias 命令绝对路径 目录(下面所有命令) 其它定义的命令别名
例一:使用新建用户执行useradd,passwd
1.创建用户test并设置密码
2.登陆test用户
3.测试
4.为test用户添加权限
5.测试
例二:
记录sudo日志到指定文件:
编辑/etc/sudoers文件,添加:
Defaults logfile=/var/log/sudo.log
Defaults !syslog
visudo -c
可以检查配置文件语法
默认日志保存在/var/log/messages