shell命令以及运行原理、Linux权限、粘滞位

本文介绍了Linux的核心概念,包括shell命令的运行原理,用户类型(超级用户和普通用户),以及权限管理。重点讲解了su命令的使用,文件的访问者分类,以及文件的读、写、执行权限。此外,还讨论了chmod、chown、chgrp等文件权限设置命令,umask指令,以及粘滞位在共享目录中的作用,强调了权限设置在Linux系统中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天我带来Linux重点知识:shell命令以及运行原理、Linux权限、粘滞位的知识点。





shell命令以及运行原理

Linux严格意义上说得是一个操作系统,我们称之为"核心(Kernel)",但一般用户,不能直接使用Kernel。而是通过Kernel的"外壳"程序,也就是所谓的shell,来与Kernel沟通。

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

将使用者的命令翻译给核心(Kernel)处理
同时,将核心的处理结果翻译给使用者

对比 Windows GUI,我们的操作Windows也不是直接操作Windows内核,而是通过图片接口,点击,从而完成我们的操作。

shell对于Linux,有相同的作用,主要是对我们的指令进行解析,然后将指令给到Linux内核。在通过内核运行出结果后,通过shell解析给用户。

下面是一个简单的示意图
在这里插入图片描述
shell存在的意义:
a.进行命令行的传递和返回结果
b.保护操作系统(遇到具有破坏操作系统的指令进行拦截)
c.执行命令的时候,创建子进程来进行执行(如bash就是centos 7下使用的一种shell,bash是一个进程,执行命令的时候,bash创建子进程,由子进程来执行命令)



Linux权限的概念

Linux下的用户

Linux下有两种用户:超级用户(root)、普通用户

超级用户:可以在Linux系统下做任何事情,不受限制(牢记一句话,权限只是对于普通用户而言)
普通用户:在Linux下做有限的事情

那么我们怎么快速分别现在是超级用户还是普通用户呢?可以通过指令输入提示行的最后一个字符来分辨。

超级用户命令提示符为"#"
普通用户命令提示符为"$"

在这里插入图片描述

即然懂得了超级用户和普通用户,我们就要学会如何在两种用户之间来回切换。这就要用的一个新的指令:su指令

su命令

语法:su 用户名
例如:要从root用户切换到普通用户的话,则使用su 普通用户(如,我的Linux机器里面有一个普通用户zrb,我要将root用户切换为普通用户,则使用su zrb)
要从普通用户切换到root用户,则使用su root(root可以省略),此时系统会提示输入root用户的密码

下面是su指令的三个细节:

只使用su切换用户的时候,所处的目录位置没有发生变化。
在这里插入图片描述
使用su - ,即为重新登录,那么将处于家目录下。(su - 是切换为超级用户)
在这里插入图片描述
超级用户可以任意切换其他普通用户,不需要密码,还是那句话,权限是对于普通用户而言的。

Linux权限管理

文件访问者的分类

文件和文件目录所在者:U - User
文件和文件目录所在者 所在组的用户:G - Group
其他用户:O - Others

Other由不是文件的拥有者和文件的所属者来判断。

文件的类型和访问权限

在前面的指令讲解中,我已经说过了ls指令可以查看某个目录下的目录和文件,那么现在我对查询的结果进行分析。
在这里插入图片描述
如上,在上次的讲解中,我只是提到了后面的颜色去分别目录和文件等其他信息,方框里并没有讲解到。

在讲解之前,我们需要先了解几个概念。

1.文件类型(每一种文件类型由一个字母代替),Linux操作系统下,不用文件后缀区分文件类型,而是使用文件属性中第一列的第一个字符来区分文件类型。

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

2.基本权限(三大基本权限:读、写、执行)

读(r):Read对文件而言,具有读取文件内容的权限;对目录而言,具有浏览目录信息的权限
写(w):Write对文件而言,具有修改文件内容的权限;对目录而言,具有删除、移动目录里文件的权限。
执行(x):execute对于文件而言,具有执行文件的权限,对目录而言,具有进入目录的权限。

