【Linux学习笔记】权限

news2024/10/7 8:20:35

  • 1. 普通用户和root用户权限之间的切换
  • 2. 权限的三个w
    • 2.1. 什么是权限(what)
      • 2.1.1. 用户角色
      • 2.1.2. 文件属性
    • 2.2. 怎么操作权限呢?(how)
      • 2.2.1. ugo+-rwx方案
      • 2.2.2. 八进制方案
      • 2.2.3. 文件权限的初始模样
      • 2.2.4. 进入一个目录,需要什么权限呢?
    • 2.3. 为什么要有权限呢?(why)
  • 3. 粘滞位

1. 普通用户和root用户权限之间的切换

假设我现在是root用户,我想切换到普通用户怎么办?

  • 输入 su - 普通用户名

img

普通用户切换到root用户

  • 输入 su - 或者 su

img

2. 权限的三个w

2.1. 什么是权限(what)

举几个生活中的例子

  1. 手机app上都有会员与非会员的角色身份,那么会员是可以看VIP电影和普通电影的,而非会员只能看普通电影,所以权限到目前为止可以被解释为角色身份的不同。
  2. 每一种手机app都有着相应的功能,例如qq音乐是用来听歌的,优酷视频是用来看视频的,但你不能说qq音乐是用来看视频的,优酷视频是用来听音乐的。或许我这样讲的不太对,那么举个别扭的例子,一张桌子,这张桌子是不是你的,这是一种权限,而这张桌子能不能被的,这也是一种权限。
  3. 总结一句话,权限就是“可不可以做” 以及 “可以被谁做”。

那么Linux系统的文件权限也是如此,权限主要就是“用户角色” + 文件属性。

2.1.1. 用户角色

Linux中用户角色分为三种。

  1. 拥有者(owner)
  2. 所属组(group)
  3. 其他人(other)

如何查看一个文件的用户角色呢?下面是示例:

img

其中文件属性里面可以查看用户角色。

img

为什么Linux会有所属组这种用户角色呢?用个例子来阐述下:

有这么一家公司,它允许一个项目可以被2个组同时去做(赛马机制),但是只有1台Linux机器。如果没有所属组的用户角色,那么A组可以看B组的代码,B组可以看A组的代码,这样就会很乱。有了所属组,A组只能看A组的代码,B组只能看B组的代码,防止了恶意抄袭等情况的发生。

2.1.2. 文件属性

下面通过一条指令来看看文件的属性:

img

下面来看前10个字符的具体代表意义:

img

drwxrwxr-x

  1. 10个字符中的第一个字符代表的是文件类型

Linux中文件类型分别有如下几种:

  1. - : 普通文件(源代码,库文件,可执行程序,文档压缩包…)
  2. d :目录文件
  3. c : 字符设备文件(键盘,显示器)
  4. b : 块设备
  5. l : 链接文件
  6. p : 管道文件
  7. s : socket文件

其中可以通过file命令来查看文件类型!

**在Linux系统中是不以文件命名的后缀来表示文件的!**也就是说即使你是txt的后缀,在Linux系统中也是可以直接像exe文件那样执行的。但是,只是Linux系统是这样,对于Linux系统中的工具,例如gcc也还是认文件的后缀的。

  1. 剩下的9个字符

先来说一下Linux中文件的权限,Linux中的文件共有三个权限

  • r(读权限)
  • w(写权限)
  • x(执行)

为了方便记忆,r就是read,w就是write,x就是execute

img

其中 - 代表的就是没有,其他相应字符都对应上面的权限。

对于上面的指令来说,我现在的这个文件

  • 对于拥有者(owner)是可读可写可执行
  • 对于所属组(group)是可读可写可执行
  • 对于其他人(other)是可读不可泄可执行

2.2. 怎么操作权限呢?(how)

2.2.1. ugo±rwx方案

上面说了在Linux中,文件权限就是 用户角色 + 文件属性。

那么操作权限的方向自然就是两个方向了,一个是用户角色,一个是文件属性。

  1. 操作文件属性

