大家好,上一次我们学习了关于Linux中的基础指令,那么我们今天来继续学习Linux的新的内容:权限。那么话不多说,我们开始今天的学习:

目录

Linux权限

1. Linux权限的概念

2. Linux权限管理

3. ⽂件权限值的表⽰⽅法

4. ⽂件访问权限的相关设置⽅法

5. umask

6. ⽬录的权限 

7.粘滞位


Linux权限

对于权限我们先来思考两个问题:

权限是什么?

权限的本质:能或不能做什么事情

为什么有权限?

1. 控制用户的行为,防止错误的发生

2. 权限首先限制的用户,权限要求目标必须具备相应的属性

所以我们可以总结出:权限=用户+目标属性 ,也就是说,权限限制的就是用户和目标属性这两个方面,下面我们就从这两个方面来学习。

1. Linux权限的概念
Linux下有两种⽤⼾:超级⽤⼾(root)、普通⽤⼾。
超级⽤⼾:可以再linux系统下做任何事情,不受限制
普通⽤⼾:在linux下做有限的事情。
超级⽤⼾的命令提⽰符是“#”,普通⽤⼾的命令提⽰符是“$”。

这里我们学习一个新的命令:

名令:su [⽤⼾名]
功能:切换⽤⼾。
例如,要从root⽤⼾切换到普通⽤⼾user,则使⽤ su user。
要从普通⽤⼾user切换到root⽤⼾则使⽤ su root(root可以省略),此时系统会提⽰输⼊root⽤户的密码。

当我们使用 su ( root ) 时,系统会在我们当前用户上新覆盖一个root的身份,而当我们使用 su - ( root ) 时,系统会登录root用户,这是这两种使用方法的区别。

2. Linux权限管理

1. ⽂件访问者的分类(用户)
⽂件和⽂件⽬录的所有者:u---User
⽂件和⽂件⽬录的所有者所在的组的⽤⼾:g---Group
其它⽤⼾:o---Others 
2. ⽂件类型和访问权限(事物属性)
⽂件类型:
d:⽂件夹
-:普通⽂件
l:软链接(类似Windows的快捷⽅式)
b:块设备⽂件(例如硬盘、光驱等)
p:管道⽂件
c:字符设备⽂件(例如屏幕等串⼝设备)
s:套接⼝⽂件
基本权限:
读(r/4):Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息
的权限
写(w/2):Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除移动⽬录内
⽂件的权限
执⾏(x/1):execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权
“—”表⽰不具有该项权限

 在我们实际使用的时候,有些时候会遇到一些我们想要执行的操作但是这些操作只能由root用户来执行,比如说安装软件,这需要管理员root的权限,这时候就需要另一个命令:

命令:sudo[选项] [命令]

功能:它允许系统管理员为普通用户分配特定的 root 权限,避免直接使用 root 账户登录

-rw-r--r--. 1 root root 0 9 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9 19 15:53 litao
-rw-r--r--. 1 root root 0 9 19 15:59 root.c

我们来看这三个文件的详细信息,

其中,画线部分第一个用户名就是文件目录的所有者,第二个用户名就是文件目录的所属组,至于其他用户,这里并不需要给出,因为对于一个用户他既不是所有者也不是所属组那么他就是其他用户,在这里就无法给出其他用户的具体用户名。

下面我们来看用户名前面这一部分,我们上一次学习了这里第一个字符代表文件的类型,决定了这是目录还是一个什么类型的文件,后面9个字符我们每三个分成一组,第一组就代表所有者对该文件或目录的权限,第二组代表所属组的权限,第三组代表其他用户的权限。

其中r代表可读,w代表可写,x代表可执行。但是一个文件具体能不能执行不仅需要该文件是可执行文件也需要有可执行权限,否则都无法执行。

1.能改任何人的文件权限吗?用户只能更改自己的文件权限

2.没有权限怎么念?系统会拒绝让我们访问

3.确认权限信息的时候,系统会先确定用户是谁?拥有者,所属组,还是 other?在 Centos 下 用户角色确定,只确定一次 顺序是:拥有者,所属组,other

4.root 用户的权限?不受权限约束

