Linux安全优化之权限(Ⅱ)特殊权限

1.文件权限的理解

1.文件权限读取
在这里插入图片描述

符号 含义
U 文件拥有者对文件的权限
G 文件拥有组对文件的权限
O 其他人对于文件的权限

2.权限类型
" - " (权限关闭)此位权限未开启
" r " (查看权限)对于文件可以查看文件中的内容;对于目录可以列出目录中的文件名称
" w "(可写权限)对于文件可以更改文件中记录的内容;对于目录来说可以对已经存在的文件与目录进行更名或删除,建立新的文件与目录,搬移该目录内的文件、目录位置
" x "(执行权权限)对于文件可以用文件名称调用文件内记录的程序;对于目录可以进入目录

2.文件权限设定方式

1.设定权限的方式

字符方式设定文件权限 chmod [参数]… 权限模式,[权限模式]… 目标…
数字方式设定文件权限 chmod [参数]… 权限值… 目标…
依照模板复制文件权限 chmod [参数]… --reference=模板 目标…

2.字符方式设定权限
chmod <u/g/o/a><+/-/=><r/w/x> 目标

+ 加入
- 除去
= 设定

(1)建立实验环境,在/mnt新建目录westosdir及文件file1、file2、file3,并对其权限属性监控
在这里插入图片描述
在这里插入图片描述
(2)进行实验
chmod u+x file1 file1拥有者加入x权限
在这里插入图片描述
chmod +x file2 file2的用户、组、其他人加入x权限
在这里插入图片描述
注意:
chmod +w file 只能给file拥有者加入w权限,与+x,+r权限设定不同,要想用户、组、其他人均加入w权限,使用a+w或者ugo+w方式进行权限设定,如下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
chmod u-w,go+wx file1 file1拥有者除去w权限,组和其他人加入w,x权限
在这里插入图片描述
chmod ugo+x file3 file3用户、组和其他人都加入x权限
在这里插入图片描述
chmod -R go+w /mnt/westosdir westosdir目录及目录内所有文件的组、其他人都加入w权限
在这里插入图片描述
在这里插入图片描述
3.数字方式管理权限
权限可以用一个八进制数字来表示

权限 八进制
- - - 0(000)
- - x 1(001)
- w - 2(010)
- wx 3(011)
r- - 4(100)
r - x 5(101)
rw- 6(110)
rwx 7(111)

权限管理模式:chmod 数字 目标
(1)chmod 000 file1 对file1用户、组和其他人都除去r、w、x权限
在这里插入图片描述
(2)chmod 644 file3 对file3设定权限为用户可读可写,组和其他人只读在这里插入图片描述
(3)chmod -R 650 /mnt/westosdir 将westosdir目录及目录内所有文件设定为拥有者可读可写、组可读可执行、其他人没有开放任何权限
在这里插入图片描述
4.权限复制
复制权限方式:chmod - -reference=属性源文件 目标
先vim file2,写入内容hello world!
再用cp -p 命令将file2权限复制到file1中 会看到内容和权限设定都复制了过来
如果只要求将一个文件的权限属性复制给某个文件,则用chmod - -reference=属性源文件 目标模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.系统预留权限阀值

  1. 对于权限预留阀值的理解
    从系统存在角度来讲,开放权力越大,系统存在意义越高
    从系统安全角度来讲,开放权力越少,系统安全性越高
    在系统中开放应开放的权利,保留不安全的权利以确保系统功能性及安全性,所以系统设定新建文件或目录会去掉一些权限
  2. 权限预留阀值设定
    umask ##查看系统保留权限默认为022
    umask 044 ##修改系统保留权力为044,此设定方式为临时设定,只在当前shell中生效
    在这里插入图片描述
    永久设定方式

vim /etc/bashrc ##设置shell中的权限
74 if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
75 umask 002 ##普通用户的umask
76 else
77 umask 077 ##超级用户的umask
78 fi
vim /etc/bashrc ##设置系统的权限
59 if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
60 umask 002 ##普通用户的umask
61 else
62 umask 077 ##超级用户的umask
63 fi