命令:chmod _ 用户角色_(+/-)_文件权限 _ 文件名(这里的下划线代表的是空格)

其中用户角色用的是简称:

  • u:拥有者(owner)
  • g:所属组(group)
  • o:其他人(other)

其中 + 符号代表的是加权限, - 符号代表的是减权限。

文件权限也是用的简称:

  • r:读权限(read)
  • w:写权限(write)
  • x:执行(execute)

功能:使用命令后可以增加或者减少相应的权限。

示范:

img

可以一次更改单个用户角色的单个权限,多个权限,也可以更改多个用户角色的单个权限,多个权限。

示范:

img

这里就不展示权限的示范了,有兴趣可以按照上面的叙述自行操作。下面介绍一种操作所有用户角色的命令。

img

这里会有一个疑问,下面直接看例子

img

其中在文件权限中,root是不受权限的约束的,即使一个文件的拥有者不是root,root也可以读写执行。即使一个文件没有读写执行权限,root照样可以读写执行。下面来看示例:

img

  1. 更改用户角色

命令:chown/chgrp_你想要变更的用户名_文件名(下划线代表空格)

功能:chown 可以 将拥有者改为你想要变更的用户,chgrp 可以将所属组改为你想要变更的用户。

示范:

imgimg

我想拥有者和所属组一起更改怎么操作?下面看示范:

img

我这里使用的是root角色,如果是普通用户想把文件给其他用户,要用到sudo指令。

  • 疑问来了! 用户角色有3个,分别是拥有者(owner),所属组(group),其他人(other),但为什么没有修改其他人这个用户角色的命令呢?

在文件权限中,拥有者肯定是一个具体的人,所属组也是一个具体的人,如果你的用户角色都匹配不上拥有者和所属组,那么就说明你是其他人(other)。那这样其他人的数量是很大,这样的情况没必要更改了。

2.2.2. 八进制方案

除了上面的ugo±rwx方案,这里介绍一种更简单的八进制方案。这里的八进制方案需要对进制有一定的了解,如果读者没有这方面的知识,可以先去了解进制。

其实一张图就能明白:

img

指令的示范:

img

2.2.3. 文件权限的初始模样

一个刚被创建的文件的文件权限原来的样子是什么样的呢?

img

提问:为什么文件权限的起始模样会这样的呢?

在Linux中规定,目录文件的起始权限是777,普通文件的其实权限是666。也就是说

  1. 目录文件的起始权限是 111 111 111,分别对应的是拥有者的rwx权限,所属组的rwx权限,其他人的rwx权限
  2. 普通文件的起始权限是 110 110 110,分别对应的是拥有者的rw权限,所属组的rw权限,其他人的rw权限。

但我们新建的文件中的文件权限根本不是上面规定的样子,而是下面这个样子。

  1. 目录文件的起始权限是 775,对应八进制方式是 111 111 101
  2. 普通文件的起始权限是 664,对应八进制方式是 110 110 100

原来在Linux中,有个权限掩码umask,它帮我们规定了一个文件的起始权限。

umask的初始值是0002,第一位可以不用管,后面三位对应的是八进制方案。umask规定:凡是在umask中出现的权限,都必须在起始权限中去掉!!!

0 000 000 010 这个初始值,对应的就是去掉其他人的写权限。可以通过修改umask的值来确定你新建的文件的起始权限。

例如:我把umask设置为 0000

img

那么最终权限是怎么确定的呢?

答案是: 最终权限 = 起始权限 & (~umask)

例如:我把umask设置为 0032

img

img

通过结果比对上面显示的文件权限,确实如此。

那么为什么要把umask取反呢? 是因为umask有的权限,在文件权限上都不要,那么取反之后,再和文件权限相与自然就是把不要的权限剔除了。

2.2.4. 进入一个目录,需要什么权限呢?

试想一下,如果要进入一个目录需要什么权限呢? 读权限? 写权限? 还是执行权限?

