[Linux 杂货铺] —— 权限(文件权限和目录配置)

目录

🌈前言

📁 文件的属性

📁 权限的概念

📂拥有者和所属组(角色):

📂用户(具体的人):

📁 权限的管理

📂1. chmod 指令:修改文件的权限。

📂2. chgrp 指令:  修改文件所属组。

📂3. chown 指令: 修改文件拥有者。

📁 一般文件权限

📁 目录权限

📁 粘滞位

📁 总结


🌈前言

        本期[ Linux杂货铺 ]带来的 权限。我们学习Linux,就是在和文件目录这些打交道,所以搞懂它们的属性之一——权限就很重要,这篇文章将从不同角度带你深入理解权限的概念,如何修改权限,以及区分文件和目录权限的不同。

                Linux最优秀的地方之一就是在于它的多人多任务环境,而为了让每个用户都具有保密的文件数据,因此文件权限管理就变得很重要了。Linux中将文件可读写的身份分为:拥有者(owner),所属组(group),其他人(other),且这三种身份各有读(read),写(write),执行(execute)等权限。那么这些身份和权限各有什么意义呢,下面我们来一一介绍。

📁 文件的属性

        在介绍文件之前,我们先来看看文件都有什么属性把,使用 【ls -al】指令,来查看文件详细属性。

拓展:

        ls是list意思,重点显示文件的文件名与相关属性,选型-al的意思就是列出所有的文件详细的权限与属性(包含隐藏文件)。

        如下图所示,下图即文件属性示意图:

        这篇文章将重点讲解文件类型权限,和文件拥有者,文件所属组这三栏内容。

        我们说先来看第一栏文件类型权限,这里需要注意的是,这一栏一共有10个字符

拓:

第一个字符代表着这个文件是目录,文件或是链接文件等:
[ d ] 则是目录

[ - ]  则是文件

[ l ] 则是链接文件

[ b ] 则表示为设备文件里面可提供存储的周边设备(可随机读写的设备)

[ c ] 则表示为设备文件里面的串行端口设备,例如键盘,鼠标。

        接下来的字符中,以三个为一组,且均为【rwx】为组合,其中【r】代表可读,【w】代表可写,【x】代表可执行。如果没有权限,则用【-】代替。

        第一组为文件拥有者具有的权限,第二组为所属组所有的权限,第三组是其他人所有的权限。

        以上,我们就通过文件属性引入了权限,并对权限有了一定了解,接下来,我们就详细讲解一下什么是权限。

📁 权限的概念

        权限,可以简单理解为限制一部分人的权利,而不限制另一部分人。这里的人就是:用户,所属组,其他人。权利:r可读,w可写,x可执行。

📂拥有者和所属组(角色):

1. 文件拥有者:简单理解为,谁创建了文件,谁就是文件的拥有者。

2. 文件所属组:用户组也很好理解,就是和我同组的人。用户组最有用的功能之一就是当你在团队进行协同工作的时候。每个账号可以有多个用户组的支持。

3. 其他人:当一个账户既不是文件的拥有者,又不属于文件所属组,那么这个账户就是其他人。

        以上就是用户和用户组的概念,其实用户和用户组可以理解为角色卡,它是由一个一个的账户所扮演的,也就是我们下面所要讲的具体的人。

📂用户(具体的人):

1. root 用户:也就是我们常说的超级管理员,root账户在Linux中可是有很大的权限的,关于系统服务的文件通常只有root才能读写或执行。root基本不受系统的限制,无论文件的权限是什么,默认root都是可以读写的。

2. 普通用户:也就出了root账户以外的账户

拓:

        在Linux系统中,默认情况下,所有系统上的账户与一般身份用户,以及root的相关信息都记录在/etc/passwd这个文件中,至于个人密码在记录在/etc/shadow这个文件中,此外,Linux中所有组名都记录在/etc/group中。

📁 权限的管理

        权限值的表示方法,如下图所示:

📂1. chmod 指令:修改文件的权限。

 ( 1 ). 用户表示符 +/-= 权限字符
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限
用户符号:  
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户
例如:
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
 ( 2 ). 三位 8 进制数字 
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt

📂2. chgrp 指令:  修改文件所属组。

                如果要修改文件所属组,被修改的组名必须存在在/etc/group这个二维年鉴中,否则就会显示错误。

chgroup  【-R】   新的用户组名字   dirname/filename

选项与参数:

【-R】:进行递归修改,即连同子目录下的所有文件,目录都更新成为新用户组。

📂3. chown 指令: 修改文件拥有者。

        同样,使用chown时,要注意,新修改的用户必须是存在在系统账户中的,也就是/etc/passwd这个文件中有记录的用户名才能修改。扩充的一点是,chown也可以修改用户组。

chown    【-R】    账户名称    文件或目录

chown    【-R】    账户名称:用户组名称    文件或目录