在这里插入图片描述
/etc/bashrc、/etc/profile,这两个文件umask设定值必须保持一致
source /etc/bashrc
source /etc/profile
让设定立即生效

4.特殊权限

  1. 对特殊权限的理解
    SUID
    只针对于二进制可执行文件 , 使用拥有SUID权限的文件触发其中记录的程序时以 SUID 文件拥有者的身份去执行
    SGID
    针对二进制可执行文件 : 该命令发起的程序是以该命令所有组的身份去执行
    针对目录 : 目录新建文件的所属组与该目录的所有组保持一致
    STICKYID
    对于文件:表示文件即使没有被程序调用也会被加载到交换空间中,
    对于目录:表示当目录上有 STICKYID 的权限时 , 所有用户在该目录下均可创建文件 , 但只有文件拥有者和 root 用户可以删除该目录下的文件
  2. 对特殊权限的设定
SUID chmod u+s (4源文件属性) TAG
SGID chmod g+s (2源文件属性) TAG
STICKYID chmod o+t (1源文件属性) TAG

(1)sticky (粘制位)
只针对目录生效,当一个目录上有sticky权限时,这个目录中的文件只能被文件的所有者和超级用户删除
1> 先建立两个普通用户tom、jerry,在/mnt下建立一个公共目录public,然后设置监控命令监控该目录及目录下的文件,并在超级用户下设置满权限 chmod 777 /mnt/public
在这里插入图片描述
在这里插入图片描述
2> 分别切换到两个普通用户在public目录下建立文件(tom)file1、(jerry)file2
在这里插入图片描述
3> jerry用户可以删除tom用户下的文件file1,这样的设定很不安全,故可以设置特殊权限 t
在这里插入图片描述
4> 在超级用户模式下给public目录加入 t 权限
在这里插入图片描述
5> public目录加入 t 权限后,jerry用户便不能再对tom用户下的文件进行操作了
在这里插入图片描述
在这里插入图片描述
(2)sgid 强制位
对于目录:当一个目录上有sgid时,这个目录里新建的文件会自动归属到这个目录的所属组上面(对目录的已有文件所属组不会发生改变)
1> 先建立一个目录 /westos1,更改student为目录westos1的拥有组,westos1权限设定为对任何人开放所有权力(满权限)
在这里插入图片描述
2> 在超级用户下建立用户 tom,用户tom在/westos1目录下新建file1,查看file1拥有组发现是用户本身,并不是/westos1目录拥有组
在这里插入图片描述
3> 为了使在目录中所建立的文件的属于目录的拥有组,需要在目录上加入s权限(chmod 2777 /westos1)
在这里插入图片描述
对于二进制可执行文件时,当文件上有sgid权限时任何人执行此文件所产生的进程都属于文件的拥有组
1> 首先对下图命令进行说明
ps表示进程查看命令;ax查看系统所有进程;-o user,group,comm查看进程用户、组、进程名称;grep cat表示把名称为cat的进程过滤出来
在这里插入图片描述
2> 设定/bin/cat二进制文件权限,并对其拥有组进行查看
在这里插入图片描述
3> 以用户tom身份启动一个cat进程,这个进程的所有人和所有组均为tom自身
在这里插入图片描述
在这里插入图片描述
4> 给二进制文件加上s权限,以tom身份重新开启一个新的cat进程,看到这时cat进程的所有组成为二进制文件的拥有组,而不是tom所有组自身
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)suid 冒险位
只针对于二进制可执行文件 , 使用拥有SUID权限的文件触发其中记录的程序时以 SUID 文件拥有者的身份去执行
1> 设定/bin/cat二进制文件权限,并对其所有者进行查看
在这里插入图片描述
2> 以用户tom身份启动一个cat进程,这个进程的所有人和所有组均为tom自身
在这里插入图片描述
在这里插入图片描述
3> 给二进制文件加上s权限,以tom身份重新开启一个新的cat进程,看到这时cat进程的所有者成为二进制文件的所有者,而不是tom所有者自身在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.ACL 权限列表

