news 2026/5/1 7:10:36

Linux权限管理知识点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux权限管理知识点

一、文件权限管理

主要学习一下三大权限

Linux系统的三大基本权限

Linux系统的三大特殊权限

Linux系统的精细化权限管理ACL权限

问题:为什么需要文件权限???

答:因为没有文件权限控制,则系统所有人都可以查看和修改文件,比如/etc/passwd和/etc/shadow文件,如果任何人都可以修改,那结果太严重了。

目前:为了保护文件安全

访问一个文件,一共有三种对象:

user:拥有人

group:拥有组

other:其他人

Linux三大基本权限:rwx

基本权限

描述

r

w

x

执行

-rw-r--r--. 1 root root 2202 Dec 10 14:59 /etc/passwd

rw-:拥有人对于文件的访问权限

r--:拥有组对于文件的访问权限

r--:其他人对于文件的访问权限

ps:UID和文件UID一样,则匹配拥有人的权限,GID和文件GID一样,则匹配拥有组的权限,如果上面都不匹配,则匹配其他人的权限。

注意:如果文件没有r的权限但是有w权限,是否可以修改文件内容?

答:可以修改,使用重定向

一个目录要想有意义,必须要有r和x的权限

总结:删除目录下的文件,不是看文件的拥有人和拥有组,而是看这个文件所在的工作目录是否有w权限,有w权限,只要是在这个目录下,无论是谁创建,都可以删除。如果要删除一个目录,你必须是这个目录的拥有人

chmod修改文件权限(重点)

文件权限是赋予哪一个对象的?是拥有人、拥有组、其他人捏?

chmod赋予权限的时候。多个操作对象之间使用,逗号进行分割,并且支持所有的属性操作符。

例:现在我要给拥有人添加rwx,拥有组添加rwx,其他人为x

第一种字符:chmod u+rwx,g+rwx,o+x /opt

a是同理的。

第二种数字方式(qwe)修改权限:chmod 771 /opt

chown修改文件的拥有人和拥有组的身份

[root@localhost ~]# chown user:user /opt/passwd

[root@localhost ~]# ll /opt/passwd

-rw-r--r--. 1 user user 0 Dec 12 13:40 /opt/passwd

文件的拥有人可以对自己的文件修改权限。使用chmod命令

问题:文件的拥有人(超级管理员除外)可以对自己的文件修改拥有人和拥有组的身份吗?不行!但是文件的拥有人可以将这个文件的拥有组修改为自己的私有组。

修改拥有人:chown username文件

修改拥有组:chown .groupname或者:groupname文件

同时修改拥有人/组:chown usernamegroupname文件

专门修改拥有组的命令:chgrp 如下

[root@localhost ~]# chgrp root /opt/passwd

[root@localhost ~]# ll /opt/passwd

-rw-r--rw-. 1 user root 0 Dec 12 13:40 /opt/passwd

问题:/etc/shadow文件没有任何的权限,为什么root用户也可以修改?

答:文件的拥有人可以强制修改自己的文件。

Linux三大特殊权限

suid特殊权限(重点)

对文件:文件拥有suid。则执行这个文件的时候是以文件的拥有人的身份去执行的。仅对二进制可执行文件(命令)有效果,对于自定义的脚本文件没有意义。

对目录:没有任何的意义,只有二进制可执行文件有效果。

查看文件是否具有suid权限

如果文件的拥有人的x栏位变成了小写的s或者大写的S 表示具有suid的权限,如果是小写s,说明文件的拥有人具有x权限,如果是大写的S,说明文件的拥有人没有x权限。

赋予suid文件权限

基于字符:chmod u+s文件

基于数字:chmod 4xxx 文件(xxx为三大基础权限)

sgid特殊权限(重点)

对于文件:文件具有sgid权限,则执行这个文件会以文件的拥有组的身份执行,只对于二进制可执行文件有效,对于脚本文件没有意义。

对于目录:目录具有sgid权限,则在这个目录下创建的新的文件都会继承目录的拥有组的身份

赋予sgid文件权限

基于字符:chmod g+s文件

基于数字:chmod 2xxx 文件(xxx为三大基础权限)

sticky(sbit)粘性权限:

对于文件:没有任何意义

对于目录:目录具有sbit权限,则在这个目录下,只有用户自己才可以修改自己的文件和重命名。

/tmp目录下,防止其他人把我的文件修改掉和重命名,赋予一个sbit权限

赋予sbit权限

基于字符:chmod o+t文件

基于数字:chmod 1xxx 文件(xxx为三大基础权限)

总结:如果文件具有特殊权限sS/tT,小写的字母都表示这个文件有x权限,大写的字母表示这个文件没有x权限。

Linux ACL访问控制列表(权限)

ACL权限的出现实际上是为了解决基本权限不足的问题

场景:现在我要实现zhangsan用户,可以对/etc/shadow文件(拥有人/组均为root)进行读和修改,但是其他用户没有权限

ACL权限特点:可以针对文件赋予指定用户或者指定用户组的访问权限。

查看文件是否具有ACL权限

第一个方法是使用 ll /etc/shadow的话,会发现最后有一个+号,这个就说明该文件具有ACL权限。但是无法得知是用户还是用户组具有这个权限。

第二种方法也就是最推荐的,使用getfacl。就可以清晰的看到是用户还是用户组的权限了。

mask值控制着ACL权限的有效权限,如果mask为r--。那么该文件的有效权限只有r。

ACL权限的匹配优先级

用户的ACL权限

用户权限

用户组的ACL权限

用户组的权限

其他人权限

只要有ACL权限,则优先级最高匹配。

