[ Linux长征路第三篇 ] 权限理解

news/2024/5/15 11:00:38/文章来源:https://blog.csdn.net/qq_58325487/article/details/126689023

目录

1.root用户和普通用户相互切换 

2.文件类型和访问权限(事物属性) 

2.1 文件类型

2.2 基本权限

2.3 文件权限值得表示方法

1)字符表示法

2)8进制数值表示法

2.4 文件访问权限的相关设置方法 

1) chomd

2)三位8进制数字 

 3) chown

 4)chgrp

3. 目录的权限

3.1 umask

4.粘滞位 


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

  • 超级用户:可以再linux系统下做任何事情,不受限制。
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

root只有一个,而普通用户可以有多个。(类似于win系统中管理员和普通用户)

1.root用户和普通用户相互切换 

whoami 可确认当前用户

想切换到root用户时,可使用 su - 指令

注意:输入的密码是不回显的

 

可以看出普通用户的提示符是$ 超级用户是#

想要再切回普通用户身份可直接输入logout,也可以使用su user

 

 

2.文件类型和访问权限(事物属性) 

在Linux下,一切事物皆文件。文件 = 文件属性 + 文件内容

下图能看到这段代码是test.cpp 的文件内容,那test.cpp的文件属性又在哪里呢?

其实,文件的属性正是红框内下面这么多 

 

 

这些属性我们一组一组来详解

2.1 文件类型

第一列的第一个字符,叫做文件类型!Linux 系统不是以文件名后缀区别文件类型的,而是以ll下第一列的第一个字符显示的。Linux下的文件类型共有以下几种!

  • d:文件夹
  • -:普通文件  (文本,源代码,可执行程序(win下是exe),第三方动静态库等)
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

 

 

 

我们最长使用的是 文件夹和普通文件,其他文件类型只需要了解即可。

2.2 基本权限

  • 读(r/4)Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写(w/2)Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行(x/1)execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • “—” 表示不具有该项权限

 

我们接下来要解释的就是这9列,这9列是文件的访问权限。这个权限就是用来区别谁能“访问”,谁不能“访问”;以及对应的文件应该具备某种属性,r 读 w 写 x 执行

在Linux中为了要想区别文件谁能访问谁不能访问,Linux将文件的访问者进行了分类(人)

  • 文件和文件目录的所有者:u---User(平民 )
  • 文件和文件目录的所有者所在的组的用户:g---Group(同组)
  • 其它用户:o---Others (外国人)

因此这9行被分成了3组,前3列是User的权限  中间三列是Group的权限   后三列是Other的权限

 

 

2.3 文件权限值得表示方法

1)字符表示法

Linux表示说明Linux表示说明
r--只读-w-仅可写
--x仅可执行rw-可读可写
-wx可写和可执行r-x可读可执行
rwx可读可写可执行---无权限

 

2)8进制数值表示法

权限符号(可执行)八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
---0000

八进制数字对应的二进制数字中,为1则说明有该权限,为0说明没有该权限:例如r-- 为只读权限,对应二进制为 100  ,二进制100对应八进制为4。

2.4 文件访问权限的相关设置方法 

1) chomd

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项:

  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限
① 用户表示符+/-=权限字符
  • +: 向权限范围增加权限代号所表示的权限
  • -:  向权限范围取消权限代号所表示的权限
  • =: 向权限范围赋予权限代号所表示的权限
用户符号:  
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

1:假设我要掉file.txt拥有者的读权限:chmod u-r file.txt

2:我要再加上file.txt拥有者的读权限:chmod u+r file.txt 

 

3:假设我要去掉 file.txt 中Group的所有权限

 

2)三位8进制数字 

权限符号(可执行)八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
---0000

1:给file.txt文件中User Group Other 都设置所有(可读可写可执行)权限 :chmod 777 file.txt

 

 3) chown

功能:修改文件的拥有者
格式chown [参数] 用户名 文件名

 

 当我想把file.txt的拥有者修改为root时为什么会报错呢?该怎么解决呢? 

这是因为当我们修改文件拥有者时,相当于我们把该文件扔给对方,这也要考虑对方要不要,因此Linux是不能直接修改的,但是我们就想把改文件给对方时怎么办呢?我们有两个方法

1:我们可以在指令前加上sodu,加上sodu之后权限会短暂提升为root。sudo chown root file.txt

2:我们先切换成root用户,然后可以直接修改。

 

 4)chgrp

功能:修改文件或目录的所属组
格式chgrp [参数] 用户组名 文件名
常用选项-R 递归修改文件或目录的所属组

 

3. 目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