选项与参数:

【-R】:进行递归修改,即连同子目录下的所有文件,目录都更新成为新用户/用户组。

        如果你要拷贝一个文件,使用cp命令后,还会复制执行者的属性与权限,如果我们想要修改呢,就可以使用chgrp和chown指令了。

拓:

新建文件夹默认权限 =0666
新建目录默认权限 =0777
        但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是 mask ,则实际创建的出来的文件权限是 : mask & ~umask。
        umask是文件掩码的意思,也是一条指令,查看或修改文件掩码。
# umask // 查看
# umask 044// 设置

📁 一般文件权限

        现在,我们知道了Linux系统内用户的三种身份(拥有者,所属组,其他人),以及他们所拥有的权限有哪些(r , w , x)。利用【ls -al】指令来查看。下面,我们来看一下文件权限对一般文件和目录文件有何不同。

对于一般文件:

● r (read) : 可读取该文件的实际内容,如读取文本文件的文字内容等;

● w (write) : 可以编辑,新增或是修改文件的内容。(注意,没有删除文件的权限);

● x (execute) : 该文件可以被系统执行的权限。

拓:

        在Linux中,不以后缀名区分文件,对于.exe为后缀名的文件,Linux是不区分的,当然Linux中的软件是区分的。

        因此,Linux中判断一个文件能否被执行,并不是以.exe后缀名来判断的。在Linux中如果一个文件想要被执行,必须符合一下两点:

        1. 该文件能够被执行,也就是该文件是一个可执行文件。

        2. 该文件是否具有【x】权限。

📁 目录权限

        文件是用来存放实际数据的,而目录主要记录的就是文件名列表等信息,文件名与目录有强烈的关系。

对于目录:

r : 具有读取目录结构列表的权限,所以当你具有r权限时,表示你可以查询该目录下的文件名数      据。

w:表示你具有改动该目录结构列表的权限,即 建立显得文件与目录,删除已经存在的文件与目录,将已经存在的目录或文件更名,移动该目录内的文件和目录位置。

x:表示用户可以进入该目录,即该目录成为工作目录。

📁 粘滞位

可执行权限 : 如果目录没有可执行权限 , 则无法 cd 到目录中 .
可读权限 : 如果目录没有可读权限 , 则无法用 ls 等命令查看目录中的文件内容 .
可写权限 : 如果目录没有可写权限 , 则无法在目录中创建文件 , 也无法在目录中删除文件 .
        问题来了, 就是只要用户具有目录的写权限 , 用户就可以删除目录中的文件 , 而不论这个用户是否有这个文件的写权限。这好像不太科学啊, 我张三创建的一个文件 , 凭什么被你李四可以删掉 ?

        为了解决这个问题,Linux引入了粘滞位的概念。

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

📁 总结

        权限就是限定用户可以执行哪些操作的,权限分为r,w,x,用户的角色分为所有者,所属组,其他人,而这些角色是由一个个普通用户和root用户来充当的,其中用户是可以修改的。文件的权限是对针对文件的内容,而目录的权限主要是针对文件名等内容。

        以上,我们就对文件的权限进行了讲解,其中包含了一般文件的权限意义和目录权限的意义,已讲解了如何修改权限。

        如最后,如果感觉这篇文章对你有用,欢迎点赞,收藏,关注;也希望大家找出文章不足,在评论区讨论交流,互相学习。Thanks♪(・ω・)ノ

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

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

相关文章

如何让亚马逊,速卖通,美客多店铺排名和流量稳定爬升

一、关键词优化 关键词是亚马逊店铺排名的关键。通过合理的关键词优化,可以提高店铺的曝光率。卖家需要研究消费者的搜索习惯和行为,了解他们使用哪些关键词进行搜索,然后将这些关键词用于商品描述、标题和元数据中。此外,还可以…

Linux - 安装字体库解决乱码问题

文章目录 问题描述步骤资源 问题描述 该安装方法,不区分中文和英文字体 Java在linux上转word文档为pdf, linux的字体缺失,导致了转出的pdf为乱码。 ● Linux将word转为pdf后出现乱码? ● 在linux上将word转为pdf 是乱码 ● 在lin…

第一篇【传奇开心果短博文系列】Python的库OpenCV技术点案例示例:cv2常用功能和方法

传奇开心果短博文系列 短博文系列目录Python的库OpenCV技术点案例示例系列 短博文目录一、前言二、常用功能和方法示例三、归纳总结 短博文系列目录 Python的库OpenCV技术点案例示例系列 短博文目录 一、前言 cv2是Python中常用的第三方库,也称为OpenCV库&#…

在全志H616核桃派上实现USB摄像头的OpenCV颜色检测

在给核桃派开发板用OpenCV读取图像并显示到pyqt5的窗口上并加入颜色检测功能,尝试将图像中所有蓝色的东西都用一个框标记出来。 颜色检测核心api 按照惯例,先要介绍一下opencv中常用的hsv像素格式。颜色还是那个颜色,只是描述颜色用的参数变…

