Linux权限相关

目录

Linux中的用户

Linux权限管理

Linux的文件访问者分类

Linux的文件类型和访问权限

文件类型

文件权限

文件权限的修改

文件所有者修改

文件所有者所在组修改

目录权限

粘滞位

文件掩码


在Linux中,权限包括用户的权限和文件的权限

Linux中的用户

在Linux中,一共有两种用户

  1. 超级用户(root):在Linux下,root用户拥有最高权限,可以在Linux下做任何事情

  2. 普通用户:只能在Linux下做有对应权限的事情

超级用户的命令提示符为#,普通用户的命令提示符为$

在Linux中,如果需要切换用户,可以使用su+用户名

例如:

当前Linux系统下有一个张三用户,使用su命令切换到张三用户

需要注意:

  1. su命令执行的位置在哪个目录下,切换完用户之后就在哪个目录下,但是具体有没有操作权限需要看用户有没有对应的文件操作权限,建议是切换完用户后使用cd ~回到对应用户的家户目录,如果为了安全,可以使用Ctrl+d或者exit退出用户再切换用户

  2. 尽管用户可能有密码,但是如果是root用户切换到普通用户,则不需要输入普通用户的密码,如果是普通用户切换到root用户,则需要输入root用户的密码。如果需要切换到root用户,则可以使用su -或者su root

  3. 如果普通用户需要使用root权限执行任务,可以使用sudo+命令,但是如果该普通用户没有在提权白名单中,则无法使用sudo命令以root权限执行命令,下面是报错:

Linux权限管理

需要注意的是,root用户不受权限的限制,无论是否有对应的权限都可以执行对应的行为

Linux的文件访问者分类

在Linux下,文件访问者一共有三类:

  1. 文件/目录的所有者:User(简写为u)

  2. 文件/目录所有者所在的组:Group(简写为g)

  3. 其他用户:Others(简写为o)

一般情况下,文件所有者会自成一组

Linux的文件类型和访问权限

以下面的普通文件为例:

文件类型

Linux中有下面几种文件类型:

  1. d:文件夹

  2. -:普通文件

  3. l:软链接(类似于Windows的快捷方式)

  4. b:块设备文件

  5. p:管道文件

  6. c:字符设备文件

  7. s:套接口文件

文件权限

  1. r(位于权限表示的第一个位置r--):文件可读。对于文件:具有读取文件内容的权限

  2. w(位于权限表示的第二个位置-w-):文件可写。对于文件:具有修改文件内容的权限

  3. x(位于权限表示的第三个位置--x):文件可执行。对于可以执行的文件:具有执行文件的权限

  4. -:不具有权限(不同位置对应不含有对应的权限)

对于x权限来说,如果文件本身不具有可执行的性质,则用户就算有x权限,也无法执行文件

所以对于前面的示例文件test.txt来说:

  1. 看文件类型:因为是-,所以文件是一个普通文件

  2. 看文件所有者权限:文件所有者是root,对应第一类权限rw-,代表文件所有者可以对该文件进行读和写

  3. 看文件所有者所在组的成员权限:文件所有者是root,对应第二类权限r--,代表文件所有者所在组成员只能读文件

  4. 看其他人权限:对应第三类权限r--,代表其他人只能读文件

需要注意的是,Linux中文件权限检索只会从左往右进行一遍,例如,文件所有者如果权限是:---,文件所有者所在组的成员权限是:r--,尽管文件所有者属于文件所有者所在组,其对文件的权限依旧是---

文件权限的修改

在Linux中,文件权限可以通过chmod 用户类别+/-文件权限 文件名修改

只有文件拥有者和root用户才可以对文件权限进行修改

用户类型:

  1. u:文件所有者

  2. g:文件所有者所在组成员

  3. o:其他人

  4. a:所有用户

权限修改:

  1. +:增加权限

  2. -:减少权限

需要一次修改多个用户权限,可以使用,对不同的用户进行分割

例如,修改test.txt文件中文件所有者所在组的成员权限为可读可写,修改其他人权限为不可读

在Linux中,也可以使用三位八进制代表三个用户的权限,每一个八进制数字代表一个用户的权限:

表格解读:

每一个八进制数字对应三位二进制数字,每一位二进制数字对应一种权限,例如101表示r-x,即可读可执行,转换为八进制数字5,即代表r-x,其余可类推

例如修改后的test.txt文件的权限可以用三位八进制表示为:

  1. 文件所有者:6(4(r)+2(w)+0(x))

  2. 文件所有者所在组:6(4(r)+2(w)+0(x))

  3. 其他人:0(0(r)+0(w)+0(x))

也可以通过八进制数字结合chmod指令修改文件权限

例如,修改test.txt权限为:文件所有者拥有rwx权限,文件所有者所在组成员拥有rw权限,其他人拥有x权限

文件所有者修改

在Linux中,除了可以通过修改文件权限还可以修改用户的身份,使用chown 新用户名 待修改的文件/目录命令

