Linux系统权限管理及优化的学习

.权限的概念

Linux 系统的架构里,权限是构建安全堡垒的基石,精准界定了不同用户对文件与目录的操作边界,对系统安全的维护以及数据完整性的保障起着决定性作用。Linux 将权限归纳为读(r),写(w)和执行(x)这三种基础类别,它们各司其职,共同守护系统资源。
1.读权限(r
对于文件,拥有读权限的用户宛如拥有了一把打开知识宝库的钥匙,能够毫无阻碍地查 看文件的具体内容,无论是文本文件中的文字信息,还是配置文件里的参数设置,都能一览无余。切换 到目录场景下,读权限就如同赋予了用户进入一间仓库并查看库存清单的权力,用户凭借它可以运用ls命令,清晰罗列目录中的所有文件与子目录,对目录结构与内容分布做到心中有数。
2.写权限(w
当用户对文件持有写权限时,便如同手握一支神奇的笔,能够自由修改文件内容,无论是增添新的文字段落,还是修正既有数据,都能随心操作。值得注意的是,若要删除文件,除了对文件本身有写权限,还需对文件所在目录具备写权限。把目光转向目录,写权限如同给予用户在一片空地上建造房屋的许可,用户可在目录中创建全新的文件与子目录,还能删除目录里已有的文件与子目录,自由规划目录内的资源布局。
3.执行权限(x
若文件属于可执行文件,比如常见的脚本文件或二进制程序,执行权限就像点燃引擎的钥匙,用户得以运行该文件,让程序中的指令依序执行,实现各种功能。在目录方面,执行权则如同打开一扇门的钥匙,允许用户运用cd命令顺利进入该目录,深入探索目录内部的资源。

.权限的查看及读取

1.权限的查看

ls -l 文件      ##查看文件权限
ls -ld 目录     ##查看目录权限

2.文件权限的种类

文件的属性被叫做文件的元数据(meta data),一种元数据用1byte来记录内容
#文件权限信息# 
              - | rw-r--r-- | . | 1 | root | root | 0 | Apr 12 10:57 | lee
              [1]     [2]    [3] [4]   [5]   [6]   [7]      [8]        [9] 
#目录权限信息#
               d | rw-r--r-- | . | 2 | root | root | 0 | Apr 12 10:57 | timinglee 
              [1]     [2]     [3] [4]   [5]   [6]   [7]      [8]        [9]
[1]文件类型
#文件类型 
#- 普通文件
#d 目录 
#l 软连接 
#b 快设备 
#c 字符设备 
#s socket套接字 
#p 管道 |
[2]文件权限说明
##用户权限 
##rw-|r--|r-- 
#  u   g  o
[3]文件安全上下文标记
##系统的selinux开启,那么在此位会出现“.”
[4]文件副本标记或目录中子目录标记
##对于文件:文件内容被系统记录的次数(硬链接个数) 
##对于目录:目录中子目录的个数
[5-6]文件的归属
##文件拥有者 
##文件拥有组
[7]文件容量统计
##对于文件:文件内容大小 
##对于目录:目录中子文件的元数据大小
[8]文件时间戳
##文件内容被修改的时间

[9]文件名称

文件名称中一个英文字符占用一个字节,一个中文字符占用三个字节

3.用户对于文件的身份识别及设定

1)用户对文件的身份
u: #user 文件的拥有者,ls -l 看到的第五列信息 
g: #group 文件拥有组, ls -l 看到的第六列信息 
o: #other 既不是拥有者也不是拥有组成员的其他用户的通称
2)权限位
rwx|r--|r--
 u   g  o

3)文件用户用户组管理

chown username file           ##更改文件拥有者 
chgrp groupname file          ##更改文件拥有组 
chown username:groupname file ##同时更改文件的拥有者和拥有组 
chown|chgrp -R user|group dir ##更改目录本身及目录中内容的拥有者或者拥有组

4.设定普通权限的方法

chmod ##设定文件权限 

#chmod 复制权限# 
chmod --reference=/tmp /mnt/lee            #复制/tmp目录的权限到/mnt/lee上 
chmod -R --reference=/tmp /mnt/westosdir   #复制/tmp目录的权限到/mnt/westosdir及 
                                           #目录中的子文件上 -R 代表第归操作 
#chmod 字符方式设定权限 

chmod <a|u|g|o><+|-|=><r|w|x> file         ##用字副方式设定文件权限 

示例: 
chmod u-rw /mnt/lee2 
chmod u-rw,g+x,o+wx /mnt/lee3 
chmod a-rwx /mnt/lee4 
chmod u=rwx,g=rx,o=--- /mnt/lee5 
chmod -R u=rwx,g=rx,o=--- /mnt/timinglee 

