Liunx权限管理
文章目录
一、Liunx用户
1.用户的分类
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$
- 超级用户只能有一个,普通用户可以有多个
2.用户的切换
现在我们意识到了用户的区别,那么如何进行用户的切换呢,这就涉及到了一条指令,su
命令: su [用户名]
功能: 切换用户。
演示:
例如,要从root用户切换到普通用户user,则使用
su user
。 要从普通用户user切换到root用户则使用su root
(root可以省略),此时系统会提示输入root用户的口令。
whoami
可以显示当前用户
切换用户时会提示输入要切换用户的密码,与Windows下不同的是,liunx下输入密码什么都不会显示(Windows下会显示*)
3.用户的创建与删除
3.1 用户的创建
这里涉及到一个指令,adduser
,比如说我想创建一个名为syz的用户,就可以使用命令adduser syz
,当然,必须再root的情况下创建,或使用sudo对单条命令提权(如果sudo无法使用,可以查看3.3 sudo命令无法使用的解决办法)
3.2 用户的删除
删除用户,只需使用一个简单的命令userdel 用户名
即可。如果需要将它留在系统上的文件也删除掉,使用userdel -r 用户名
即可。
3.3 sudo命令无法使用的解决办法
sudo无法使用是因为当前用户没有相应的权限,解决办法如下。
使用指令
su
,切换为root用户,然后打开/etc/sudoers下的文件,即执行指令nano /etc/sudoers
,假设用户名为syz,将syz ALL=(ALL) NOPASSWD: ALL
或syz ALL=(ALL) ALL
(放入前者以后使用sudo命令无需输入密码,放入后者以后使用速冻命令需要输入当前用户的密码)放入文本的指定行,如下图所示,此处的内容在文本的最后十几行的样子,实在找不到放到最后一行也可以。
二、权限的概念
这里可以举个例子,比如说,我想在不充vip情况下在爱奇艺上看vip专属的影片,这是不可以的,因为我没有这方面的权限。那么我不看影片,我想在爱奇艺上写代码,这可以吗?当然也是不行的。这次倒不是因为我没有权限,而是爱奇艺这个“访问对象”本身就没有这种属性。第一次是人的问题,第二次是事物属性的问题。可以把权限简单理解成一件事情是否允许被“谁”操作(在例子中事情就对应这看vip影片和写代码)。而权限由两部分构成,一个是人,一个是事物属性(例子中就对应没有充vip的“我”和写代码这件事)。
在liunx中,可以把文件理解为事物,用户理解为人
权限的本质就是约束人的,这里需要再次强调,超级管理员root不受权限的约束
三、Liunx的文件属性
我们可以使用ll
指令查询文件类型和文件属性,下面是指令的查询结果
文件拥有者又称文件所有者
最后面的三个并不难理解,这里需要注意的是,使用ll
显示的内存是以字节为单位。
1.文件类型
与Windows不同的是,Liunx下不以文件的后缀名区分文件类型。可以看到,在刚刚那幅图中的第一大列(也就是文件属性那一列)共有10个字符,其中第一个字符就是专门用来显示文件类型的。(在图片中,可以看到有d
和-
两种字符,d
表示文件是一个目录,-
表示文件是普通文件)
下面会罗列出文件类型,但只要理解前面两个就可以了,因为后面的不多见,有个印象即可
字符 | 说明 |
---|---|
d | 文件夹 |
- | 普通文件 |
l | 软链接(类似Windows的快捷方式) |
b | 块设备文件(例如硬盘、光驱等) |
p | 管道文件 |
c | 字符设备文件(例如屏幕等串口设备) |
s | 套接口文件 |
2.角色划分
Liunx下共有三种角色划分,分别是文件拥有者,文件所属组,文件的other。文件的拥有者不难理解,谁创建了这个文件,这个文件的拥有者就是谁。文件的other也不难理解,一个用户,如果既不是文件拥有者,也不是文件所属组,那他就是文件的other。那么什么是文件所属组呢?可以用一种类比的方式理解,比如我创建了一个qq群,那么我就是这个群的群主,可以类比为文件的拥有者,这个群的群员就可以类比为文件所属组,那么不在我这个群的成员就是其他qq用户,也就类比为文件的other。这样将用户分为三类的方式大大提高了liunx的管理效率。
可以返回上面的图片观看文件拥有者和所属组,其他成员就都是other了
3.文件权限
这里我截取了一张图片放在下面。下面针对最前面的文件属性分析。在文件属性中,第一列的d
就是文件类型,表明这是一个目录。后面九个字符三三为一组,分别表示文件拥有者的权限,文件所属组的权限,other的权限。每一组中,又有三个字符,按从左到右的顺序表示文件的读权限,写权限,执行权限(r
表示读,w
表示写,x
表示执行,-
表示对应位置不具备相应权限)。比如下面这张图,文件拥有者对应rwx
,说明具有读权限,写权限,执行权限。文件所属组和文件other都对应着r-x
,说明具有读权限,执行权限,不具备写权限。
i
: 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
w
: 对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
x
: 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
当然,root不受权限约束
文件的权限其实不难理解,下面针对目录的权限做个演示
- 如果缺失了
x
权限,我们无法进入该目录
- 如果缺失了
r
权限,我们无法查看目录下的文件
- 如果缺失了
w
权限,我们无法在目录下创建文件
4.如何修改权限
正如前面所诉,权限包括人和文件属性。那么这里的修改也就包括两部分。改变文件拥有者和所属组,改变文件权限
4.1 修改文件权限
这里需要介绍一个指令,chmod
。
chmod:
功能: 设置文件的访问权限
格式: chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
4.1.1 通过用户符号与权限字符修改文件权限
用户符号:
符号 | 含义 |
---|---|
u | 拥有者 |
g | 所属组 |
o | 其他用户 |
a | 所有用户 |
权限字符:
符号 | 含义 |
---|---|
+ | 向权限范围增加权限代号所表示的权限 |
- | 向权限范围取消权限代号所表示的权限 |
= | 向权限范围赋予权限代号所表示的权限 |
演示:
给test.txt文件的所有者增加执行权限,
chmod u+x test.txt
取消test.txt文件的所属组的读权限,
chmod g-r test.txt
使test.txt文件的other只具备写和执行权限,
chmod o=wx test.txt
给所有用户增加读权限,
chmod a+r test.txt
其中a+r
可以简写为为+r
4.1.2 通过三个八进制位数字修改文件权限
我们可以将拥有权限记为1,无权限记为0,那么就有下面这张图。
这样,用户类型的权限就和三个8进制数字产生了一一对应的关系,我们就可以使用这个关系来修改数值。请看下面的演示
要求test.txt的拥有者具备读写执行权限,所属组只具备读权限,other不具备任何权限。
chmod 740 test.txt
4.2 修改文件拥有者与所属组
4.2.1 修改文件拥有者
chown
功能: 修改文件的拥有者
格式: chown 用户名 文件名
演示:
4.2.2 修改文件所属组
chgrp
功能: 修改文件的所属组
格式: chgrp 用户名 文件名
演示:
四、粘滞位
背景: 在使用Liunx的时候,未来可能会有一些共享目录(共享目录一般由root创建),被所有用户共享,且开放rwx
权限,大家可以在这样一个目录下交流协作。但是就有了一个问题,既然开放了w权限,那么所有的用户可以随意删除该目录下的文件和目录,如果有人不怀好心,删掉了别人的文件怎么办。基于这种背景,粘滞位就诞生了。
粘滞位的作用: 防止文件和目录被随意删除
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
演示:
先是给目录增加粘滞位
再切换一个用户,尝试删除文件
可以发现,文件无法被删除