进入一个目录,需要可执行权限,首先验证一下....

如果目录只没有r权限,允许进入,允许在该目录下创建(写入)只是不能查看

如果目录只没有w权限,允许进入,允许在该目录下查看文件列表,不允许在该目录下创建文件

如果目录同时没有rw权限,允许进入,但是不允许创建和查看目录下的文件列表(注意:不是文件内容!!!文件的内容具体是否可以查看有文件自己的权限决定)

 

3.1 umask

功能
查看或修改文件掩码  新建文件夹默认权限=0666   新建目录默认权限=0777
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002
  • # umask 755
  • # umask               //查看
  • # umask 044        //设置

为什么我们创建目录的默认权限是775,默认创建的普通文件权限是664(不同的系统可能存在差异)

这是因为系统有一个默认的权限掩码:umask 

所谓的权限掩码是什么呢?

凡是在权限掩码中出现的权限都不应该在最终权限中出现!

因此 默认目录的起始权限是 777 ,umask 是 002,因此最终默认权限是 775;默认文件权限道理如此。最终默认权限的计算方式是:mask & ~umask

如果我们修改umask,也会修改最终默认权限。

 

4.粘滞位 

什么叫做粘滞位呢?

这是因为,有时候我们需要有一个目录需要所有人在该目录下进行创建和删除临时文件。这样的好处是操作系统给所有人提供了一个临时场所供我们随时创建和删除临时文件。

 

现在都是没有权限的,由于是我Lxy下的文件,我可以直接删掉hulu用户创建的文件。因此在一个共享目录下,你不让我写,不让我读,防不住我删除!

 

 因此如果,我还想在一个共享目录下,行程临时文件,但是不允许除了我之外的人删除!我们给共享的目录加上粘滞位!!

