当前位置: 首页 > news >正文

Linux下的权限与文件

系列文章目录

1.Linux系列的第一篇文章:Linux下的常见命令和你所需要知道的小知识

请添加图片描述


Linux下的权限与文件

  • 系列文章目录
  • 前言
  • 一、shell是什么?
    • 1. 1 基本概念:
    • 1.2 作用:
  • 二、文件的权限
    • 2.1.用户区别:
    • 2.2Linux的权限:
      • 2.2.1.权限角色:
      • 2.2.2 文件的权限:
      • 2.2.3 改变权限:
  • 总结


前言

为了更好的学习Linux系统,我们必须要讲清楚Linux文件操作的权限。这是我们理解Linux的基石。我将认识我们所使用的软件xshell和文件的权限


一、shell是什么?

1. 1 基本概念:

  1. 翻译​:Shell = “壳”,内核 = “核”
  2. 作用​:接收用户输入的命令,翻译给操作系统内核执行
  3. ​位置​:用户 ↔ Shell ↔ 内核 ↔ 硬件

在这里我们可以看到shell类似与一个翻译官,来完成我们与Linux系统的对话。当然shell的作用远远不止这么点。
我用的shell软件如下:
在这里插入图片描述

1.2 作用:

  1. 什么是bash:
    Bash(Bourne Again SHell)是 ​Unix/Linux 系统中最流行的命令行解释器(Shell)之一。简单来说,它是一个让你通过输入文本命令与操作系统进行交互的程序
  2. 没有 Xshell​:就无法从 Windows 电脑上方便地使用远程 Linux 服务器里的 Bash Shell
  3. 没有 Shell​:Xshell 就只是一个空壳,连接后没有任何东西可以执行您的命令

总结:
Shell 是用户与计算机操作系统之间的"翻译官"和"控制台"​——它接收您用键盘输入的命令(比如 ls、cd、vim),将这些人类可读的指令翻译成计算机内核能理解的二进制代码来执行各种操作(如管理文件、运行程序、配置系统等),然后将执行结果以文字形式反馈给您,让您能够通过简单的命令行来完全控制复杂的计算机系统。xhell也是我们控制系统的得力助手。

二、文件的权限

2.1.用户区别:

在Linux下我们有两种用户,一种是root(超级用户),另一种则是普通用户例如我这里的wwh。两种用户的权限大有不同,我们来详细讲一下:

详细对比

方面普通用户超级用户 (root)​
权限范围只能操作自己的文件和有限系统功能拥有系统完全控制权
命令提示符$#
家目录/home/用户名//root/
系统文件只读,无法修改可读写修改任何文件
安装软件无法安装系统级软件可以安装任何软件
用户管理只能修改自己密码可创建/删除所有用户

简单来说:
​普通用户就像小区的普通住户,拥有自己家的钥匙(操作个人文件的权限),可以使用公共设施但无法改动;超级用户(root)则是小区的超级管理员,拥有万能钥匙和所有权限,能修改任何住户的门锁、调整水电系统、甚至拆除重建整个小区。
在我们连接Linux时,我们一般使用普通用户来登录,那么如何切换用户呢?
在这里插入图片描述
在这里插入图片描述

su 命令:

我们一开始使用的是wwh这个用户,我们尝试改变用户:尝试使用su命令:

wwh@iZbp1d5rltw6ubizz031qiZ:~$ su -
Password: 
root@iZbp1d5rltw6ubizz031qiZ:~# 

注意这里的密码是不回显的,我们来看图片:
在这里插入图片描述
在这里插入图片描述
我们切换到root就可以做一些需要权限大的事情。我们再次切换回去:
使用exit命令:

root@iZbp1d5rltw6ubizz031qiZ:~# exit
logout
wwh@iZbp1d5rltw6ubizz031qiZ:~$ whoami
wwh

在这里插入图片描述
我们在尝试使用su root,这是注意环境的变化:
在这里插入图片描述
我们可以看到root所处的环境是相同的,地址并没有发生变化。
这是下面几个的详细对比:

