【Linux的shell原理 与 Linux权限】

本文介绍了Linux的shell命令运行原理,外壳程序的作用,Linux权限体系(包括用户、权限本质、文件和目录权限),以及如何在Linux中管理权限,如用户切换、文件类型区分、目录共享设置等。
摘要由CSDN通过智能技术生成

Linux的shell原理 与 Linux权限

前言:
前篇开始进行了解学习Linux的基础知识和基本指令,这篇介绍学习LInux的shell原理 与 Linux权限等知识点。
/知识点汇总/

1、shell命令及运行原理

1.1、shell运行原理

首先要明白一个概念:
1.大部分指令就是文件(可执行程序)
比如:开机后由bash自动打印命令行提示符。
2.用户执行某种功能之后,不是直接让操作系统执行对应的指令的,而是先交给外壳程序(称为shell外壳),因为用户不能直接与内核进行访问。

1.2、那么外壳程序是什么?

:外壳程序是介于用户和操作系统之间的软件。
其主要执行:
1.将使用者的命令翻译给内核处理。
2.同时,将核心的处理结果翻译给用户(使用者)。

1.3、为什么存在外壳程序?

追其本质原因有如下两点:
1.因为用户不能和操作系统内核直接进行操作;
2.对于非法和不合理的操作,间接进行变相的保护了操作系统.

1.4、单单只有外壳程序,对于对任务怎么办?

(比如:可理解为每个任务,都派一个实习生去完成相应任务,管理者就一直可以做自己的本职工作,且不受实习生任务失败的影响)—即创建子进程,让子进程执行,且子进程是独立于其他进程的。
所以总结性说就是:bash基本都会给我们创建一个子进程,帮助用户进行命令行解释,即命令行提示符等

1.5、shell与bash的区别

一句话概括:shell是所有外壳程序的统称;而bash等是其中一款具体的外壳程序。

2、Linux权限

2.1、什么是权限?

引用生活中常见的权限场景:比如各种软件App的VIP、门禁等
**概念:**权限就是进行阻拦的目的,形象的说就是拦住一部分人、只有另一部分人有权利行使一定的行为或动作,即有无或能与不能的问题。

2.2、权限的本质是什么?

抽象的理解为:权利的本质首先是与人有关的,其次与事物的属性相关的
即:权限 = 人(角色) + 事物的属性有关。

2.3、Linux中的用户

Linux中用户分为:
1.root:超级管理员,几乎不受权限约束
2.其它(普通用户)

2.4、如何进行用户间的切换?

1.su —普通用户切换为root用户(root的密码),只执行用户切换,不改路径
su - —普通用户切换为root用户,并且默认进入家目录,改路径
2./home查看有哪些用户
su 其它用户(普通用户) —即可切换root为普通用户
3.当我不想切换到root用户,但依然想执行需要root权限的任务时:可使用指令提权,但默认情况下是不可行的:
sudo – 指令提权 sudo 指令 file —输入当前普通用户的密码即可
**通常对于云服务器默认情况下是不可行的,所以需要进行配置“白名单”后才能使用,指令提权。
**

2.5、Linux中有三种角色

比如:-rw-rw-r-- 1 gec gec 1040 11月 4 10:04 rm_space.c
1.拥有者: 用户
2.所属组: 因为可以更细致的进行权限管理,常属于多人协作开发中
3.Other: 可以理解为拥有者和所属组都已经记录下来了,剩下的就是Other了,没必要再额外记录了(间接性确认)
小结:Linux中具体的角色需要具体的人扮演(操作/访问/交互)的

3、Linux中文件的权限

以这个详细信息为例,比如:-rw-rw-r-- 1 gec gec 1040 11月 4 10:04 rm_space.c
其中:
文件属性:-rw-rw-r–
文件描述符:1
拥有者:gec
所属组:gec
1040:文件大小单位字节
11月 4 10:04:文件件最近使用的时间
rm_space.c:文件名

3.1、文件的属性权限

