Linux 的权限

目录

Linux 的用户

root 用户 和 普通用户

如何新建普通用户?

 如何切换用户?

一开始是以 root 用户登录:

一开始以普通用户登录:

如何删除用户?

Linux文件权限

什么是读权限( r )?

什么是写权限( w )?

什么是可执行权限( x )?

什么是粘滞位( t )?

权限限制了谁?

权限如何转换为八进制?

什么是权限掩码?

怎么修改权限?

修改文件所有者的权限: 

修改文件所属组的权限:

修改 other 的权限:

一次性修改多个访问者的多个权限:

​编辑 

用八进制修改用户权限:

如何修改文件的拥有者、所属组?


Linux 的用户

root 用户 和 普通用户

root 用户 (超级用户)Linux只有一个 root 用户,root 用户可以在Linux系统下做任何事情,不受权限的限制

非 root 用户(普通用户):Linux下可以存在多个普通用户,普通用户在Linux系统下会受到权限的限制

如何新建普通用户?

用户名可以自定义:

adduser 用户名

 需要给当前用户设置密码,注意,输入密码时是不回显的

passwd 用户名

用户的密码尽量和 root 用户的不一样! 

这样用户就新建成功了。

Linux 可以 ls /home 查看该 root 下有哪些用户。

 如何切换用户?

一开始是以 root 用户登录:

su 用户名 就可以从 root 用户切换到普通用户,不需要输入普通用户的密码。如果想再次切换到 root 用户,CTRL+D即可(CTRL+D 会自动显示 exit):

可以注意到 root 用户的命令提示符为 #普通用户的命令提示符为 $。 

一开始以普通用户登录:

同样 su 用户名 就可以切换用户,但是从普通用户切换到 root 需要输入 root 的密码!同样从 root 用户切换到普通用户 CTRL+D 即可:

如何删除用户?

userdel -r username 就可以删除用户,如果用户当前已登录或该帐户下正在运行进程,则 userdel 命令将不起作用。

Linux文件权限

当我们创建一个文件时(目录也是文件),会出现前面这 9 个字母,这 9 个字母分别代表什么意思呢?我们先来了解下面 3 个权限:

什么是读权限( r )?

对于文件而言,读权限意味着我们可以查看文件的内容

对于目录而言,意味着我们可以查看目录的文件列表

什么是写权限( w )?

对于文件而言,写权限意味着我们可以修改文件的内容

对于目录而言,写权限意味着我们可以在该目录下新建和删除文件。这意味着,文件的创建和删除并不取决于文件本身,而是取决于文件所处的目录!

什么是可执行权限( x )?

对于文件而言,读权限意味着我们可以执行这个文件前提是这个文件是可以被执行的,比如代码文件,而文本文件不可以被执行!

 

因为可执行文件数量较少,不可以被执行的文件数量较多, 当我们新建一个文件时,默认是没有可执行权限的。

对于目录而言,可执行权限意味着我们可以进入这个目录,我们才可以 cd 进入该目录。

而当我们新建一个目录时,默认有可执行权限,因为我们默认一个目录是可以被进入的。 

什么是粘滞位( t )?

root 目录下,有一个 tmp 目录,tmp 目录的所有者和所属组都是 root,所有的用户可以在该目录下创建文件并共享文件,但是这个目录的所有权限对所有用户都是开放的,意味着该目录下,即使我不是文件的拥有者,我们也可以删除别人的文件,如果我们把 other 的 w 权限关掉,虽然别人不能删除我们的文件了,但是我们自己也没办法创建文件了!

为了实现这个需求,Linux 有了粘滞位 t ,只有目录的创建者、文件的创建者、root 才可以删除文件,其他人都不可以删除文件!

权限限制了谁?

除了上面的 3 个权限外,我们还需要了解文件有 3 类访问者:

user:文件的拥有者;

group:文件的所属组;

other:除了文件的拥有者和所属组之外的用户都属于 other。

不同的文件访问者对这个文件有不同的权限。文件权限的 9 个字母可以分为 3 组,第一组对应文件拥有者的权限,第二组对应文件所属组的权限,最后一组对应 other 的权限。

在显示文件属性时,会显示出文件拥有者、所属组的名字,但是不会显示 other 的名字,因为文件的拥有者、所属组是可列的,而 other 是不可列的,没有显示的必要。

如果文件访问者拥有某个权限,则对应的位置会显示对应的字母,没有某个权限,则对应的位置显示 - 。

权限只会限制普通用户,不会限制 root ! 

权限如何转换为八进制?

rwx 权限的排序是固定的,如果一个文件具有某个权限,我们可以在对应的权限位标为 1,没有权限则标为 0,比如 rwx 对应的二进制就是 111,r-x 对应的二进制就是 101。

