初始Linux (2) : 权限
1. su [用户名]及权限概念
Linux中有两种用户:普通用户、超级用户
超级用户可以再 linux 系统下做任何事情,不受限制;而普通用户只能做有限的事情。
可以使用指令:su -快速进入root账户,但需要输入相关密码。
超级用户可以直接切换到任意普通用户,不需要输入密码:

普通用户的命令行提示是$
超级用户的命令行提示是#
如果不想变成root,但是想用root的权限做事(sudo):

sudo指令在配置进配置文件之前是不能被执行的:

必须将用户lsnm添加到配置文件中,lsnm才能使用sudo命令。(此处重点是观察现象)
配置文件属于root
2. 访问者权限
我们将文件访问者称为:“人”
人有三类:拥有者,所属组,other
拥有者和所属组的信息都能在文件信息中查看。不是拥有者也不是所属组,即为other
如上,第一个root是拥有者,第二个root是所属组。
拥有者(u)和所属组(g)区别如下:
在Linux系统中,文件的权限和所有权是通过文件系统来管理的。每个文件和目录都有两个重要的属性:拥有者(Owner)和所属组(Group)。这两个属性对于文件的访问控制至关重要。
1. **拥有者(Owner)**:
- 文件的拥有者是创建该文件的用户。拥有者对文件有完全的控制权,可以读取、写入和执行文件,也可以更改文件的权限和所有权。
- 拥有者可以是任何有效的用户账户。2. **所属组(Group)**:
- 每个用户都属于一个或多个组。当一个文件被创建时,它会被赋予一个默认的组,通常是创建它的用户的主组。
- 属于文件所属组的用户可以按照该组的权限来访问文件。例如,如果一个文件的组权限设置为可读,那么所有属于该组的用户都可以读取该文件,但不一定能够写入或执行。
文件的权限要考虑谁在用(人)、以及文件拥有什么属性(文件属性)。

r-读(文件具有读权限)
w-写(文件具有写权限)
x-执行(文件具有执行权限)

一共十个位置来表示权限,抛开第一个位置表示“文件类型”
其他的三三为一组,第一个为拥有者权限、第二个是所属组权限,第三个是other
有权限就有对应的字母,没权限就是-

拥有者、所属组、other是一种角色
每一个用户是一个人,角色需要人来扮演,人一定会成为一个角色。
3. 权限的改变
chmod : changemode,用changemode来改变“人”的权限。但是此时我不是文件拥有者,所以"operation not permitted"

说明:只有文件的拥有者和root才可以改变文件的权限!
更改权限的操作:
对拥有者的修改,拥有者名字为u(user),所属组名字为g(group),other名字为o(other)
格式为: chmod (人)(+或-)(权限) 要改权限的文件名
如:chmod o+rwx file_lsnm chmod u-x,g+w test.cpp

对g的操作:

也可以使用a(all)直接对所有人操作:


除了以上方法,还有一种八进制改权限的方法:
因为u/g/o的权限由三个位置组成,并且顺序固定,都是rwx,我们使用1代表有权限,0代表无权限。即110 326 777等。
110:001 001 000 , 也就是u、g有x权限,o没有任何权限。
326:011 010 110 , 也就是u有w和x权限,g有w权限,o有r和w权限
777:和 chmod a+rwx filename是一个意思。
注意:有可执行权限 和 文件可以被执行,是两件事情:
所以就算给了x权限,文件本身不是可执行文件,依然执行不了。
比如一个.txt的文件,不管怎么给x权限,也是无法执行的。
注意:确定身份的过程只进行一次,并且有序:
如果你是拥有者并且也是所属组,因为先确定了你是拥有者,所以就不会再往下确定了(最终你是否有访问、阅读或执行的权限就取决于拥有者的权限)。确定身份的顺序是:拥有者、所属组、other
注意:root无视权限:

除了改文件属性,还能改文件的拥有者、所属组(chown chgrp)
chown(依然是只有root或者文件拥有者可以改权限):
chgrp(依然是只有root或者文件拥有者可以改权限):
![]()
其实只使用一个chown可以同时改拥有者和所属组:
![]()
使用冒号隔开拥有者和所属组。
刚才都是使用root更改每一个文件的权限。但假如我以普通用户的身份,将一份文件的所属权给另一个用户,就会:operation not permitted
普通人“给”不能直接给,给东西应当征求被给东西的人的意见

因此,一般要给别人都必须使用sudo指令短暂提升权限。
4. 目录的权限