有无权限有什么区别
在这里插入图片描述
注意:root作为other,即使other对于某个文件没有权限,root依然可以做读、写、执行等操作。

接下来,我来正式讲解方框里的内容
在这里插入图片描述

如上面的图片,文件名(目录名)为ctrlProcess

1.第一个字符是d,表示文件类型是文件夹,也就是目录
2.后面三个为一组,第一组表示拥有者的权限;第二种表示所属者的权限;第三组表示other权限,至于表示的是什么意思,后面再来讲解。
3.数字2表达的意思涉及到其他内容,以后再来
4.其他内容依次排过去,分别表示的意思是文件拥有者、文件所属组、字节大小、创建或者修改的时间、文件名等内容。

注意的是:Linux操作系统不看文件后缀,在创建文件时,我们也可以加入后缀便于自己区分文件类型,当像gcc(Linux下的c语言编辑器)还是看后缀的。

文件权限值的表达方法

字符表示方法

Linux表示说明Linux表示说明
r- -仅读-w-仅写
- -x仅执行rw-可读可写
r-x可读可执行-wx可写可执行
rwx可读可写可执行- - -无权限

8进制数值表示方法

权限符号八进制二进制
r- -4100
-w-2010
- -x1001
rw-6110
r-x5101
-wx3011
rwx7111
- - -0000

所以,在上面图片中,拥有者和所属组的权限是可读可写可执行;other的权限是可执行。

Linux关于权限的知识点补充

1.Linux创建用户

Linux有一个root用户,我们可以通过指令创建许多的普通用户,具体指令操作如下:

cd /home //先加入家目录
adduser zhangsan //添加普通用户,名字为zhangsan
passwd zhangsan //设置密码,注意再来的密码不会回显,也就是输入不会显示出来

接下来,我们就可以使用指令登录,如下:

ssh zhangsan@(云服务器公网地址)

则可以登录张三的普通用户了。

那么怎么删除用户呢?指令如下:

userdel 用户名

如果要将该用户留在系统上的文件也删除掉的话,可以使用指令

userdel -r 用户名

注意:当我们要创建用户时,普通用户是没有权限去创建新用户的,这是我们只有切换为root用户,或者sudo提权才可以,
在这里插入图片描述
这里我切换为root用户,演示一遍
在这里插入图片描述

2.sudo指令

在Linux的使用中,权限的影子无处不在,如:在上面ctrlProcess目录中,lisi用户属于other,只有执行的权限,没有写和读的权限,那么我们要查看ctrlProcess目录,其中一种方法就是切换为root用户。
在大部分情况下,切换到root用户可以解决,但是当我们要在普通用户中更新某一个工具时,难道要切换成root用户?切换到root用户去下载,不就下载到了root用户吗,我只要更新普通用户的工具应该怎么做呢?

这时,我们就可以用到sudo指令了。

sudo 命令行
可以让该条命令执行过程中具有超级用户的权限,输入的密码是当前普通用户的密码。当输入该指令后,下次执行该功能加sudo不用输入密码,一般持续10分钟。

演示如下:
在这里插入图片描述

解决普通用户无法sudo的情况,原因是未被加到可信任的名单
方法如下:

以root进行登录
vim /etc/sudoers
找到 (Allow root to run any commands annywhere),粘贴这一行,将新一行改为普通用户。

在这里插入图片描述
跟我的普通用户zrb那样操作即可。

注意的是,在sudo提权指令中,sudo指令输入的是普通用户的密码;su指令输入的是超级用户的密码。

文件访问权限的相关设置方法

1.chmod指令

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:

R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

chmod ① 用户表示符+/-=权限字符

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
②三位8进制数字
在上面rwx的权限讲解中,就有对权限采用八进制表示的,这里我们也可以采用八进制来进行赋予权限。
在这里插入图片描述

2.chown指令

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

常用选项:
-R : 处理指定目录以及其子目录下的所有文件