【C语言编程之旅 7】刷题篇-函数

第1题 解析 A:错误,一个函数只能返回一个结果 B:正确,将形参存在数组中,修改数组中内容,可以通过数组将修改结果带出去 C:正确,形参如果用指针,最终指向的是外部的实参…

SpringBoot3.1.7集成Kafka和Kafka安装

一、背景 我们在很多系统开发都需要用到消息中间件,目前来说Kafka凭借其优秀的性能,使得它的使用率已经是名列前茅了,所以今天我们将它应用到我们的系统 二、版本选择 在使用一个中间件一定要考虑版本的兼容性,否则后面会遇到很…

[足式机器人]Part2 Dr. CAN学习笔记- 最优控制Optimal Control Ch07-3 线性二次型调节器(LQR)

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-3 线性二次型调节器(LQR) 1. 数学推导2. 案例反洗与代码详解 1. 数学推导 2. 案例反洗与代码详解

Go 的 Http 请求系统指南

文章目录 快速体验请求方法URL参数响应信息BodyStatusCodeHeaderEncoding 图片下载定制请求头复杂的POST请求表单提交提交文件 CookieClient 上设置 Cookie请求上设置 Cookie 重定向和请求历史超时设置总超时连接超时读取超时 请求代理错误处理总结 前几天在 “知乎想法” 谈到…

【力扣】记录一下竞赛分上 Knight

记录一下力扣上 Knight 力扣的题还是相对来说比较简单的,前两个月写的题多一点,后面几乎都是只做了每日一题,感觉正常来说刷个两三个月的题水平就差不多够了,甚至在我才刷半个月的时候就可以做三题了,排名和现在差不多…

自然语言处理的崛起:从初步分析到深度理解

自然语言处理(NLP)是计算机科学、人工智能和语言学的交叉领域,旨在让计算机能够理解和生成人类语言。随着时间的推移,NLP 经历了一系列革命性的变化,从简单的规则和模式匹配到如今的深度学习模型,它们使计算…

宝塔面板SRS音视频TRC服务器启动失败

首先,查找原因 1.先看srs服务在哪 find / -type f -name srs 2>/dev/null运行结果: /var/lib/docker/overlay2/5347867cc0ffed43f1ae24eba609637bfa3cc7cf5f8c660976d2286fa6a88d2b/diff/usr/local/srs/objs/srs /var/lib/docker/overlay2/5347867…

STL——vector模拟实现

在学习过程种 ,学习看源码是很有必要的,它可以让你更清楚的知道一些代码的细节,你也会发现源码将效率利用到了极致,不得不佩服写出源码的人。 下面我将配合源码来实现一个简单的vector,下面请看源码 看源码我们首先要…

React16源码: React中的completeUnitOfWork的源码实现

completeUnitOfWork 1 )概述 各种不同类型组件的一个更新过程对应的是在执行 performUnitOfWork 里面的 beginWork 阶段它是去向下遍历一棵 fiber 树的一侧的子节点,然后遍历到叶子节点为止,以及 return 自己 child 的这种方式在 performUni…

Kotlin程序设计 扩展篇(一)

Kotlin程序设计(扩展一) **注意:**开启本视频学习前,需要先完成以下内容的学习: 请先完成《Kotlin程序设计》视频教程。请先完成《JavaSE》视频教程。 Kotlin在设计时考虑到了与Java的互操作性,现有的Ja…

像素图片在网页中很模糊怎么办?输入这个样式

像素图片在网页中很模糊怎么办?输入这个样式 image-rendering: pixelated;输入前 输入后

业务逻辑漏洞—验证码绕过

验证码绕过第一关: 前端验证码绕过: 打开pikachu靶场: 输入错误的验证码时会出现弹窗(alert)此时我们猜测这可能存在着前端限制 如果验证码有前端限制(只在前端有作用),不影响后…

(十一)Head first design patterns状态模式(c++)

状态模式 如何去描述状态机? 假设你需要实例化一台电梯,并模仿出电梯的四个状态:开启、关闭、运行、停止。也许你会这么写 class ILift{ public:virtual void open(){}virtual void close(){}virtual void run(){}virtual void stop(){} }…

基于SpringBoot Vue二手闲置物品交易系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

4小时精通MyBatisPlus框架

目录 1.介绍 2.快速入门 2.1.环境准备 2.2.快速开始 2.2.1引入依赖 2.2.2.定义Mapper ​编辑 2.2.3.测试 2.3.常见注解 ​编辑 2.3.1.TableName 2.3.2.TableId 2.3.3.TableField 2.4.常见配置 3.核心功能 3.1.条件构造器 3.1.1.QueryWrapper 3.1.2.UpdateWra…