Linux权限理解以及shell理解

今天的内容相对比较简单理解

Linux权限理解

这里主要想谈的就是目录的权限问题,至于用户和超级用户的权限问题,这个太简单了,查一查su和sudo命令即可

接下来重点看一看文件中的三个权限:r w x 分别是读取,写入和执行

如下图我们进入一个目录中的文件

 左边的红框代表文件权限,中间的数字是连接数,我们不管这个,右边分别是拥有者user,所属组group,其实还有一个other没有显示出来,这里提出一个问题,为什么要存在group,其实就是为了保证项目安全,方便组内协作,能够使得多个组内成员写一份代码,而且还能避免其他搞破坏的。

接下来在说一下如何修改权限:

第一种方法:chmod指令:比如添加和取消拥有者的读权限:chmod u+r text.txt和
chmod u-r text.txt

所有的人都添加读权限:chmod a+r file.txt

覆盖user之前的权限,改为只有r权限:chmod u=r file.txt

第二种方法:八进制法

其实一个用户的权限有三个,用0和1分别来代表没有和有,三个0和1正好组成八进制的数,如下:

111 —表示rwx都拥有

110 —表示rw拥有,x不拥有

000 —表示rwx都不拥有

那么就可以这样改:

chmod 110 text.txt 这就表示,user和group拥有执行权,other无权限。

接下来修改拥有者和所属组

chown指令:改变拥有者,这里注意格式:chown 改变后的owner 文件或目录名

比如在普通用户权限下,sudo chown root file.txt就是把file.txt的拥有者给root

 chgrp指令:改变所属组,与上同理

接下来就是本文的重点,目录的权限到底是什么意思,

目录的读权限:就是字面意思,目录的内容是否可读,而不是目录里面文件的内容是否可读,比如目录yzy,普通用户没有读权限,然后在普通用户权限下,进行 ls yzy的操作,然后就会出现permission denied的提示,但是我们知道yzy中有一个file.txt 里面有内容hello linux,我们输入cat yzy/file.txt 就可以显示hello linux

目录的写权限:是否允许特定角色在指定目录下创建文件file(和file的内容无关),其实就是修改目录,和上面的理解是一样的。

目录的可执行权限:能否进入该目录

这里存在一个问题,如果我们取消掉可执行权限,那么读和写还能进行吗?

结论是不能,读和写的前提就是目录是能进入的!

接下里介绍一个概念:粘滞位,这个功能其实就是为了解决非root用户能够删除其他人和以root为user的目录的问题,就是说普通用户可以删别人的也可以删root的。

那么粘滞位设置就是:sudo chmod +t 目录名,这时就会发现other的x权限变为t权限,此时普通用户去删除root时,就会operation not permitted

最后再介绍一个umask的概念

当我们去touch和mkdir操作时,文件默认的权限如图,为什么是这样子的?

 这里就是umask发挥了作用,导致了默认文件权限是664,默认目录权限是775

 我们可以看到系统默认的umask是0002,第一个0可以不管,那就是002,对应八进制就是000 000 010,那么umask是怎么影响文件或者目录的默认权限的呢?

Linux中有这样一个规则:创建普通文件起始权限从666(八进制)开始,创建目录起始权限从777(八进制)开始,凡是在umask中出现的权限,就要在默认的权限中去掉

那么我们先看普通文件,666对应的二进制:110 110 110,此时umask是000 000 010,umask当中出现的权限是other的写权限拥有,那么默认的权限就需要去掉这个权限,就变成了:110 110 100,所以我们的test.c文件默认为110 110 100,即664

我们再看目录,777对应的二进制:111 111 111,此时umask是000 000 010,umask当中出现的权限是other的写权限拥有,那么默认的权限就需要去掉这个权限,就变成了:111 111 101,所以我们的test.c文件默认为111 111 101,即775

所以这里的凡是在umask中出现的权限,都不应该在最终权限中出现该怎么理解呢?是减去吗?

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

举个例子,目录起始权限111 111 111,umask是0002 也就是000 000 010 按位取反111 111 101 然后做与运算,结果为111 111 101即775

umask的数字是可以修改的 如果设置umask是0777 那么文件和目录的所有权限都会消失。

Shell理解

shell外壳概念:

当用户登录Linux系统的时候,系统会给用户创建一个进程,一般叫做bash(命令行解释器),shell的中文意思就为外壳,bash就是shell的一种。

shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。

     shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。

    不论何时你键入一个命令,它都被Linux shell所解释。

至此shell的作用其实也体现出来了,首先是交互作用,第二个就是保护操作系统。


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何以过春秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值