【Linux系统】Linux权限讲解!!!超详细!!!

news/2025/4/1 13:27:38/

目录

Linux文件类型

区分方法

文件类型 

Linux用户

用户创建与删除

用户之间的转换

su指令

普通用户->超级用户(root)

超级用户(root) ->普通用户

普通账户->普通账户

普通用户的权限提高

sudo指令

注:

Linux权限

定义

权限操作

1、修改文件权限属性

1.1chmod指令:修改文件权限属性

1.2 身份匹配机制

1.3 x 权限:可执行权限

2、修改使用文件角色

2.1 chown指令:可以修改文件的拥有者

2.2 chgrp指令:修改文件所属组

2.3 sudo chown 用户名/用户名 文件名

目录文件权限

r:是否允许用户查看执行目录文件下的文件

w:是否允许用户修改执行目录文件下文件

x:是否允许用户进入目录文件

最终权限 = 起始权限 去掉 umask

1、文件起始权限(新建时就带有的权限):

2、umask:权限掩码

多个用户间进行文件和数据的共享

1、把该文件或数据放在一个公共目录文件下,然后再公共目录下让多个普通用户以other身份来进行数据分享

2、粘滞位[t]

3、file指令:查看文件类型及更详细的信息


Linux文件类型

区分方法

在不同操作系统中,区分文件类型的方法各有不同

1、在Windows中,是以文件后缀来区分文件类型

2、在Linux中,是以文件属性来区分文件类型

但是我们在Linux中所使用到的一些工具也是会以文件后缀来区分类型,如:g++

注:

虽然Linux中是以文件属性来区分类型的,但我们在创建文件时,是可以自己在文件后面加上不同的后缀的,让我们自己在使用的时候可以一眼看出来

文件类型 

文件类型
d目录文件(类似于Windows中的文件夹)
-普通文件:包括源文件、文本文件、可执行文件、音视频文件等
l软链接(类似于Windows中的快捷方式)
b块设备文件:例如硬盘、光驱等(支持随机读取)
c字符设备文件:例如显示屏、键盘等(不支持随机读取,读取时以字符为单位)
p管道文件
s套接口文件

Linux用户

用户创建与删除

1、adduser 用户名

2、passwd 用户名

然后输入密码,就创建成功了(这个密码以后就是这个用户的密码了)

删除用户:userdel 用户名

注:删除用户必须在root账号下才能进行

用户之间的转换

su指令

用法:su 用户名

能实现用户账号之间的转换,但不能进行两个普通账号的直接转换

1、su 用户名:这种方法只是单纯切换身份,但不改变工作目录

 

2、su - 用户名:这种方法会重新登录账号,工作目录变为根目录/

普通用户->超级用户(root)

1、su root 

2、passwd:root账号密码

密码成功就可以切换到root账号

超级用户(root) ->普通用户

root账号是系统的超级账号,它具有最高权限,可以直接切换成系统下任意一个账号

所以直接一个:su 用户名,就以实现切换

普通账户->普通账户

普通账户之间的转换需要先切换成root账号,在切换成另一个普通账户,因为我们无法得知另外一个普通账户的密码

我们要想直接切换成另一个普通账户,就必须知道另一个普通账户的密码,但这在工作环境中是不可能的,所以我们要想切换成另外一个普通账户,最简单的方式就是通过root来进行普通账户的切换

普通用户的权限提高

普通用户是不可以越出自身所处的工作目录之外对系统其他目录内文件进行操作的

sudo指令

在对文件进行操作前加上sudo,就可以提高用户的权限,让它以root的身份进行指令操作

而且,加上sudo创建的文件也是以root身份创建的

注:

文件操作中第一次使用该指令的时候,是需要输入当前用户的密码,然后下次使用在系统规定的时间内就不需要再输入密码了

但使用这个指令的前提是,必须要在root账号下加入"白名单",新创建用户默认是无法执行该指令的

而这个白名单就是/etc/sudoers:在/etc/sudoers用nano(记事本)打开,然后下翻到100多行处,加入

用户名     ALL=(ALL)    ALL

就可以了 

Linux权限

定义

权限 = 用户身份 + 文件权限属性(r、w、x)

 所谓的权限就是允许什么人做什么事

在Linux中文件属性中就分为这几部分

在这里就出现了每个文件对于不同的用户的权限也就有所不同(三个权限一组),从左到右依次是:拥有者、所属组、other

而对于这些不同的用户,我们把它们分为三组

1、拥有者(u):文件或文件目录的所有者

2、所属组(g):和拥有者所在同一组的用户

3、other(o):其他用户

权限操作

1、修改文件权限属性

1.1chmod指令:修改文件权限属性

chmod 用户(u/g/o) [+/-/=] 权限(rwx) 文件名

注:当对多个用户进行权限操作时,就需要用","来隔开

也可以用“a”来对三种用户一起进行操作

chmod a [+/-/=] 权限(rwx) 文件名yong

还有一种方法就是用八进制数来进行权限的修改

那我们就是通过每个用户想要的权限进行八进制计算就可以修改权限

例: 

当我们将拥有者的权限全部清除了的话,拥有者就无法在对该文件进行任何操作了,这种操作一般用于该文件操作完成了,防止后面操作对该文件进行误操作时而进行的

1.2 身份匹配机制

在权限进行身份匹配时,身份就只是会匹配一次,一旦匹配成功则就会考虑当前身份下的权限就不会继续往下匹配了

