说明:文章部分内容源自网络,仅作交流学习使用,如构成侵权请私聊
参考资料:《鸟哥的Linux私房菜第四版》《Linux操作系统(微课版)(RHEL8CentOS8)(第2版)》《菜鸟教程》
测试系统:RHEL 8.2
如果文章有错误之处欢迎大家批评指正
概述
其实权限管理和用户组管理本应该放在一起说明的,但是为了避免单篇的篇幅过长,故分开进行讨论。
在深入学习一个知识点的时候,我会更倾向于了解这个知识点的作用,否则的话学习起来是毫无兴趣的,那么在Linux里面为什么需要权限管理呢?我个人认为主要有以下两个方面的原因:
一、处于系统安全考虑
例如在上一篇内容提到的用户口令存储位置,其实用户的口令在一开始是存储在/etc/passwd里面的,但是/etc/passwd文件对于所有用户都有可读的权限,并不是那么安全。所以目前大多收的Linux系统都将口令存放在/etc/shadow里面了。
同时,在Linux里面可以登录的用户被分为两种类型,root用户和普通用户。root用户拥有操作系统的全部权限,给所有人root权限,显然也不太现实。
etc/passwd文件权限
etc/shadow文件权限
二、出于工作协同的考虑
Linux系统一般是部署在企业的服务器之上的,并不像个人PC一样只有你自己使用。比如在做软件开发的时候可能会用到协同工作软件SVN。因此就必须针对协同工作的员工设置好对应权限,避免出现某音剧情(程序员离职,删库跑路)
权限管理和用户管理之间有什么关系呢?菜鸟教程有个图片非常形象且生动,用户管理相当于对用户进行授权,权限管理相当于给了开门的权限。
图片援引自菜鸟教程(Linux 文件基本属性 | 菜鸟教程 (runoob.com)),侵删
Linux的权限类型
查看Linux权限的命令有很多,比如使用stat + 文件名,比如使用ls -l,以下我们均使用ls -l 查看文件类型。当使用ls -l 查看家目录的时候能看到以下的内容。
[root@Server01 ~]# ls -l
总用量 8
drwxr-xr-x. 2 root root 6 9月 5 18:33 公共
drwxr-xr-x. 2 root root 6 9月 5 18:33 模板
drwxr-xr-x. 2 root root 6 9月 5 18:33 视频
drwxr-xr-x. 2 root root 6 9月 5 18:33 图片
drwxr-xr-x. 2 root root 6 9月 5 18:33 文档
drwxr-xr-x. 2 root root 6 9月 5 18:33 下载
drwxr-xr-x. 2 root root 6 9月 5 18:33 音乐
drwxr-xr-x. 2 root root 6 9月 5 18:33 桌面
-rw-------. 1 root root 2032 9月 5 18:31 anaconda-ks.cfg
-rw-r--r--. 1 root root 2187 9月 5 18:32 initial-setup-ks.cfg
我们从里面随机抓取一条内容来查看以下它所代表的含义
1、文件类型(以下只列出常见文件类型)
- d 代表目录
- – 代表普通文件
- l 代表链接文件,类似于快捷方式
- b 文件里面可供存储的周边设备,可随机读取的设备
- c 输入设备,如键盘,打印机等
2、文件的权限
文件权限之于不同的用户
在Linux里面的文件权限可以分为三大类,分别是所有者(文件拥有者)权限,所属组(加入这个用户组的用户)权限和其他用户权限
在每一类用户的权限又可以被分为以下三种类型
- r (read)读权限 读取文件内容
- w(write)写权限 编辑文件内容
- x(execute)执行权限 文件具备被系统执行的权限
值得注意的是,rwx针对不同的文件有不同的含义,对应不同的命令。
rwx之于文件
在Linux里面文件指的是含有数据的地方,包括文本文件(例如使用vim file1创建的普通文本文件),数据库内容档,二进制可执行文件(例如shell脚本文件 1.sh)。
- r 读取文件内容,如使用cat查看文件内容
- w 编辑修改文件内容,如使用echo hello > file1,写入hello到file1中,但是不具备删除文件的权限,因为文件是存放在目录里面的,如果要删除文件需要有对应目录的w权限
- x 执行权限,在Windows系统中一个文件是否可以被执行通常是看文件的扩展名,如.bat,.exe等,在Linux里面一个文件是否可被执行和扩展名无关,只关心这个文件是否具有x权限,最简单的例子就是当你使用vim写了一个 “.sh” 的脚本文件之后,如果想要直接运行,必须使用 chmod + x n.sh(n为假定的文件名)才可以。而扩展名在Linux中一般只是为了方便用户明白这个文件和哪个程序关联。
rwx之于目录
在Linux中目录主要的内容是记录文件名清单,文件名和目录有强烈的关联。
- r 表示具有读取目录结构清单的权限。例如使用 “ls” 命令查看文件夹的内容
- w 表示具有更改文件目录清单的权限,例如创建新的文件、删除已经存在的文件、更改文件名、移动该目录里的文件和目录
- x 目录本身并不能被执行,因此目录的x权限一般代表能否使用 “cd ” 进入该目录
其他
有多少文件名链接到此Inode。Inode ID:每个文件都会将它的权限和属性记录到文件系统的i-node中,但是目录树是使用文件名来记录(如,使用ls -l查看的文件内容详细信息),所以每个文件名就必须链接到一个Inode ID去,有点类似于Windows的快捷方式,之于什么是Inode我们将会在下一章进行详细介绍。当你创建一个目录文件的时候这个值是2,因为目录里面有 “.” 和“..”文件,.文件链接到当前目录,.. 链接到当前目录的父目录
Time代表的是文件的最近改动时间(Modify time)或者是文件的创建时间,这个不在本章节的讨论范围之内
修改Linux的文件权限
chmod
Linux的Chmod的名利格式有以下两种类型
命令格式:chmod + {u,g,o,a} + [+,-,=] {rwx} 文件或目录名
chmod + 数字 +文件名
类型1:chmod + {u,g,o,a} + {+,-,=} {rwx} 文件或目录名
- 参数一:修改文件权限范围
- u 文件的拥有者
- g 文件所在的组
- o 除了拥有者和拥有组的其他用户
- a 所有用户 //默认选项
- 参数二:
- + 增加权限
- – 减少权限
- = 设定权限
- 参数三:具体的权限
示例:
[root@Server01 tmp]# ls -l
总用量 0
-rwxr-xr-x. 1 root root 0 11月 10 20220911 file1
[root@Server01 tmp]# chmod u-wx,g-x,o+w-x file1
[root@Server01 tmp]# ls -l
总用量 0
-r--r--rw-. 1 root root 0 11月 10 20220911 file1
类型二: chmod + 数字 +文件名
在系统的底层是采用二进制来标识文件权限的,rwx只是为了方便用户查看,一组用户的权限包括rwx三个权限,因此可以使用一组三位二进制来表示,没有任何权限可以用000来表示,转换为十进制就是0,拥有读的权限可以用100来表示,转换为十进制就是4,拥有写的权限可以用010来表示,转换为十进制就是2,拥有执行的权限可以用001来表示,转换为十进制就是1。因此当用户的所有者拥有读、写、执行的全部权限,所属组和其他用户没有权限可以使用700来表示。同理大家可以思考一下,当创建一个新的文件的时候,它的权限一般为644,当创建一个目录的时候,它的权限一般为755。
PS:chmod也可以增加上“-R”参数的参数,递归修改文件权限
示例:
[root@Server01 tmp]# ls -l
总用量 1
-r--r--rw-. 1 root root 0 9月 22 03:28 file1.
[root@Server01 tmp]# chmod 700 file1
[root@Server01 tmp]# ls -l
总用量 1
-rwx------. 1 root root 0 9月 22 03:28 file1
默认权限
新建一个文件时,这个文件的默认权限可以使用 umask 命令来查看
[root@Server01 tmp]# umask
0022
这个0022其实是权限掩码,权限掩码的第一个0代表的是特殊权限,我们先忽略,后面三位分别对应着用户的所有者、所属组、其他用户的权限。权限掩码不太方便我们进行查看,我们可以加上 -S 选项,使用文字的方式显示掩码
[root@Server01 tmp]# umask -S
u=rwx,g=rx,o=rx
[root@Server01 tmp]#
但是细心的朋友会发现,这个权限和我们创建文件的默认权限不一样,默认创建文件的时候,权限值一般为“rw-r–r–”
这里就不得不说一下权限掩码的计算方法了。权限掩码按照官方的算法需要经过复杂的运算。所以在实践当中还有一种更加简便的方法,以下就介绍一下这个简便算法的公式。
文件/目录的默认最大权限 – 文件/目录的掩码 = 文件/目录的权限
在这里有个概念要先明确,那就是文件/目录的默认最大权限
- 对于文件来讲,默认拥有的最大权限是 rw-rw-rw-(666),因为执行权限是最高权限,一定要手动赋予。所以根据公式和默认权限掩码可以算出文件的默认权限为“666-022=644”,也就是“rw-r–r–”
- 对于目录来讲,如果没有执行的权限,那就没办法进入对应的目录,所以目录拥有的默认最大权限为“rwxrwxrwx”(777),所以根据公式和默认权限掩码可以算出目录的默认权限为“777-022=755”,也就是“rwxr-xr-x”
Linux的默认权限配置位置我们早在用户和组管理的时候就有过介绍,也就是在“/etc/profile”里面,可以在此博文里查看“http://t.csdn.cn/eht5q ”
可不可以修改Linux的默认权限呢?当然也是可以的,比如直接修改/etc/profile文件,进行永久修改,或者使用umask + 权限掩码,临时修改。当然,正常情况下不建议修改,因为默认的权限是最安全的配置方式。
chown
命令格式 chown 【-R】 属主名 文件名 //-R为递归更改
示例:
1、将/home/user01目录复制至/tmp目录之下
[root@Server01 tmp]# cp -ar /home/user01/ /tmp/
[root@Server01 tmp]# ls -l
总用量 1
drwx------. 15 user01 user01 4096 9月 17 01:23 user01
2、修改/tmp/user01文件夹的所属者为root用户
[root@Server01 tmp]# chown root user01/
[root@Server01 tmp]# ls -l
总用量 1
drwx------. 15 root user01 4096 9月 17 01:23 user01
chgrp
命令格式:chgrp 【-R】 属组名 文件名 //-R为递归更改
示例
修改/tmp/user01文件夹的所属组为root
[root@Server01 tmp]# chgrp root user01/
[root@Server01 tmp]# ls -l
总用量 1
drwx------. 15 root root 4096 9月 17 01:23 user01
值得注意的是chgrp修改的是用户的属组,不是附加组,具体内容可以在此篇博文查看。http://t.csdn.cn/eht5q
查看全文
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/28722.html
如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!
相关文章:
Linux基本权限管理
说明:文章部分内容源自网络,仅作交流学习使用,如构成侵权请私聊
参考资料:《鸟哥的Linux私房菜第四版》《Linux操作系统(微课版)(RHEL8CentOS8)(第2版)》《菜鸟教程》
测试系统:RHEL 8.2
如果文章有错误之处欢迎大家……
【重识云原生】第六章容器6.3.5节——Controller Manager概述
1 Controller Manager概述
1.1 Controller Manager简介 Controller Manager作为K8S集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccou……
Cesium
Cesium
Cesium API
demo 仓库地址
一、开始
1.1 token
注册一个 Cesium Ion ,在 Access Tokens 的右侧的 Token 处,复制到 js 文件中,赋值到 token,并设置:
Cesium.Ion.defaultAccessToken token;1.2 创建 Cesi……
微信小程序–宿主环境1程序以及页面
小程序可以调用宿主提供的微信客户端的能力,这使得小程序比普通页面拥有更多的能力
一、程序
1.构造
宿主环境提供App构造器来注册一个程序App,注册器只能在app.js中写,在其他脚本可以通过getApp()获取程序实例; 要记得离开一些……
【微服务】- Nacos – 注册中心
注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。微服务 – 注册中心 – Nacos😄生命不息,写作不止
🔥 继续踏上学习之路,学之分享笔记
�……
深度强化学习-DQN算法
论文地址:https://arxiv.org/abs/1312.5602 先讲下在线,离线,同策略和异策略 同策略(on-policy)和异策略(off-policy)的根本区别在于生成样本的策略和参数更新时的策略是否相同。 对于同策略&am……
Gradient Harmonized Single-stage Detector
参考 Gradient Harmonized Single-stage Detector – 云社区 – 腾讯云
摘要
虽然两级检测器取得了巨大的成功,但是单级检测器仍然是一种更加简洁和高效的方法,在训练过程中存在着两种众所周知的不平衡,即正、负样本之间以及简单例子和困难例……
Charles日常使用
文章目录前言一、安装配置二、日常使用1.Charles篡改返回数据1.1.Breakpoints 断点方式篡改1.1.Map Local方式篡改前言
提示:日常使用,不定时更新 一、安装配置
二、日常使用
1.Charles篡改返回数据
我们页面调试常常需要篡改返回数据,使……
焊缝质量检测数据集
写这篇文章最大的初衷就是最近频繁的有很多人私信问我相关的数据集的问题,基本上都是从我前面的目标检测专栏里面的这篇文章过来的,感兴趣的话可以看下:
《轻量级模型YOLOv5-Lite基于自己的数据集【焊接质量检测】从零构建模型超详细教程》 ……
Replication(下):事务,一致性与共识
本文主要介绍事务、一致性以及共识,首先会介绍它们怎么在分布式系统中起作用,然后将尝试描述它们之间的内在联系,让大家了解,在设计分布式系统时也是有一定的“套路”可寻。最后将介绍业界验证分布式算法的一些工具和框架。希望能……
计算机笔试/面试常见逻辑题/智力题汇总
说明:按种类汇总,难度不分先后,做了分级罗列,方便后续扩充,大家有比较有意思的题目可以在讨论区讨论。 下面有的题题解相对复杂的直接参考了网上的一些解答,而有的题解我认为并不好的也做了补充,……
OpenAI文档翻译——搭建第一个自己的ChatGPT应用
这篇主要是讲了重头到位创建一个基于OpenAI API的应用程序的过程,同时给出了Node.js、Python版本的实例代码。应用程序的构建总体来说是很简单的就是一个接口调用,前提是我们需要提供密匙。
如果想要获取更好的结果返回一个是可以给模型提供一些列子从而……
python以及PyCharm工具的环境安装与配置
这里以Windows为例
Python的安装
当然是到Python官网下载咯,https://www.python.org/downloads/点我直达,如图: 可以下载最新版本,可以下拉找到之前特定的版本安装,如图: 这里先择的是最新版的进行安装……
JavaScript【六】JavaScript中的字符串(String)
文章目录🌟前言🌟字符串(String)🌟单引号和双引号的区别🌟属性🌟 length :字符串的长度🌟 方法🌟 str.charAt(index);🌟 str.charCodeAt(index);🌟 String.fromCharCode(……
获取文件MD5小案例(未拆分文件)
文章目录前端获取MD5后端获取MD5前端获取MD5
1、引入js
<script src"js/spark-md5.min.js" type"text/javascript"></script>注:spark-md5库GitHub链接 2、这里是一个按钮和被隐藏调的<input/>标签 <body><button……
Java 进阶(15)线程安全集合
CopyOnWriteArrayList
线程安全的ArrayList,加强版读写分离。
写有锁,读⽆锁,读写之间不阻塞,优于读写锁。
写⼊时,先copy⼀个容器副本、再添加新元素,最后替换引⽤。
使⽤⽅式与ArrayList⽆异。
示例……
HR:面试官最爱问的linux问题,看看你能答对多少
文章目录摘要Linux的文件系统是什么样子的?如何访问和管理文件和目录?如何在Linux中查看和管理进程?如何使用Linux命令行工具来查看系统资源使用情况?如何配置Linux系统的网络设置?如何使用Linux的cron任务调度器来执行……
vscode开发常用的工具栏选项,查看源码技巧以及【vscode常用的快捷键】
一、开发常用的工具栏选项
1、当前打开的文件快速在左侧资源树中定位: 其实打开了当前的文件已经有在左侧资源树木定位了,只是颜色比较浅 2、打开太多文件的时候,可以关闭 3、设置查看当前类或文件的结构 OUTLINE
相当于idea 查看当前类或接……
数据要素化条件之一:原始性
随着技术的发展,计算机不仅成为人类处理信息的工具,而且逐渐地具有自主处理数据的能力,出现了替代人工的数据智能技术。数据智能的大规模使用需要关于同一分析对象或同一问题的、来源于不同数据源的海量数据。这种数据必须是针对特定对象的记……
【面试题 高逼格利用 类实现加法】编写代码, 实现多线程数组求和.
编写代码, 实现多线程数组求和.关键1. 数组的初始化关键2. 奇偶的相加import java.util.Random;public class Thread_2533 {public static void main(String[] args) throws InterruptedException {// 记录开始时间long start System.currentTimeMillis();// 1. 给定一个很长的……
编程日记2023/4/16 14:56:10