前言:哈喽小伙伴们,前边的文章中我们已经介绍了过了Linux的一些基本操作指令,今天这篇文章,我们就在指令的基础上,讲解Linux操作的相关权限。
目录
在讲权限之前呢,我们要先来了解一下Linux指令到底是怎么运作的。
Linux的操作基本上分为三个部分:
- 用户
- shell(外壳)程序
- 内核操作系统
用户,也就是我们,要使用Linux的人;
而shell程序,是连接用户和内核操作系统的命令行解释器,起到判别和检查的作用;
内核操作系统,最终执行官,执行用户所提出的请求。
那么我们平时在使用Linux的指令时,我们就是用户,而shell程序就是一个判官,判断我们给出的指令是否可用,如果可用就会传递给操作系统执行,然后再将执行结果返回给用户,反之则不能执行。
借着这个引子,我们就开始来具体了解Linux权限。
所谓权限,也就是某些特定的东西具有某种限制,只对特定人群开放,而限制其他人使用。
比如我们常用的各种视频,音乐VIP,学校门禁系统等等,只有满足条件的人才能有权利去使用。
从这里我们能够看出,权限和人有关,同时权限也和被限制的事物属性有关。
Linux的用户分为两种:
- root(超级管理员)
- 其他(普通用户)
root是Linux的初始的默认管理员:
当我们调用whoami指令时,能够看出当前Linux的用户为root。
而其他用户则是我们需要创建的,创建用户的过程,就是将我们当前的Linux系统的使用权限开放给这个新的用户。关于用户的相关指令如下:
sudo adduser XXX? ? ? ? 创建新用户
sudo passwd XXX? ? ? ?? 给新用户设置密码
sudo userdel XXX? ? ? ? ?删除用户
su XXX? ? ? ? ???????????????????切换用户
su ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 切换回root
如上,我创建了一个名为zhansgan的用户。?
现在我创建了一个文件名为test.txt,能够看出,在这个文件名的前边还有许多的信息:
- ?-rw-rw-r--? ? ? ? ? ? 角色的权限
- zhangsan(前)? 拥有者
- zhangsan(后)? 所属组
- 0? ? ? ? ? ? ? ? ? ? ? ? ? ?文件大小
- Jan 19 16:35? ? ? ? 文件的创建时间
这些信息统称为文件的属性。?
总共能有三类角色能够对文件进行操作:?
文件都是被用户所创建的,所以每一个文件都会有拥有者,比如上边test.txt文件就是由zhangsan创建的,所以它的拥有者就是zhangsan。
除此了拥有者之外,还有所属组和其他角色。
为什么会有所属组呢?
因为一个文件可能要同时被多个用户去维护,所以有了所属组的概念,能够让文件能够被小组里的成员共同维护。
那为什么文件名的前边没有其他成员的信息呢?
一般来说文件不会对所有人开放,当一个文件没有拥有者和所属组的时候,就表示对所有人开放。
下面我们重点来看前十个字符:
-rw-rw-r--
其中第一个字符,代表文件的类型:
-? ? ? ? 普通文件
d? ? ? ?目录文件
剩余的九个字符,其中包括r、w、x三个字符,分别代表对文件的:读、写、可执行三种权限。
九个字符,每三个为一组,分别代表拥有者、所属组和其他角色对文件的三种操作权限,拥有此权限,就会显示英文字符,反之显示“-”。
比如对于上边的test.txt文件,其拥有者和所属组都拥有读和写的权限,而不具有执行文件的权限,其他角色则不具备对此文件操作的任何权限。
那么谁有资格去修改文件的权限呢?
1.文件拥有者
2.root超级管理员
修改权限需要用到指令chmod:
chmod + 要添加/删除的权限 + 文件名
这里还要记住三个点:
u(user)? ? ? ?拥有者
g(group)? ? ?所属组
o(other)? ? ? 其他角色
同样是这个文件,现在我要添加拥有者的可执行权限x:
?如图所示,使用u+x,使可执行权限被添加,现在要删除拥有者的所有权限:
如图所示, 使用u-rwx,能够同时删除拥有者的所有权限。
这说明这些指令都是可以连用的,比如我现在要删除所属组和其他角色的读权限,便可以:
此外,还有一种可以同时添加或删除权限的指令‘a’,也就是‘all’,现在给所有人添加读权限:
?那么我们光学会了权限的修改,到底有没有用呢???接下来就来测试:
当前文件的拥有者拥有读写权限,所以我们进行读写:
?能够看出我们能够进行读写操作,现在把读写权限删除,在尝试进行读写:
?能够看出都报错了,这就说明就算你是文件的所有者,但是没有权限就依然无法操作文件。
但是我们知道,root是超级管理员,它能否在无权限的前提下操作文件呢???
现在是root超级管理员,因为该文件的拥有者和所属组都是zhangsan,所以root是其他角色。
能够看出,root身为超级管理员,凌驾于一起权限之上,无需权限就能随意操作文件。?
除了上述修改方式之外,我们还可以用进制的方式来进行修改:
如果把三位权限看做是二进制的形式,权限存在记为1,不存在记为0,再把二进制转化为8进制,同样可以实现添加和删除权限。
例如:
此时我们的拥有者和所属组都具有读和写的权限,rw-就代表二进制的110,转化为八进制就是6,如果我们想把所有的权限删除,全部都是---,则转化为8进制就是0,于是:
如果想要授予全部权限,则都为rwx,即111,八进制为7,于是:
除了能够修改文件的操作权限之外,还可以修改文件的拥有者和所属组:
- chown? ? ? ? 修改拥有者
- chgrp? ? ? ? ?修改所属组
?值得注意的是,上述操作想要修改文件拥有者和所属组只能有root超级管理员能够执行,就算是文件的拥有者也无法修改。
如果想要用普通用户去修改的话,则需要在指令的开头加上 su/sudo,su/sudo能够将普通用户上升为超级管理员的地位。
上边我们讲了那么多,但其实都是关于单个文件权限的操作,那么对于文件夹,它的权限又是如何呢???
想要进入一个文件夹,需要的是r-读权限吗?
并不是,我们打开一个文件夹,实际意义上是执行了它,所以我们需要x-可执行权限:
那么文件夹的r-读和w-写又代表什么意思呢???
?r权限:用户是否能够查看指定目录内的文件信息。
w权限:决定用户是否能在指定的目录内新建、删除、修改文件。
那么我们如何让文件的权限只对某些特定人开放呢???
首先,我们需要将对应的共享目录文件创建在root目录下,而不能创建在个人目录下。因为如果想在用户的个人目录下共享文件,就必须让该用户把文件夹的other权限开放,这样很容易造成私人信息损失。
所以我们要在root目录下共享文件,并且要把文件夹的other权限开放。但是如果other权限开放,那么无论是谁都可以访问此共享文件,不并能实现仅对某些小组成员开放,这该怎么处理呢???
实际上,在root目录下共享文件,并不能实现让某个其他角色不能进入目录去看文件或者修改文件,但是却可以阻止他去删除文件。
这就要用到“粘滞位”这一名词了,将共享目录进行粘滞位处理,就可以保证其内部的文件只能由root超级管理员和文件的所有者删除,其他人则无法删除。
设置粘滞位指令为:
chmod +t XXX
如图,我们将text文件夹视为共享文件夹并设置粘滞位,这样就能够实现文件的真正共享啦。
?能够看到zhangsan是无法删除由root创建的文件。
关于Linux权限的简单基础知识到这里就结束啦,希望本篇文章能够对大家有所帮助。
喜欢博主文章的小伙伴们不要忘记一键三连哦,我们下期再见啦!