Linux权限大揭秘:深入理解系统安全

news2024/11/17 3:30:41

W...Y的主页 😊

代码仓库分享💕 


🍔前言:

在之前的内容中,我们了解了Linux中的一些简单权限,如root超级账号与普通账户的区别、Linux文件权限管理、文件类型和访问权限以及许多关于修改权限的指令及其规则……今天我们继续进行权限的学习,让我们进一步的了解权限在Linux系统上的作用。

权限内容不完善的可以观看:“权限之舞:Linux安全之道icon-default.png?t=N7T8https://blog.csdn.net/m0_74755811/article/details/133859052?spm=1001.2014.3001.5501

目录

chown指令

chgrp指令

文件类型

file指令

目录下的权限

粘滞位

关于权限的总结

上图是一个文件的基本信息,后9个分别是拥有者、所属组与other的权限。后面两个why分别对应的是拥有者与所属组的信息,当我们想要访问这个文件时,Linux系统会进行用户的匹配,验证我们是哪一种“身份”,然后才开启对应身份相对应的权限。而这个身份的验证匹配只有一次,如果所属组与拥有者都是访问的人时,Linux系统先会从拥有者开始进行识别,如果识别成功则停止反之则继续从所属组、other继续进行依次识别。

 当我们使用chmod指令将拥有者的r(读)权限进行删除时,我们想要进行访问就会被禁止。

但是我们如果将拥有者why改为别的用户,则我们why的账号将以所属组的身份进行访问文件,所以我们就有权限进行访问读file.txt文件。

chmod是对我们文件对应的权限属性进行修改的,而一个文件的访问不仅仅与文件的权限有关,也与访问者的身份有关,那我们怎么进行对“人”进行修改呢?

chown指令

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
我们可以将文件拥有者的信息使用chown指令进行修改。

下面就是一段实例:

我们想将file.txt文件的所属者改为一个叫wyj的普通用户,但是出现了操作不被允许的话语,证明修改失败了,这是怎么回事呢?为什么我是文件的拥有者,想将文件传给别人Linux却不被允许呢?

Linux很好的避免了传输垃圾文件或病毒的问题,当我们给别人文件时,还是需要征得别人的同意的,要不然会出岔子的!!!

那软的不行,我们就来硬的,我们直接使用sudo指令,以root账户的指令进行修改所属人,或者使用su指令切换成root账户进行修改。 所以我们知道普通用户是无法将拥有者进行更改的,必须使用root账户进行修改。root账户没有权限的限制。

chgrp指令

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

chgrp是修改文件的所属组的一个指令,与chown指令类似,我们是不能在普通用户上进行修改的,必须要使用root超级用户进行修改。

将所属组、拥有者全部改为root也是可以的,所以在root账户下我们想干什么就干什么。

那拥有者与所属组都可以修改,我们也想修改一下other有没有对应的指令呢?

答案是没有的,但是当我们修改拥有者与所属组时,other中对应的人是一直在改变的,other是其他两种角色的补集。所以修改other就要通过修改拥有者与所属组来实现。

那使用chown与chgrp指令进行修改拥有者与所属组太慢了,我们就可以直接使用chown组合进行全部修改拥有者与所属组。

格式: chown 拥有者:所属组 文件名。

所以在修改的同时,所属组、拥有者以及other都在改变。


文件类型

我们已经将一个文件的绿色部分进行详细的讲述,现在我们继续来了解一下文件类型,也就是文件信息中第一个代表的内容。

我们可以与windows做一个类比,Windows模式下的文件都是以文件后缀进行表示的,而Linux下的文件却是以第一个符号表示的。Linux的文件类型不通过后缀区分(不代表Linux不用后缀) 。

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

当我们进行编译时,我们使用gcc或g++进行编译,但是我们只能编译一些.c或.cpp文件,不能编译txt文件,这就是Linux下使用后缀的情况。可以使用Linux系统直接操作可以不考虑后缀,但是如果使用外部指令时我们就要考虑后缀的作用。而且使用后缀后使用者也可以更直观的看出文件的作用 !

file指令

功能说明:辨识文件类型。
语法:file [选项] 文件或目录...
常用选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。

我们可以使用file指令识别详细的文件类型:

 甚至可以识别出是什么类型的文件!

目录下的权限

我们使用root账户与普通账户分别全部创建了一个目录:

普通用户创建的目录为test_dir,root账户创建的目录是dir。现在就有一个问题抛出:在权限已知的情况下,我们能否知道怎么才能阻止一个用户去访问一个目录呢?应该删除r、w、x哪一个才可以。

我们可以使用控制变量法进行尝试,首先使用chmod指令删除r权限:

我们可以看出删除r指令后,我们可以随意地进出目录。

然后我们加上r,删除w权限进行试验:

我们也可以看出删除w后也可以照样进行访问目录。

最后我们来试一试x: 只有x才不能被访问。

