Linux权限相关

news2024/11/15 13:24:32

目录

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.coloradmin.cn/o/1925361.html

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

相关文章

Android 儿童绘本/汉语拼音实现

有这样一个项目&#xff0c;开发一个电子绘本&#xff0c;需要在绘本上显示&#xff0c;汉语拼音。 界面布局 <androidx.core.widget.NestedScrollViewandroid:layout_width"match_parent"android:layout_height"match_parent"android:fillViewport&quo…

路径规划 | 飞蛾扑火算法求解二维栅格路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 路径规划 | 飞蛾扑火算法求解二维栅格路径规划&#xff08;Matlab&#xff09;。 飞蛾扑火算法&#xff08;Firefly Algorithm&#xff09;是一种基于自然界萤火虫行为的优化算法&#xff0c;在路径规划问题中也可以应…

C++·多态

1. 多态的概念 多态通俗讲就是多种形态&#xff0c;就是指去完成某个行为&#xff0c;当不同对象去做时会产生不同的结果或状态。 比如买火车票这个行为&#xff0c;同样是买票的行为&#xff0c;普通成年人买到全价票&#xff0c;学生买到半价票&#xff0c;军人优先买票。这个…

Qt MV架构-视图类

一、基本概念 在MV架构中&#xff0c;视图包含了模型中的数据项&#xff0c;并将它们呈现给用户。数据项的表示方法&#xff0c;可能和数据项在存储时用的数据结构完全不同。 这种内容与表现分离之所以能够实现&#xff0c;是因为使用了 QAbstractItemModel提供的一个标准模…

Go语言---TCP服务端以及客服端的实现

TCP的C/S架构 TCP服务器的实现 监听的底层实现 func Listen(network, address string) (Listener, error) {var lc ListenConfigreturn lc.Listen(context.Background(), network, address) }type Listener interface {// Accept waits for and returns the next connection …

Jenkins中Node节点与构建任务

目录 节点在 Jenkins 中的主要作用 1. 分布式构建 分布式处理 负载均衡 2. 提供不同的运行环境 多平台支持 特殊环境需求 3. 提高资源利用率 动态资源管理 云端集成 4. 提供隔离和安全性 任务隔离 权限控制 5. 提高可扩展性 横向扩展 高可用性 Jenkins 主服务…

【深度学习入门篇 ⑤ 】PyTorch网络模型创建

【&#x1f34a;易编橙&#xff1a;一个帮助编程小伙伴少走弯路的终身成长社群&#x1f34a;】 大家好&#xff0c;我是小森( &#xfe61;ˆoˆ&#xfe61; ) &#xff01; 易编橙终身成长社群创始团队嘉宾&#xff0c;橙似锦计划领衔成员、阿里云专家博主、腾讯云内容共创官…

注册中心与配置中心,是分?是合?

一零年代初&#xff0c;我还自己动手写过socket连接来做服务注册发现&#xff0c;后来有了zookeeper就方便多了&#xff0c;那时候zookeeper也直接做配置中心使用。后来出现了一些专门的服务注册发现组件如Eureka\etcd\consul&#xff0c;专门的配置中心比如spring cloud confi…

2024年上半年信息系统项目管理师——综合知识真题题目及答案(第1批次)(2)

2024年上半年信息系统项目管理师 ——综合知识真题题目及答案&#xff08;第1批次&#xff09;&#xff08;2&#xff09; 第21题&#xff1a;在一个大型信息系统项目中&#xff0c;项目经理发现尽管已经建立了沟通机制&#xff0c;但团队间的沟通依然不畅&#xff0c;项目风险…

【JavaScript】解决 JavaScript 语言报错:Uncaught SyntaxError: Unexpected token

文章目录 一、背景介绍常见场景 二、报错信息解析三、常见原因分析1. 缺少必要的语法元素2. 使用了不正确的字符或符号3. JSON 格式错误4. 字符串未正确闭合 四、解决方案与预防措施1. 检查语法元素2. 正确使用符号和字符3. 修正 JSON 格式4. 字符串闭合 五、示例代码和实践建议…

C++基础语法:STL之迭代器

前言 "打牢基础,万事不愁" .C的基础语法的学习 引入 C基础:STL概述-CSDN博客 上一篇梳理了一些同STL有关的概念.同时对理解迭代器需要的类包含,内部类,链表等内容做了分析,这篇从<C Prime Plus> 6th Edition(以下称"本书")的P684,大标题16.4泛型编…

Sortable.js板块拖拽示例

图例 代码在图片后面 点赞❤️关注&#x1f64f;收藏⭐️ 页面加载后显示 拖拽效果 源代码 由于js库使用外链&#xff0c;所以会加载一会儿 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name&qu…

Pycharm 导入 conda 环境

使用时经常在此处卡壳&#xff0c;在此做个记录。 这个位置选择 conda 安装路径下的 python.exe 文件即可

书生浦语大模型实战营---Linux 基础知识

创建开发机 开建开发机首先填写开发机名称&#xff0c;选择镜像和配置资源&#xff0c;最后选择立即创建 ssh免密钥登陆 1、本地执行ssh-keygen -t rsa&#xff0c;然后一路回车就可以了 2、执行cat ~/.ssh/id_rsa.pub 3、回到开发机平台&#xff0c;在首页点击配置SSH Key…

手机数据恢复篇:如何从 Android 设备内恢复数据

如何从 Android 内部存储恢复数据&#xff1f; 要从 Android 内部存储恢复已删除的文件&#xff0c;您需要一个 Android 内部存储恢复应用或程序。请继续阅读以获取可靠的 Android 数据恢复软件&#xff0c;并让它帮助您从 Android 手机的内部存储恢复数据。 是否有可能恢复 An…

工业大数据是什么?应用工业大数据时面临哪些挑战?

在当今快速发展的工业领域&#xff0c;大数据已成为推动企业转型升级的核心动力。工业大数据&#xff0c;以其独特的价值和潜力&#xff0c;正逐渐改变着传统的生产、管理和决策模式。然而&#xff0c;伴随着大数据的快速发展&#xff0c;一系列挑战也随之浮现。本文将深入探讨…

刷题之单词规律同构字符串(leetcode)

同构字符串 单词规律 两个都是映射关系&#xff0c;用两张哈希表记录互相映射就可以了 同构字符串&#xff1a; class Solution { public:bool isIsomorphic(string s, string t) {//用两张哈希表做映射if(s.size()!t.size()){return false;}unordered_map<char,char&…

零基础学JS之APIS

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

算法day04 位运算 插入排序 二分法 对数器

位运算: 1&#xff09;有一个数组只包含这样的数&#xff0c;有几个数出现偶数次&#xff0c;有1个数出现奇数次&#xff0c;要求时间复杂度不超过o(n),怎么求出现奇数次的数。 使用 ^ 异或运算整个数组&#xff0c;偶数次运算结果为0&#xff0c;只留下最后一个奇数次的数。 …

【零基础】学JS之APIS第四天

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…