一、权限的概念
1. Linux权限的本质
Linux作为多用户操作系统,通过权限机制实现资源的安全隔离。每个文件/目录都有独立的权限标签,如同数字世界的"门禁系统":
-
读(r):查看文件内容 / 列出目录内容
-
写(w):修改文件 / 创建/删除目录内文件
-
执行(x):运行程序 / 进入目录
1.2 权限的三元组
权限系统由三个维度构成:
-
用户(Owner):前三位,文件创建者
-
组(Group):中间三位,所属用户组
-
其他(Others):最后三位,其他所有用户
二、权限的查看及管理
使用ls -l查看文件详细权限:

[类型][用户权限][组权限][其他权限] 硬链接数 所有者 所属组 大小 修改时间 名称
使用ls -Id查看目录详细权限:
三.文件权限的种类
1.文件类型
在Linux中,文件有如下几种类型:
- d:文件夹
- -:普通文件
- l:软链接(类似Windows的快捷方式)
- b:块设备文件(例如硬盘、光驱等)
- p:管道文件
- c:字符设备文件(例如屏幕等串口设备)
- s:套接口文件
2.文件权限说明
对于一个文件或目录,在Linux中有三种角色:
文件的所有者:u(user)
文件所有者的所属组:g(group)
其他用户:o(others)
所以文件中前三位为文件所有者的权限,中间三位为文件的所属组的权限,最后三位为其他用户的权限
如上图的 rw- | r-- | r--
u g o
3.文件副本标记或目录中子目录标记
对于文件:文件内容被系统记录的次数(硬链接个数)对于目录:目录中子目录的个数
4.文件归属
如上图的前面为文件的所有者,后面的为文件的所属组
5.文件容量统计
对于文件:文件内容大小 对于目录:目录中子文件的元数据大小
6.文件时间戳
文件内容最后一次被修改的时间
四.文件权限的设定
1.文件所有者和所属组的管理
chown gejianfeng 123 ##更改文件所有者
chgrp gejianfeng 123 ##更改文件所属组

chown gejianfeng:gejianfeng 123 ##同时更改文件所有者和所属组

chown/chgrp -R gejianfeng/gejianfeng 321 ##更改目录本身及目录内容的所有者和所属组

2.设置普通权限
(1)chmod 复制权限
chmod --reference=tmp 123 ##复制/tmp目录的权限到文件123

chmod -R --reference=/tmp 321/111 ##复制tmp目录的权到321及目录的子文件111
-R表示递归操作

(2)chmod 字符方式设定权限
chmod <a|u|g|o><+|-|=><r|w|x> 123
如
chmod u=rwx,g=rx,o=--- 123
chmod u-w,g-x,o+r 123


(3)chmod 数字方式设定权限
Linux权限系统就像一把三位密码锁,每个数字控制不同群体的访问权限。每个数字由 r(4) + w(2) + x(1) 组合而成,如此,一个文件对于角色权限就有2^3=8种不同的二进制数来表示:


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

永久更改
vim /etc/bashrc ---shell系统文件
vim /etc/profile ---系统环境配置文件
在文件/etc/bashrc的末尾加上"umask 保留的权限值“
在文件/etc/profile的末尾加上"umask 保留的权限值“

系统中的特殊权限
在 Linux系统中,常规的文件权限包括读(r)、写(w)和执行(x),分别对应字 4、2 和 1。通过
这些权限的组合,我们可以灵活地控制用户对文件和目录的访问。然而,在某些特场景下,常规权限
无法满足需求,这时就需要借助特殊权限来实现更精细的访问控制。
Sticky Bit
在上面的设置中存在这一个问题,那就是只要用户有某目录的写权限,即使它没有个目录中文件的写权限,那他也可以直接删除该目录中的文件。
所以我们通过Sticky Bit 权限通过在目录权限上设置一个特殊标志来实现上述功能。它限制了用对目录中文件的删除和重命名操作,只有满足特定条件的用户才能执行这些操作(如果一个目录sckyid开启,那么这个目录中的文件只能被文件所有人删除
chmod 1原始权限 文件名
chmod o+t 文件名

SUID(Set UID)
当一个设置了 SUID 权限的程序被执行时,内核会将进程的有效用ID(EffectiveUser ID)临时设置为文件所有者的用户 ID,而实际用户 ID(Real User ID)保持不变样,在程序执行期间,该进程就具有了文件所有者的权限。
chmod 4原始权限 文件名
chmod u+s file
SGID(Set GID)
对于可执行文件,当设置了 SGID 权限的程序被执行时,进程的有效组 ID(EffectiveGroup ID)会临时被设置为文件所属组的组 ID。对于目录,设置了SGID 权限后,在该目录下创建的新文件和子目录将自动继承该目录的组,而不是创建者的默认组。(目录中新建的文件自动归属到目录的所属组中)
chmod 2原始权限 文件名
chmod g+s 文件名
五.ACL权限列表
1.简介
ACL(Access Control Lists,访问控制列表)是一种灵活的权限管理机制,用于在Linux 系统中对文件 和目录设置更细致的权限。传统的 Linux 文件权限模型基于所有者(owner)、所属组(group)和其他用户(others)进行权限分配,分别对应读(r)、写(w)、执行(x)权限。然而,这种模型在一些复杂的场景下显得不够灵活。例如,当需要给特定用户或组超出传统权限模型的权限时,ACL 就派上了用场。通过 ACL,可以针对单个用户或组设置独立的读、写、执行权限,从而实现更精细访问控制。
2.ACL权限列表的读取
(1)CL权限开启表识
文件权限后有"+"则表示开启
![]()
(2)ACL列表权限读取
getfacl 文件名

# owner: root #文件拥有者
# group: root #文件拥有组
user::rw- #文件拥有者权限
user:lee:rw- #特殊指定用户权限
group::r-- #文件拥有组权限
group:lee:--- #特殊指定的用户组的权限
mask::rw- #能够赋予特殊用户和特殊用户组的最大权限阀值
other::r-- #其他人的权限
(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权限
957

被折叠的 条评论
为什么被折叠?