(1)acl 作用:让特定的用户对特定的文件拥有特定权限
(2)acl 列表查看
如果你查看一个文件属性的时候,这个属性的最后面是个 " + "号,就代表它的权限列表是开启的
在这里插入图片描述
当 " + " 出现后,用ls -l file查看权限时普通权限的属性将不准确了,此时要用getfacl file查看文件权限列表

getfacl file      	###查看acl开启的文件的权限
file: file        	### 文件名称
owner: root       	###文件拥有者
group: root 		###文件拥有组
user::rw-	 		###文件拥有人的权限
user:useradd:rwx 		###指定用户的权限
group::r-- 			###文件拥有组的权力
mask::rwx			###能赋予用户的最大权力阀值
other::r-- 			###其他人的权限

实验过程:超级用户在/mnt下建立一个文件file,普通用户tom对file是不可以编辑的,在对用户tom和file之间进行特定权限指定后,tom用户可以对/mnt下的文件file进行编辑
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
(3)acl 列表的管理
命令格式

setfacl -m u:username:rwx file  	##设定username对file拥有rwx权限
setfacl -m g:groupname:rwx file		##设定group组成员对file拥有rwx权限
setfacl -x u:username file			##从acl列表中删除username
setfacl -b file						##关闭file上的acl列表

1> 设定用户jerry对file无任何权限
在这里插入图片描述
设定用户tom对file拥有 rwx 权限
在这里插入图片描述
2> 删除jerry特定用户权限
在这里插入图片描述
删除权限列表特定用户为空时,并不代表权限列表未被开启(" + "依然存在)
在这里插入图片描述
3> 关闭权限列表(在有特殊用户设定时,关闭后,特殊用户设定失效)
在这里插入图片描述
(4)facl列表权限匹配顺序
权限优先级顺序:
资源拥有者,特殊指定用户,权力开放多的组,权力开放少的组,其他用户
(5)facl的mask阀值
mask:能够赋予特殊用户最大权限的阀值
1> 在文件设定完毕acl列表后,再用 ls-l 显示文件权限时,权限不准确
在这里插入图片描述
2> 当设定完毕acl列表,再用chomod命令缩小文件权限,缩小的不是文件本身的权限而是mask权限,也影响到指定用户所拥有的权限
在这里插入图片描述
在这里插入图片描述
3> 恢复mask值:setfacl -m m:rwx file;特殊指定用户将可以执行对指定文件的权力
在这里插入图片描述
在这里插入图片描述
(6)facl的default权限
default权限特性:只对目录生效、只对目录中新出现的文件或目录生效、对目录本身不生效、对目录中原有文件不生效
需求:在/mnt目录下的directory目录已经存在的文件及以后新建文件都要对指定用户可写
1> 确定已经存在的文件对指定用户student可写:setfacl -R -m u:student:rwx /mnt/directory
在这里插入图片描述
在这里插入图片描述
2> 设定将要出现的新文件对指定用户可写:setfacl -m d:u:student:rwx /mnt/directory
在这里插入图片描述
在这里插入图片描述
3> 关闭default权限:setfacl -k /mnt/directory/
在这里插入图片描述
(7)文件隐藏属性
系统当中权限在开放过程当中除了权力变大以外,还有在开放权限过程中权力变小的情况
chattr 设定
lsattr 显示

chattr 设定 i 之后,这个文件不能被删除、改名、也无法写入或新增数据
在这里插入图片描述
lsattr显示权限属性,执行chattr - i file 命令,文件便恢复成普通文件属性
在这里插入图片描述
chattr 设定 a 之后,这个文件将只能增加数据,不能被删除
在这里插入图片描述
执行chattr - a test 命令,文件便恢复成普通文件属性
在这里插入图片描述

发布了23 篇原创文章 · 获赞 0 · 访问量 2493

猜你喜欢

转载自blog.csdn.net/weixin_45792518/article/details/103855141
今日推荐