初始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 
logout5. 粘滞位
假设有一个和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选项将宿主机上的目录或文件挂载到…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
 
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
 
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
 
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
 
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
 
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...












