Linux权限以及常用热键集合

创作初心:在加深个人对知识系统理解的同时希望可以帮助到更多需要的同学

😄柯一梦的专栏系列

🚀柯一梦的Gitee主页

🛠️柯一梦主页详情

座右铭:心向深耕,不问阶序;汗沃其根,花自满枝


常见的热键和使用的技巧:

  • Tab按键---具有命令补全功能
  • Ctrl-c按键---让当前的程序停掉
  • Ctrl-r按键---进入搜索模式,可以使用关键词搜索历史指令
  • !<命令开头>:最近一次以指定字符开头的命令

shell命令及其运行原理:

Linux严格意义上是一个操作系统,我们称之为核心(kernel),但是一般的用户不能直接使用kernel,而是通过一个外壳程序shell,来与kernel进行沟通。如何理解呢?

从技术角度来说,shell的最简单的定义:命令解释器,主要包含:

  • 将使用者的命令翻译给核心kernel处理
  • 同时将核心处理的结果翻译给使用者

对比Windows GUI:我们操作Windows,不是直接操作Windows的内核,而是通过图形化接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常双击D盘盘符,或者运行起来一个应用程序)

shell对于Linux:有相同的作用,主要是对我们的命令进行解析,解析指令给Linux内核。反馈结果再通过内核运行出结果,通过shell解析给用户。

帮助理解:如果说你是一个害羞且闷骚的程序员(也就是用户),你喜欢上了村头漂亮的小花(也就是操作系统内核),媒婆就是shell外壳。你喜欢小花,但是你狠害羞,不能和小花知己诶的进行面对面的交流,所以你就让媒婆给你去提亲,所有的事情你都和媒婆进行沟通,然后媒婆再把你的消息传递给小花,王婆是众多媒婆中的一员,我们叫她王婆(bash)。

总结:因为内核太过复杂,所以给内核套上了一个外壳,也就是外壳程序,shell命令行,图形化界面,我们通过外壳与内核进行交流,内核返回出来的信息又通过外壳传递给使用者。这样用户无法直接访问内核的方式就可以变相的保护内核。

Linux权限的概念

什么叫做权限?

就是能不能访问资源

为什么要有权限呢?

因为Linux操作系统是多用户操作系统,一个Linux同时会有多个用户来访问登录,权限的本质就是为了更好的进行用户管理

权限 = 人 + 文件属性

权限是针对特殊群体的,与人的身份有关(比如root和普通用户)

Linux下的两种用户

  • 超级用户:可以在Linux系统下面做任何事情并且不受限制
  • 普通用户:可以在Linux下做有限的事情
  • 超级用户的提示符是"#",普通用户的提示符是"$"

切换用户的指令:su

使用方法: su 用户名

从超级用户切换到普通用户:直接su 用户名

从普通用户切换到超级用户:su root(root可以省略),此时系统会提示输入root用户的密码。

从普通用户切换到另一个普通用户:系统户要求你输入该用户的密码

值得一提的是:你使用su切换用户的时候,并不会改变当前的工作路径,所以su 用户名更像是"临时借用身份",会保留原有的工作上下文。如果你想要改变工作路径,你可以使用su - 用户名,这样的话可以起到"重新登陆的效果",会彻底改变工作环境。

Linux的权限管理

注意:权限是依附于角色的,角色是由用户(分为超级用户和普通用户)扮演的

1.linux中的角色

  • 文件和文件目录的拥有者:u
  • 文件和文件目录的所有者所在的组的用户:g (设立组就是为了方便问价内进行组级别的管理)
  • 其他用户:o

注意:超级用户可以在linux系统下进行任何操作,具有特权,可以无视文件的权限,即使是作为other角色,也可以任意的访问文件

2.文件类型和访问权限

我们在创建文件的时候,登录在那个用户下面,创建的文件的拥有者就是谁,如果我们想创建文件到系统上面,我们该怎么办呢?只能使用sudo,使用完sudo以后可以短暂的提权(拥有了和root一样的特权),值得一提的是,我们在使用完sudo以后,要输入的却是该用户的密码,那么这哈斯有就有同学要问:那root不就形如虚设吗?其实不是这样的,在操作系统中,不是所有用户都可以使用sudo命令,这个需要root进行指定(在指定的配置文件中进行操作)

文件类型

  1. d:文件夹
  2. -:普通文件
  3. l:软连接
  4. b:块设备文件(如硬盘、光盘)
  5. p:管道文件
  6. c:字符设备文件
  7. s:套接口文件
    基本权限

我们随机显示一个文件的属性

从左往右,第一列代表的是文件类型,往后的每三列为一组,每一组里面又按顺序分为三个字母,分别是r w x

  • r:对于文件而言,具有读取文件内容的权限;对于目录而言,具有浏览该目录信息的权限
  • w:对于文件而言,具有修改文件内容的权限;对于目录而言,具有删除、移动目录内文件的权限
  • x:对于文件而言,具有执行文件的权限,对于目录而言,具有进入目录的权限

文件权限值的表示方法

  • 字符表示方法(也就是r w x)
  • 8进制数值表示方法,为什么是八进制呢?(一个角色具有三个位,也就是000-111,就是0-7,所以一个角色对应的权限就是0-7,比如100就代表拥有者可以执行该文件,而其他人无趣权限)