#chmod 数字方式设定权限# 
权限波尔指表示方式 
rwx = 111 
--- = 000 
三位二进制可以表示的最大范围为8进至数
 
rwx=111=7 
rw-=110=6 
r-x=101=5 
r--=100=4=r
-wx=011=3 
-w-=010=2=w 
--x=001=1=x 
---=000=0 
#示例:
 chmod 600 /mnt/lee1 
      rw-------

5.系统默认权限设定

  • 系统本身存在的意义共享资源
  • 从安全角度讲系统共享的资源越少,开放的权力越小系统安全性越高
  • 既要保证系统安全,又要系统创造价值,于是把应该开放的权力默认开放把不安全的权力默认保留
1)如何保留权力
# umask表示系统保留权力 
umask #查看保留权力 
umask 权限值     #临时设定系统预留权力 
                #文件默认权限 = 777-umask-111 
                #目录默认权限 = 777-umask 
                #umask值越大系统安全性越高 
#umask临时更改
umask 077 

#永久更改 
vim /etc/bashrc ##shell系统配置文件 
74 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then 
75 umask 002 #普通用户的umask 
76 else 
77 umask 022 -- 077 #root用户的umask 
78 fi 

vim /etc/profile ##系统环境配置文件 
59 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then 
60 umask 002 #普通用户的umask 
61 else 
62 umask 022 -- 077 #root用户的umask 
63 fi 
source /etc/bashrc ##source作用时使我们更改的内容立即被系统识别 source /etc/profile

6.系统中的特殊权限

Linux 系统中,常规的文件权限包括读(r)、写(w)和执行(x),分别对应数字 42 1。通过这些权限的组合,我们可以灵活地控制用户对文件和目录的访问。然而,在某些特定场景下,常规权限无法满足需求,这时就需要借助特殊权限来实现更精细的访问控制。
1SUIDSet UID
当一个设置了 SUID 权限的程序被执行时,内核会将进程的有效用户 IDEffective User ID)临时设置为文件所有者的用户 ID,而实际用户 IDReal User ID)保持不变。这样,在程序执行期间,该进程就具有了文件所有者的权限。
chmod 4原属性 file 

chmod u+s file 

实验: 
su - lee 
/bin/cat 
ps ax -o user,group,comm | grep cat lee lee cat 

#用root用户身份 
chmod u+s /bin/watch 
su - lee 
/bin/cat 
ps ax -o user,group,comm | grep cat root lee cat
注意:
由于 SUID 权限会提升用户的执行权限,不当使用可能会带来安全风险。例如,如果一个恶意程序
被设置了 SUID 权限且可被普通用户执行,那么该程序可能会以文件所有者的权限执行任意恶意操
作。因此,在设置 SUID 权限时,应谨慎考虑必要性和安全性。
2SGIDSet GID
对于可执行文件,当设置了 SGID 权限的程序被执行时,进程的有效组 IDEffective Group ID)会临时被设置为文件所属组的组 ID。对于目录,设置了 SGID 权限后,在该目录下创建的新文件和子目录将自动继承该目录的组,而不是创建者的默认组。
#sgid 强制位 
#针对目录: 目录中新建的文件自动归属到目录的所属组中 
设定: 

chmod 2源文件权限 dir 

chmod g+s dir 

实验
group testgroup 
mkdir /mnt/public 
chgrp testgroup /mnt/public 
chmod 777 /mnt/public 
lee ---> touch /mnt/public/file ##是谁建立的文件组就是谁的 chmod g+s /mnt/timinglee 

lee ---> touch /mnt/public/file1 ##file1自动复制了/mnt/public目录组 #只针对二进制的可执行文件(c程序) 
#当运行二进制可执行文件时都是用文件拥有组身份运行,和执行用户无关

实验: 
su - lee 
/bin/cat 
watch -n 1 "ps ax -o user,group,comm | grep cat" 
lee lee cat 
用root用户身份 
chmod g+s /bin/cat 
su - lee 
/bin/cat 
ps ax -o user,group,comm | grep cat 
lee root cat
注意:
同样,SGID 权限的不当使用也可能导致安全问题。例如,如果一个可执行文件设置了 SGID 权限且被恶意利用,可能会使普通用户获得过高的组权限,从而访问到不应访问的资源。对于共享目录设置 SGID 权限时,要确保组内成员的权限管理得当,避免权限滥用。
3Sticky Bit
Sticky Bit 权限通过在目录权限上设置一个特殊标志来实现上述功能。它限制了用户对目录中文件的删除和重命名操作,只有满足特定条件的用户才能执行这些操作
#stickyid 粘制位 
#针对目录: #如果一个目录stickyid开启,那么这个目录中的文件 
#只能被文件所有人删除 