命令目标用户环境变量工作目录密码要求核心特点
susu rootroot保持当前用户的环境保持当前目录root 用户密码仅切换用户身份,环境不变
su -su - rootroot加载 root 用户的完整环境切换到 /rootroot 用户密码完全登录到 root 用户环境
sudo su -root加载 root 用户的完整环境切换到 /root当前用户密码通过 sudo 权限切换,无需知道 root 密码
su -c "command"root取决于是否加 -保持不变root 用户密码临时执行单条命令后自动返回原用户
sudo -iroot加载 root 用户的完整环境切换到 /root当前用户密码功能类似 sudo su -,更直接的 root 登录方式

sudo命令:

sudo是短暂的提权,它可以解决我们很多需要root权限困难:sudo(Superuser Do)是 Linux 系统中一个非常重要的命令,它允许普通用户以超级用户(root)​​ 或其他指定用户的身份执行命令,而无需直接切换到该用户账户。这是一种既安全又灵活的系统权限管理方式。
简单来说:sudo就像一把“特权钥匙”。系统管理员通过配置,可以给普通用户这把钥匙,允许他们临时获得高级权限去执行特定的管理任务(比如安装软件、修改系统配置等)。任务完成后,权限自动收回,这比直接使用 root 用户更安全,因为它遵循了“最小权限原则。
我们来看下面两幅图片就可以看出sudo的主要作用了。
在这里插入图片描述


2.2Linux的权限:

在日常的生活中,我们看视频通常需要会员的权限才能跳过广告,这是生活中的权限。在Linux中:理解 Linux 下的权限系统,是掌握系统安全和多用户管理的关键。它就像一套精细的“文件访问规则”,明确规定了谁​(用户)对哪个文件或目录能做什么​(读、写、执行)。
这样我们可以将综上我们可以得出: 权限 = 角色 + 目标属性
在我们 Linux 中,我们一切皆文件。我们文件无非具备读、写、执行三个属性。

2.2.1.权限角色:

Linux 为每个文件或目录的权限定义了三个作用对象,常被称为“权限三元组”:

  • 所有者 (Owner, u)​: 文件或目录的创建者,通常拥有最高的控制权。
  • ​所属组 (Group, g)​: 文件或目录所属的用户组,组内成员共享此权限。
  • 其他用户 (Others, o)​: 既不是所有者,也不在所属组中的任何其他用户。

同时系统会按照 ​所有者 → 所属组 → 其他用户​ 的顺序匹配当前操作的用户身份,且一旦匹配成功,便不再继续向后验证。这意味着,一个用户即使同时属于多个组,他对一个文件的有效权限也仅由其最先匹配到的身份决定。这句话非常重要,对我们后面的理解有巨大的帮助。

在这里插入图片描述
其中红线标的就是所属组,组内成员共享:
在这里插入图片描述
其中蓝线标的就是所有者,我们可以看出这篇文章他的所属组和所有者都是wwh。上面没有出现 other,其实我们 other 不需要记录,不是拥有者和所属组,那就是 other 了。我们的 other 是非常多的,所以就没记录下来。
放开 other权限​:相当于把文件放在公司大堂的公告板上,谁都能看。
​使用 所属组​:相当于把文件锁进只有你们项目组成员有钥匙的保密柜,实现了精准、安全的团队协作。这就是所属组的作用。

2.2.2 文件的权限:

先看图片:
在这里插入图片描述
在所有者的前面就是就是文件的能做的事情了。这里可以文件可以被读(read)r,写(write)w,执行(Execution)x,我们来详细看看:
在这里插入图片描述
这里绿色圈出来的是文件类型,其中d是目录,-是普通文件。
在这里插入图片描述
这里圈出来的是所有者的权限,对应的位置是rwx,如果所有的权限都有就是rwx,比如所有者不具有读的权限就变成了-wx,即每个权限位置是固定的,如果有就写权限,没有则为-。
在这里插入图片描述
同理我们也可以做出以下划分,依次是所有者,所属组,其他组的各自的权限,其中wwh既是所有者,也是所属者,但是在这里我们用所有者的权限来看。这是上面讲过的(同时系统会按照 ​所有者 → 所属组 → 其他用户​ 的顺序匹配当前操作的用户身份,且一旦匹配成功,便不再继续向后验证)。

那么目录呢,其中我们来详细的对比以下吧:

权限维度具体分类核心含义
做什么 (rwx)​读 (r )​查看文件内容 (cat)、列出目录内容 (ls)
写 (w)​修改文件内容、在目录内创建/删除/重命名文件
执行 (x)​运行程序脚本、进入目录 (cd)
对谁做 (所有者)​所有者 (u)​文件/目录的创建者,拥有最高权限
所属组 (g)​与文件所有者属于同一组的用户,共享权限
其他用户 (o)​系统内除所有者和组员外的其他所有用户

