文件权限管理

重点、难点、汇总 login
1.文件系统属性(隐藏权限):查看 #lsattr 文件
#chattr +a 文件 -->允许往文件里追加内容
#chattr +i 文件 -->只能看,其他的都不能
2.suid 提权 (只能给二进制命令提权) #chmod u+s(4777) 命令
which +命令 查看命令所在位置
3.sgid 组权限继承 #chmod g+s(2777) +目录 只能给目录设置,设置后的目录里的文件继承目录的所属组
4.umask 用户掩码 查看# umask 设置# umask 002 默认:022 -ww
默认文件权限:666 默认目录权限:777
umask和默认权限进行计算,先转换成0和1,反向转换后进行运算。
5.sticky(t权限) 权限控制 #chmod 1777 目录 只能对目录生效,防止该目录内的其他用户恶意删除文件
6.facl 文件访问控制列表 查看#getfacl +文件/目录
设置权限:

  • #setfacl -m u:用户:权限 文件
  • #setfacl -m g:组:权限 文件
  • #setfacl -R -m u:用户:权限 目录 递归修改
  • #setfacl -b 文件(目录) 删除所有的facl权限
  • #setfacl -x u:wing: 文件(目录) 删除单独用户的acl权限

文件的所有者和所属组
#chown 用户 文件
#chown user2 a.txt 修改文件的所有者
#chown {.|:}组 文件
#chown .grp2 a.txt 修改文件的所属组
#chown 用户.组 文件
#chown user3:grp3 a.txt 同时修改所有者所属组
-R recoursive 递归修改,修改目录的时候连带目录的所有子文件一起修改
文件权限(ugo 基本权限):用户对文件的操作权限

  • r=4
  • w=2
  • x=1
    对于目录来说:
  • r: ls ;ll
  • x:cd
  • w:cp,rm,
    对于文件来说:
  • r:cat,vim
  • w:vim
  • x:./ ; bash .sh
    #chmod 权限 文件
  • #chmod u-r-w a.txt 用户
  • #chmod g+w a.txt 组
  • #chmod o+x a.txt 其他人
  • #chmod u+w,g-w,o+w a.txt
  • #chmod a-r a.txt a表示ugo3个位置
  • #chmod -r a.txt (建议少用)

隐藏权限 (文件属性)

  • 主要为了限制root,防止root账户的误删除。主要为了保护日志文件
  • chattr changes the fileattributes on a Linux file system.
  • 修改文件属性对Linux文件系统。
  • #lsattr a.txt
  • #chattr +a a.txt 允许往文件里追加内容
  • #chattr -a a.txt
  • #chattr +i a.txt 只能看,什么都不能干
  • #chattr -i a.txt
  • +A:Atime,告诉系统不要修改对这个文件的最后访问时间
  • +S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
  • +d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。
    chattr命令不能保护/、/dev、/tmp、/var目录

高级权限:facl umask suld sgid sticky(t)
umask 用户掩码

创建的用户权限都是644
创建的目录权限都是755
文件的默认权限是666,目录的默认权限是777

查询:# umask回车
0022 ------------> --- -w- -w-
root账户默认umask:022
普通账户默认umask:002
例:
1.从umask码依次向上,都有的抹去,例如w 全部抹去
777 rwx rwx rwx 目录
666 rw- rw- rw- 文件
022 --- -w- -w- umask
2.将umask码转换成0和1,有权限的为1,空位为0,之后反向取反进行与运算。
与运算:同真为真,真假为假,假假为假
777 rwx rwx rwx 目录 111 111 111 111 111 111 755 111 101 101
666 rw- rw- rw- 文件 110 110 110 110 110 110 644 110 100 100
022 --- -w- -w- umask 000 010 010 ---与运算-->111 101 101 =结果=>
结果为:文件:644 目录:755


suid 提权 ===> 只能加4,在u的位置加了s ---->相当于进入普通用户后的命令以root权限运行
给二进制命令文件提权
#which +命令 查看命令的位置
#chmod 4755 /usr/bin/cat 4==>u+s 给cat提权
-rwsr-xr-x (在u的位置加了s替换了x的位置,但是x也是存在的)
作用: suid只能给命令添加,当给命令添加了suid之后,后面再有人去执行这个命令的时候就会拥有命令操作符所有者的权限


sgid 组权限继承 只能对目录设置
#chmod 2755 目录
#chmod g+s 目录
作用:sgid只能给目录添加,当你给一个目录添加了sgid之后,后面不管谁来这个目录下创建文件,文件的所属组都会继承目录的所属组


sticky(t权限) 权限控制
#chmod 1777 目录
#chmod o+t 目录
作用:t权限只能给目录添加,当你给一个目录添加了t权限之后,后面所有人在这个目录下不能删除其他人的文件
-R 递归修改权限


facl权限 access control list 访问控制列表 ------------>对文件系统的访问控制权限
单独给某一个账户(组)设置对文件的操作权限
扩展ugo权限,可以单独的对某一个用户或者某一组用户设置权限
查看facl
#getfacl 文件(目录)名 文件名,所有者,所属组,用户,组,其他人
设置facl set:设置 -m:修改 u:用户
#setfacl -m u:tom:r a.txt 模式: 用户/组(u/g):用户名:权限 + 文件名
#setfacl -m u:tom:4 a.txt
#setfacl -m g:组名:rwx a.txt
-R 递归修改 必须写到-m的前面,可以写到一起
#setfacl -R -m u:tom:4 目录名称
设置facl的继承权限
只能对目录,对目录本身不生效
#setfacl -m d:u:wing:r dir1
mask:和权限做与运算,最后的结果是有效权限
#setfacl -m m::rw ccc.txt
取消
#setfacl -b 文件(目录) 删除所有的facl权限
#setfacl -x u:wing: 文件(目录) 删除单独用户的acl权限

猜你喜欢

转载自blog.51cto.com/13767724/2120614
今日推荐