匹配顺序:从左往右匹配身份

只有当前一次匹配失败才会继续往右匹配

1.3 x 权限:可执行权限

x权限是系统支持的可执行权限,但不代表有x权限文件就能执行

一个可执行文件 = 可执行权限 + 文件本身能执行

2、修改使用文件角色

2.1 chown指令:可以修改文件的拥有者

chown 其他用户 文件名

该指令只能在root账号下才可以实现,或者加上suto(必须提权)

因为把一个文件交给另一个用户,会影响另一个用户,所以为了安全起见就必须在root下才可以进行

2.2 chgrp指令:修改文件所属组

chgrp 其他用户名 文件名

它的操作和chown差不多,都必须提权才能使用

2.3 sudo chown 用户名/用户名 文件名

可以同时修改拥有者和所属组  

目录文件权限

r:是否允许用户查看执行目录文件下的文件

w:是否允许用户修改执行目录文件下文件

这里的修改是指,能否在目录文件下新建文件和删除文件,以及给目录下已存在文件重命名

它不会影响修改文件权限属性

由此也可以知道:一个文件是否能被删除是取决于所处目录文件的权限

x:是否允许用户进入目录文件

最终权限 = 起始权限 去掉 umask

1、文件起始权限(新建时就带有的权限):

普通文件的起始权限:666

目录文件的起始权限:777

2、umask:权限掩码

权限掩码就是过滤掉在权限掩码中出现的权限,不同系统的权限掩码各有不同

我们可以在系统中输入umask来查看该系统的权限掩码

权限掩码也是可以进行设置:umask + 要修改的权限掩码

所谓的最终权限 = 起始权限 去掉 umask,其中的去掉其实是用起始权限&(~umask)

多个用户间进行文件和数据的共享

1、把该文件或数据放在一个公共目录文件下,然后再公共目录下让多个普通用户以other身份来进行数据分享

这个办法是有缺点的:会出现互删的情况,即使通过修改目录权限w来禁止这种情况,但会影响该目录文件新建和重命名文件,而且也无法再对自己的文件进行修改

2、粘滞位[t]

给执行目录文件加上粘滞位(chmod +t 目录文件名)

当一个目录文件被设置了粘滞位后,该目录下的文件就只能被:

· root账号删除

· 该目录的拥有者删除

· 该文件的拥有者删除

3、file指令:查看文件类型及更详细的信息

file 文件名

 


http://www.ppmy.cn/news/1583394.html

相关文章

抽象工厂设计模式及应用案例

引言 在软件开发中,合理的设计模式可以有效地提高代码的可维护性、可扩展性和可重用性。抽象工厂模式(Abstract Factory Pattern)便是一个重要的创建型设计模式,它允许我们在不指定具体类的情况下,创建一系列相关或相…

为什么要将项目部署到外部tomcat

一、是什么 指将你的Java Web应用程序(如WAR包)安装并运行在一个独立安装的、位于项目外部的Tomcat服务器上,而不是使用内嵌的或开发环境自带的服务器。 外部Tomcat 指独立安装的Tomcat服务器(如从Apache官网下载的Tomcat&#…

LLM - CentOS上离线部署Ollama+Qwen2.5-coder模型完全指南

文章目录 离线安装OllamaOllama下载Ollama硬件需求Ollama 常用命令参考Ollama安装Ollama 服务管理&开机启动开启局域网访问 Ollama 服务 离线安装模型gguf 文件格式下载Qwen2.5-Coder-7B-Instruct-GGUF格式选择 ( gguf 版本 )构建Modelfile文件加载并运行离线模型测试 集成…

详解接口的常见请求方式

详解接口的常见请求方式 一、 常见接口请求方式1. GET2. POST3. PUT4. DELETE5. PATCH6. HEAD7. OPTIONS 二、 实现方法1. 前端实现2. 后端实现 三、 作用与主要区别四、 举例讲解1. 创建 Spring Boot 工程2. 添加依赖3. 编写 Controller 实现接口关键点说明 4. 启动与测试5. 总…

AI时代的网络:TSN 网络技术全面解析​

一、引言​ 在当今数字化时代,网络技术的发展日新月异。从工业自动化到智能交通,从高清音视频传输到云计算数据中心,各个领域对网络性能的要求不断提高。传统网络技术在应对一些对时间敏感、可靠性要求极高的应用场景时,逐渐显得…

Ubuntu双系统如何用另一个磁盘扩容?

在双系统环境下为Ubuntu扩容,尤其是利用另一个磁盘(如从Windows压缩出的空闲空间或新增的物理磁盘),可通过以下步骤实现。根据不同的场景,分为**扩展现有分区**和**挂载新分区**两种方式: --- ### **一、…

热门面试题第13天|Leetcode 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数

222.完全二叉树的节点个数(优先掌握递归) 需要了解,普通二叉树 怎么求,完全二叉树又怎么求 题目链接/文章讲解/视频讲解:https://programmercarl.com/0222.%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8…

C++11 引入了的新特性与实例说明

C11 引入了许多重要的新特性&#xff0c;以下是一些关键特性及其对应的示例代码&#xff0c;用于体现这些特性的用法和优势。 1. 自动类型推导 (auto) auto 关键字允许编译器自动推导变量的类型&#xff0c;简化代码书写。 #include <iostream> #include <vector>…