【Linux】-权限

 🔑🔑博客主页:阿客不是客

🍓🍓系列专栏:深入代码世界,了解掌握 Linux

欢迎来到泊舟小课堂

😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注

一、权限的概念

在Linux 中,权限是控制用户对文件和目录访问的一种机制。每个文件和目录都有三种基本权限:读取(r)、写入(w)执行(x)。这些权限分别适用于三类用户:文件的拥有者
(u)、文件所属组的用户(g)和其他用户

1.1 用户的分类

Linux下有两种用户:超级用户(root)、普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制

  • 普通用户:在linux下做有限的事情。

  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

1.2 语法

su [用户名]

切换用户之后,想要退回上次用户可以用Ctrl + d 实现,也可以用exit 指令实现。 

1.3 sudo指令

但是有时候我们并不知道root 用户的密码,但是又需要root 用户去执行某条指令,那么这时就需要输入指令 sudo 指令 ,这条指令就可以提升我们要执行指令的权限,即让root 用户执行。但是使用这个指令有一个条件就是root 用户将此普通用户添加到可信任白名单中。

如果要将某个用户添加进入可信任白名单中,首先在root 用户下,通过指令 vim /etc/sudoers对应文件。

然后我们就可以使用sudo 指令 来提升指令时的权限。

二、 Linux权限管理

2.1 用户划分

在Linux中,为了方便管理文件,还对我们的用户或者文件访问者进行了分类:

  • 用户(u-User):文件或目录的所有者
  • 组(g-Group):文件或目录所属的用户组
  • 其他用户(0-Others):除所有者和所属组之外的所有其他用户

因为other可能存在多个,所以除了文件拥有者和文件所属组之外的都叫other

2.2 文件类型和权限

2.3.1 文件类型

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

2.3.2 基本权限

  • 读取(r):允许查看文件内容或列出目录内容。
  • 写入(w):允许修改文件内容或在目录中创建、删除文件。
  • 执行(x):允许执行文件或进入目录。
  • “—”:表示不具有该项权限

每个组的三个权限为 r w x,顺序不能改变,以下为详细解析:

字符表示法说明
r - -仅可读
- w -仅可写
- - x仅可执行
r w -可读可写
r - x可读可执行
- w x可写可执行
r w x可读可写可执行
- - -无权限

其实除了这种表示方法之外还有一种表示方法那就是八进制表示法,如下图:

字符表示法二进制八进制数值表示法说明
r - -1004仅可读
- w -0102仅可写
- - x0011仅可执行
r w -1106可读可写
r - x1015可读可执行
- w x0113可写可执行
r w x1117可读可写可执行
- - -0000无权限

 这种方式写起来更加方便,不需要使用用户符号+/-权限字符的方式,这在下面会提到

2.3 权限管理

2.3.1 修改文件权限

在了解权限的分类之后,我们接下来学习如何更改文件的访问权限:

语法:chmod 选项 权限 文件名

修改方法:chomd 用户符号+/-权限字符 文件

  • 用户符号:u:拥有者,g:所属组,o:other,a:所有用户。
  • 权限字符:r:读取,w:写入,x:执行

注:

  1. 用户只能修改自己的文件权限
  2. 没有权限系统会拒绝访问
  3. 确定权限信息时,系统会先确定用户属性,是拥有者,所属组,还是other用户角色确定,只确定一次,顺序是:拥有者,所属组,other。如果先确定了是拥有者,但没有部分权限,即使所属组拥有权限,也不能进行对应操作
  4. root 用户不受权限约束
  5. 可执行权限需要文件本身是一个可执行文件(例如.c文件)

2.3.2 修改文件拥有者和所属组

  1. 语法:chowm  选项  修改后的拥有者  指定文件名或者目录名
  2. 功能: 修改文件的拥有者。
  1. 语法:chgrp  选项  修改后的所属组  指定文件名或者目录名
  2. 功能: 修改文件的所属组。

注:此类修改需要高权限(sudo指令或者root权限)

 2.4 目录权限 

