【Linux】--Shell的原理Linux的权限
一、Shell
Linux是一款操作系统,但是我们用户是无法直接接触到其核心的。
广义的操作系统分为:操作系统内核,外壳程序命令行,必要的应用程序。
我们的Shell就属于外壳程序命令行这种,然后外壳程序命令行还有图形化界面等。
为啥我们用户无法直接操作Linux的核心呢?
就拿我们使用windows操作系统为例,我们使用其是通过一个图形化界面来操作的,然后图形化界面再去操作底层。
如下图所示:

二、Linux权限
Linux中权限一般分为两种:
首先是最高权限的:超级用户(root)
其可以在Linux执行任何操作,不受限制,超级用户的命令提示符是"#"

另外一个就是普通用户:在Linux下做有限的事情,普通用户的提示符为"$"
![]()
然后用户之间切换使用su命令。
要注意的是从root用户切换到普通用户是不需要输入密码的,从普通用户切换到root用户就需要输入密码。

从普通用户切换到root用户,使用su命令的时候,是可以省略后面的root的。
三、Linux的权限管理
前面我们提到了Linux下皆为文件,那么是所有的文件都可以被操作么?
我们的文件也是有属性的,文件的权限分为以下几种:
所有者:文件和文件目录的所有者,有对文件的最高权限
所属组:文件和文件目录的所有者所在的组的用户
other:其它用户

上面是Linux下显示当前目录下的文件所展示的信息,我们拿其中一个来讲解:

下面我们来一一分析
1、文件类型
-开头的属于文件
d开头的属于目录
2、权限的分布
我们看到了一个文件,其不止是文件名字,还带了很多的属性。
除了文件开头的文件类型,后面9个字母每三个为一组,其分别代表该文件的权限:
所有者、所属组、other权限。
那么这三个对象是咋样的呢?
所有者:文件的创建者
所属组:可以理解为一个工作小组或者目录,多个人在一个组中、
other:除了上面这两个之外的
对于所属组,又是如何进行管理的呢?
首先,我们得先知道目标文件是属于那个组的:
1、查看文件的所属组
ls -l 目标文件
![]()
可以看到我们上面的文件的所属组是属于root。
2、添加或修改文件的所属组
语法如下:
sudo usermod -选项
-a:表示给文件追加所属组,且不会覆盖原来的所属组
-G:指定要加入的所属组
3、文件权限的设置
1、chmod指令
这个指令是用于文件的权限进行修改的。
其使用语法如下:
chmod [参数] 权限 [文件名]
常用选项:-R :递归修改目录文件的权限
注意:只有文件的拥有者和root用户才可修改文件的权限
chmod的格式:
用户表示符+/-=权限字符
+:向权限范围增加权限代号的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
然后就是用户符号:
u:拥有者
g:拥有者同组用
o:其他用户
a:所有用户
2、chown指令
功能:修改文件的拥有者
选项:-R递归修改文件的权限
格式:chown [参数] 用户名 文件名
3、chgrp指令
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项: -R 递归修改文件或目录的所属组
4、umask指令
作用:修改查看文件的掩码
那么文件的掩码是啥:
文件的权限掩码就是当文件目录出生的时候 ,根据掩码屏蔽掉该文件/目录的部分权限,即完成一个文件/目录的初始化
新建文件夹默认权限=0666
新建目录默认权限=0777
不过实际上所创建的文件或目录,看到的权限往往不是上面的这些值。这是因为创建文件或者目录的时候还会收到umask的影响。假设权限是mask,那么实际上创建出来的文件权限是:mask&~umask。
格式:umask权限值
说明:将现有的存取的权限减去权限掩码后,那么即可产生建立文件的预设权限。超级用户默认掩码值为0022,普通用户默认为0002

file指令
功能:辨识文件类型
语法:file [选项] 文件或目录
常用选项
-c:详细显示指令的执行过程,便于排错或分析程序执行的情形
-z:尝试去解读压缩文件的内容
然后就是对于目录的权限的总结:
目录的可执行权限是表示你可否在目录下执行命令。
如果目录没有-x的权限,则无法对目录执行任何命令,甚至无法cd到这个目录中,即使目录仍然有-r读的权限。
如果目录具有-x的权限,但是没有-r权限,则用户可以执行命令,可以进入cd进入目录,但是没有目录度的权限。
所以在目录下,即使执行ls命令,但是仍然没有权限读出目录的文档。
更多推荐


所有评论(0)