linux权限管理(Linux权限管理子系统)
mhr18 2024-09-27 12:16 23 浏览 0 评论
课程目标:
- 能够说出linux基本权限的作用和用法
- 能够说出特殊权限的作用
- 能够知道隐藏权限的用法
- 能够知道acl权限的使用
==知识点==
- 基本权限
- 特殊权限
- 隐藏权限
- acl权限
介绍
Linux系统是一个典型的多用户操作系统,不同的用户处于不同的地位,为了保护系统的安全性,linux系统对于不同用户访问同一个文件或目录做了不同的访问控制。而这种控制就是通过权限实现的,本节课我们介绍linux权限的使用
一、基本权限
基本权限的介绍
Linux中每个文件或目录都有3个基本权限位,控制三种访问级别用户的读、写、执行,所以linux的基本权限位一共有9个。基本权限位和另外3个可以影响可执行程序运行的3个特殊权限位一起构成了文件访问模式。三个属性规定了对应三种级别的用户能够如何使用这个文件,这三个基本权限位对于文件和目录的含义有所差别的,我们一起来看一下
字符 | 权限 | 对文件的含义 | 对目录的含义 |
r | 读 | 意味着我们可以查看阅读 | 可以列出目录中的文件列表 |
w | 写 | 意味着,对文件可以修改或删除 | 可以在该目录中创建、删除文件 |
x | 执行 | 如果是文件就可以运行,比如二进制文件或脚本。 | 可以使用cd命令进入该目录 |
那三种访问级别都有哪些呢?每个文件都有三组不同的读、写和执行权限,分别适用于三种访问级别,其中每组中的三个栏位分别使用读取权限(r)、写入权限(w)、执行权限(x)或没有相应的权限(-)来表示,共9位来表示。
第一组:适用于文件的属主,图中属主的权限是rwx。
第二组:适用于文件的属组,图中属组的权限是r-x。
第三组:使用于其它用户权限位,图中其它用户权限位是r-x。
当有人试图访问一个文件的时候,linux系统会按顺序执行如下步骤:
(1)使用者拥有这个文件吗?如果是,启用用户权限。
(2)用户是组所有者成员吗?如果是,启用组权限
(3)如果以上两个都不是,启用其它人权限
上面我们提到的是第一种表示方法,在linux中还有另外一种表示方法,八进制表示法,我们来看下字母和八进制表示方法的对应关系
字符表示法 | 八进制表示法 | 含义 |
r | 4 | 读 |
w | 2 | 写 |
x | 1 | 执行 |
所以上面给出的权限rwxr-xr-x换成数字的表示方式就是755,那权限如何设置呢?
基本权限的设置和查看
通过前面的学习我们知道,用户分为所有者,所有者组,其他人这三类,而每一类有包含三种基本权限,他们的对应关系是
权限位 | 含义 |
属主权限位 | 用于限制文件或目录的创建者 |
属组权限位 | 用于限制文件或目录所属组的成员 |
其它用户的权限 | 用于限制既不是属主又不是所属组的能访问该文件或目录的其他人员 |
当我们使用命令来查看文件或目录时,会看如下内容
[root@localhost ~]# ls -l
总用量 13804
drwxr-xr-x. 2 root root 6 10月 11 06:36 公共
drwxr-xr-x. 2 root root 6 10月 11 06:36 模板
drwxr-xr-x. 2 root root 6 10月 11 06:36 视频
drwxr-xr-x. 2 root root 6 10月 11 06:36 图片
drwxr-xr-x. 2 root root 6 10月 11 06:36 文档
drwxr-xr-x. 2 root root 6 10月 11 06:36 下载
drwxr-xr-x. 2 root root 6 10月 11 06:36 音乐
drwxr-xr-x. 2 root root 6 10月 11 06:36 桌面
-rw-------. 1 root root 1214 10月 11 06:12 anaconda-ks.cfg
-rw-r--r--. 1 root root 1369 10月 11 06:17 initial-setup-ks.cfg
每一行显示一个文件或目录的信息,这些信息包括文件的类型(1位)、文件的权限(9位)、文件的连接数、文件的属主(第3列)、文件的所属组(第4列),大小以及相关时间和文件名。其中Linux 文件的权限标志为九个,分为3 组,分别代表文件拥有者的权限,文件所属用户组的权限和其它用户的权限,现在我们知道文件有三种权限((r)读取、(w)写入和(x)执行)和三种访问级别((u)用户、(g)主要组和(o)其它人)决定文件可以被如何使用。那如何修改?
修改文件权限 chmod
缩写 | 含义 |
u | User(用户) |
g | Group (组) |
o | Other(其它) |
a | All(所有) |
+ | Add(加) |
- | Remove(减去) |
= | Set (设置) |
r | Read (可读) |
w | Write (可写) |
x | Execute (执行) |
命令 | 作用 | 结果权限 |
chmod o-r a.file | 取消其他人的可读权限 | rw-rw--- |
chmod g-w a.file | 取消组的写入权限 | rw-r--r-- |
chmod ug+w a.file | 赋予用户和组写入权限 | rwxrwxr-- |
chmod o+w a.file | 赋予其他人写入权限 | rw-rw-rw- |
chmod go-rwx a.file | 取消组和其他人的阅读、写入和执行权限 | rw------- |
chmod a-w a.file | 取消所有人的写入权限 | r-- r-- r-- |
chmod uo-r a.file | 取消用户和其它人的阅读权限 | -w-rw--w- |
chmod go=rw a.file | 将组和其他人的权限设置为阅读和写入 | rw-rw-rw- |
使用数字的表示方式类似chmod 755 a,执行完成后a这个文件的权限对应就是 -rwxr-xr-x,这是文件权限的两种修改方式,如果你想修改文件的所有者和所有者组需要使用的命令就是chown,chgrp
[root@localhost test]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 18 01:26 file1
[root@localhost test]# chown oracle file1
[root@localhost test]# ll
总用量 0
-rw-r--r-- 1 oracle root 0 10月 18 01:26 file1
[root@localhost test]# chgrp oracle file1
[root@localhost test]# ll
总用量 0
-rw-r--r-- 1 oracle oracle 0 10月 18 01:26 file1
这里,我们涉及到了三条与权限修改相关的命令
操作 | 可以执行的用户 |
chmod | Root用户和文件的所有者 |
chgrp | Root用户和文件的所有者(必须是组成员) |
chown | 只有root用户 |
以上是三种基本权限 -R
文件或目录的默认权限
每一个新产生的文件都会有一个默认的权限,这个权限是通过系统中的umask来控制的
文件的最大权限是666
目录的权限是777
使用umask查看
二、特殊权限
特殊权限的介绍
之前我们提到了特殊权限有三个,这三个特殊权限是在可执行程序运行时影响操作权限的,它们分别是SUID,SGID,sticky-bit位
特殊权限 | 说明 |
SUID | 当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。任意存取该文件拥有者能使用的全部系统资源。如果所有者是 root 的话,那么执行人就有超级用户的特权了。 |
SGID | 当一个设置了SGID 位的可执行文件运行时,该文件将具有所属组的特权,任意存取整个组所能使用的系统资源;若一个目录设置了SGID,则所有被复制到这个目录下的文件,其所属的组都会被重设为和这个目录一样,除非在复制文件时保留文件属性,才能保留原来所属的群组设置。 |
stickybit | 对一个文件设置了sticky-bit之后,尽管其他用户有写权限,也必须由属主执行删除、移动等操作;对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、移动等操作。 |
一个典型的例子就是passwd命令,这个命令允许用户修改自己的密码。我们可以看到本来是rwx的权限表示形式变成了rws,同样如果/usr/bin/passwd这个文件同时被设置了三个特殊权限,那么权限的格式就会变成rwsrwsrwt,需要注意的是特殊权限设置的前置要求是可执行,也就是如果没有x权限位,是不要设置的,即便你使用root用户设置上了特殊权限,也不会生效。
[root@localhost test]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 34928 5月 11 11:14 /usr/bin/passwd
特殊权限的设置和查看
特殊权限的设置也是使用chmod
[root@localhost test]# ll
总用量 0
-rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod u+s file1
[root@localhost test]# ll
总用量 0
-rwsr-xr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod g+s file1
[root@localhost test]# ll
总用量 0
-rwsr-sr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod o+t file1
[root@localhost test]# ll
总用量 0
-rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1
或者使用数字
[root@localhost test]# chmod u-s,g-s,o-t file1
[root@localhost test]# ll
总用量 0
-rwxr-xr-x 1 oracle oracle 0 10月 18 01:26 file1
[root@localhost test]# chmod 7755 file1
[root@localhost test]# ll
总用量 0
-rwsr-sr-t 1 oracle oracle 0 10月 18 01:26 file1
三、隐藏权限
隐藏权限的介绍
有时候你发现即使使用的是root用户也不能修改某个文件,大部分原因是因为使用过chattr命令锁定了该文件,这个命令的作用很大,通过chattr可以提高系统的安全性,但是这个命令并不适合所有的目录,如/dev,/tmp,/var。与我们前面看到的chmod这些命令修改权限不同的是chattr修改的是更底层的属性,这里面我们所提到的隐藏权限指的就是使用chattr来设置属性
隐藏权限的设置和查看
chattr的用户与我们之前讲的chmod,chow这些命令相似,都是直接对需要修改的文件进行操作就可以了
[root@localhost test]# chattr +AaiSd file1
[root@localhost test]# lsattr file1
--S-iadA---------- file1
[root@localhost test]# chattr = file1
[root@localhost test]# lsattr file1
------------------ file1
A 文件或目录的atime不可被修改
S 硬盘I/O同步选项,功能类似sync。
a 只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
d 文件不能成为dump程序的备份目标。
i 设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。
通过上面的例子可以看到查看的时候使用的是lsattr,chattr还有很多参数,各位可以在man手册中获取到帮助,另外有些参数的使用是有局限性的。
四、acl权限
acl权限的介绍
linux的权限非常重要,我们之前所说的几种权限中,但是并不能只针对一个用户或者一个组进行单独设置,而ACL权限可以帮助我们实现这个功能,比如说有一个文件的所有者和所有者组都是a,这个文件的权限是660,我可以让b这个用户可以对文件进行读写的操作,而b这个用户并不属于a组的成员。那我们来看下如何使用
acl权限的设置和查看
如果要使用acl权限,首先要确定你的文件系统支持acl权限,如果在Default mount options字段出现acl字样就意味着你的文件系统支持acl,不过在CentOS8中默认是都支持的。
[root@localhost test]# tune2fs -l /dev/sda1
tune2fs 1.44.3 (10-July-2018)
Filesystem volume name: <none>
Last mounted on: /boot
Filesystem UUID: be03eaec-6474-42ea-8f79-06e7198f5155
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
.
.
.
配置acl权限我们需要使用两个命令一个是setfacl用来设置acl权限,另一个是getfacl用来查看acl权限
setfacl
-m :设置acl
-x :删除指定的acl
-b :删除所有的acl
getfacl用来查看文件的acl权限,现在我们来看下如何设置
[root@localhost test]# ls
file file1
[root@localhost test]# ll file1
-rw-r--r-- 1 root root 0 10月 18 02:48 file1
[root@localhost test]# setfacl -m u:oracle:rw file1 为指定的用户配置一个rw的权限
[root@localhost test]# setfacl -m u::rwx file1 如果没有指定用户则默认是为该文件的所有者设置
[root@localhost test]# ll file1
-rwxrw-r--+ 1 root root 0 10月 18 02:48 file1 所有者权限变成的rwx而且后面多了一个+号
你会发现使用ll(等同于ls -l)命令查看时会发现多了一个+号,这只是提醒我们此文件被设置了acl权限,但是具体是什么样的,我们还需要使用getfacl来查看
[root@localhost test]# getfacl file1
# file: file1 文件名
# owner: root 所有者
# group: root 所有者组
user::rwx user:后面是空的,代表的是所有者的权限
user:oracle:rw- 我们之前给额外用户设置的权限
group::r-- 所有者组的权限
mask::rw- 默认的有效权限
other::r-- 其他人的权限
以上是我们针对一个额外的用户设置的权限,同理可以设置针对组和其他人的acl权限
[root@localhost test]# setfacl -m g:oracle:rw file1
[root@localhost test]# setfacl -m o:rw file1
[root@localhost test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rwx
user:oracle:rw-
group::r--
group:oracle:rw-
mask::rw-
other::rw-
删除指定的acl
[root@localhost test]# setfacl -x u:oracle file1 删除用户acl
[root@localhost test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rwx
group::r--
group:oracle:rw-
mask::rw-
other::rw-
[root@localhost test]# setfacl -x g:oracle file1 删除组acl
[root@localhost test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rwx
group::r--
mask::r--
other::rw-
[root@localhost test]# chmod o=r file1 删除其他人直接使用chmod就可以
[root@localhost test]# ll file1
-rw-r--r-- 1 root root 0 10月 18 04:21 file1
[root@localhost test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
group::r--
other::r--
删除所有acl
[root@localhost test]# setfacl -m u:oracle:rw,g:oracle:rw,o:rwx file1
[root@localhost test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
user:oracle:rw-
group::r--
group:oracle:rw-
mask::rw-
other::rwx
[root@localhost test]# setfacl -b file1
[root@localhost test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
group::r--
other::rwx
你没看错,权限在指定的时候是可以指定多个的,我们之前提到的chmod也可以这样使用,好了权限管理我们就说这么多,现在我们来总结一下
总结
本节课我们学习了linux的权限管理,我们将权限管理分为四个部分
基本权限
特殊权限
隐藏权限
acl权限
其中基本权限和特殊权限的设置方法是类似的,隐藏权限和acl权限都有自己的设置方式,本节课的内容是后面课程的基石,大家要尽快熟悉,灵活应用。
相关推荐
- Spring Boot 分布式事务实现简单得超乎想象
-
环境:SpringBoot2.7.18+Atomikos4.x+MySQL5.71.简介关于什么是分布式事务,本文不做介绍。有需要了解的自行查找相关的资料。本篇文章将基于SpringBoot...
- Qt编写可视化大屏电子看板系统15-曲线面积图
-
##一、前言曲线面积图其实就是在曲线图上增加了颜色填充,单纯的曲线可能就只有线条以及数据点,面积图则需要从坐标轴的左下角和右下角联合曲线形成完整的封闭区域路径,然后对这个路径进行颜色填充,为了更美观...
- Doris大数据AI可视化管理工具SelectDB Studio重磅发布!
-
一、初识SelectDBStudioSelectDBStudio是专为ApacheDoris湖仓一体典型场景实战及其兼容数据库量身打造的GUI工具,简化数据开发与管理。二、Select...
- RAD Studio 、Delphi或C++Builder设计代码编译上线缩短开发时间
-
#春日生活打卡季#本月,Embarcadero宣布RADStudio12.3Athens以及Delphi12.3和C++Builder12.3,提供下载。RADStudio12.3A...
- Mybatis Plus框架学习指南-第三节内容
-
自动填充字段基本概念MyBatis-Plus提供了一个便捷的自动填充功能,用于在插入或更新数据时自动填充某些字段,如创建时间、更新时间等。原理自动填充功能通过实现com.baomidou.myba...
- 「数据库」Sysbench 数据库压力测试工具
-
sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以...
- 如何选择适合公司的ERP(选erp系统的经验之谈)
-
很多中小公司想搞ERP,但不得要领。上ERP的目的都是歪的,如提高效率,减少人员,堵住财务漏洞等等。真正用ERP的目的是借机提升企业管理能力,找出管理上的问题并解决,使企业管理更规范以及标准化。上ER...
- Manus放开注册,但Flowith才是Agent领域真正的yyds
-
大家好,我是运营黑客。前天,AIAgent领域的当红炸子鸡—Manus宣布全面放开注册,终于,不需要邀请码就能体验了。于是,赶紧找了个小号去确认一下。然后,额……就被墙在了外面。官方解释:中文版...
- 歌浓酒庄总酿酒师:我们有最好的葡萄园和最棒的酿酒师
-
中新网1月23日电1月18日,张裕董事长周洪江及总经理孙健一行在澳大利亚阿德莱德,完成了歌浓酒庄股权交割签约仪式,这也意味着张裕全球布局基本成型。歌浓:澳大利亚年度最佳酒庄据悉,此次张裕收购的...
- 软件测试进阶之自动化测试——python+appium实例
-
扼要:1、了解python+appium进行APP的自动化测试实例;2、能根据实例进行实训操作;本课程主要讲述用python+appium对APP进行UI自动化测试的例子。appium支持Androi...
- 为什么说Python是最伟大的语言?看图就知道了
-
来源:麦叔编程作者:麦叔测试一下你的分析能力,直接上图,自己判断一下为什么Python是最好的语言?1.有图有真相Java之父-JamesGoshlingC++之父-BjarneStrou...
- 如何在Eclipse中配置Python开发环境?
-
Eclipse是著名的跨平台集成开发环境(IDE),最初主要用来Java语言开发。但是我们通过安装不同的插件Eclipse可以支持不同的计算机语言。比如说,我们可以通过安装PyDev插件,使Eclip...
- 联合国岗位上新啦(联合国的岗位)
-
联合国人权事务高级专员办事处PostingTitleIntern-HumanRightsDutyStationBANGKOKDeadlineOct7,2025CategoryandL...
- 一周安全漫谈丨工信部:拟定超1亿条一般数据泄露属后果严重情节
-
工信部:拟定超1亿条一般数据泄露属后果严重情节11月23日,工信部官网公布《工业和信息化领域数据安全行政处罚裁量指引(试行)(征求意见稿)》。《裁量指引》征求意见稿明确了行政处罚由违法行为发生地管辖、...
- oracle列转行以及C#执行语句时报错问题
-
oracle列转行的关键字:UNPIVOT,经常查到的怎么样转一列,多列怎么转呢,直接上代码(sshwomeyourcode):SELECTsee_no,diag_no,diag_code,...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)