这张表格也可以看出对于目录和文件是不一样的,比如x是进入目录里面,r则是列出目录的内容。w则比较好理解:在目录内创建/删除/重命名文件。
以下是两个的详细对比:

在这里插入图片描述

2.2.3 改变权限:

在我们理解了权限,我们便可以改变权限,来完成工作的要求。我们应该使用什么命令来完成权限的改变呢?

chmod 命令

  • 功能:设置文件的访问权限
  • 格式:chmod [参数] 权限 文件名
  • 说明:只有文件的拥有者或 root 才可以改变文件的权限。(root是老大当然可以改变)

在这里插入图片描述
原本code1.exe是不能执行的,这是因为我执行了下面的命令:

wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ chmod u-x code1.exe # 改变
wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ ll
total 40
drwxrwxr-x 3 wwh wwh  4096 Oct 15 19:12 ./
drwxr-x--- 7 wwh wwh  4096 Oct 15 19:12 ../
drwxrwxr-x 2 wwh wwh  4096 Oct 15 18:53 code/
-rw-rw-r-- 1 wwh wwh   232 Oct 15 19:12 code1.cpp
-rw-rw-r-- 1 wwh wwh 21304 Oct 15 19:12 code1.exe
-rw-rw-r-- 1 wwh wwh     0 Oct 15 18:53 code2.cpp
wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ 

恢复则使用:

wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ chmod u+x code1.exe # 改变权限
wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ ll
total 40
drwxrwxr-x 3 wwh wwh  4096 Oct 15 19:12 ./
drwxr-x--- 7 wwh wwh  4096 Oct 15 19:12 ../
drwxrwxr-x 2 wwh wwh  4096 Oct 15 18:53 code/
-rw-rw-r-- 1 wwh wwh   232 Oct 15 19:12 code1.cpp
-rwxrw-r-- 1 wwh wwh 21304 Oct 15 19:12 code1.exe*
-rw-rw-r-- 1 wwh wwh     0 Oct 15 18:53 code2.cpp
wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ 

当⼀个目录被设置为 " 粘滞位 "(用 chmod + t),则该目录下的文件只能由

  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除
  • 我们粘滞位只能给需要共享的目录添加。

我们还可以使用另一种改变权限的方法:我们注意观察到:
如果1表示有这个权限,那么对于r–则是100,rw-则是110,rwx则是111,分别为:4,6,7,此时我们可以想到这样的改变权限:

在这里插入图片描述
我们通过设置也取消了code1.exe的权限。我们来重新完成恢复这个问题:

drwxrwxr-x 3 wwh wwh  4096 Oct 15 19:12 ./
drwxr-x--- 7 wwh wwh  4096 Oct 15 19:12 ../
drwxrwxr-x 2 wwh wwh  4096 Oct 15 18:53 code/
-rw-rw-r-- 1 wwh wwh   232 Oct 15 19:12 code1.cpp
-rw-rw-r-- 1 wwh wwh 21304 Oct 15 19:12 code1.exe
-rw-rw-r-- 1 wwh wwh     0 Oct 15 18:53 code2.cpp
wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ chmod 764 code1.exe
wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ ll
total 40
drwxrwxr-x 3 wwh wwh  4096 Oct 15 19:12 ./
drwxr-x--- 7 wwh wwh  4096 Oct 15 19:12 ../
drwxrwxr-x 2 wwh wwh  4096 Oct 15 18:53 code/
-rw-rw-r-- 1 wwh wwh   232 Oct 15 19:12 code1.cpp
-rwxrw-r-- 1 wwh wwh 21304 Oct 15 19:12 code1.exe*
-rw-rw-r-- 1 wwh wwh     0 Oct 15 18:53 code2.cpp
wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ 

通过上面的对比我们也可以看出不同的点。但是也引出了一个问题为什么我们设置的普通文件时664,不是777,这里我们将引出掩码umask。我们来详细谈谈:
在这里插入图片描述
我们可以看到我们是这个时0002,这个该怎么计算呢?
计算规则​:​最终的默认权限 = 最大权限 & (~umask)​​ 。这里的 &是按位“与”运算,~是取反操作。这意味着 umask 值中为 1 的位,会在最终权限中被“屏蔽”或移除。比如002是:000,000,010,我们取反,变成111,111,101,这里再按位与则是110,110,100,变成了rw-rw-r-- 。

  110 110 110  (文件最大权限 666)