在这里插入图片描述
使用chown指令一次性修改文件拥有者和所属组
在这里插入图片描述

3.chgrp指令

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

在这里插入图片描述

4.umask指令

功能:查看或修改文件掩码

起始权限:系统设定的。

普通文件起始权限:666(rw- rw- rw-)
目录的起始权限:777(rwx rwx rwx)

最终权限:起始权限换算而来

系统为了更好的控制文件权限,系统会有默认的权限掩码的概念!

umask指令可以查权限掩码
在这里插入图片描述
格式:umask 权限值 (设置新的权限掩码)
如:umask 777
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。

超级用户默认掩码值为0022,普通用户默认为0002。

最终权限 = 起始权限 & (~umask)

权限掩码的规则就是在起始权限中,去掉在umask中出现的权限,不能影响其他任何权限。也就是在权限掩码中出现的权限,就不能在最终权限中出现。

下面是求普通文件和目录的最终权限的过程:
在这里插入图片描述

5.file指令

功能说明:辨识文件类型。
语法:file [选项] 文件或目录…

常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件

在这里插入图片描述

6.使用 sudo分配权限

(1). 修改/etc/sudoers 文件

chmod 740 /etc/sudoers
vi /etc/sudoers

在这里插入图片描述

第一条指令剥夺去了other的权限,保证了安全性,只有root用户(该文件的拥有者和所属组都是root)才可以修改/etc/sudoers的内容。
第二条指令中的vi和vim都可以打开文件,相当于打开/etc/sudoers文件去修改信任内容

格式:接收权限的用户登录的主机 = (执行命令的用户)命令
在这里插入图片描述
(2). 使用sudo调用授权的命令
命令:sudo
常用选项:-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)

格式:sudo -u 用户名 命令

实例:sudo -u root /usr/sbin/useradd u2
使用root身份去创建新用户u2。

粘滞位

背景:在使用Linux的时候,未来可能有一些共享目录,被所有的普通用户共享,用来保存普通用户产生的临时数据。共享目录通常是root提供的。

粘滞位是一个比较难以理解的内容,如果没有讲解对应的使用环境,单单只是概念的引出,那是十分难以理解的,现在我先来模拟一个场景。

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

由于是共享目录,那么不管是该共享目录的拥有者、所属组、other都要有rwx权限,即分别要保证可以在该共享目录中

读(r):进行浏览目录信息
写(w):具有删除、移动目录里文件
执行(x):具有进入目录的权限。

在这里插入图片描述
在这里插入图片描述
注意root1对应other的权限只有读。

在这里插入图片描述
这里有一个问题:为什么zrb作为root1文件的other,只有读的权限,为什么还是可以删除root1呢?

这里需要注意的是,某个用户只要具有对某个目录的写权限,那么就可以对目录里的任何文件进行删除和移动。

在前面设定下,就是要创建一个共享目录,所以该目录对于所有用户都有写(r)的权限,那么就导致了某个用户在该目录下可以删除其他用户的文件。

总结:普通用户能否在某个目录下,删除其他用户的文件,只要看是否具有该目录的写权限即可,不需要看有没有对于该要被删除的文件有没有什么权限。

那么,如何解决呢?关闭该目录对所有用户的写(r)权限,那么不就违背了共享目录,哪个用户都可以在里面创建自己的文件,删除自己的文件吗。

此时就出现了粘滞位的概念,粘滞位的作用:让大家在使用共享目录的情况下,不能随便删除其他人的文件。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:粘滞位只能给目录添加。

指令:
chmod +t 目录名 //给目录加上粘滞位
chmod -t 目录名 //给目录删除粘滞位

当一个用户被设置成"粘滞位",则该目录下的文件只能由
1.超级管理者删除
2.该目录的所有者删除
3.该文件的所有者删除

权限的总结

目录的可执行权限是表示你可否在目录下执行命令。

如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限即使可以执行ls命令,但仍然没有权限读出目录下的文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值