文件访问权限的相关命令

chmod指令(change mode)

功能:设置文件的访问权限

格式:chmod 参数 权限 文件名

常用选项

  • R:递归修改目录文件权限
  • 注意:只有文件的拥有者或超级用户才可以更改文件的权限

chmod命令权限值的格式

通过 "对象 + 操作 + 权限" 的组合修改权限

  • 操作符:

    • =:设置权限(直接覆盖原有权限,只保留指定权限)
    • -:移除权限(原有权限不变,删除指定权限)
    • +:添加权限(原有权限不变,新增指定权限)
  • 用户符号

    • u:所有者(User,文件 / 目录的创建者)
    • g:所属组(Group,文件 / 目录归属的用户组)
    • o:其他用户(Others,既不是所有者也不在所属组的用户)
    • a:所有用户(All,等价于 u+g+o

实例:

chmod使用字符改变文件的属性

chmod使用八进制数字改变文件属性

值得注意的三个细节:

1.用户在对文件的属性进行修改时,系统会先匹配用户对于文件的角色,在匹配过程中,遵循只匹配一次且从左往右,也就是说如果一个文件的所有者和所属组都是rxj,所有者没有修改权限,即使所属组有修改权限,rxj也不能进行修改

2.关于文件的可执行,不仅需要文件有执行的权限,而且还需要文件本身是可执行的二进制文件

3.关于文件权限的修改,一般是拥有者进行的修改


chowm指令

功能:修改文件的拥有者(只有超级用户才有修改文件所有者的资格,因为你不能随便把一个文件甩锅给别人)

格式:chown 参数 用户名 文件名

常见参数

  • -R:可以递归更改一个目录下的所有文件的属性

实例


chgrp指令

功能:修改文件的所属组

格式:chgrp 参数 用户组名 文件名

参数

  • -R:递归修改文件或目录的所属组

实例

值得一提的是:

文件的拥有者不能直接修改文件的拥有者和所属组

如果是一个错误代码,就会影响别人

如果你想要给别人:

1.使用超级用户

2.使用sudo进行短期的提升权限


四个问题:

1.文件权限问题:进入一个目录需要什么权限呢?是 r 还是 w 还是 x?

首先我们可以先引入一个不是很准确的概念,那就是目录也是一个文件。众所周知,文件=文件内容+文件属性,r,x,w指令控制的是用户对文件内容的权限。如果说目录是一个文件,我们可以把文件的属性看成一个目录下面的内容。

r:控制的是用户能不能看见目录下面的内容,也就是文件的属性,例如文件名,文件权限什么的

w:控制的是用户能不能往目录下写东西,也就是创建或者删除文件

x:控制的是用户是否可以进入目录

注意:我们在进行一些指令的时候,要分清我们在对谁进行指令,比如touch,mkdir,cd都是在对目录进行操作,那么这些命令会受到目录的权限约束,而像cat则是在对文件进行操作,则不会受到目录约束


2.为什么我们创建的文件和目录权限是我们看到的那样的呢?

对于普通文件来说,文件的起始权限是从666开始的(因为默认文件不需要可执行)

对于目录文件来说,文件的起始权限是从777开始的

但是为什么我们打开文件权限不是这样的呢?

原因就是我们在创建文件或者目录的时候还会受到umask的影响,实际创建出来的文件权限是:初始权限&~umask

umask指令

功能

  • 查看或者修改文件掩码

格式:umask

举例

我们创建一个文件,我们就会发现这个文件其他用户的写权限被删除了,因为其实的掩码值就是其他用户有写权限,按位取反再按位与之后,那个权限就被掩盖了,所以实际权限并不是初始权限和掩码的简单相加减


3.一个不能写不能读的文件我们可以删除吗?

但是可以的,因为删除文件时你操作的对象是目录,而不是那个文件本身的属性,在指定目录下,即使是超级用户创建了一个不可读、不可写、不可执行的文件,我们照样可以删除


4.如何和多用户共享文件呢?

首先我们要知道一个点,如果我们想要共享文件,我们只能建立在系统级的目录底下,因为如果是其他用户的家目录,我们连进都进不去。 所以你只能使用sudo短期提高命令权限,把目录创建在系统目录下。

但是里有一个问题,为了让第三方使用这个目录,那么所有人都可以在这个目录下面增删,万一被其他的第三方使用者删除了怎么办呢?

粘滞位

超级用户使用chmod +t给目标目录添加上粘滞位,指定的目录被添加粘滞位之后,只能添加文件,但不能删除

补充:其实每个系统级下都有一个叫tmp的共享文件的目录,他是自带粘滞位的

当一个目录被设置粘滞位以后

  1. 超级用户删除
  2. 目录的所有者删除(一般是超级用户)
  3. 文件的所有者删除(一般是超级用户)
相关推荐
groundhappy2 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕3 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫4 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生4 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.116 小时前
linux基础IO
linux·运维·服务器
BelongPanda8 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯8 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_777998348 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器
yunwei378 小时前
eBPF 教程:检查 exec 后真正安装的可执行镜像
linux·开源
笑锝没心没肺9 小时前
yum update 报错:GPG key retrieval failed: [Errno 14] HTTPS Error 404 - Not Found
linux·运维·服务器