当一个目录被设置为"粘滞位"(chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

 

 我的粘滞位为啥不行呢?   ---- ???

 

 

(本篇完)

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

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

相关文章

解决找回密码不在右边的问题

问题如下: 在10.5中,按照书中代码写法为float-right,则出现上述的问题,找回密码不能和书中的结果一样呈现在右边,而出现在了左边 解决问题:把float-right改为float-end即可。其实这也不是什么大问题,不过可能会有的同学可能找不到解决方法,所以在这里写一下。因为淋过…

2022java-web一条龙工具安装

@目录java安装java-jdk安装java环境变量配置java-eclipse工具安装Java-idea工具安装MySQL安装navicat安装tomcat安装maven安装配置本地仓库配置镜像配置jdk 备忘~安装常见的一些我需要的集成工具以及jdk java安装 java-jdk安装 1,去官网进行安装下载jdk2,找到下载jdk的文件位…

json/xml/schema

JSON JSON是JavaScript Object Notation的缩写,是一种轻量级的数据交换格式,是理想的接口数据交换语言。官网:https://www.json.org/json-en.html 工作json请求体: json字符串 hashmap对象 jackson库 json响应结果断言 语法…

堆优化dijkstra的两种写法

例题: https://www.acwing.com/problem/content/description/1131/ 1、仅用dis数组记录,出队时记录最小距离#include<bits/stdc++.h>#define fore(x,y,z) for(LL x=(y);x<=(z);x++) #define forn(x,y,z) for(LL x=(y);x<(z);x++) #define rofe(x,y,z) for(LL x=(…

瑞吉外卖git

文章目录&#x1f492; Git&#x1f68f; 1、Git 概述&#x1f680; Git 简介&#x1f684; 下载与安装&#x1f68f; 2、Git 代码托管服务&#x1f680; 常用的 Git 代码托管服务&#x1f684; 使用码云代码托管服务&#x1f6ac; 使用码云的操作流程如下&#xff1a;&#x1…

程序人生 | 编程的上帝视角应该怎么去找

前言 &#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于Linux内核/汇编/HotSpot/C/Java/源码/架构/算法 就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计&#x1f4eb; &#x1f3c6; CSDN专家博主/Java优质…

SpringBoot基于guava集成令牌桶算法

SpringBoot基于guava集成令牌桶算法一、什么是令牌桶1、令牌桶2、功能图二、Guava1、简单介绍2、pom引入3、限速器4、浅析重载方法三、系统应用1、单个接口应用2、多个接口应用一、什么是令牌桶 1、令牌桶 有一个固定大小的水桶&#xff0c;在水桶的水满之前&#xff0c;水龙…

无意中发现腾讯Java开发手册

RPC&#xff08;Remote Procedure Call&#xff09;—远程过程调用&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c;而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在&#xff0c;如TCP或UDP&#xff0c;为通信程序之间携带信息数据。在OSI…

【SpringCloud-Seata分布式事物】

简介 1、是什么 Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 http://seata.io/zh-cn/ 2、 能干什么 3、处理过程 TM向TC申请开启一个全局事务&#xff0c;全局事务创建成功并生成一个全局唯一的XID&#xf…

Spark写入支持更新【源码二次开发】

在大数据开发过程中&#xff0c;遇到很多Spark写入mysql得场景&#xff0c;目前由于Spark仅支持以下几种 SaveMode: Append、Overwirte、ErrorIfExists、Ignore、ReplaceInto 由于在写入mysql时&#xff0c;需要数据根据主键进行更新&#xff0c;而不覆盖或追加&#xff0c;次…

交换机的工作原理

1 交换机的工作原理假设主机A要和主机B通信,交换机转发数据帧的过程如下: (1)MAC地址的学习和记录 A主机发送数据帧(源MAC地址为00-00-00-11-11-11,目标MAC地址为00-00-00-22-22-22)到交换机的1号接口,交换机首先查询MAC地址表中1号接口对应的源MAC地址条目。如果查询不…

曝光一下字节跳动的工资待遇和职位级别

BAT 是互联网大厂的标杆&#xff0c;也是很多程序员的梦想之地。随着抖音、TikTok 和今日头条的崛起&#xff0c;BAT 中的“B”也由原来的百度替换成了现在的字节跳动&#xff08;ByteDance&#xff09;。 字节跳动是全球独角兽企业的榜一大哥&#xff0c;不仅霸占了国内市场&…

Altium Dsigner 20 工艺参数设置修改

本文根据在学习凡亿教育的Altium Dsigner 20课程&#xff0c;总结了关于系统参数、设计规范等内容的优化修改。仅供参考 。 目录1 系统设置1.1 本地化菜单设置1.2 主题颜色设置1.3 弹出面板设置1.4 文件路径修改1.5 交叉选择模式1.6 设计检视设置1.7 自动保存设置1.8 原理图器件…

董宇辉:读书让你更加深刻|程序员必读的一本书

久负盛名的CSAPP&#xff08;Computer Systems: A Programmers Perspective&#xff09;一直都是计算机界“圣经”般存在&#xff0c;本书主要是软件程序员角度来看待计算机系统&#xff0c;主要包括以下内容&#xff1a;第一部分&#xff1a;程序结果和执行数据如何在内存里面…

微信输入法来了,如何下载?

微信早就有想做输入法的想法&#xff0c;早在去年年初&#xff0c;“微信之父”张小龙就曾经在一年一度的微信之夜活动上表示&#xff0c;“在未来&#xff0c;腾讯微信团队将会开发一套专属于微信的定制输入法。”张小龙表示&#xff0c;微信原来并不想去做输入法&#xff0c;…

Python GUI_Tinkter学习笔记

Tinkter学习笔记1_GUI编程和tinkter介绍2_PEP8编码规范 _窗口大小和位置3_GUI编程整体描述_常用组件汇总4_GUI程序的经典面向对象写法5_Label组件 _Tkinter中图像正确显示全局变量的写法Label组件全局变量&#xff08;图片全局变量的写法&#xff09;6_options选项详解 _底层源…

Fast R-CNN

文章目录论文信息论文标题&#xff1a;论文作者&#xff1a;收录期刊/会议及年份&#xff1a;论文学习论文阅读问题/背景&#xff1a;主要贡献&#xff1a;摘要&#xff1a;介绍&#xff1a;Fast R-CNN 的结构和训练&#xff1a;Fast R-CNN 的具体步骤&#xff1a;RoI 池化层&a…

导入(excel)(批量上传图片)+导出(excel)

一、基于前后端配合 1.导入&#xff08;excel&#xff09; 思路&#xff1a;确认导入 执行方法importFile 调用后台接口 // 车型导入数据 const ImportCarcate function (data) {return axios({method: post,url: /lzkc/manager/car/typeNos/batch,data: data}) } // 导入im…

SVN使用教程总结

SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本。 Subversion是什么? 它是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目…

深度学习环境配置9——Ubuntu下的tensorflow-gpu==2.4.0环境配置

深度学习环境配置9——Ubuntu下的tensorflow-gpu2.4.0环境配置注意事项一、2022/09/04更新学习前言各个版本tensorflow2的配置教程环境内容环境配置一、Anaconda安装1、Anaconda的下载2、Anaconda的安装二、Cudnn和CUDA的下载和安装1、Cudnn和CUDA的下载2、Cudnn和CUDA的安装a、…