所以访问一个目录是x权限地作用。

那r地权限是什么呢?w地权限是什么呢?

x可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.

r可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
w可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

 但是如果我们想将整个目录进行权限限制,即不让人看也不让人修改,那么我们可以使用chmod指令将权限全部关闭:

我们可以看出test_dir目录已经没有任何权限了,但是当我们使用root账户时就会发现,一切权限都可以无视:

 我们可以看出root账户下,任何地增删查改都可以实现!!!

上面是我新创建的两个东西,一个dir1地目录与一个file.txt的文件,为什么文件的初始权限为664,目录的初始权限为775呢?创建的不是777呢?

粘滞位

一个文件的起始权限是以666开始的,一个目录的起始权限是从777开始的,因为在Linux系统中有一个umask(权限掩码)的东西,权限掩码就是定制一个文件被创建的时候的默认权限。

我们可以在系统中查询我们的权限掩码,输入umask指令即可。我们只关心后三个数字,第一个可以被默认为八进制的标识符。所以002转换成二进制为:000 000 010。

我们所创建的文件目录中的权限是从起始权限中去掉umask中出现的权限。注意:去掉不是减法 

所以我们可以得到:

 这就是我们所得到的权限。运算法则为:起始权限 & (~umask) = 最终权限(默认)。


上面是我使用why账户创建的三个文件,以及使用root账户创建的三个文件。然后使用su指令进入另一个wyj普通用户中去。

然后我想要在此目录下增删查改文件或目录是没有作用的,因为wyj账户中没有w权限。这是理所当然的。所以我们就进入到root账户去。

root不想让人看三个文件的任何内容,所以使用chmod将文件权限全部关闭,然后再返回到why的用户下:

我们why用户想要查看root_file的文件时是没有任何权限的,但是我们可以将root账户所创建的文件全部删除掉。因为lesson6目录的是why用户的,目录的权限约束是高于目录中的文件的!!!

总结:一个文件能否被删,并不取决于文件本身!!!而是取决于文件所处的目录拥有者是否拥有w权限!!

所以这样写文件是很危险“不文明”的行为,但是Linux早就避免了次情况:

在家目录下,只有拥有者才有rwx权限!!!那我们如果想要进行文件共享呢?应该在哪个目录下进行操作呢?

Linux系统下专门为共享资源创建了一个目录tmp目录。

给other新增一个权限:t

粘滞位:给目录中的other设置了一个权限位,具有x的意义,同时也进一步对目录中的权限进行特殊的限制:该目录里面的文件,只有root1或者文件的拥有者有权利进行删除。其他人一律不允许!!

