一、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命令,但是仍然没有权限读出目录的文档。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