在我们Linux系统中,分为两种用户 一种是root用户(超级用户),另一种是非root用户(普通用户)。
而为什么会有这两种用户呢?这其实是与Linux系统的权限有关的。
在Linux系统中权限是用来限制普通用户的,对于root用户来说权限可能限制不大,换言之在root面
前权限就如同虚设。
接下来我们就来讲一讲,root与普通用户普通用户与普通用户之间如何进行切换
root->普通用户:su 普通用户 不需要任何密码
普通用户->root:su 或 su - 需要root账号的密码
如下图在xshell下演示
我们可以看到需要root账号的密码才能登上root
我们在来看root->普通用户
指令 su 普通用户名
普通用户与普通用户之间的切换
su 要登录的普通用户 需要对方的密码
我们还需要了解一个特殊的指令 : ,sudo 指令 这个sudo会进行短暂的提权,需要使用者的密码 ,这样我们就可以不用改成root账号了。
与此同时我们既然有了sudo 这个提权的操作指令,那我们还需要root账号吗??
答案:我们肯定是需要root账号的,因为并不是所有的普通用户都能够使用sudo指令,这个指令的使用权限也需要root来进行设置,而这个设置其实是在我们系统中一个文件中。
如下图所展示的地方:
也就是说如果一个用户存在与这个文件中则可以使用sudo 进行提权,如果不存在则不能。
而如何增加,等我们学完vim在进行操作。
我们知道在Linux系统下一切皆文件,所以对Linux系统权限的理解,我们就只需要弄懂文件的权限
概念就行了。
文件的权限使用来限制人的
文件访问者的介绍:
我们先通过具体的列子来进行对知识点的讲解。对文件属性的查看我们要通过 ll的指令
在Linux系统中我们将文件的访问者分为三种角色即:拥有者,所属组和other
但是在linux系统中使用ll的指令的时候并没有显示出来other这是因为Linux规定,如果你不是文件
的拥有者,不是文件的所属组那么你就是other这个角色所以上图才没有other。
讲完了文件的三种角色之后我们就需要在想一想了,这三种角色与我们的root用户和非root用户有什么区别呢?
我们可以这样来理解,Linux系统下的每个用户,都是用来充当上述这三种角色的,比如说张三这
个 用户,对于张三来说既可以成为某个文件的拥有者,也可以成为某个文件的所属组或者other
所以他们并不冲突,相反他们是互相配合的。
有了上面的理解后,对于我们来说这三种角色,对于文件的拥有者,other我们可能可以理解。但是什么是文件的所属组呢??以及为什么要存在文件的所属组呢?
我们可以假设我们一个文件只有拥有者和other这两种角色,那么当两个具有相互竞争的人来说,假如一个人是张三,一个人是李四。张三创建了一个文件,那么张三就是这个文件的拥有者,那么李四和其他人都是other,可是当有一天张三的老板需要打开这个文件,可是老板也属于other那么老板也不能进行访问,而张三如果打开了other的访问权限那么李四也可以进行访问,这样就会出现很大的问题,所以Linux系统为了解决这个问题就加上了另外的一个角色所属组,这样就能防止上述问题出现了。
所以我们可以这样理解,文件的所属组就是类似于我们生活中的分组,将谁和谁拉在一起这样可以使得在这个组中的人都可以对文件进行访问,不在这个组中就不能对文件进行访问。
所以我们需要所属组这个概念,一般而言Linux系统默认的所属组组名就为文件的拥有者名字。
其中对于我们的文件访问权限的查看,就是在第一列,而第一列的后面9个字符是用来分别表示拥有者,所属组和other的对文件的读写执行权限(rwx),我们要注意的是如果在rwx对应的位置是-字符则代表没有这个权限。
我们就用拥有者的权限来进行讲解,比如上述11-25这个目录,我们的拥有者是root,具有对文件的rwx权限,表明我们root这个用户对文件具有可读可写可执行的权利。
对于other来说没有w权限,既没有写权限。
对于第一列的字符我们将他作为表示文件类型的字符。
在Linux系统下有以下几种表示
1 - :代表该文件为普通文件,文本,源代码,图片,视频,库文件
2. d :代表该文件为目录文件
3. b :代表该文件为 块设备文件(一般为磁盘文件) 允许随机访问的文件
4. c :代表该文件为 字符设备文件(一般为键盘.显示器文件) 不允许随机访问的文件
5. p :管道文件
6. l :链接文件
7. s :socket文件
这些我们以后看到了知道就行了。
在linux系统环境下,我们不同过文件的后缀来区分文件的类型,因为由第一个字符来确定,但是这不
代表我们不给文件加后缀,加后缀有以下优点:
1.我们的一些编译工具需要,只能对特定的文件后缀编译比如gcc
2.我们人需要,这样可以增加可读性
我们先要了解,在Linux系统中我们会进行一下简写将 user->u | group -g | other->o
使用chmod 改的角色 +(-) rwx 权限
如下图对xshell中文件进行修改对应的权限
我们可以看到对于1.txt这个文件来说他的所属组和other只有读权限,而我们经过了chmod指令过后,最后1.txt对于所属组和other都具有了rwx权限,当然我们如果将上述的指令的+改为-那么意思是去掉对应的权限,这里就不给大家演示了。
当然我们如果需要对所有的角色加上对应的权限我们可以这样使用指令
chmod a+(-) rwx 文件名 如下图
如果我们需要同时对不同的访问者加上对应的权限我们可以使用,来分离。如下图
第一种方式就介绍到这里就结束了。
2.chmod 3个八进制数字 文件名
这个方式是我们可以将rwx用三个数字来表示,如果存在对应的权限那么某个特定的位置就是1如果不存在则该位为0 比如说拥有者的权限为 r-- 那么转化成我二进制数字就为1 0 0对应的八进制就为4,再比如rw- —>对应二进制1 1 0 八进制为6.
我们直接用实际列子来证明这个方法的使用
大家可以自行去验证
以上就是文件权限修改的两种方法的介绍了。
关于一个Linux文件可不可以执行的理解
1.先看该文件是否具有可执行的权限x
2.该文件是否真的是一个可执行的程序
这两者是缺一不可的
Linux系统对于用户文件匹配权限的步骤:
首先先判断该用户属于那个角色
其次是直接看是否具有相对应的权限,不会进行多次匹配,使用不同角色的权限
1.通过控制变量法,我们发现进入一个目录我们需要具备该目录的x权限
2.r权限决定我们是否可以对文件属性进行查看权限
3.w权限决定我们是否可以在该文件下创建文件或者删除文件的权限
以上就是目录权限理解的结论,大家可以自行的去验证。
从这里我们也可以得出一个结论,一个文件的删除并不由是否可以对该文件读写执行所决定而是由该文件所在的目录所对应的w权限所决定的
在讲权限掩码之前,我们就还得引入一个东西—>文件的起始权限
文件的权限就拿我们的文本文件来说,他创建的起始权限是666因为创建出来就不是为了被执行所创建的文件所以无可执行权限
目录的起始权限为777,因为目录创建下来就是为了被进入(x),可以显示该目录下的文件属性信息( r ),以及可以在该目录下创建文件与删除文件(w)
我们要知道最终我们所看到我们创建出来的文件默认权限是由:权限掩码与起始权限所决定的。
而权限掩码的规则是:从起始权限中去掉权限掩码中所含有的权限位。如下图
如果起始权限就为0了,而默认权限所对应的地方为1,那么啥都不会做,就为0
如果关于这个去除没有听懂的话,那么一下还有一个关于默认权限的公式:
我们在系统中还可以直接使用 umask 八进制数字(3个) 来设定我们的umask值
在讲了上述知识点之后我们需要再来讲解一个非常重要的概念,粘滞位。
粘滞位的使用经常用于,对于指定的目录,我们要进行文件的共享。
比如说假如我们在同一个具有rwx目录下进行文件的共享,因为我们可以修改文件所对应的
权限,我们即使将rwx权限全部所去掉了,可是我们也不能防止我们的文件被删除,因为我们共享的时候对目录每个人都是具有w权限的,这样就会导致我们可以删除别人的文件,所以为了防止这一事故的发生,Linux就引入了粘滞位这一个概念。
粘滞位:是给共享目录所增加的权限,该权限具有x的权限,同时对该目录有特殊的规定,
在该目录中的文件只能由root和文件的拥有者有权进行删除
本章知识点的介绍到这里就结束了,感谢大家的耐心观看!!!!