对于普通文件来说,可读,可写,可执行这种字面含义就能帮助我们理解其权限的作用,但是对于目录来说,就有所区别了。

  1. 可读权限: 如果用户没有该目录的可读权限,则无法通过ls指令查看目录中的文件内容。
  2. 可写权限: 如果用户没有该目录的可写权限,则无法通过一系列指令在目录中创建文件或删除文件。
  3. 可执行权限: 如果用户没有该目录的可执行权限,则无法通过cd指令进入到目录当中。

2.5 文件掩码

实际上,新建文件的默认权限为666(rw- rw- rw-),新建目录的默认权限为777(rwx rwx rwx),其中第一位与特殊权限相关,这里我们不需要深究。但是实际上新建文件与目录的默认权限并不如上所说,这是怎么回事呢?

其实这种情况就与我们的文件掩码 umask 有关了,最终权限是是默认权限(mask)和umask取反后按位与的结果(mask & ~(umask))

其中需要注意的是:root用户的默认掩码为0022,而普通用户为0002。

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

为什么要用umask

  1. 默认权限由系统自主决定,无法在创建时更改,umask可以让系统可配置,可灵活满足不同需求
  2. 特殊情况下,不同系统的默认权限可能不同,通过配置umask,可以在一定程度上控制文件的默认权限,让代码可控性更强

我们可以通过这个指令 umask 八进制数字 来修改umask的值 

2.6 粘滞位

我们在项目开发中会发现一种问题,我没有权限对一个文件进行写入和读取,但却能删除,这是为什么呢?

一个文件能否被删除与自身的权限无关,与所处的目录权限有关,虽然这个文件的权限为root,权限设置了无法进行任何操作,但因为我在文件所在的目录拥有写入权限,所以能对目录里面的文件进行删除。

所以了为了解决这个问题就引入了粘滞位的概念。

为目录添加粘滞位特别简单只需要输入指令:chmod +t 目录名

  • 粘滞位只对目录有效,对文件无效
  • 设置粘滞位后,其他用户仍然可以修改文件内容,但不能删除或移动文件。

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

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

相关文章

软件测试与软件缺陷的基础知识

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

技术面没过,竟然是因为我没用过Pytest框架?

想象一下,你在一次技术面试中满怀信心,答完所有问题,结果却被告知没通过,原因竟然是——你没用过Pytest框架!是的,在当今软件测试的世界里,Pytest已经成为了许多公司的“必备”技能。 那么问题…

数据库表的创建

运用的环境是pychram python3.11.4 创建一个表需要用到以下语法 注释已经写清楚各种语法的含义,记住缩进是你程序运行的关键,因为程序是看你的缩进来判断你的运行逻辑,像我这个就是缩进不合理导致的报错 那么今天分享就到这里,谢…

QScrollBar滑动条控件

人机验证简化版案例 //设置垂直滑动条的范围是0-100ui->verticalScrollBar->setRange(0,100);ui->horizontalScrollBar->setRange(0,100);//设置初始数值ui->verticalScrollBar->setValue(50);//void valueChanged(int value);connect(ui->verticalScroll…

uniapp修改input中placeholder样式

Uniapp官方提供了两种修改的属性方法&#xff0c;但经过测试&#xff0c;只有 placeholder-class 属性能够生效 <input placeholder"请输入手机验证码" placeholder-class"input-placeholder"/><!-- css --> <style lang"scss" s…

基于图像拼接开题报告

选题的背景与意义 在日常生活中&#xff0c;使用普通相机获取宽视野的场景图像时&#xff0c;必须通过调节相机的焦距才可以提取完整的场景。由于相机的分辨率有限&#xff0c;拍摄场景越大&#xff0c;得到的图像分辨率就越低&#xff0c;因此只能通过缩放相机镜头减小拍摄的…

VSCode按ctrl与鼠标左键无法实现跳转的解决办法

vscode编译环境老是出问题&#xff0c;下面介绍两种解决方法 需要提前配置好代码编译需要的库以及编译器位置等等。 ctrlshiftp,输入 >C/C配置&#xff08;JSON&#xff09; 打开生成的c_cpp_properties.json {"configurations": [{"name": "Li…

NSSCTF-WEB-easy_eval

