文章目录
⼀ ⽂件权限管理之基本权限
1.1 权限介绍
权限类型
r --> 可读
w --> 可写
x --> 可执⾏
s --> 临时提权
# 在文件中的形式:
- rw- r-- r-- abc.txt
所属用户权限 所属组权限 其他用户权限
例:
[root@aliyun ~]# ls -l a.txt
-rw-r--r-- 1 root root 1146 Jul 16 18:42 a.txt
# 解说:
⽂件类型:
-:⽂本⽂档
d:⽬录
b:设备block
c:字符设备
s:套接字⽂件
l:软链接
权限
硬链接个数
属主
属组
⽂件所占⽤的空间(以字节为单位)
⽂件(⽬录)最近访问(修改)时间
⽂件名
权限位
# 文件权限不同所对应的字母和数字也不用,数字是八进制
r --> 可读---> 4
w --> 可写---> 2
x --> 可执⾏ --> 1
s --> 临时提权 --> 4 # 在算权限位时将4放在最前面
权限归属
属主 # u
属组 # g
其他⼈ # o
1.2 设置权限
修改文件权限chmod
格式:
chmod 权限位 文件名称
# chmod 664 文件名称
修改属主、属组 chown
chown 属主.属组 文件名称 # 改属主、属组
chown 属主 文件名称 # 只改属主
chown 属组 文件名称 # 只改属组
chown -R /test # 递归修改
修改u、g、o对应的权限
# 加减法
chmod u+x,g-w,o+r a.txt
# 赋值
chmod a=rwx a.txt
chmod a=- a.txt
chmod ug=rw,o=r file1
# 数字
chmod 644 file1
chmod -R 777 xxx/
# 注意:把某⼀个⾮属主⽤户添加到⽂件的属组⾥,他就拥有了该组的权限,⽽不再是其他⼈
二:文件管理权限管理之特殊权限
2.1 suid临时提权
#上述的基本权限中我们介绍过,文件权限的种类有r,w,x,s前3个都是用户对文件访问的权限位,即:对文件有可读,可写,可执行这3个权限的前提就是该文件夹(目录)必须有可执行权限;或者访问用户是该文件的属主或属组还有root用户;在linux中还有个suid特殊权限,即: 设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限。例如程序文件的属主是root,那么执行该程序的用户就将暂时获得root账户的权限。sgid与suid类似,只是执行程序时获得的是文件属组的权限。
s权限特殊之处:
1、SUID 权限仅对⼆进制可执⾏⽂件有效
2、如果执⾏者对于该⼆进制可执⾏⽂件具有 x 的权限,执⾏者将具有该⽂件的所有者的权限
3、本权限仅在执⾏该⼆进制可执⾏⽂件的过程中有效
命令格式:
chmod 4755 /bin/passwd # 算权限位时将4放在最前面
[root@local-work ~]# ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27856 Apr 1 2020 /bin/passwd
# 可以看到属主的位置有个s权限
三:文件权限位的umask计算概念
# 新建文件夹,目录的默认权限是由umask决定的,文件的默认权限是666,目录权限默认为755
文件权限计算方法是:偶数位直接相减,奇数位相减后加1
文件的起始权限值 | umask值 | 操作 | 计算收文件的权限 |
---|---|---|---|
666 | 022(每位如果都是偶数) | 直接相减即可 | 644 |
666 | 033 (每位如果有奇数或 偶数) | 相减(奇数位相减后在其原奇数 位加1) | 644 |
666 | 325(每位如果有奇数或偶数) | 相减(奇数位相减后在其原奇数位加1) | 442 |
⽬录权限计算⽅法:直接相减即可
文件的起始权限值 | umask值 | 操作 | 计算后文件权限 |
---|---|---|---|
777 | 022 | 相减 | 755 |
777 | 033 | 相减 | 744 |
777 | 325 | 相减 | 452 |
# 总结:umask设置的越⼩,权限越⼤,慎⽤
临时设置umask
[root@localhost ~]# umask 000 //设置umask权限
永久设置umask
[root@localhost tmp]# vim /etc/profile # 或者/etc/bashrc内容⼀样
......
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002 //表示uid⼤于等于199的默认umask值,表示普通⽤户
else
umask 022 //表示uid⼩于199的默认umask值,表示root
fi
四:文件权限管理之高级管理
4.1 acl 特殊权限使用
# 为了解决某种特殊情况环境下,用户的权限需求。
# ⽂件⼀旦设置了acl权限后,查看信息会出现⼀个加号,以后包括UGO在内的权限都可以⽤setfacl来设置
修改属主的权限
setfacl -m u::权限 a.txt
修改属组的权限
setfacl -m g::权限 a.txt
修改其他⼈的权限
setfacl -m o::权限 a.txt
修改具体某⼀个⽤户的权限
setfacl -m u:⽤户名:权限 a.txt
修改具体某⼀个组的权限
setfacl -m g:组名:权限 a.txt # 组必须存在
# 也可以给⽬录设置,都⼀样
查看与删除
# 查看
getfacl /opt/a.txt
# 删除
setfacl -x g:group1 /opt/a.txt # 删除组hr的权限
setfacl -b /opt/a.txt #删除所有acl权限
清空acl权限
# setfacl -b 文件名
4.2 acl 权限归属
- u : 指定用户
- g : 指定组
- o : 修改其他用户权限
- m : 指定mask权限
注:默认情况下,ACL权限跟普通权限保持一致。
4.3 acl 的流程
创建文件
chmod o+x /root
chmod o+x /root/xiaochen
cd xiaochen
[root@localhost xiaochen]# touch abc.txt
[root@localhost xiaochen]# chmod 000 abc.txt
[root@localhost xiaochen]# ll
total 0
---------- 1 root root 0 Mar 16 11:39 abc.txt
编写文件
[root@localhost xiaochen]# echo 111 > abc.txt
[root@localhost xiaochen]# cat abc.txt
111
设置ACL权限
[root@localhost xiaochen]# useradd xiaozhang
[root@localhost xiaochen]# setfacl -m u:xiaozhang:r abc.txt
[root@localhost xiaochen]# getfacl abc.txt
# file: abc.txt
# owner: root
# group: root
user::---
user:xiaozhang:r--
group::---
mask::r--
other::---
# 注:
setfacl -m u:用户名称:权限(rwx) 文件名称
查看文件
[root@localhost ~]# su - xiaozhang
[xiaozhang@localhost ~]$ cat /root/xiaochen/abc.txt
111
五:ACL继承
默认情况下,ACL是不会继承上层目录的权限的。只有目录设置可继承子集文件才可以继承ACL权限。
[root@localhost linux12]# setfacl -m d:u:xiaochen:w ../linux12
[root@localhost linux12]# touch bcd.txt
[root@localhost linux12]# ls -l
total 0
-rw-r--r-- 1 root root 0 Mar 16 15:40 abc.txt
-rw-rw-r--+ 1 root root 0 Mar 16 15:43 bcd.txt
[root@localhost linux12]# getfacl bcd.txt
# file: bcd.txt
# owner: root
# group: root
user::rw-
user:xiaochen:-w-
group::r-x #effective:r--
mask::rw-
other::r--
六:SUDO 提权
用于普通用提升权限的。
-
相关的文件:
/etc/sudoers
-
检查
/etc/sudoers
是否修改正确:visudo -c -
sudoers文件格式
tom ALL= (ALL) ALL 用户名称 所有机器可登陆 所有IP或主机名 所有的指令
-
指令编写格式
# 必须写全路径:which查看命令全路径 ## 只支持vim命令提权 xianchen ALL=(ALL) /usr/bin/vim ## 支持所有的命令提权 tom ALL=(ALL) ALL ## 不支持某个命令提权 tom ALL=(ALL) ALL, !/usr/bin/vim ## 不支持某个命令的部分功能 xiaochen ALL=(ALL) ALL, !/usr/bin/vim /root/123.txt
七:su切换用户
-
su - xxx 和 su xxx之间区别
1、su - xxx :相当于切换一个窗口,su xxx 仅仅切换了用户 2、su - xxx : 切换用户执行的系统文件要多于 su xxx 3、su - xxx 是登录 su xxx 切换用户