文件所有者只能root修改,其他人(包括文件所有者)无法修改

如果对目录以及目录中的内容一起进行修改,需要加-R选项,如果只修改目录可以不需要-R选项

例如:

在zhangsan家目录下有一个test目录和一个test.txt文件,修改test目录和test.txt文件的所有者为root

文件所有者所在组修改

在Linux下,还可以修改文件所有者所在组,使用chgrp 新用户组名 待修改的文件/目录命令

文件所有者只能root修改,其他人(包括文件所有者)无法修改

如果对目录以及目录中的内容一起进行修改,需要加-R选项,如果只修改目录可以不需要-R选项

例如:

在zhangsan家目录下有一个test目录和一个test.txt文件,修改test目录和test.txt文件的所有者为root

目录权限

每一个目录也有对应的权限,在前面介绍过当文件具有rwx权限时可以实现的行为,对应的目录有以下行为:

  1. r对于目录:具有浏览目录中文件的权限(但是可以进入目录)

  2. w对于目录:具有对修改目录内文件相关信息(创建/修改/删除)的权限

  3. x对于目录:具有进入目录的权限

  4. -:不具有指定权限

只有文件拥有者和root用户才可以对文件权限进行修改

修改目录的权限命令与文件命令相同,以下是演示:

在根目录下有share目录

缺少r权限:修改目录其他人权限为-wx

用户zhangsan无法在目录外浏览目录中文件

缺少w权限:修改目录其他人权限为r-x

用户zhangsan不可以对目录中的文件进行操作(以重命名文件为例),需要注意,文件内容是否可修改取决于文件权限不取决于目录权限

缺少x权限:修改目录其他人权限为rw-

用户zhangsan不可以进入share目录

粘滞位

假设张三在share目录中新建了一个文件,share目录当前权限完全放开(其他人具有rwx权限),该文件用于zhangsan和root用户进行内容交流,但是lisi作为其他人没有任何权限,如下图所示

lisi因为心生好奇心,特别想看,但是zhangsan不允许lisi查看,lisi因为生气直接把这个文件直接删掉(删除文件的权限取决于目录权限,不取决于文件权限),导致出现本人创建的文件被另外普通用户删除的情况

为了防止出现上面的问题,Linux引入了粘滞位的概念

粘滞位的作用:防止文件被文件非所有者删除,使用chmod +t 目录名设置目录为粘滞位

对于设置了粘滞位的目录来说,以下用户可以对目录中的文件进行删除

  1. root用户

  2. 目录所有者

  3. 文件所有者

因为目录是root创建的,由root用户对目录添加粘滞位

此时zhangsan再创建的文件就无法被lisi删除

文件掩码

在Linux中,一个普通文件默认权限为0666(-rw-rw-rw-),一个目录默认权限为0777(drwxrwxrwx),但是实际上在创建后并不是默认权限,例如:

根本原因是因为文件掩码umask,所以一个文件的最终权限=文件默认权限 & ~umask

在Linux下,root用户的默认掩码是0022,普通用户的默认掩码是0002

所以对于上图来说,test目录的最终权限为777 & ~022 = 111111111 & ~(000010010) = 111111111 & 111101101 = 111101101 = 755(drwxr-xr-x),同理可得文件最终权限为644

可以通过umask 权限值(三位)修改文件掩码,例如修改文件掩码为001为umask 001

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

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

相关文章

jenkins系列-06.harbor

https://github.com/goharbor/harbor/releases?page2 https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz harbor官网:https://goharbor.io/ 点击 Download now 链接,会自动跳转到上述github页面&am…

t-SNE降维可视化并生成excel文件使用其他画图软件美化

t-sne t-SNE(t-分布随机邻域嵌入,t-distributed Stochastic Neighbor Embedding)是由 Laurens van der Maaten 和 Geoffrey Hinton 于 2008 年提出的一种非线性降维技术。它特别适合用于高维数据的可视化。t-SNE 的主要目标是将高维数据映射…

Milvus核心设计(2)-----TSO机制详解

目录 背景 动机 Timestamp种类及使用场景 Guarantee timestamp Service timestamp Graceful time Timestamp同步机制 主流程 时间戳同步流程 背景 Milvus 在设计上突出了分布式的设计,虽然Chroma 也支持分布式的store 与 query。但是相对Milvus来说,不算非常突出。…

LabVIEW心电信号自动测试系统

开发了一种基于LabVIEW的心电信号自动测试系统,通过LabVIEW开发的上位机软件,实现对心电信号的实时采集、分析和自动化测试。系统包括心电信号采集模块、信号处理模块和自动化测试模块,能够高效、准确地完成心电信号的测量与分析。 硬件系统…

Vue3 markRaw的使用