案例1:赋予/etc/passwd文件用户的ACL权限,仅允许user用户对文件可以读写和执行

[root@localhost ~]#setfacl-m u:user:rw /etc/passwd添加/修改ACL权限为-m

[root@localhost ~]# getfacl /etc/passwd

ps:如果没有user这个用户,系统会报错误。提示没有这个参数。

案例2:赋予/etc/passwd文件用户组的ACL权限,仅允许zhangsan用户组的成员对文件可以读写

[root@localhost ~]#setfacl-m g:zhangsan:rw /etc/passwd

[root@localhost ~]# getfacl /etc/passwd

案例3:修改user用户的ACL权限,让其对/etc/passwd文件只有读写

[root@localhost ~]# setfacl -m u:user:rw /etc/passwd

案例4:修改/etc/passwd文件的拥有人的权限为rwx,拥有组的权限为rwx

看到这个题目大家就会想到,修改拥有人和拥有组的权限直接使用chmod命令。

chmod u+rwx /etc/passwd

chmod g+rwx /etc/passwd (错误的)

这个是错误的做法,当文件赋予了ACl权限之后,通过ll命令看到的文件权限的拥有组的mask值,并且通过chmod修改拥有组的权限实际上是修改mask值。

setfacl可以给拥有人/拥有组/其他人设置权限

Setfacl -m

u::rwx 修改拥有人权限 === chmod u=rwx

g::rwx 修改拥有组权限 === chmod g=rwx(这个chmod命令的前提是文件没有acl权限)

o::rwx 修改其他人权限 ===chmod o=rwx

删除acl权限

指定删除用户或者用户组的acl权限

setfacl -x uusername文件

setfacl -x ggroupname文件

删除文件的所有的acl权限

setfacl -b文件

ACL权限继承(默认的acl权限):为了确保在目录中创建的文件和目录继承特定的acl权限

需求:/opt目录下新创建的文件都会继承目录的acl权限,所有的新的文件都会有user用户的rw的acl权限

setfacl -m d:u:user:rw /opt

UMASK值

记住:一个文件在创建出来的时候,永远不可能就已经带上了X权限!!!

umask权限掩码

umask控制用户创建的文件的默认权限

目录最大权限777、文件最大权限666

文件默认权限=666-umask

目录默认权限=777-umask

[root@localhost ~]# ll

total 2

-rw-r--r--. 1 root root 0 Dec 13 14:24 1.txt 该文件权限为:644

drwxr-xr-x. 2 root root 6 Dec 13 14:24 dir 该目录权限为:755

则root的umask值为:

644=666-umask

755=777-umask

计算得出为022

也可以通过命令umask获得

[root@localhost ~]# umask

0022

现在我将root用户的umask值临时设置为333

那么通过计算,文件的默认权限=666-333为333. 目录的默认权限=777-333为444

通过命令:

[root@localhost ~]# umask 333

[root@localhost ~]# umask

0333

我再创建一个目录和文件

[root@localhost ~]# ll

-r--r--r--. 1 root root 0 Dec 13 14:34 1.txt1 文件权限为444

dr--r--r--. 2 root root 6 Dec 13 14:34 dir1 目录权限为444

发现,文件的默认权限和计算出来的不一样。记住:一个文件在创建出来的时候,永远不可能就已经带上了X权限!!!如果碰到了默认权限带X权限,则权限会自动+1.

所以会造成一个问题,如果umask值没有设置好,最终会导致文件和目录的默认权限计算出来的结果不一样。所以以后去计算文件或者目录的默认权限,要求计算umask值的时候,一定要以目录的为准。也就是:777-目录的默认权限=umask

修改umask方式

描述

临时修改

umask 数字

永久修改

/etc/bashrc文件

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 20:41:05

Java+Playwright自动化测试-31- 操作日历时间控件-上篇(详细教程)

我们在实际工作或者生活中,有可能遇到有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据,例如:我们预定火车票或者预定酒店,需要选择发车日期或者酒店的入住与退房时间。宏哥早在之前…

作者头像 李华
网站建设 2026/5/1 4:04:48

周报不是流水账,这个AI指令帮你写出让老板点赞的工作汇报

写在前面每周五下午,看到"本周工作总结"的提醒,是不是就头疼?明明忙了一周,但真要写周报时,脑子里一片空白。想了半天只憋出几句话:"本周完成了XX功能开发,测试通过,…

作者头像 李华
网站建设 2026/5/1 2:46:01

Revive Adserver:开源广告服务器系统完整指南

在当今数字营销时代,拥有一个强大的广告管理系统对于网站所有者至关重要。Revive Adserver作为全球最受欢迎的免费开源广告服务器系统,为各类用户提供了一套完整的解决方案,无论是小型企业还是大型媒体公司,都能从中受益。&#x…

作者头像 李华
网站建设 2026/5/1 5:41:27

【Qt开源项目】— ModbusScope-day 1

学习核心思想 笔记驱动:以你手中的笔记为核心路线图和知识库,避免在浩瀚源码中迷失。问题导向:每学习一个模块,先问自己:它为什么存在?解决了什么问题?在整体中扮演什么角色?流程串联…

作者头像 李华
网站建设 2026/4/23 10:48:30

BetterDiscord终极自定义指南:快速打造专属聊天体验

BetterDiscord终极自定义指南:快速打造专属聊天体验 【免费下载链接】BetterDiscord Better Discord enhances Discord desktop app with new features. 项目地址: https://gitcode.com/gh_mirrors/be/BetterDiscord 你是否觉得Discord的默认界面过于单调&am…

作者头像 李华