3. ⽂件权限值的表⽰⽅法

符表⽰⽅法
8进制数值表⽰⽅法

每一组权限都由r w x组成,每个权限都有两种可能也就是可读和不可读... ,那么我们可以用二进制来表示,对于可读可写可执行那么它的二进制就是111,写成8进制就是7,对于不可读不可写不可执行那么它的二进制就是000,写成8进制就是0,因此我们把上述三个文件的权限全部写成8进制就是644 755 644,这样在后面修改权限时使用会更方便 一些。

4. ⽂件访问权限的相关设置⽅法
chmod
功能:设置⽂件的访问权限
格式:chmod [参数] 权限 ⽂件名
常⽤选项:
R -> 递归修改⽬录⽂件的权限
说明:只有⽂件的拥有者和root才可以改变⽂件的权限
chmod命令权限值的格式:
⽤⼾表⽰符+/-=权限字符
+:向权限范围增加权限代号所表⽰的权限
-:向权限范围取消权限代号所表⽰的权限
=:向权限范围赋予权限代号所表⽰的权限
⽤⼾符号:
u:拥有者
g:拥有者同组⽤
o:其它⽤⼾
a:所有⽤⼾

chmod u+r test.txt 

这就代表我们给test.txt文件的所有者加上了可读权限

chmod g-rw test.txt

这代表我们给test.txt文件的所属组减去了可读可写权限

同样我们也可以给其他用户修改权限,这里不多介绍了

当然也可以使用8进制来修改

chmod 664 /home/abc.txt
chmod 640 /home/abc.txt
chown
功能:修改⽂件的拥有者
格式:chown [参数] ⽤⼾名 ⽂件名
实例:
chown user1 f1
这是把文件 f1 的所有者给user1
chown -R user1 filegroup1

 这是把filegroup1目录的所有者给user1

 chgrp

功能:修改⽂件或⽬录的所属组
格式:chgrp [参数] ⽤⼾组名 ⽂件名
常⽤选项:-R 递归修改⽂件或⽬录的所属组
实例: chgrp users /abc/f2

当我们新建文件或目录的时候,它的默认权限是怎么来的呢? 

5. umask

对于普通文件来讲:起始权限 666,默认不带可执行
对于目录文件来讲:起始权限 777,默认带 x

那为什么默认权限是我们看到的样子? 

因为系统默认存在一个叫做权限掩码的概念:

查看或修改⽂件掩码
新建⽂件夹默认权限=0666
新建⽬录默认权限=0777
但实际上你所创建的⽂件和⽬录,看到的权限往往不是上⾯这个值。原因就是创建⽂件或⽬录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的⽂件权限是: mask & (~umask)
格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产⽣建⽴⽂件时预设权限。超级⽤⼾默认掩码值为0022,普通⽤⼾默认为0002。
实例:
umask // 查看权限掩码
umask 044// 设置权限掩码

 若是修改权限掩码后忘了改回去,不用担心,这个每次登录时都会回到默认值。

1.umask 的目的什么?

希望凡是在 umask 中出现的权限,都不应该在最终权限中出现 

2.为什么要有 umask?
默认权限,有 OS 自主决定,无法在创建前进行统一… 系统可控层,可以灵活满足需要的一种表现
特殊情况下,配置 umask,可以控制文件的默认权限,让我们的代码都是可控的。

6. ⽬录的权限 

说完了文件的权限,那我们再来看一看目录的权限:

1.rwx 分别对目录意味着什么?

r对于目录来说代表这可以打开目录中的文件,也就是可以读取文件里的内容

w对于目录来说代表可以在目录中修改文件,包括新建,删除,修改等

x对于目录来说才是可以访问该目录,代表该目录可执行(可访问)

2.默认情况下,我们新建一个目录,rwx 权限都要有!

⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。
如果⽬录没有 -x 权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法 cd 进⼊⽬, 即使⽬录仍然有 -r 读权限(这个地⽅很容易犯错,认为有读权限就可以进⼊⽬录读取⽬录下的⽂件)
⽽如果⽬录具有 -x 权限,但没有 -r 权限,则⽤⼾可以执⾏命令,可以 cd 进⼊⽬录。但由于没有⽬录的读权限
所以在⽬录下,即使可以执⾏ ls 命令,但仍然没有权限读出⽬录下的⽂档。
于是, 问题来了~~ 换句话来讲, 就是只要⽤⼾具有⽬录的写权限, ⽤⼾就可以删除⽬录中的⽂件, ⽽不论这个⽤户是否有这个⽂件的写权限。这好像不太科学啊, 我张三创建的⼀个⽂件, 凭什么被你李四可以删掉?
为了解决这个不科学的问题, Linux引⼊了粘滞位的概念:
7.粘滞位

当⼀个⽬录被设置为"粘滞位"(⽤chmod +t),则该⽬录下的⽂件只能由

1. 超级管理员删除
2. 该⽬录的所有者删除
3. 该⽂件的所有者删除
用户类型是否可删除文件
文件创建者可以(无论目录所有者是谁)
目录所有者可以(无论文件所有者是谁)
其他普通用户不可以(即使有目录写权限)
超级用户(root)可以(不受粘滞位限制)

 好的,那么我们今天关于权限的内容到这里就结束了,让我们下次再见。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记 <交通灯> <多智能体>DERLight双重经验回放灯机制

今天看的论文是这篇 主要提出了传统优先级经验回放(PER)在复杂交通场景中效率低下,使用二叉树存储样本,导致大规模样本时计算复杂度高。而且不丢弃样本,造成存储空间浪费。 双重经验池: 为了解决以上问题…

Chromium 136 编译指南 macOS篇:环境准备与系统配置(一)

1. 引言 在浏览器技术的星空中,Chromium 犹如一颗最亮的明星,照亮了整个互联网的发展轨迹。作为推动现代 Web 技术革命的核心引擎,Chromium 不仅是 Google Chrome 的技术基石,更是 Microsoft Edge、Opera、以及众多定制浏览器的共…

linux机器间无密码如何传输文件

1. scp传输时的问题 $ scp deepseek_r1_distill_qwen1.5b_content_audit_fp16_20250613_2_Q4_K_M.gguf xxx192.168.xxx:/home/xxx/pretrained_model/output The authenticity of host 192.168.xxx (192.168.xxx) cant be established. ED25519 key fingerprint is SHA256:deOs…

PySpark 使用pyarrow指定版本

背景说明 在 PySpark 3.1.3 环境中,当需要使用与集群环境不同版本的 PyArrow (如 1.0.0 版本)时,可以通过以下方法实现,而无需更改集群环境配置 完整操作说明 去pyarrowPyPI下载对应版本的whl文件后缀whl直接改成zip解压后有两个文件夹&am…

安卓APP投屏调试工具使用教程

安卓APP投屏调试工具使用教程 一、准备工作(一)下载ADB工具(二)配置ADB的环境变量(三)检查是否成功安装(四)adb核心命令说明 二、无线调试流程(一)环境要求&a…

huggingface网站里的模型和数据集

直接下载肯定是不太行,平时访问都不容易,更别提下载东西了,但是我们可以通过国内镜像进行快速下载。 镜像网址: hf-mirror地址:HF-Mirror 进入网站之后,在搜索框里搜索你想下载的内容,接下来…

Node.js 路由请求方式大全解:深度剖析与工程实践

文章目录 🌐 Node.js 路由请求方式大全解:深度剖析与工程实践一、📜 HTTP 请求方法全景图🏆 核心方法深度对比HTTP 请求方法概念对比表🛠️ 特殊方法应用场景 二、🎨 各方法深度解析1. GET - 数据查看器&am…

JS-实现一个链式调用工具库

要求: 支持链式调用,如:_chain(data).map().filter().value()实现map、filter、等常用方法支持惰性求值(延迟执行、直到用到value()时才真正计算)。 链式调用的实现原理的关键点是:函数执行完以后&#x…

【人工智能数学基础】实变函数与泛函分析