[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除 

关于权限的总结

关于权限的总结:
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限

所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。


以上就是本次的全部内容,感谢大家的观看,你们的三连关注是博主最大的动力!谢谢!!! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

源发行版17 需要目标发行版 17问题解决

java: 警告: 源发行版 17 需要目标发行版 17 问题描述:解决办法:总结 问题描述: 解决办法: 1.将 Settings --> Build, Execution, Deployment --> Complier --> Java Complier 配置下的 Project bytecode version: 17 改…

为爱出发,与善同行丨纬创软件2023北京善行者圆满收官

2023年10月21日,北京善行者徒步活动在昌平正式开走。800支队伍3200名善行者队员进行32公里的公益行走。纬创软件组建「北京台协纬创软件队」,4名队员踏上32公里的征程,通过徒步筹款的方式传递善行理念,为贫困山区的孩子们建立“爱…

用AI打造一个属于自己的歌手,让她C位霸气出道

一、前言 今天玩儿点儿特别的,AI大行其道的今天,还没玩过AI模型的程序员绝对不是个好厨子。我本人比较喜欢音乐,但是一直没有出道,很是遗憾。那么今天,我就使用AI模型亲手打造一个堪比真人的歌手,让她C位霸…

2023年中国消防报警设备市场规模现状及行业竞争趋势分析[图]

消防安全行业主要分为消防产品和消防工程两个子行业。消防产品又可细分成消防装备、消防报警、自动灭火、防火与疏散、通用与防烟排烟、消防供水等 6 大类,其中消防装备主要用于消防部队,其他 5 大类主要用于建筑物消防。 消防行业内容 资料来源&#x…

《低代码指南》——如何通过维格表实现生产采购管理

信息 通过维格表的低代码开发能力,实现从销售订单转为生产计划工单并按需拆解为物料采购减少手工录入和计算工作,补充成熟ERP对MRP的个性化需求限制提升供应链运转效率生产采购过程中你有没有遇到这些问题?​ 从采购到生产,再到入库,流程太繁琐?生产力低下?采购系统员工…

商业级质感磨皮插件Portraiture5.0最新中文版本

整个摄影后期行业都在推崇Portraiture或DR5磨皮,这是一个被奉为——高级磨皮面板,修图神器、顶级修图的的扩展面板!!而最近7月份Portraiture更新到5.0版本了,还叫嚣“完虐”DR5高级磨皮!! 今coc…

手写效果流式响应(langchain+fastapi+js)

这是一个前后端完整可用的小项目 后端是 Python 的 FastAPI 框架,调用 langchain 进行 openai 的模型对话。前端是纯html css javascript,没调用任何第三方库,方便集成到 Vue React 等现有前端项目。 聊天界面: 效果就是提问之…

dvadmin-打包发布-nginx-静态服务器配置-防火墙设置

文章目录 1.下载nginx2.nginx常用命令3.dvadmin打包发布4.防火墙设置 1.下载nginx 也从作者下载的网址下载:https://download.csdn.net/download/m0_67316550/88470098 2.nginx常用命令 注意:一定要在dos窗口启动,不要直接双击nginx.exe&a…

如何将数据库某列的值(如日期)作为表格的列名

如何将数据库某列的值(如日期)作为表格的列名 需求:前端需要展示如下的二维表格,其中表格的日期是数据库表里data的值,每行不同的值是表格里的字段值,也就是需要将表里的数据行转列,列转行&…

【Proteus仿真】【Arduino单片机】PWM电机调速

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用蜂鸣器、按键、直流电机、L293D等。 主要功能: 系统运行后,K3键启动运行,K1控制运行方向,K2键…

【Redis】Docker部署Redis数据库

Docker部署Redis数据库 1. Redis介绍2. CentOS 7 安装 & Docker 配置3. 拉取Redis 镜像、创建容器3.1 配置Docker镜像源3.2 拉取Redis 镜像3.3 容器创建 1. Redis介绍 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用…

oracle,CLOB转XML内存不足,ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE“,

通过kettle采集数据时,表输入的组件,查询报错。 ORA-27163: out of memory ORA-06512: at “SYS.XMLTYPE”, line 272 ORA-06512: at line 1 通过 ALTER SESSION SET EVENTS ‘31156 trace name context forever, level 0x400’; 修改会话配置 或直接修改…

四、安装vmtools

1.介绍 1.vmtools安装后,可以让我们在windows下更好的管理vm虚拟机 2.可以设置windows和centos的共享文件 2.安装步骤 1.进入centos 2.点击vm菜单->install vmware tools 3.centos会出现一个vm安装包,xx.tar.gz 4.拷贝到/opt 5.使用解压命令tar&…

最新FL Studio水果21.2更新下载及功能爆料

​Image-Line 推出了重要的 FL Studio 21.2 更新,​引入了强大的新功能,让音乐制作人能够专注于任务和创意流程。 此最新更新引入了 FL Cloud,这是一项专门为 FL Studio 构建的新服务。FL Cloud 与 DAW 深度集成,通过与全球最大的…

私有云:【1】ESXI的安装

私有云:【1】ESXI的安装 1、使用VMware Workstation创建虚拟机2、启动配置虚拟机3、登录ESXI管理台 1、使用VMware Workstation创建虚拟机 新建虚拟机 选择典型安装 稍后安装操作系统 选择VMware ESXI 选择虚拟机安装路径 硬盘设置300G或者更多 自定义硬件 内存和处…

keepalived+haproxy实现代理地址高可用

准备前期 一台客户机 主备服务器 主:20.0.0.10 备:20.0.0.40 两个后端服务器 web1:20.0.0.41 web2:20.0.0.42 开始配置主备服务器 安装keepalived服务 yum -y install keepalived 切换到keepalived的配置文件下 cd /etc/keepalived 修改ke…

ubuntu server 安装失败

网络问题,默认的cn那个mirrors不行,得替换国内得 安装Ubuntu server时有一个选项是 Mirror address 可以设置为 https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ 即 清华大学开源软件镜像站 的ubuntu地址

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第四章 C++多线程系统编程精要

学习多线程编程面临的最大思维方式的转变有两点: 1.当前线程可能随时会被切换出去,或者说被抢占(preempt)了。 2.多线程程序中事件的发生顺序不再有全局统一的先后关系了。 当线程被切换回来继续执行下一条语句(指令…

Android APK瘦身实践:二次瘦身如何再减少大小?(4M—2.9M)

瘦身前 因为平时就考虑到大小的限制,所以很多工作已经做过了,如下列举现在的状态: 7.3M(Debug版本)和6.5M(Release版本) 开启minifyEnabled 开启shrinkResources 已经去除不相关的大型库 图片和…

python操作MySQL、SQL注入问题、视图、触发器、事务、存储过程、函数、流程控制、索引(重点)

python操作MySQL(重要) SQL的由来: MySQL本身就是一款C/S架构,有服务端、有客户端,自身带了有客户端:mysql.exe python这门语言成为了MySQL的客户端(对于一个服务端来说,客户端可以有很多) 操作步骤: …