一般是三种:
r — 读
w — 写
x — 可执行权限
文件属性一共10位:
第一位表示文件的类型。

比如:以‘-’开头普通文件 ,以‘d’开头目录文件等
剩余9位字符:3、3为一组,
分别对应:拥有者权限,所属组权限、Other权限

应证了:权限 = 用户角色(具体的人) + 文件权限属性

单看拥有者权限(其他同理):rwx
第一个字符r:是否具有读权限,是就是r,否就是-;
第二个字符w:是否具有写权限,是就是w,否就是-;
第三个字符x:是否具有可执行权限,是就是x,否就是-;

引出下列问题:
首先一个文件的权限谁能修改?答:文件的拥有者和root

拥有者所属组Other组
chmod u±rwxchmod g±rwxchmod o±rwx
chmod u-r filechmod g-r filechmod o-r file
chmod u-w filechmod g-w filechmod o-w file
chmod u-x filechmod g-x filechmod o-x file
chmod u+r filechmod g+r filechmod o+r file
chmod u+w filechmod g+w filechmod o+w file
chmod u+x filechmod g+x filechmod o+x file
chmod u-rw filechmod g-rw filechmod o-rw file
chmod u-wx filechmod g-wx filechmod o-wx file
chmod u-rxx filechmod g-rxx filechmod o-rxx file
chmod u+rw filechmod g+rw filechmod o+rw file
chmod u+wx filechmod g+wx filechmod o+wx file
chmod u+rxx filechmod g+rxx filechmod o+rxx file

另外还可整体修改:chmod u±rwx,g±rwx,o±rwx file
或者chmod [8进制整数]
比如:chomd 666 file.txt —> -(首位)rwx(拥有者)rwx(所属组)rwx(Other)
666理解为:0666 -> 111 111 111

3.2、对比权限的有无的具体表现

比如:---------- 1 gec gec 1040 11月 4 10:04 rm_space.c
全部权限关闭了,就无法进行打开关闭读写运行操作。

小结:
对于普通用户。自身要受到权限的约束,即便这个文件是自己的。
但是对于root用户,依然能对关闭权限的文件进行操作。
证明root是不受权限约束的。普通用户受权限约束。

另外,对于一个文件拥有者和所属组都是同一个,关闭其中一个权限后,那么谁会受限呢?

当把拥有者权限关闭,就导致所属组虽然有读写权限,却依然无法正常使用文件,而反过来,先把所属组的权限关闭,拥有者依然可以进行读写操作。
发现:对用户身份识别只识别一次;所以先被识别就以这个身份的权限受限了。
**小结:**权限存在的意义就是保护普通用户文件的一般安全性。

3.3、修改权限的第二套做法

权限 = 用户角色(具体的人) + 文件权限属性
把文件给别人直接修改拥有者是不行的,好比现实中给别人东西需要双方同意,所以想要给别人只能提权/强制性给别人。

chown user file — fail
sudo chown user file — true
(又因为sudo是需要配置“白名单”,所以建议su切换到root给即可)

那么怎么不见Other的指令呢?
因为Other是除拥有者和所属组之外的角色,不需要改,改了其它两个角色,跟着也就改了。

另外以拥有者权限为例:rwx – 有为1,否为0
第一个字符r:是否具有读权限,是就是r,否就是-;
第二个字符w:是否具有写权限,是就是w,否就是-;
第三个字符x:是否具有可执行权限,是就是x,否就是-;
比如:chomd 666 file.txt —> -(首位)rwx(拥有者)rwx(所属组)rwx(Other) 666理解为:0666 -> 110 110 110

4、文件类型

引言:
window是如何区分文件类型的呢?答:后缀名
Linux不是通过后缀区分文件类型的。

4.1、那么Linux通过什么区分文件类型呢?

以ls -l的第一个属性列,比如:
-rw-rw-r-- 1 gec gec 1040 11月 4 10:04 rm_space.c
以第一个字符区分:
‘-’表示普通文件;常见的文本文件,可执行文件,库文件等都叫普通文件
‘d’表示目录文件;
‘b’块设备文件;---- 磁盘
‘c’字符设备文件;
‘p’管道文件;
‘l’链接文件 — 相当于文件的快捷方式
等等文件