直接更改权限看一下:

  1. 更改读权限

img

img

  1. 更改写权限

img

img

  1. 更改执行权限

img

所以进入一个目录文件,需要的权限就是执行权限。

2.3. 为什么要有权限呢?(why)

这个问题,一句话就是便于我们系统的安全管理。

3. 粘滞位

粘滞位是目录权限的一种特殊情况。简单来说就是在一个公共目录下,防止其他用户之间的相互删除。

root的根目录下有一个目录就是带有粘滞位的。

img

具体是什么个情况呢? 下面听我娓娓道来。

  1. 在root的根目录下创建一个权限为777的目录

img

  1. 对于其他人来说,这个目录的权限是rwx,可写可读可执行。现在我有两个用户,pdx1和pdx2来做例子。

img

同样的道理,如果切换用户pdx2,对于pdx1的文件也是如此。

img

那么这个公共目录就很危险了。假如pdx1不爽pdx2,但是两个人又是同事,有些文件就是要放在公共目录下,两人互相之间是看不了文件的,却可以互相删除…

  • 那么此时粘滞位就发挥作用了。

命令 : chmod_+t_目录名

功能:给该目录加上粘滞位

示范:

img

注意,mytmp文件的拥有者是谁就由谁来执行这个命令,否则会被拒绝!

img

总结:粘滞位其实就是目录权限的一种特殊情况,是为了防止用户之间的误操作或者恶意操作。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基础操作

ls [-a -l -h] [Linux路径] 当不使用选项和参数,直接使用ls命令本体,表示以平铺的方式:列出当前工作目录下的内容 ls -a -a表示all的意思,即列出所有文件(包含隐藏的文件和文件夹) ls -l 以竖列的形式展示信…

linux C语言 socket的server、client 实现

讲解: 在Linux中,使用socket与另一端建立连接通常涉及到以下步骤: 1. 创建Socket:首先,你需要创建一个套接字(socket)。你可以使用socket()系统调用来创建套接字。通常,你需要指定套接字的类型&#xff0…

ssh服务登录原理与配置

文章目录 前言一、基于口令的认证(用户名密码)二、基于公钥的认证(免密登录)三、禁止用户登录和修改端口四、免密登录具体操作 前言 非对称加密是在认证用户连接的时候使用的,对称加密是在用户连接之后开始传输数据的…

【C++】深拷贝和浅拷贝 ④ ( 深拷贝示例 )

文章目录 一、深拷贝示例1、浅拷贝问题2、自己实现深拷贝 二、深拷贝完整代码示例 一、深拷贝示例 1、浅拷贝问题 在上一篇博客 【C】深拷贝和浅拷贝 ③ ( 浅拷贝内存分析 ) 中 , 使用了浅拷贝 , 将 原始对象 Students 赋值给了 拷贝对象 Student s2 ; 使用 C 编译器 生成的 默…

Mysql的基本查询练习

目录 一、Create 1.1单行数据全列插入 1.2 多行数据指定列插入 1.3插入否则更新 1.4 替换 二、Retrieve 2.1全列查询 2.2指定列查询 2.3查询字段为表达式 2.4为查询结果指定别名 2.5 结果去重 2.6 where 条件 2.6 NULL的查询 2.7 结果排序 三、 Update 四、Dele…

电力系统直流潮流分析【N-1】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

VHOST-SCSI代码分析(0)VHOST概述

与VIRTIO框架相比,VHOST将设备放到HOST上,让Guest和Host Kernal Space之间共享virtqueue,减少Exception Level切换。 对于数据的传递,依次经历:Guest UserSpace(EL0)-> Guest KernelSpace&am…

MySQL索引,事务及存储引擎

目录 MySQL索引 创建索引的依据: 索引的类型 普通索引 唯一索引 主键索引 组合索引 全文索引 查看索引 删除索引 事务 事务的 ACID 特性 原子性 一致性 隔离性 持久性 隔离级别 设置隔离级别 事务管理操作 自动提交事务 存储引擎 M…

