目录
一、shell命令以及运行原理
Linux 严格意义上说的是一个操作系统,我们称之为 “ 核心( kernel ) “ ,但我们一般用户,不能直接使用 kernel。 而是通过kernel 的 “ 外壳 ” 程序,也就是所谓的 shell ,来与 kernel 沟通。如何理解?为什么不能直接使用 kernel ?从技术角度, Shell 的最简单定义:命令行解释器( command Interpreter )主要包含:📈: 将使用者的命令翻译给核心(kernel)处理。📉: 同时,将核心的处理结果翻译给使用者。对比 windows GUI ,我们操作 windows 不是直接操作 windows 内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D 盘的操作,我们通常是双击 D 盘盘符 或者双击运行起来一个应用程序)。shell 对于 Linux ,有相同的作用,主要是对我们的指令进行解析,解析指令给 Linux 内核。反馈结果在通过内核运行出结果,通过shell 解析给用户。看完上面的一系列定义我想大家对shell的理解还有点迷迷糊糊的🤔shell有什么用?shell外壳的存在有什么意义??下面我们举个例子来深入理解一下:📝:从前有个村子,村子里面有一个优秀的程序员叫做张三,张三除了长的不帅其他各方面都非常的优秀。他的父亲叫张老三,是村里的村长。张三家隔壁是如花家,如花长的十分漂亮😍,如花家的隔壁是李四家,李四也长的非常的帅气😋,人物已经设定好,故事要开始辣🤗张老三:儿子啊,你看你整天敲代码,连个女朋友都没有,现在也老大不小了,该找个女朋友辣😤张三: 哎呀,爸啊,不是你儿子不找啊,是嫩儿子我碰见女孩子都脸红,不咋会表达啊🙄张老三: 呀,儿子你甭管了,你老爸我已经联系好村口的媒婆王婆了,让嫩王婆给你介绍,咋样啊😤
张三:心里嘀咕着:那怪美嘞,省嘞让俺说了。呀爸那可是中,爸啊我看隔壁如花可漂亮,你能不能隔王婆说说给如花介绍给我啊😍张老三:中蛮,只要儿子喜欢,那爸肯定同意。⭐重点来辣!!!!!!!!!问:王婆存在的意义是什么?? | shell外壳存在的意义是什么??答:降低找女朋友的成本。 | 降低操作os的成本。张老三去找王婆,故事继续。。。。。张老三: 王婆啊,你看我家张三也老大不小了,这小子喜欢我们隔壁家的如花姑娘,他比较害羞,也不善于表达,你去给他说说媒呗🤦🏽♂️王婆一口答应了张老三,跑到了如花家🤗王婆: 妮子啊,婆婆我今天过来是有事隔你说,今个嫩隔壁的张老三给我说他娃子张三看上你了,叫我过来说媒嘞!!!🤩人家张三现在可是大厂程序员,敲代码6的很,都是长嘞不是太排场,这你也知道,但是工资多啊,等他g了到时候财产咱俩73分,咋样??考虑考虑???😍😍😎如花: 哎呀,王婆!!!!你给俺想成了啥人了安啊😅😅,俺会贪图他那些钱??我说这小子小的时候为啥总跟在我屁股后边原来是喜欢我,不都是会敲个代码蛮,装啥装?🙄你知道俺隔壁李四不知道??人家也是敲代码嘞,关键人家还在腾讯敲代码,张三算啥大厂??有腾讯大??哎呀,就算不说这,那人家李四不比他张三帅好几倍?回去告诉张三:姐姐我名花有主了!!男朋友腾讯的!!!!想得到我??让那小子别想了☺。王婆屁颠屁颠又去了张老三家🤗。。。。王婆: 村长啊,真不好意思,人家如花都有男朋友了,不中我给咱家三儿说个隔壁村的女孩子??🤔张老三: 咋??看不上咱家这条件??好歹我也是个村长。名花有主咋啦?分了和咱家三儿结亲家!!王婆: 呀,这东西不能强硬来啊,这多不美,人家既然都名花有主了,不中都让咱家三儿放弃吧🤐我去隔壁村给孩子找个更好的姑娘,肯定比如花排场!!!⭐重点来辣!!!!!!!!!问:这一次王婆存在的意义是什么? | shell外壳存在的意义是什么??答:保护如花。 | 保护os系统张三在角落里听到了父亲和王婆的对话,留下了悲伤的泪水🥺王婆看到了张三留下了伤心的泪水,就凑到张三的耳边给张三说:三儿,甭伤心。人家如花说啊人家男朋友腾讯的!!!你俩都是敲代码的,你加把劲也进入腾讯到时候当他领导pua死他!!!加把劲,婆相信你能行!!!!如果实在找不到对象了那就new一个!!!哈哈哈,说罢王婆仰天大笑离开了。张三悟了,他终于悟了那段话!!!: 心中无女人 敲码自然神
二、linux权限
1.linux权限的概念
Linux 下有两种用户:超级用户( root )、普通用户。超级用户: 可以在 linux 系统下做任何事情,不受限制。普通用户: 在 linux 下做有限的事情。超级用户的命令提示符是 “ # ” ,普通用户的命令提示符是 “ $ ”。命令 : su [ 用户名 ]功能 :切换用户。例如,要从 root 用户切换到普通用户 user ,则使用 su user 。 要从普通用户 user 切换到 root 用户则使用 su root( root 可以省略),此时系统会提示输入 root 用户的口令。⭐:在linux用户中,普通用户的权限是受管控的,而root用户在linux中是超级管理员,相对普通用户权限更大。root和Linux下任何一个用户都要设置密码,记住!! 不要把root的密码和普通用户的密码设置成一样!!!示例:🚩:添加普通用户— adduser🚩:从root切换到普通用户—su user
🚩:从普通用户切换到root用户—su root或者su
🚩:删除普通用户(必须为root用户才能删除)—userdel -r user
2.linux权限管理
前言
什么是权限?
1、约束人的(对人进行分类)
2、需要对应的事物具有特定的属性。
所以我们得到结论:权限=人+事物属性。
⭐:权限的概念以及操作都是围绕着人和事物属性展开。
而权限拓展到Linux中无非就是对文件的权限:
1、这个文件谁能“访问”,谁不能“访问”。
2、对应的文件应该具备的某种属性。
a)、文件访问者的分类(人)
在Linux系统中人分为三类:
1、文件的拥有者: owner2、文件的所属组: grouper3、文件的其它用户: other问:为什么linux中会有所属组?假如张三和李四在同一台服务器上进行开发,张三在A组,李四在B组,张三创建了一个文件,这个文件的拥有者是张三,所属组是A组,那么A组能看B组不能看。
b)、文件类型和访问权限(事物属性)
⭐:在linux系统中并不是以文件名后缀来区分文件类型,而是通过ll显示的第一个字符来区分文件类型。
a)文件类型:
实例:
问:既然Linux中不以后缀区分文件,那用gcc编译文件为啥还要考虑后缀??
linux系统不以文件后缀区分文件,但gcc是一个下载在Linux系统中的编译器软件。gcc!=linux操作系统。
b)基本权限:
Linux系统中,文件的权限属性分为三类:r(读)、w(写)、x(可执行)
- 读(r): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
- 写(w): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
- 可执行(x): execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
- “—”表示不具有该项权限。
我们如何描述hello.txt文件的权限呢?:
普通文件hello.txt的拥有者具有rw(可读可写)权限,没有x可执行权限。所属组只具有r(可读)权限,没有wx(可写可执行)权限,其他用户只具有r(可读)权限,没有wx(可写可指向)权限。
c)、文件权限值的表示方法
a)字符表示方法
linux表示 说明 r-- 仅可读 -w- 仅可写 --x 仅可执行 rw- 可读、可写 -wx 可写、可执行 r-x 可读、可执行 rwx 可读可写可执行 --- 无任何权限 b)8进制数值表示方法
字符表示法中的每一个字符所在位置所表示的结果只有两种可能,要么为真,要么为假,而真可用1表示,假可用0表示,因此我们可以将这三个字符换为三个二进制位,进而换为一个八进制位进行表示。如下:
权限符号 二进制 八进制 r-- 1 0 0 4 -w- 0 1 0 2 --x 0 0 1 1 rw- 1 1 0 6 -wx 1 0 1 5 r-x 0 1 1 3 rwx 1 1 1 7 --- 0 0 0 0
d)、文件访问权限的相关设置方法
chomd
功能: 设置文件的访问权限
格式: chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限。
说明:只有文件的拥有者和root才可以改变文件的权限。
法一: 用户表示符+/-=权限字符
- 范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
- 用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
实例:
🚩:减去拥有者的读权限:chmod u-r test.txt
🚩:减去所属组和其它用户的读权限:chmod g-r,o-r test.txt
🚩:加上拥有者所属组其他用户的所有权限:chmod u+rwx,g+rwx,o+rwx test.txt
⭐:root不受任何权限的约束,可以为所欲为。 现在我们将普通用户改为root。
此时test.txt的拥有者和所属组为普通用户,按照权限设置root不具备任何权限,但实际root不受任何约束。
所以这里的其他用户指的是除了root以外的其他用户。
法二:使用三位八进制数字
🚩:删除关于test.txt的所有权限。
🚩:加上所有权限。
🚩:更改指定权限。
🚩:使用chmod a= 进行整体的修改。
修改文件的拥有者
chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
实例:
以root身份可以直接强制更改权限,如果我们用普通用户的话只有经过别人的同意才可以将文件交给别的用户,用普通用户我们还可以使用sudo提升权限,相当于以root的身份运行该程序。
使用chown还可以连续修改拥有者和所属组:
修改文件的所属组
chgrp
功能:修改文件或者目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或者目录的所属组
实例:
以root用户直接更改:
⭐:如果想要以普通身份更改所属组,需要sudo提高权限。
深入了解文件权限掩码
在了解文件权限掩码之前我们先要知道rwx对于文件的含义:
- r可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容。
- w可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件。
- x可执行权限: 如果目录没有可执行权限, 则无法cd到目录中。
umask
功能:查看或者修改文件掩码
格式:umask 权限值
说明:凡是在权限掩码中出现的权限都不应该在最终权限出现。超级用户默认掩码值为0022,普通用户默认为0002。而在实际中我们只关注权限掩码的后三位。
⭐:新建文件夹默认权限=0666,新建目录默认权限=0777。
在我们新创建的文件和目录,看到的权限往往不是默认值,原因就是当我们创建文件或者目录的时候还会收到umask的影响。假设默认权限为mask,则实际创建出来的文件的权限为:mask & ~umask。
这里我们用的是root用户,最终创建的目录的权限值为755,最终创建的普通文件的权限值为644(不同系统可能会有所差异)
⭐:最终权限 = 默认权限 & (~umask)
umask的值可以进行更改,如下我们可以将umask的值改为003
粘滞位
在linux中,存在一些目录其拥有者和所属组都为root,其他人允许以other的身份在该目录下进行文件的创建,读取,删除,修改。如下的一个名为tmp的目录:
该目录拥有者和所属组均属于root,other其他用户的权限都是没有限制的,也就是说任何用户都可以在里面读写文件。
示例:
首先我们用root用户在普通用户其中一个目录下创建目录all,并更改其权限为777.
然后用普通用户abc和efd都进入all目录,分别创建好各自的文件。
现在test.c文件的拥有者属于efd用户,而abc用户就是test.c文件的其他人,可是现在abc用户竟然可以删掉属于efd用户的test.c文件。
只要all目录下的可写w权限是允许的,那么就可以随意删除该目录下的文件,不论该文件是不是属于你自己的用户,这么看显然是不合理,为了解决这个问题,Linux推出了粘滞位。
如果我们想把某一文件放入到共享目录下面,但是却并不想被别人给删除掉,那么此时我们就需要给共享的目录加上粘滞位,首先我们切回root用户,执行chmod+t all命令。
当共享目录all加上粘滞位后,此时other用户的权限由rwx变成了rwt。此时就可以防止在共享目录下的文件被别人删除了:
综上:当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
- 超级管理员root删除
- 该目录的所有者删除
- 该文件的所有者删除
file指令
功能:辨识文件类型。
格式:file [选项] 文件或目录...
常用选项:
- -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -z 尝试去解读压缩文件的内容
实例: