Linux Shell和权限-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
Shell命令及运行原理
Linux的操作系统狭义上是指Linux的内核广义上是指Linux内核+Linux外壳和对应的配套程序其中Linux外壳就是Shell。
Shell是包裹在Linux内核外部的一层软件层帮用户进行命令行解释。
如下我输入的指令都是通过shell来与Linux内核交流如果收到命令便会创建子进程去执行命令不管成功与否都不会危及到整个shell。shell父进程会继续进行命令行获取。
- 对比windows GUI我们操作windows 不是直接操作windows内核而是通过图形接口点击从而完成我们的 操作比如进入D盘的操作我们通常是双击D盘盘符.或者运行起来一个应用程序。
- shell 对于Linux有相同的作用主要是对我们的指令进行解析解析指令给Linux内核。反馈结果在通过内核运行出结果通过shell解析给用户。
帮助理解如果说你是一个闷骚且害羞的程序员那shell就像媒婆操作系统内核就是你们村头漂亮的且有让你心动的MM小花。你看上了小花但是有不好意思直接表白那就让你你家人找媒婆帮你提亲所有的事情你都直接跟媒婆沟通由媒婆转达你的意思给小花而我们找到媒婆姓王所以我们叫它王婆它对应我们常使用的bash。
权限
1.文件基本属性
Linux下有两种用户超级用户root、普通用户。
可以通过指令 adduser [用户名] 来添加用户例如添加一个叫做 “kky” 的用户
adduser kky
在Linux中文件的访问者分为
- 文件和文件目录的所有者u---User
- 文件和文件目录的所有者所在的组的用户g---Group
- 其它用户o---Others
文件类型有
- d文件夹
- -普通文件
- l软链接类似Windows的快捷方式
- b块设备文件例如硬盘、光驱等
- p管道文件
- c字符设备文件例如屏幕等串口设备
- s套接口文件
注意Linux系统不对文件后缀不区分但是Linux中的软件可能会对文件后缀作区分。
基本权限
- 读r/4Read对文件而言具有读取文件内容的权限对目录来说具有浏览该目录信息的权限
- 写w/2Write对文件而言具有修改文件内容的权限对目录来说具有删除移动目录内文件的权限
- 执行x/1execute对文件而言具有执行文件的权限对目录来说具有进入目录的权限
- “—”表示不具有该项权限
2.文件权限值的表示方法
如何看文件的这些信息呢
通过ls -l可以查看文件的信息
其中最前面的 “-rw-rw-r--” 中的第一个“-”代表着文件的类型通过上面的表可以知道该文件为普通文件。 后面的“rw-rw-r--”每三个一组第一组为拥有者权限第二组为所属组权限第三组为other权限
其中拥有者和other我们还挺好理解的这里的所属组是什么意思呢
在我们Linux系统任何文件都要隶属于一个所属组这个所属组是一批用户的集合当然所属组也可以只有一个用户所属组的名字以组长也就是创建文件的那个人的名字命名。
为什么要有所属组呢
这是为了让拥有者信任的用户能够对该文件进行操作对于other用户则可以通过权限来限制他们的操作。
从上图我们也没有看到谁是other只显示了拥有者和所属组因为除了拥有者所属组其他的统称之为other。
文件有rwxr read读 w write写 x execute 执行权限
如下文件的权限就是对拥有者有读和写权限对所属组有读和写权限对other有读权限。
3.文件访问权限的相关设置方法
3.(1)chmod + 组名修改
功能设置文件的访问权限
格式chmod [参数] 权限 文件名
如下删除了文件main.c的u拥有者的读权限
这里u也可以换成g 所属组或者 oother - 可以换成+r也可以换成w或者x。如下
a代表all对所有组都做处理
还有一个例子我们删除了拥有者的读写权限发现文件不让我们读写了但是明明我们还是所属组的成员这为什么也不让我们读写了呢
因为用户在匹配身份的时候只能匹配一次并且是最贴近的身份你是user你就只能匹配到user这里因此就算你也是所属组里的也不能通过所属组权限去访问文件
超级管理员不受权限约束
3.(2)chmod + 二进制修改
对于下面这个文件的权限 “rw-rw-r--”我们可以将他拆分为“rw-”、“rw-”、“r--”这分别代表三个组这是我们之前讲过的内容现在我们可以将这三个组转化为二进制数。
“rw-”代表110 也就是6
“rw-”代表110 也就是6
“r--”代表100 也就是4
懂得了上面这个原理我们便可以通过二进制来修改文件的权限了
3.(3)chown
功能修改文件的拥有者
格式chown [参数] 用户名 文件名
chown要么使用root账户处理要么使用sudo提权才可以更改拥有者
3.(4)chgrp
功能修改文件或目录的所属组
格式chgrp [参数] 用户组名 文件名
一样需要root权利
3.(5)umask
功能查看或修改文件掩码
新建文件默认权限=0666第一个0代表八进制
新建目录默认权限=0777 第一个0代表八进制
这里提出了文件掩码的概念什么是文件掩码呢 看下图
新建了一个newfile他的权限为“rw-rw-r--” 代表0664。从上面可知新建文件的默认权限为0666为什么变成了0664
我们通过umask指令来查看Linux系统的文件掩码查到是0002
666为110 110 110
664为110 110 100
002为000 000 010
我们发现文件掩码所出现的位置被置为了0这里看起来有点像减法。
其实他并不是减法因为权限的二进制的目的就是想让某个组拥有或失去权限如果是减法就乱了套了。
结论是 最终权限 = 起始权限 去掉 权限掩码中出现的权限 去掉是指清零该比特位
或者说 最终权限 = 起始权限 & (~umask)
如下我们通过设置umask进行了验证大家还可以多验证一下看看结论是不是这样。要注意后面需要改回来一般是0002不然后面新建文件会不可访问或修改比较麻烦
4.目录权限
我们通过mkdir创建了一个目录目录也有他自己的权限。
那么这些权限分别代表什么呢
- 是否允许一个指定用户进入一个目录需要x权限
- 是否允许一个指定用户查看目录的文件列表需要r权限
- 是否允许一个指定用户在当前目录下新建文件或者删除文件需要w权限
删除当前目录下的文件跟w权限有关但是如果有一个共享的目录大家都可以在这里面读文件写文件但与此同时大家也可以删除文件为了防止群众里面有坏人删除文件就必须把目录的w权限关闭这样一来确实没办法删除了但是也没办法写入了这个可怎么办
Linux有一种粘滞位目录该目录下的文件只能由以下3种人员删除
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
这样一来就可以防止其他人员删除文件了。
使用chomd +t [文件名] 就可以操作了这里不需要写o+t因为粘滞位默认就是给的other