创建一个文件权限默认是664
文件夹权限默认是775
先讨论目录的rwx权限:
没有r权限:
对于目录来讲,没有r权限,依然可以进入该文件夹。
但是会影响我们查看该目录里面的文件列表:
没有w权限:
不能在文件夹中touch(新建文件)、不能rm文件夹中的东西。具体能否对该文件夹中的文件进行操作,取决于文件的性质。
但是可以进入文件夹,然后操作一个已经存在的文件
没有x权限:
无法进入目录。
总结:
可执行权限 : 如果目录没有可执行权限 , 则无法 cd 到目录中可读权限 : 如果目录没有可读权限 , 则无法用 ls 等命令查看目录中的文件内容 .可写权限 : 如果目录没有可写权限 , 则无法在目录中创建文件 , 也无法在目录中删除文件
因此,进入一个目录不需要r或者w的权限
能否进入目录,取决于用户对于该目录是否有x,也就是是否有可执行权限
至于为什么文件夹和文件的权限是775和664:

文件和文件夹的最终权限由起始权限和权限掩码一起组成。
权限掩码:更便于控制文件的起始权限。可以用umask指令来看权限掩码。
![]()
目录文件的初始是777,普通文件的初始是666。先按位取反再按位与即可得到最终权限。
指令umask:
umask功能 :查看或修改文件掩码新建文件夹默认权限 =0666新建目录默认权限 =0777但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是 mask,则实际创建的出来的文件权限是: mask & ~umask
![]()
特殊问题:
1 、就算root在一个用户的文件夹里,比如:/home/lsnm 新建了一个文件。依然可以被lsnm直接删除。
2、除了root,任何人的文件夹都不允许其他人进入,可观察到权限都是700