markRaw 作用:将一个对象标记为不可以被转化为代理对象。返回该对象本身。 应用场景: 1.有些值不应被设置成响应式时,例如复杂的第三方类库等 2.当渲染具有不可变数据源的大列表时,跳过响应式转换可以提高性能 3.在动态渲染组件的时候我们就可以使用 markRaw 包裹。markRaw 的…

秋招突击——7/9——MySQL索引的使用

文章目录 引言正文B站网课索引基础创建索引如何在一个表中查看索引为字符串建立索引全文索引复合索引复合索引中的排序问题索引失效的情况使用索引进行排序覆盖索引维护索引 数据库基础——文档资料学习整理创建索引删除索引创建唯一索引索引提示复合索引聚集索引索引基数字符串…

git 笔记

文章目录 前言一些代码托管仓库初步的一些理解设置个人信息创建自己的仓库查看仓库的状态添加文件到暂存区把暂存区的文件添加到版本库查询两个文件之间的区别查看版本迭代信息版本回滚查看所有的历史版本快捷切换应用感受分支的一些相关的操作假设新建一个分支并跳转到这个分支…

【ARM】MDK安装ARM_compiler5无法打开安装程序

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 在客户安装了最新版本的MDK5.37及后续更新版本,但原工程使用ARM_Compiler_5.06进行编译和调试,需安装ARM_Compiler_5.06的编译器版本,但在解压缩的过程中后续无法打开ARM_Compiler…

FinalShell介绍,安装与应用

目录 一、什么是finalshell 二、finalshell功能 三、为什么要用finalshell 四、安装finalshell 五、finalshell使用 1.添加连接 获取虚拟ip地址 2.启动连接 一、什么是finalshell FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(四)-无人机系统(UAS)命令与控制(C2)通信用例

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

Re:从零开始的C++世界——(一)入门基础

文章目录 C发展历史1.命名空间1.1 namespace的价值1.2 namespace的定义1.3 命名空间使⽤ 2.C输⼊&输出3.缺省参数3.1 缺省参数的概念3.2 缺省参数的分类 4.函数重载5.引⽤5.1引⽤的概念和定义5.2 引⽤的特性5.3 const引⽤5.4 使用场景5.5 指针和引⽤的关系 6.内联函数6.1内…

NAT地址转换+多出口智能选路,附加实验内容

本章主要讲:基于目标IP、双向地址的转换 注意:基于目标NAT进行转换 ---基于目标IP进行地址转换一般是应用在服务器端口映射; NAT的基础知识 1、服务器映射 服务器映射是基于目标端口进行转换,同时端口号也可以进行修改&…

Mybatis-plus 集成 PostgreSQL 数据库自增序列问题记录

1.创建序列并绑定id CREATE SEQUENCE biz_factory_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;"id" int4 NOT NULL DEFAULT nextval(sys_user_seq::regclass), 2.实体设置KeySequence和TableId注解 注意IdType.INPUT 和 KeySequence(value …

Java巅峰之路---基础篇---综合练习(面向对象)

目录 文字版格斗游戏 基础版 souf输出语句 进阶版 键盘录入的说明 复杂对象数组练习 需求: 添加和遍历 删除和遍历 修改和遍历 文字版格斗游戏 基础版 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人…

c++入门基础篇(上)

目录 前言: 1.c++的第一个程序 2.命名空间 2.1 namespace的定义 2.2 命名空间使用 3.c++输入&输出 4.缺省参数 5.函数重载 前言: 我们在之前学完了c语言的大部分语法知识,是不是意…

论文学习_An Empirical Study of Deep Learning Models for Vulnerability Detection

1. 引言 研究背景:近年来,深度学习漏洞检测工具取得了可喜的成果。最先进的模型报告了 0.9 的 F1 分数,并且优于静态分析器。结果令人兴奋,因为深度学习可能会给软件保障带来革命性的变化。因此,IBM、谷歌和亚马逊等行业公司非常感兴趣,并投入巨资开发此类工具和数据集。…

微信小程序如何实现登陆和注册功能?

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

最新 Kubernetes 集群部署 + Containerd容器运行时 + flannel 网络插件(保姆级教程,最新 K8S 1.28.2 版本)

资源列表 操作系统配置主机名IP所需插件CentOS 7.92C4Gk8s-master192.168.60.143flannel-cni-plugin、flannel、coredns、etcd、kube-apiserver、kube-controller-manager、kube-proxy、 kube-scheduler 、containerd、pause 、crictlCentOS 7.92C4Gk8s-node01192.168.60.144f…

JVM:运行时数据区

文章目录 一、总览二、程序计数器1、介绍2、程序计数器在运行中会出现内存溢出吗? 三、栈1、介绍2、栈帧的组成部分(1)局部变量表(2)操作数栈(3)帧数据(3)栈内存溢出&…

everything搜索不到任何文件-设置

版本: V1.4.1.1024 (x64) 问题:搜索不到任何文件 click:[工具]->[选项]->下图所示 将本地磁盘都选中包含