有了对应的二进制后,我们可以把二进制转为八进制,二进制的 111 对应的八进制为 7,101 对应的八进制为 5,这样就可以实现权限转换为八进制。

总结:权限 - > 二进制 - > 八进制

什么是权限掩码?

当我们创建文件时,发现每个文件都会有默认的权限,而默认的权限并不是 777,而是 664,当我们创建目录时,默认权限为 775,这是因为权限掩码 (umask)的存在!

首先,新建一个文件时,起始权限为 666(110 110 110),因为可执行的权限并不是每个文件都需要,所以默认没有可执行权限,故起始权限为 666。而新建一个目录时,起始权限就是 777。

查看权限掩码:

权限掩码虽然是 4 位,但是我们只看后 3 位,权限掩码也是采用八进制,比如 002 实际上为 000 000 010。

有了起始权限之后,权限掩码可以在起始权限的基础上去掉一些权限,从而产生默认权限:比如文件的起始权限为 664(110 110 100),权限掩码中如果对应的权限为 1,则在起始权限中不可以具有该权限!

我们也可以修改权限掩码:

可以看出,修改权限掩码之后,新建的文件的默认权限已经不一样了。 

怎么修改权限?

chmod  [ 参数 ] 权限 文件名 就可以修改文件的权限,添加权限用 +,去掉权限用 - :

修改文件所有者的权限: 

修改文件所属组的权限:

修改 other 的权限:

一次性修改多个访问者的多个权限:

注意一次性修改多个用户的多个权限时,中间需要加 ,:

 一次性修改所有的访问者:

 

一次性修改同一个用户的多个权限: 

 
用八进制修改用户权限:

输入的八进制数是最终用户得到的权限转换过来的:

如何修改文件的拥有者、所属组?

修改文件的拥有者:chown  用户名  文件名 

修改文件的所属组:chgrp 用户名 文件名

没有修改 other 的指令!

即使我们是文件的拥有者,也不可以随意修改文件的拥有者或所属组,这个操作必须由 root 来实现,一共有 2 种实现方式:

1、切换成 root 用户来修改文件的拥有者或所属组:

2、用 sudo 提权:

问:假设文件的所有者也是文件的所属组中的成员,当我们把文件的所有者的权限全部去掉时,文件的所有者可以 以文件所属组的身份去使用文件的权限吗? 

不可以,在使用文件的权限时,系统会先判断当前用户是否属于文件的所有者:

1、如果是,那就会匹配文件所有者的权限,不会再去匹配当前用户是否为文件的所属组;

2、如果不是,再去判断当前用户是否属于文件的所属组,再去匹配对应的权限。

也就是说,当前用户属于哪个文件访问者的身份,就会匹配对应的权限,而且只会判断一次身份!

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

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

相关文章

数据结构学习笔记

1. 数组 (Array) 定义 数组是一种线性数据结构,用于存储固定大小的相同类型元素集合。每个元素都有一个索引,用于快速访问。 特点 优点:访问速度快,通过索引直接访问O(1)时间复杂度。缺点:大小固定,插入…

Unity 自定义房间布局系统 设计与实现一个灵活的房间放置系统 ——自定义房间区域功能

自定义房间区域功能 效果: 功能: 能够自定义房间的大小一键生成放置区域可控的放置网格点当物体放置到区域内可自动吸附物体是否可放置,放置时如果与其他物体交叉则不可放置(纯算法计算)管理房间内的物体&#xff0c…

MySQL(二)-基础操作

一、约束 有时候,数据库中数据是有约束的,比如 性别列,你不能填一些奇奇怪怪的数据~ 如果靠人为的来对数据进行检索约束的话,肯定是不行的,人肯定会犯错~因此就需要让计算机对插入的数据进行约束要求! 约…

下载HF AutoTrain 模型的配置文件

下载HF AutoTrain 模型的配置文件 一.在huggingface上创建AutoTrain项目二.通过HF用户名和autotrain项目名,拼接以下url,下载模型列表(json格式)到指定目录三.解析上面的json文件、去重、批量下载模型配置文件(权重以外的文件) 一.在huggingface上创建AutoTrain项目 二.通过HF用…

电脑没电关机,wsl和docker又挂了,附解决过程

如题,开了个会没带笔记本电源,点啊弄关机后docker打不开,我以为是docker坏了,结果docker报错: An unexpected error occurred while executing a WSL command. Either shut down WSL down with wsl --shutdown, and/or…

植被变化趋势线性回归以及可视化

目录 植被变化线性回归ee.Reducer.linearFit().reduce()案例:天水市2004-2023年EVI线性回归趋势在该图中,使用了从红色到蓝色的渐变来表示负趋势到正趋势。红色代表在某段时间中,植被覆盖减少,绿色表示持平,蓝色表示植被覆盖增加。 植被变化线性回归 该部分参考Google…

