> 文章列表 > 【hello Linux】Linux权限管理

【hello Linux】Linux权限管理

【hello Linux】Linux权限管理

目录

1.shell命令以及运行原理

2. Linux权限的概念

3. Linux权限管理

3.1 文件访问者的分类

3.2 文件类型

3.3 访问权限

 3.4 访问权限的表示方法

 4. 访问权限的相关设置

4.1 chmod命令:修改权限

4.2 chown命令:修改文件的拥有者

4.3 chgrp 命令:修改文件或目录的所属组

一次性修改拥有者和所属组:

4.5 umask命令:查看或修改权限掩码

5. 粘滞位

5.1 粘滞位存在的原因:

5.2 粘滞位的使用

补充:


 

Linux🌷 

在正式开始权限管理的内容之前,首先看一下shell命令以及它的运行原理 

1.shell命令以及运行原理

有这样一种说法:

广义上:Linux发行版=Linux内核+外壳程序(shell);

狭义上:Linux=Linux内核; 

那么shell到底是什么呢?

在Linux中,shell是用户与操作系统沟通的一种工具。
Linux严格意义上说的是一个操作系统,我们称之为核心(kernel“ 。
但我们一般用户,不能直接使用kernel,而是通过kernel外壳程序,
也就是所谓的shell,来与kernel沟通。
由此shell对于Linux就像,windows GUI对于windows系统一样。 

再从技术角度来说,shell最简单的定义:命令行解释器。

 shell完成的功能:

1. 传递用户的请求指令,让OS执行;

2. 对于用户的一些非法请求,shell有权拒绝,保护内核;

3. 对于用户的一些无礼请求,shell会创建子进程来进行执行具有风险的事情,不影响shell本身的正常运行。


下面开始正式的内容:

2. Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户

超级用户:可以再linux系统下做任何事情,不受限制;
普通用户:在linux下做有限的事情;
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

注意:

我们在平常设置的时候,root和普通用户的密码不能设置成一样的,否则容易造成权限界限不清楚。

如何完成上述切换呢?

命令:su [用户名]

例如,要从root用户切换到普通用户user,则使用 su user
要从普通用户 user 切换到root用户则使用 su root(root可以省略),
此时系统会提示输入root用户的密码,
注意输密码的时候是不显示密码的,输完直接回车即可。

3. Linux权限管理

3.1 文件访问者的分类

拥有者:文件和目录的所有者——u(User)

所属组:文件和目录的所有者所在的组的用户——g(Group)

其他:其他用户——o(Other)

3.2 文件类型

在Linux中,一切皆文件,上述第一列表示的是文件的类型。

我们不再以文件后缀作为区分文件类型的方式

文件都有哪些类型呢?那些又代表着什么意思呢?

d:目录
-:普通文件[文本、各种动静态库、可执行程序、源程序]
l: 软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

3.3 访问权限

对于一个文件或目录来说,有以下几种基本权限:

1. 读(r):
Read对文件而言,具有读取文件内容的权限;
对目录来说,具有浏览该目录信息的权限(例如ls命令)
2. 写(w):
Write对文件而言,具有修改文件内容的权限;
对目录来说具有删除移动目录内文件的权限
3. 执行(x):
Execute对文件而言,具有执行文件的权限;
对目录来说,具有进入目录的权限(例如cd命令)
4. “-”:
表示不具有该项权限

那怎么看呢?

 3.4 访问权限的表示方法

1. 字符表示法:

如上述图片中所示;

2. 8进制数值表示法:

r w x -:分别表示4 2 1 0;

例如:rw-:则表示6

           rwx:则表示7

 4. 访问权限的相关设置

4.1 chmod命令:修改权限

语法:chmod [参数] 权限 文件名

功能:设置文件的访问权限

说明:只有文件的拥有者和root才可以改变文件的权限

实例:

 我们也可以对其进行多操作:

 当然我们也可以用8进制形式对其赋值:

4.2 chown命令:修改文件的拥有者

格式:chown [参数] 用户名 文件名

实例:

 注意:

在进行拥有者修改的时候,一般是在root下进行的,或者使用sudo提升权限(下篇会讲如何提升)

 普通用户 给/拿文件或目录时必须征得对方的同意,而root则不受权限的限制。

由此可知:文件的拥有者和创建者并不是等价的。 

4.3 chgrp 命令:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

 chgrp命令也是在root用户在进行的,或者使用sudo提升权限

一次性修改拥有者和所属组:

4.5 umask命令:查看或修改权限掩码

查看权限掩码:

 修改权限掩码:

注意:修改之后,只在本次登录有效 

在默认情况下:

普通文件的起始权限:0666

目录文件的起始权限:0777

但实际上我们创建的文件和目录,看到的权限往往不是上面这个值,原因便是在创建文件或目录的时候还要受到umask的影响。

umask:权限掩码,代表凡是在umask中出现的,都应在起始权限中去掉。

相当于网络中的子网掩码一样

超级用户默认掩码:0022

普通用户默认掩码:0002

假设默认权限是mask,则实际创建出来的文件权限是:mask& ~umask 

举个例子:

目录:777:111 111 111

掩码:002:  000 000 010

去掉之后:  111 111 101(775)

文件:666:110 110 110

掩码:002:  000 010 010

去掉之后:  110 100 100(644)

目录权限:775

文件权限:664

至于为什么这里权限掩码用的是002,因为默认情况下,权限掩码便是002;

5. 粘滞位

5.1 粘滞位存在的原因:

如果目录本身对other具有w权限,other可以删掉目录下的任何文件;

如果目录本身对other没有w权限,other不可以删掉任何文件;

需求:

我们想让other可以在特定的目录下创建文件并写入,但是不想让任何人删掉自己的文件

这便有了粘滞位的诞生

5.2 粘滞位的使用

格式:chmod o+t dir

只能对目录进行设置,一般是限制other权限的。

对设置了粘滞位的目录,在该目录下,只能文件的拥有者可以删除,其他人不能删除。

一般文件的拥有者都是设置为root用户;

有时候,有多个人,或者系统会有很多的临时数据,所有的临时文件放在系统的/tmp下,需要把所有的权限放开,但是只想让文件的拥有者自己删除自己的文件,那么便可以设置粘滞位。

补充:

如果sudo可以使用的话,那么尽量使用sudo;

因为每切换一次用户,系统便会建一个bash(进程);

查看系统所有进程:

ps axj | grep bash

坚持打卡!😃

F2008游戏网