小结:Linux系统不以文件后缀区分文件类型,并不代表基于Linux中利用gcc等编译器跑程序不需要区分文件的类型。
即:Linux系统不区分,但Linux上的工具可能需要区分。

4.2、可执行程序如何理解?如何理解可执行权限呢?

答:一个程序或文件能否执行取决于,具有可执行权限并且是可执行程序;
即:能执行 = 具备可执行权限 + 是可执行文件

5、目录的权限

了解了普通文件的权限,那么对于目录的权限如何理解呢?要进入一个目录需要什么条件呢?
答:进入一个目录,必要的是x权限。

1.目录的r权限:决定了用户能否对指定目录进行查看目录内的文件信息;
2.目录的w权限:决定了用户能否对指定目录进行增、删、改文件等操作
3.目的的x权限:决定了用户能否进入指定的目录

5.1、目录的权限

那么如何理解上述的权限呢?首先文件 = 文件内容 + 属性 ,那么目录?
一切皆是文件,那么目录文件同样具备文件内容和属性
目录的内容:是该目录中的所有文件信息详细数据;
目录的属性:rwx权限

为什么我们创建目录和文件时,都有各自默认的文件属性权限呢?
默认权限为:

mkdir 目录名 —> 775
touch 文件名 —> 664

因为从逻辑上讲,目录和文件创造出来就是让人阅读等使用的; 所以目录天然就是需要进入的就自带了x权限,文件不带x。

创建的普通文件,起始的权限实际是:0666,去掉x;
创建的目录文件,起始的权限实际是:0777,保留x。

5.2、那么为什么664和775是最终默认权限

创建的普通文件,默认的权限是:0664
创建的目录文件,默认的权限是:0775

因为另外还存在一个因素,就是权限掩码
umask —0002(umask的值存在不同,由本地环境决定)
作用是创建文件的时候,要从起始权限中,过滤掉(不仅仅是减法操作)在umask中出现的权限。

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

证明:
起始权限666 --> 110 110 110
权限掩码umask --> 000 000 010  ~umask --> 111 111 101
最终权限:
110 110 110
&
111 111 101
-----------
110 110 100 --> 664
起始权限777 --> 111 111 111
权限掩码umask --> 000 000 010  ~umask --> 111 111 101
最终权限:
111 111 111
&
111 111 101
-----------
111 111 101 --> 775

为什么当我们作为普通用户时,竟然能删除别人的文件(包括root所属的文件),合理吗?
答:合理
事实是确实能够删除,那么删除一个文件/目录和目标文件有关系吗?
答:没关系!其本质和所在目录有关

5.3、目录的w权限本质

本质和目录的w权限有关:

1.目录的r权限:决定了用户能否对指定目录进行查看目录内的文件信息;
2.目录的w权限:决定了用户能否对指定目录进行增、删、改文件等操作 —删除文件的决定者
3.目的的x权限:决定了用户能否进入指定的目录
小结:为了防止不合理的篡改其它用户数据,所以各个用户之间一般条件下不支持串门。

如果我们想在Linux下,由多个用户创建一个共享文件,想来被大家共同访问该怎么办呢?
首先,根据上述知识知道,不能在我们各自的家目录下创建;
因为各自的家目录都是为个人所准备的;
那么我们想要实现的话,只能在非用户目录下实现共享。

5.4、共享目录下,不想让指定用户查看/更改,那么该指定用户能操作共享文件吗?

首先不能在任何一个用户的家目录创建共享文件;因为家目录的文件是私有权限的。所以只能在非系统的非用户目录下创建。

那么如何解决多用户共享交互文件呢?并且还可以共享给特定的用户?
提出粘滞位 chomd + t,粘滞位是来设置目录的命令。

1.超级管理员删除;
2.该目录的所有者删除;
3.该文件的所有者删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值