文章目录
1.Linux权限的概念
权限就是用来约束一个人或者一个群体的。Linux权限的概念也很简单,通俗来说权限就是: 某一件事情是否允许被某个人做(某一件事情就对应Linux中的各种文件),而人就是指使用Linux的用户。
Linux下有两种用户:超级用户(root)、普通用户
- 超级用户:在linux下可以做任何事情,不受限制,命令提示符是 #
- 普通用户:在linux下做有限的事情,命令提示符是 $
用户切换指令:
su 用户名
su 英文就是 switch user
或者 substitute user identity
从root切换至普通用户: su 普通用户名
从普通用户切换至root:su root(root可以省略),此时系统会提示输入root用户的密码
su命令后,命令行最前面的用户名显示的是当前操作的用户名;最后面的名称是当前目录的名称
2.Linux权限管理
对于用户、目录、文件,Linux是如何进行管理的呢?
2.1权限是如何规定的
- 文件访问者的分类
- 文件和目录的所有者 u——(user)
- 文件和目录的所有者所在的组的用户(所属组) g——(group)。小组之内的用户可以访问,其余用户不可访问
- 其它用户 o——(other)
- 文件的属性
- 文件的类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
- 权限
r:读权限。Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
w:写权限。Write对文件而言,具有修改文件内容的权限;对目录来说具有删除、创建、修改目录内文件的权限
x:执行权限。Execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
- 文件权限值的表示
字符表示:
八进制表示:
2.2文件访问权限的相关设置方法
2.2.1更改文件的访问权限
格式:chmod [选项] 用户+/-权限 文件名
常用选项
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
其中,权限分为:
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限(= 写不写都可以)
对于用户名,使用以下简写:
u:拥有者
g:所属组
o:其它用户
a:所有用户
在未更改文件的权限前,权限默认是这样的
使用chmod指令给拥有者和所属组加上x权限,多个权限之间使用逗号分隔
使用-r选项,递归似的设置文件权限
未设置前:
设置后:
除了使用字符,还可以使用八进制数来设置
2.2.2更改文件的拥有者、所属组(都得使用root修改)
- chown修改拥有者
格式: chown [参数] 用户名 文件名
我们发现无法将我创建的文件给别人,为什么呢?
因为在你将文件给别人时,需要经过别人的同意。所以,如果想修改文件的拥有者,必须使用root用户
- chgrp修改所属组
格式:chgrp [参数] 用户组名 文件名
对于拥有者而言,普通用户也无法修改,必须使用root用户
- 同时修改拥有者和所属组
格式:chown 拥有者:所属组 文件名
3.目录文件权限的含义
- r的含义
对于目录而言,r权限限制是否允许我们查看目录下的文件内容
- w的含义
目录文件有w权限时:
去除目录文件的w权限:
所以:目录文件是否有w权限,限制是否允许我们在当前目录下进行创建、删除、更改文件名
- x的含义
目录文件是否有x权限,限制是否允许我们进入对应的目录
4.umask
在我们创建普通文件和目录文件时,默认权限为什么是664和775呢?
正常而言,新建目录文件时,它的权限应该是777(拥有所有权限),带x是因为需要进入目录;新建普通文件使,它的权限是666(不需要执行权限)。
但默认为什么是664和775呢?- - - 权限掩码umask的作用
Linux为了允许我们可以自由配置起始权限,设置了权限掩码umask。
默认情况下,umask的值是0002
修改权限掩码
5.粘滞位
在root下,我创建了一个目录文件和普通文件
由于目录文件的w权限我们可以知道,一个普通文件的修改和删除不取决于该文件的属性,而取决于文件所属的目录的权限属性
那么dir是普通用户的目录,那普通用户是不是能删除root在其目录中的文件呢?
我只有读你文件的权限,但是你在我的目录下,我就能删掉你的文件,这样合理吗?
对于每个用户而言,只有自己和root能进入家目录,其它人一概进不去
所以:
- 在Linux系统中,普通人是不能进入另一个人的家目录里的
- 如果它进了,那么目录的拥有者就可以删除进入人在目录中创建的文件
那会不会有这样一种场景,两个人共享了一个文件进行文件的访问,但是两个人没有任何关联,仅仅是进行文件的共享。那么这个共享文件就不能放在二者的家目录里面
那么就为它俩创建一个共享文件
为了让它俩都能写这个文件,还需要放开w权限
然后wk创建了一个共享文件
为了让temp也可以写,那就给other加上w权限
那么temp就可以写该文件了
但是有一天,wk不想让temp读,也不让他写了,那就去掉它的 rw权限,此时temp就不能读写了。
既然不让我看,那你们也别看了,我删掉你的文件(目录对other有w权限)
既然是由于目录的w权限导致的,那把w权限去除可以吗?
- shared-dir本来就是让other共享的,把w权限去掉还谈什么共享呢?我们都不能在文件中写内容了
所以为了解决这个不科学的问题,Linux引入了粘滞位的概念
粘滞位格式:
目录的拥有者(一般是root):chmod o+t 文件名
此时它的x权限就变成了t
此时wk又创建了一个文件,并且只允许所属组的人读写,此时temp还能删除我的文件吗?
此时temp就删不了了,这样就达到了我们想要的效果。
所以当一个目录被设置为"粘滞位",则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
其它人一概不允许,t是一种特殊的x权限
本篇文章就到这里啦~