& 111 111 101  (~umask 002)
-------------------------110 110 100  (计算结果)

chown 命令:

  • 功能:修改文件的拥有者
  • 格式:chown [参数] 用户名 文件名

在这里插入图片描述
在这里插入图片描述

drwxrwxr-x 3 wwh  wwh  4096 Oct 15 19:12 ./
drwxr-x--- 7 wwh  wwh  4096 Oct 15 19:12 ../
drwxrwxr-x 2 wwh  wwh  4096 Oct 15 18:53 code/
-rw-rw-r-- 1 wwh  wwh   232 Oct 15 19:12 code1.cpp
-rwxrw-r-- 1 wwh  wwh 21304 Oct 15 19:12 code1.exe*
-rw-rw-r-- 1 root wwh     0 Oct 15 18:53 code2.cpp
wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ sudo chown wwh code2.cpp
wwh@iZbp1d5rltw6ubizz031qiZ:~/classBox$ ll
total 40
drwxrwxr-x 3 wwh wwh  4096 Oct 15 19:12 ./
drwxr-x--- 7 wwh wwh  4096 Oct 15 19:12 ../
drwxrwxr-x 2 wwh wwh  4096 Oct 15 18:53 code/
-rw-rw-r-- 1 wwh wwh   232 Oct 15 19:12 code1.cpp
-rwxrw-r-- 1 wwh wwh 21304 Oct 15 19:12 code1.exe*
-rw-rw-r-- 1 wwh wwh     0 Oct 15 18:53 code2.cpp

我们就改变了所有者。

同理也就有了chgrp

  • 功能:修改文件或目录的所属组
  • 格式:chgrp [参数] 用户组名 文件名
  • 常用选项:-R 递归修改文件或目录的所属组

总结

这篇文章将讲清楚Linux的权限和角色,可以很大的帮助我们完成对系统的学习。
请添加图片描述

http://www.dtcms.com/a/485785.html

相关文章:

  • 《算法闯关指南:优选算法--二分查找》--19.x的平方根,20.搜索插入位置
  • 从中序与后序遍历序列构造二叉树
  • 【超分辨率专题】DOVE:特色双阶段训练的单步Real-World视频超分辨
  • 《Linux基础入门指令(二)》:从零开始理解Linux系统
  • 响应式网站开发图标郑州网站商城建设
  • 仓颉编程(3)基本操作符
  • 潍坊网站建设推广公司上海公司注销的流程及需提供的材料2023
  • 《算法通关指南---C++编程篇(1)》
  • Go语言:记录一下Go语言系统学习的第一天
  • GraphRAG 与 Neo4j 社区版:能力边界与适用场景学习总结
  • 【OC】计算器的仿写
  • 东莞工厂网站建设网站建设要买哪些软件
  • 5-3〔OSCP ◈ 研记〕❘ SQL注入攻击▸基于错误的SQLi 盲注SQLi
  • AWS Redshift 数据仓库完整配置与自动化管理指南
  • 《C++ 手搓list容器底层》:从结构原理深度解析到功能实现(附源码版)
  • 成都那家做网站好注册网约车主需要什么条件
  • Wireshark:HTTP、MQTT、WebSocket 抓包详细教程
  • Linux内核架构浅谈36-Linux页帧描述:struct page数据结构的设计与关键成员
  • 道路车辆功能安全标准(FuSa)基础(七)
  • 【Linux系列】解码 Linux 内存地图:从虚拟到物理的寻宝之旅
  • vue+spring boot 利用ffmpeg实现大视频切片
  • 长沙手机网站建设公司wordpress 做笔记
  • Java基于Web3j调用智能智能合约案例
  • 关于联想ThinkCentre M950t-N000 M大师电脑恢复预装系统镜像遇到的一点问题
  • 有关优化网站建设的书籍深圳网络推广方法
  • 招聘网站做竞品分析南昌网站seo多少钱
  • 【实战总结】Docker部署MySQL完整教程:附docker-compose模板与常用命令大全
  • C++ string类的使用
  • 【数据结构】:C 语言常见排序算法的实现与特性解析
  • C语言数据结构:算法复杂度(1)