GODIVA论文阅读

论文链接:GODIVA: Generating Open-DomaIn Videos from nAtural Descriptions 文章目录 摘要引言相关工作Video-to-video generationText-to-image generationText-to-video generation GODIVA方法逐帧视频自动编码器GODIVA视频生成器 实验数据集评价指标自动评估指…

QT基础教程(对话框1)

文章目录 前言一、对话框概念二、模态对话框三、非模态对话框总结 前言 本篇文章我们来讲解QT中的对话框。 资料合集地微信公众号:优质程序猿一、对话框概念 在Qt中,对话框(Dialog)是一种用于与用户进行交互、收集输入或展示信…

适用于 Android 的 Windows 子系统™️发行说明

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 内部版本 2304.40000.3.0 内部版本 2303.40000.3.0 内部版本 2302.4000 内部版本 2301.40000.4.0 内部版本 221…

【wxWidgets 如何实现wxAccordion 手风琴组件】

1. 简要说明 wxWidgets 并没有提供wxAccordion 手风琴组件面板, 网上也基本没有找到资料,CSDN有个标题:wxAccordion:wxWidgets的手风琴控件下载链接,再无资料可查, 但是其他语言是提供了手风琴面板组件的, 那么怎么办呢,开干喽… 2. 效果展示 3. 交流探讨 代码就暂时不发了,…

【LeetCode-简单题】225. 用队列实现栈

文章目录 题目方法一:单个队列实现 题目 方法一:单个队列实现 入栈 和入队正常进行出栈的元素其实就是队列的尾部元素,所以直接将尾部元素弹出即可,其实就可以将除了最后一个元素的其他元素出队再加入队,然后弹出队首元…

第二章 进程与线程 八、处理机调度(时机切换、过程调度方式)

一、进程调度的时机 二、进程调度的方式 1、非剥夺调度方式: 非剥夺调度方式,又称非抢占方式。即只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻…

virtualbox配置ubuntu1804虚拟机相关流程

virtualbox配置ubuntu1804虚拟机相关流程 相关版本能解决的问题安装流程1:新建虚拟机安装流程2:配置虚拟机安装流程3:安装虚拟机系统安装流程4:设置ubuntu 相关版本 virtualbox使用VirtualBox官网下载的6.1.34 r150636 版。ubunt…

CSRF攻击原理详解

CSRF概念: CSRF定义: 跨站请求伪造(英语:Cross-site request forgery)是一种对网站的恶意利用,也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种…

通用商城项目(下)之——Nginx的安装及使用

(作为通用商城项目的一个部分,单独抽离了出来。查看完整见父页面: ) 加入Nginx-完成反向代理、负载均衡和动静分离 1.配置SSH-使用账号密码,远程登录Linux 1.1配置实现 1、配置sshd 1)sudo vi /etc/ssh/sshd_confi…

Rasa:使用大语言模型进行意图分类

Rasa:使用大语言模型进行意图分类 在Rasa的最新版本(3.x)中,引入了一种新的意图分类方法,即使用大型语言模型(LLM)和一种称为检索增强生成(RAG)的方法进行意图分类。 LLM意图分类器是一种全新的意图分类器,利用大型语言模型(LLM)来对意图进行分类。LLM意图分类器…

汽车租赁系统设计与实现

汽车租赁系统 1.需求分析 1.1任务概述 1.2开发环境和使用技术 1.3数据库设计 2.登陆模块 2.1登陆页面的代码是: 2.2登录类login.java的代码如下: 2.3LoginServlet.java的代码如下: 3.公共…

ESP-IDF学习——1.环境安装与hello-world

ESP-IDF学习——1.环境安装与hello-world 0.前言一、环境搭建1.官方IDE工具2.vscode图形化配置 二、示例工程三、自定义工程四、点灯五、总结 0.前言 最近在学习freertos,但由于买的书还没到,所以先捣鼓捣鼓ESP-IDF,因为这个比Arduino更接近底…