新建、删除文件,不属于文件自己的权限,而属于文件所在目录的w权限
如果两个账号AB想交互文件:
那么需要找一个既不属于A的目录,也不属于B的目录下才能交互文件。
那么这个文件夹一般会设计成和home在同一个文件夹下,由root新建,然后对other的权限是rwx。那么此时除了A和B,C作为不想参与交互的破坏者能否直接删除该文件夹呢?
[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-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
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y
[litao@localhost ~]$ exit
logout
5. 粘滞位
假设有一个和home在同一目录下的文件夹叫share_112用于完成文件交互。
![]()
我们希望大家都能进来使用、交互文件,但是不希望有人恶意破坏。因此对Other的权限要放开,并且+t,让other中的人不能破坏。
![]()
粘滞位的本质就是对“删除”进行单独处理
当一个目录被设置为 " 粘滞位 "( 用 chmod +t), 则该目录下的文件只能由一、超级管理员删除二、该目录的所有者删除三、该文件的所有者删除
权限是理解Linux操作系统中重要的一环,以后但凡遇到Permission denied,都可以回到此文
相关文章:
初始Linux (2) : 权限
1. su [用户名]及权限概念 Linux中有两种用户:普通用户、超级用户 超级用户可以再 linux 系统下做任何事情,不受限制;而普通用户只能做有限的事情。 可以使用指令:su -快速进入root账户,但需要输入相关密码。 超级用…...
在Mac下安装时间序列软件Hector
1.软件介绍 Hector 是一款开源软件,专用于 GNSS 时间序列数据的处理与分析,广泛应用于地球科学研究。它帮助研究人员从 GNSS 数据中提取长期趋势、周期性成分,并建模噪声特性,用于地壳形变、地震影响和气候变化等方面的研究。Hec…...
JVM1.8内存模型
一、内存模型概览 本文介绍的是JDK1.8的内存模型。1.8同1.7相比,最大的差别就是元空间取代了永久代。元空间的本质和永久代类似,都是堆JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不存在虚拟机中,而是…...
windows C#-类型系统(上)
C# 是一种强类型语言。 每个变量和常量都有一个类型,每个求值的表达式也是如此。 每个方法声明都为每个输入参数和返回值指定名称、类型和种类(值、引用或输出)。 .NET 类库定义了内置数值类型和表示各种构造的复杂类型。 其中包括文件系统、网络连接、对象的集合和…...
【酷狗音乐】逆向登录参数分析
mid、uuid参数 从cookie里面取值kg_mid,没有就生成 dfid也是从cookie里面取的kg_dfid 清空cookie dfid "-"也是可以的 md5加密了一个随机uuid import uuid import hashlibuuid1 str(uuid.uuid4())def md5_encrypt(text):return hashlib.md5(text.enco…...
Jenkins面试整理-Jenkins Pipeline 是什么?
Jenkins Pipeline 是一种将 Jenkins 中的持续集成和持续交付(CI/CD)流程定义为代码的方式。Pipeline 提供了一种灵活、可维护的方式,通过脚本来描述构建、测试、部署等流程。Jenkins Pipeline 使用 Groovy 作为脚本语言,并可以通过 Jenkinsfile 来定义和管理流水线。 Jenki…...
RHCE第三次实验
要求 (1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。 (2)访问缴费网站实现数据加密基于https访问。 架设一台NFS服务器,并按照以下要求配置 1、开放/nfs/shared目录,供所…...
基于LORA的一主多从监测系统_4G模块上巴法云
临时添加一个更新,更换云平台为巴法云,事情的起因是因为阿里云这个老六,早上睡了一觉起来发短信告诉我云平台给我停了,得交钱,好嘛,不过也没办法现在这基本都收费,当然还有onenet可以用…...
pip使用
pip全称pip install package,是python第三方包sitepackage管理的工具,安装,卸载第三方包。安装python时可以选择安装pip,或自己安装pip 查看pip是否安装:pip --version 安装pip :pip python -m pip install --upgrade…...
Django ORM详解:外键使用(外键逻辑关联)与查询优化
Django数据库迁移 # 创建迁移 python manage.py makemigrations your_app_name # 应用迁移 python manage.py migrate # 查看迁移状态 python manage.py showmigrations # 回滚迁移 python manage.py migrate your_app_name 0001 # 修改表后,删除迁移记录和表删除迁移记录后重…...
【Python】实战:使用input()从键盘获取一个字符串,判断这个字符串在列表中是否存在(函数体不能使用in),返回结果为True或False
使用input()从键盘获取一个字符串,判断这个字符串在列表中是否存在(函数体不能使用in),返回结果为True或False def exists_in_list(input_string, str_list):# 遍历列表中的每个元素for item in str_list:if item input_string: # 如果当前元素等于输…...
【YApi】接口管理平台
一、简介 YApi 是一个用于前后端开发团队协作的 API 管理平台,帮助团队更加高效地进行 API 接口的设计、测试、文档管理和版本控制等工作。 YApi 主要功能: API 设计和管理:提供 API 设计和文档生成工具,使开发者能够轻松创建、…...
QNAP威联通NAS忘记密码怎么办?
创作立场:原创不易,拒绝搬运~ hello 大家好,我是你们的老伙伴,稳重的大王~ 如题:在使用QNAP 威联通NAS期间,如果忘记密码,怎么去找回密码呢? 每台QNAP 威联通NAS,在机器…...
MySQL FIND_IN_SET 函数详解
文章目录 1. 基本语法2. 使用场景3. 实战示例3.1 基础查询示例3.2 与其他函数结合使用3.3 动态条件查询 4. 性能考虑5. 常见问题和解决方案5.1 大小写敏感问题5.2 空值处理5.3 模糊匹配 6. 总结 1. 基本语法 FIND_IN_SET 函数的基本语法如下: FIND_IN_SET(str, st…...
【零售和消费品&厨房】厨房食材检测图像分割系统源码&数据集全套:改进yolo11-goldyolo
改进yolo11-RepNCSPELAN等200全套创新点大全:厨房食材检测图像分割系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.30 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系…...
自制田字格word
背景 孩子上小学要开始学认字了,每周有好多字要打印,要是直接拿一张A4纸去打印,字的排版就显得尤为重要,排过来排过去,总感觉不够正式。就想去网上搜一个可以下载的田字格模板。某度搜了半天,倒是搜到一堆…...
微软官方 .NET 混淆软件 Dotfuscator
微软官方 .NET 混淆软件 Dotfuscator 1、前言2、Dotfuscator 特色2.1、强大的保护2.2、不需要顾问2.3、世界一流的支持2.4、广泛的平台支持 3、Dotfuscator 功能介绍3.1、.NET Obfuscator3.2、篡改防御和提示3.3、监控性能和使用情况3.4、Silverpght XAML Obfuscatio3.5、WPF B…...
19 Docker容器集群网络架构:二、etcd 集群部署
文章目录 Docker容器集群网络架构:二、etcd集群离线部署2.1 准备工作2.1.1 上传etcd2.1.2 解压etcd2.1.3 拷贝文件到/usr/local/bin2.1.4 创建相关目录并赋权2.2 创建etcd集群2.2.1 创建etcd配置文件2.2.2 配置etcd服务文件2.2.3 启动ectd服务2.3 查看etcd集群成员2.3.1 查看e…...
React + SpreadJS 开发时常见问题
在使用React与SpreadJS进行开发时,可能会遇到各种各样的问题。以下是一些常见的问题及其解决建议: 1. SpreadJS初始化失败 问题描述: 有时候SpreadJS的初始化可能会失败,特别是在React组件的生命周期内不当的初始化时机。 解决…...
docker 调用宿主机实现关机
Docker调用宿主机关机命令或调用宿主机程序,这涉及到了Docker容器与宿主机之间的通信和资源共享技术。具体来说,这种技术或通讯方式主要通过以下几种方法实现: 一、使用数据卷 Docker允许使用-v或--volume选项将宿主机上的目录或文件挂载到…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
es6+和css3新增的特性有哪些
一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...
echarts使用graphic强行给图增加一个边框(边框根据自己的图形大小设置)- 适用于无法使用dom的样式
pdf-lib https://blog.csdn.net/Shi_haoliu/article/details/148157624?spm1001.2014.3001.5501 为了完成在pdf中导出echarts图,如果边框加在dom上面,pdf-lib导出svg的时候并不会导出边框,所以只能在echarts图上面加边框 grid的边框是在图里…...