chmod 1原始权限 dir 

chmod o+t dir 实验: 

mkdir /pub 
chmod 777 /pub
 
su - lee ----> touch /pub/leefile 
exit 
su - timinglee --------> touch /pub/timingleefile 
rm -fr /pub/leefile #可以删除 
rm -fr /pub/timingleefile #不属于自己的文件也可以删除 
如何解决此问题: 

chmod 1777 /pub 
chmod o+t /pub 
以上两条命令都可以开启pub目录的t权限 
su - timinglee ----> touch /pub/timingleefile 
exit 
su - lee --------> touch /pub/leefile 
rm -fr /pub/leefile #可以删除 
rm -fr /pub/timingleefile #不属于自己的文件不能删除 
rm: cannot remove 'timingleefile': Operation not permitted

注意:
在设置 Sticky Bit 权限时,要明确其适用场景,确保目录中的文件安全性。同时,要注意与其他权限的协同工作,避免因权限设置不当而影响正常的文件操作。

.ACL权限列表

1.ACL简介

ACLAccess Control Lists,访问控制列表)是一种灵活的权限管理机制,用于在 Linux 系统中对文件和目录设置更细致的权限。传统的 Linux 文件权限模型基于所有者(owner)、所属组(group)和其他用户(others)进行权限分配,分别对应读(r)、写(w)、执行(x)权限。然而,这种模型在一些复 杂的场景下显得不够灵活。例如,当需要给特定用户或组超出传统权限模型的权限时,ACL 就派上了用 场。通过 ACL,可以针对单个用户或组设置独立的读、写、执行权限,从而实现更精细的访问控制。

2.ACL权限列表的读取

2.1ACL权限开启标识
#acl列表开启标识 
-rw-rw---- 1 root caiwu 0 Apr 18 09:03 lee 
          ^ 
没有"+"代表acl列表未开启 

-rw-rw----+ 1 root caiwu 0 Apr 18 09:03 lee 
          ^ 
    acl列表功能开启

2.2 ACL列表权限读取
getfacl leefile 
显示内容分析 
# file: leefile #文件名称 
# owner: root #文件拥有者 
# group: root #文件拥有组 
user::rw- #文件拥有者权限 
user:lee:rw- #特殊指定用户权限 
group::r-- #文件拥有组权限 

group:lee:--- #特殊指定的用户组的权限 
mask::rw- #能够赋予特殊用户和特殊用户组的最大权限阀值 
other::r-- #其他人的权限

注意:
当文件权限列表开启,不要用ls -l 的方式来读取文件的权限
3.acl列表的控制
setfacl -m u:lee:rw leefile        #设定 
setfacl -m g:westos:rw leefile 
setfacl -m u::rwx leefile 
setfacl -m g::0 leefile 
setfacl -x u:lee leefile           ##删除列表中的lee 
setfacl -b leefile                 #关闭

4.acl 权限优先级
拥有者 > 特殊指定用户 > 权限多的组 >权限少的组 > 其他
5.mask阈值
mask是能够赋予指定用户权限的最大阀值
当设定完毕文件的acl列表之后用chmod缩小了文件拥有组的权力 mask会发生变化
恢复:
setfacl -m m:权限 文件
6.acl 列表的默认权限
设置默认 ACL。仅对目录有效,当在该目录下创建新文件或子目录时,新创建的对象将继承该目录的默认 ACL 规则
setfacl -m u:lee:rwx /mnt/westosdir    ##只对于/mnt/westosdir目录本身生效 

setfacl -Rm u:lee:rwx /mnt/westosdir   ##对于/mnt/westosdir目录和目录中已经存在的内容生效 
                                       #以上的命令之针对与存在的文件生效,新建文件是不会被设定的
 
setfacl -m d:u:lee:rwx /mnt/westosdir/ ##针对与/mnt/westosdir目录中新建文件生效

.attr权限

attr 权限,即文件属性权限,是 Linux 系统中一种对文件或目录赋予额外属性的机制。它能进一步增强对文件访问和操作的控制,提供了比传统 r(读)、w(写)、x(执行)权限更细致的管控维度。这些属性可以限制文件的某些操作,如防止文件被删除、修改,或者使其只能追加写入等
#attr权限限制所有用户 
i     #不能作任何的更改 
a     #能添加不能删除 

lsattr dir|file                     ##查看attr权限 
chattr +i|+a|-i|-a dir|file         ##设定attr权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值