数学分析、解析几何、高等代数、实变函数、常微分方程、近世代数、微分几何、复变函数、点集拓扑、概率论、数理统计、数理逻辑、偏微分方程、泛函分析、动力系统、数学物理方程、数论导引、群与代数表示、微分流形、代数拓扑、代数几何、金融数学、多元统计分析、应用随机过程…

css3 背景色渐变

在 CSS 中,使用渐变色需要用到 gradient 属性,而 gradient 属性分为 线性渐变 linear-gradient 与 径向渐变 radial-gradient。今天主要是说一下 linear-gradient 线性渐变属性。 例如:background: linear-gradient(90deg, #e7f1fc, #f5f9fb…

将图片合成为视频(基于 OpenCV)

本文将介绍如何使用 Python 和 OpenCV 将一组图像文件合成为一个视频文件。你将学会: 使用 os 模块遍历文件夹中的图像 使用 cv2.VideoWriter 写入视频 设置分辨率与帧率参数 对图像尺寸进行统一处理 简单的视频生成应用开发 1. 所需模块与安装 本章需要以下 …

HanLP 使用教程:从安装到实战应用

HanLP 使用教程:从安装到实战应用 HanLP 是由hankcs开发的一款高效、多功能的中文自然语言处理(NLP)工具包,支持分词、词性标注、命名实体识别(NER)、依存句法分析、关键词提取、文本摘要等任务。本教程将…

MySQL 分组函数全面详解与最佳实践

MySQL 分组函数全面详解与最佳实践 MySQL 分组函数(聚合函数)的核心知识、注意事项和高级应用技巧: 📊 分组函数核心列表 函数描述示例COUNT()计算行数COUNT(*)SUM()计算数值总和SUM(salary)AVG()计算平均值AVG(score)MAX()获取…

华为OD 最小循环子数组

1. 题意 给定一个由若干整数组成的数组 nums,请检查数组是否是由某个子数组重复循环拼接而成,请输出这个最小的子数组。 2. 题解 利用 k m p kmp kmp中的 n e x t next next数组性质,我们可以求出 n u m s nums nums中的最长公共 前缀后缀…

FreeCAD创作参数化凹形和水波纹式雨水箅子

这种非常流行的美观的雨水篦子是都市的宠爱,大家要多多去用。 用FC来创建参数化后,设计人员可以随意修改参数,满足自身的要求,调整各部件的位置,达到满意的布局,非常快捷。 水波纹雨水篦子 凹形雨水篦子

如何用一台服务器用dify私有部署通用的大模型应用?

dify是什么?如何用一台服务器用dify私有部署通用的大模型应用? Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和LLMOps的理念,使开发者可以快速搭建生产级的生成式 AI 应用…

海洋捕食算法优化BP神经网络

引言BP神经网络因梯度下降法的固有缺陷,常出现训练震荡和早熟收敛。海洋捕食算法(MPA)受海洋生物觅食行为启发,其分阶段搜索策略(高速游动→自适应步长→局部开发)能有效平衡全局探索与局部开发。本文通过MPA优化BP初始权值及学习率,构建混合优化模型。 方法论2.1 MPA算…

C++/OpenCV 图像预处理与 PaddleOCR 结合进行高效字符识别

C/OpenCV 图像预处理与 PaddleOCR 结合进行高效字符识别 在许多实际应用场景中,直接从原始图片中提取文字的准确率可能不尽人意。图像中的噪声、光照不均、角度倾斜等问题都会严重干扰 OCR (Optical Character Recognition) 引擎的识别效果。本文将详细介绍如何利用…

线程的学习

1. 线程 1. 线程是一个进程内部的控制序列 2. 线程在进程内部运行,本质是在进程地址空间内运行 3. 进程:承担分配系统资源的基本实体 线程:CPU调度的基本单位 4. 线程在进程地址空间内运行 进程访问的大部分资源都是通过地址空间访问的 …

Qt Quick 与 QML(三)qml中的基础控件

一、基础控件 控件名称‌‌功能描述‌‌示例代码‌‌Rectangle‌基础绘图控件&#xff0c;创建矩形区域Rectangle {width: 100; height: 100<br> color: "red"; radius: 5}‌Text/Label‌文本显示控件Text {text: "Hello World";<br> font.pi…