Linux系统中的权限管理及优化
一.权限的概念在Linux系统的架构里权限是构建安全堡垒的基石精准界定了不同用户对文件与目录的操作边界 对系统安全的维护以及数据完整性的保障起着决定性作用。Linux将权限归纳为读r、写w和执 行x这三种基础类别它们各司其职共同守护系统资源。1.读权限r对于文件拥有读权限的用户宛如拥有了一把打开知识宝库的钥匙能够毫无阻碍地查 看文件的具体内容无论是文本文件中的文字信息还是配置文件里的参数设置都能一览无余。切换 到目录场景下读权限就如同赋予了用户进入一间仓库并查看库存清单的权力用户凭借它可以运用ls命 令清晰罗列目录中的所有文件与子目录对目录结构与内容分布做到心中有数。2.写权限w当用户对文件持有写权限时便如同手握一支神奇的笔能够自由修改文件内容无论 是增添新的文字段落还是修正既有数据都能随心操作。值得注意的是若要删除文件除了对文件 本身有写权限还需对文件所在目录具备写权限。把目光转向目录写权限如同给予用户在一片空地上 建造房屋的许可用户可在目录中创建全新的文件与子目录还能删除目录里已有的文件与子目录自 由规划目录内的资源布局。3.执行权限x若文件属于可执行文件比如常见的脚本文件或二进制程序执行权限就像点燃引擎 的钥匙用户得以运行该文件让程序中的指令依序执行实现各种功能。在目录方面执行权限则如 同打开一扇门的钥匙允许用户运用cd命令顺利进入该目录深入探索目录内部的资源。#实验结果二.权限的查看及读取1.权限的查看ls -l文件##查看文件权限ls -ld目录##查看目录权限#展示效果2.文件权限的种类文件的属性被叫做文件的元数据(meta data)一种元数据用1个byte来记录内容1文件类型文件类型# - 普通文件# d 目录# l 软连接# b 快设备# c 字符设备# s socket套接字# p 管道 |2文件权限说明# 用户权限# rw- |r-- |r--# u g o3文件安全上下文标记#系统的selinux开启那么在此位会出现 “.”4文件副本标记或目录中子目录标记#对于文件文件内容被系统记录的次数硬链接个数#对于目录目录中子目录的个数5文件拥有者user6文件拥有组group7文件容量统计#对于文件文件内容大小#对于目录目录中子文件的元数据大小8文件时间戳#文件内容被修改的时间#可以使用touch修改9文件名称#可以通过mv进行重命名3.用户对于文件的身份识别及设定1用户对文件的身份u: #user 文件的拥有者g: #group 文件的拥有组o: #other 既不是拥有者也不是拥有组成员的其他用户的通称2文件用户用户组管理#更改文件拥有者[rootnode1 桌面]# chown lee file1#更改文件拥有组[rootnode1 桌面]# chgrp lee file2#同时更改文件的拥有者和拥有组[rootnode1 桌面]# chown lee.lee file3#更改目录本身及目录中内容的拥有者或者拥有组[rootnode1 桌面]# chown -R lee haha[rootnode1 桌面]# chgrp -R timinglee haha4.设定普通权限的方法chmod #设定权限1字符方式设定权限1.1 身份whouuser 文件属主 / 拥有者ggroup 文件所属用户组oother 其他所有人aall ugo 全部用户省略身份默认等于 a1.2 操作符运算符增加权限原有权限保留-减去权限只删掉指定项覆盖赋值只保留写的权限其余清空1.3 权限字符rwxr 读权限w 写权限x 执行 / 进入目录权限2数字方式设定权限# r4w2x1把三类权限相加得到一组数字rwx 421 7rw- 420 6r-x 401 5r-- 400 4-wx 021 3-w- 020 2--x 001 1--- 000 0格式chmod 三位数字 文件第一位u 属主权限第二位g 属组权限第三位o 其他用户权限3复制权限[rootnode1 桌面]# chmod --referencefile1 file2[rootnode1 桌面]# chmod --referencefile1 haha/hehe15.系统默认权限设定#系统本身存在的意义共享资源#从安全角度讲系统共享的资源越少开放的权力越小系统安全性越高#既要保证系统安全又要系统创造价值于是把应该开放的权力默认开放把不安全的权力默认保留# umask表示系统保留权力#umask临时更改#umask永久更改vim /etc/bashrc ##shell系统配置文件vim /etc/profile ##系统环境配置文件#source作用是使我们更改的内容立即被系统识别6.系统中的特殊权限在Linux系统中常规的文件权限包括读r、写w和执行x分别对应数字4、2和1。通过这些权限的组合我们可以灵活地控制用户对文件和目录的访问。然而在某些特定场景下常规权限无法满足需求这时就需要借助特殊权限来实现更精细的访问控制。1SUIDSet UID仅对程序运行时借用文件所有者权限当一个设置了SUID权限的程序被执行时内核会将进程的有效用户IDEffective User ID临时设置为 文件所有者的用户 ID而实际用户IDReal User ID保持不变。这样在程序执行期间该进程就具有了文件所有者的权限。提权普通用户可以使用超级用户的权利#设置监控[rootnode2 桌面]# watch -n 1 ps ax -o comm,user,group | grep cat;ls -l /bin/cat#显示进程的名字拥有者组#查看系统中名字加cat的进程#设置SUID权限[rootnode2 桌面]# chmod us /bin/cat[rootnode2 桌面]# chmod 4755 /bin/cat#实验效果#更改前#更改后2SGIDSet GID程序借组权限目录下文件自动继承目录的属组对于可执行文件当设置了SGID权限的程序被执行时进程的有效组IDEffective Group ID会临时被设置为文件所属组的组 ID。对于目录设置了SGID权限后在该目录下创建的新文件和子目录将自动继承该目录的组而不是创建者的默认组。#设置SGID权限[rootnode2 桌面]# chmod gs /mnt/fee[rootnode2 桌面]# chmod 2777 /mnt/fee#实验效果只对设置权限之后建立的文件生效3Sticky Bit只针对目录所有人可写但只能删自己的文件Sticky Bit权限通过在目录权限上设置一个特殊标志来实现上述功能。它限制了用户对目录中文件的删除和重命名操作只有满足特定条件的用户才能执行这些操作#设置公共目录#使用两个用户分别建立两个文件#设置Sticky Bit权限[rootnode2 mnt]# chmod ot timinglee[rootnode2 mnt]# chmod 1777 timinglee#设置Sticky Bit权限后lee用户只能删除自己的文件不能删除其他用户的文件三.ACL权限列表ACLAccess Control Lists访问控制列表是一种灵活的权限管理机制用于在Linux系统中对文件和目录设置更细致的权限。传统的 Linux文件权限模型基于所有者owner、所属组group和其他用户others进行权限分配分别对应读r、写w、执行x权限。然而这种模型在一些复 杂的场景下显得不够灵活。例如当需要给特定用户或组超出传统权限模型的权限时ACL就派上了用场。通过 ACL可以针对单个用户或组设置独立的读、写、执行权限从而实现更精细的访问控制。1.建立实验素材1.1建立实验文件1.2建立实验用户1.3开启监控观察信息[rootnode2 mnt]# watch -n 1 ls -lR /mnt/;getfacl /mnt/lee12.ACL权限列表的读取2.1ACL权限开启[rootnode2 mnt]# setfacl -m u:lee:rwx /mnt/lee12.2 ACL列表权限读取#注意权限列表开启后需要读取文件权限时不能使用ls-l方法来读取因为读取信息不准确权限读取需要通过getfacl来查看3.设置acl权限列表注意当文件设定权限列表后不要用chmod来设定文件的权限有很大概率损坏acl设定3.1更改文件usergroup other权限[rootnode2 ~]# setfacl -m u::rwx /mnt/lee1[rootnode2 ~]# setfacl -m g::0 /mnt/lee1[rootnode2 ~]# setfacl -m o::0 /mnt/lee13.2指定特殊用户权限[rootnode2 ~]# setfacl -m u:timinglee:0 /mnt/lee1[rootnode2 ~]# setfacl -m u:lee:r-x /mnt/lee1[rootnode2 ~]# setfacl -m u:lee:rwx /mnt/lee1#测试效果ACL优先级高于ugo普通权限3.3设定组[rootnode2 ~]# setfacl -m g:timinglee:rwx /mnt/lee13.4管理特殊用户在权限列表中的设定#撤销用户的特殊权力[rootnode2 ~]# setfacl -x u:lee /mnt/lee1[rootnode2 ~]# setfacl -x g:timinglee /mnt/lee1[rootnode2 ~]# setfacl -x u:timinglee /mnt/lee13.5关闭权限列表当把权限列表中的所有用户都删除权限列表为空时它也不会自动关闭#彻底关闭权限列表[rootnode2 mnt]# setfacl -b /mnt/lee14.mask阈值4.1测试mask阈值功能[rootnode2 mnt]# setfacl -m u:lee:rwx /mnt/lee1#监控效果#模拟通过chmod损坏权限列表设定[rootnode2 mnt]# chmod g-w /mnt/lee1#监控效果#测试4.2修复mask阈值[rootnode2 mnt]# setfacl -m m::rwx /mnt/lee15.acl对于目录的设定5.1实验监控命令[rootnode2 mnt]# watch -n 1 getfacl /mnt/timinglee/;ls -l /mnt/timinglee/#监控效果5.2对于目录及已经存在的文件设定[rootnode2 mnt]# setfacl -m u:lee:rwx /mnt/timinglee/[rootnode2 mnt]# setfacl -Rm u:lee:rwx /mnt/timinglee/5.3对于未出现的文件默认权限列表#setfacl -m 设定的权限列表只对当前已经存在的文件生效对设定过后在建立的文件不生效[rootnode2 mnt]# rm -fr /mnt/timinglee/file[rootnode2 mnt]# touch /mnt/timinglee/file#如果需要在一个目录中新建的文件默认就有权限列表[rootnode2 mnt]# setfacl -m d:u:lee:rwx /mnt/timinglee/#监控效果#测试更改后的效果四.attr权限attr权限即文件属性权限是Linux系统中一种对文件或目录赋予额外属性的机制。它能进一步增强对文件访问和操作的控制提供了比传统 r读、w写、x执行权限更细致的管控维度。这些属性可以限制文件的某些操作如防止文件被删除、修改或者使其只能追加写入等#lsattr 命令查看attr权限1.实验环境设定[rootnode2 mnt]# watch -n 1 lsattr -d /mnt/lee/;ls -lR /mnt#监控效果2.attr a权限2.1设定a权限[rootnode2 mnt]# chattr a /mnt/lee/#测试效果2.2撤销a权限[rootnode2 mnt]# chattr -a /mnt/lee/3.attr i权限1.开启i权限[rootnode2 mnt]# chattr i /mnt/lee/#测试效果2.关闭i权限[rootnode2 mnt]# chattr -i /mnt/lee/