目录 前言 正文 思路 序列化构造 后渗透 思路点1:Redis 思路2:蚁剑插件绕过disable_functinons 结尾 作者的其他文章 前言 说是easy,实际很difficult 正文 思路 <?php class A{public $code "";function __call($method,$args){//最后执行命令eval($th…

github加速 DevSidecar 1.8.8

DevSidecar 1.8.8 更多配置请参考&#xff1a;github开源

impdp+remap_schema导入后登录报ORA-01017: Invalid Username/password

环境说明&#xff1a;有个11.2.0.4的rac数据库&#xff0c;现需要把USR_OA克隆一份出来做测试&#xff0c;新用户名是TEST_OA&#xff0c;直接是expdp导出用户&#xff0c;再用impdpremap_schema生成TEST_OA&#xff0c; 业务人员使用PLSQL(版本12.0.1.1814) 登录TEST_OA时总…

GJS-WCP

不懂的就问&#xff0c;但我也是二把手......哭死 web GJS-ezssti 很常规的ssti模板注入&#xff0c;只过滤了"/","flag"。 过滤了/,flag 可以利用bash的特性绕过&#xff0c;如字符串截取&#xff0c;环境变量等等。payload1: {{url_for.__globals__[…

[项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp

目录 一、前言 二、项目的相关背景 三、搜索引擎的宏观原理 四、搜索引擎技术栈和项目环境 五、正排索引 VS 倒排索引--原理 正排索引 分词 倒排索引 六、编写数据去除标签和数据清洗模块 Parser 1.数据准备 parser 编码 1.枚举文件 EnumFile 2.去标签ParseHtml(…

文件处理新纪元:微信小程序的‘快递员’与‘整理师’

嗨&#xff0c;我是中二青年阿佑&#xff0c;今天阿佑将带领大家如何通过巧妙的文件处理功能&#xff0c;让用户体验从‘杂乱无章’到‘井井有条’的转变&#xff01; 文章目录 微信小程序的文件处理文件上传&#xff1a;小程序的“快递服务”文件下载&#xff1a;小程序的“超…

学习threejs,拉伸几何体THREE.TubeGeometry管道

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️拉伸几何体THREE.TubeGeome…

Git的原理和使用(六)

本文主要讲解企业级开发模型 1. 引入 交付软件的流程&#xff1a;开发->测试->发布上线 上面三个过程可以详细划分为一下过程&#xff1a;规划、编码、构建、测试、发 布、部署和维护 最初&#xff0c;程序⽐较简单&#xff0c;⼯作量不⼤&#xff0c;程序员⼀个⼈可以完…

Imagic: Text-Based Real Image Editing with Diffusion Models

https://openaccess.thecvf.com/content/CVPR2023/papers/Kawar_Imagic_Text-Based_Real_Image_Editing_With_Diffusion_Models_CVPR_2023_paper.pdfhttps://imagic-editing.github.io/ 问题引入 针对的是text based image editing问题&#xff0c;可以解决non rigid edit&am…

【软件安装与配置】 vue

1. 安装 Node.js Vue.js 项目通常依赖于 Node.js 环境来进行开发&#xff0c;可以从 Node.js 官方网站 下载并安装稳定版本。安装 Node.js 后&#xff0c;npm&#xff08;Node 包管理器&#xff09;也会自动安装。 2. 使用 Vue CLI 安装 Vue.js Vue CLI 是一个用于快速搭建 Vu…

柔性数组的使用

//柔性数组的使用 #include<stdio.h> #include<stdlib.h> #include<errno.h> struct s {int i;int a[]; }; int main() {struct s* ps (struct s*)malloc(sizeof(struct s) 20 * sizeof(int));if (ps NULL){perror("malloc");return 1;}//使用这…

用.NET开发跨平台应用程序采用 Avalonia 与MAUI如何选择

Avalonia是一个强大的框架&#xff0c;使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件&#xff0c;确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这意味着开发人员可以共享他们的UI代码&#xff0c;…

容灾与云计算概念

​​​​​​基础知识容灾备份——备份技术系统架构与备份网络方案-CSDN博客 SAN&#xff0c;是storage area network的简称&#xff0c;翻译过来就是存储区域网络。 顾名思义&#xff0c;SAN首先是一个网络&#xff0c;其次它是关于存储的&#xff0c;区域则是指服务器和存储资…