Java(十一)---String类型

文章目录 前言1.String类的重要性2.常用方法2.1.字符串的创建2.2.字符串的比较2.2.1.比较是否引用同一个对象2.2.2.boolean equals(Object anObject) 方法:2.2.3.int CompareTo(String s)2.2.4.int compareToIgnoreCase(String str) 方法: 2.3.字符串的查…

单调栈原理+练习

首先用一道题引出单调栈 码蹄集 (matiji.net) 首先画一个图演示山的情况: 最暴力的做法自然是O(n方)的双循环遍历,这么做的思想是求出当前山右侧有多少座比它小的山,遇见第一个高度大于等于它的就停止。 但是对于我们所求的答案数&#xff…

能不能接受这些坑?买电车前一定要看

图片来源:汽车之家 文 | Auto芯球 作者 | 雷慢 刚有个朋友告诉我,买了电车后感觉被骗了, 很多“坑”都是他买车后才知道的。 不提前研究,不做功课,放着我这个老司机不请教, 这个大冤种他不当谁当&…

C# WinForm —— 25 ProgressBar 介绍与使用

1. 简介 用于显示某个操作的进度 2. 常用属性 属性解释(Name)控件ID,在代码里引用的时候会用到,一般以 pbar 开头ContextMenuStrip右键菜单Enabled控件是否可用ForeColor用于显示进度的颜色MarqueeAnimationSpeed进度条动画更新的速度,以毫秒为单位M…

【Python】解决Python错误报错:IndexError: tuple index out of range

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

什么是PLAB?

接上文PLAB---》 可以看到和TLAB很像,PLAB即 Promotion Local Allocation Buffers。用在年轻代对象晋升到老年代时。 在多线程并行执行YGC时,可能有很多对象需要晋升到老年代,此时老年代的指针就"热"起来了,于是搞了个…

新游启航 失落的方舟台服注册指南 一文教会你方舟台服注册

新游启航!失落的方舟台服注册指南!一文教会你方舟台服注册 失落的方舟作为本月最受期待游戏之一,在上线之际许多玩家已经有点急不可待了。这款游戏是由开发商Smile gate开发的一款MMORPG类型游戏,这款游戏的基本玩法与其他MMORPG…

44-1 waf绕过 - WAF的分类

一、云 WAF 通常包含在 CDN 中的 WAF。在配置云 WAF 时,DNS 需要解析到 CDN 的 IP 上。请求 URL 时,数据包会先经过云 WAF 进行检测,如果通过检测,再将数据包流向主机。 二、硬件IPS/IDS防护、硬件WAF 硬件IPS/IDS防护&#xff…

归并排序C++代码详解,思路流程+代码注释,带你完全学会归并排序

归并排序 归并排序是一种经典的排序算法,属于分治算法的一种。其核心思想是将一个大问题分解成若干个较小的子问题来解决,然后根据子问题的解构建原问题的解。在排序问题中,归并排序将数组分成两半,分别对这两半进行排序&#xf…

0基础认识C语言(理论+实操3)

所有籍籍无名的日子里 我从未看轻自己半分 小伙伴们,一起开始我们今天的话题吧 一、算法操作符 1.双目操作符 为何叫双目操作符呢?其实是因为我们进行加减乘除的时候,至少得需要两个数字进行这些运算,而这个数字就被称为操作数…

Java对sqlserver表的image字段图片读取和输出本地

Java代码实现对sqlserver数据库表的image字段图片的读取,和输出存储到本地 由于表image字段图片存的内容是二进制值,如何输出保存到本地: 代码示例:(注:连接sqlserver数据库需配置其驱动文件) …

基础—SQL—DCL(数据控制语言)之用户管理

一、引言 分类全称描述DCLData Control Language(数据控制语言)用来创建和管理数据库用户以及控制数据库的访问权限 1、图解 右边的是我们的 MySQL 的数据库服务器,左边是假设的两个用户 1、 DCL 主要控制的就是有哪些用户可以来访问这台 My…

英语翻译程序,可以对用户自己建立的词汇表进行增删查改

⑴ 自行建立一个包含若干英文单词的词汇表文件,系统初始化时导入内存,用于进行句子翻译。 ⑵ 用户可以输入单词或者句子,在屏幕上显示对应翻译结果。 ⑶ 用户可对词汇表进行添加和删除,并能将更新的词汇表存储到文件中。 #defi…

RDD实战:排序算子 - sortBy()

在本实战案例中,我们将使用Apache Spark的sortBy()算子来对一个包含学生信息的RDD进行排序操作。 排序规则如下: 首先按照性别升序排列。在性别相同的情况下,按照年龄降序排列。 步骤1:创建学生信息列表 首先,我们创…