标题:[Linux] 权限
@水墨不写bug
目录
一、Linux下对用户的分类
二、Linux的文件访问者的分类
三、修改文件的属性
1.修改文件的权限 (只有拥有者和root可以修改某一个文件的权限)
2.修改文件的拥有者
3.修改文件的所属组
四、文件创建的默认权限
五、权限的具体内容(影响)
六、粘滞位
正文开始:
一、Linux下对用户的分类
我们知道,在Linux系统下,用户分为两类,一类是普通用户,另一类是超级用户;超级用户与普通用户的区别在于权限的大小不同。
相对来说,普通用户的部分权限收到限制,而超级用户可以在Linux下做任何事情,不收任何限制。
如何在登录情况下区分查看自己是普通用户还是超级用户?超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
从超级用户(root)切换为普通用户:(不需要输入密码,可以直接切换)
su 用户名
从普通用户切换为超级用户:(直接su,但是需要输入root密码)
su
二、Linux的文件访问者的分类
文件的访问者分为三类:文件和文件所有者的所有者:u——User;文件和文件所有者所在的组的用户:g——Group;其他用户:o——Others。
当我们打开一个文件目录时,我们首先最先看到的就是文件前面的一串的字符,这一串字符就表明了这个文件的对访问者(所有者,所属组,其他用户)的权限;
仔细数一数,这一段字符有10个,这一段字符按照意义可以分为“ 1 + 3 + 3 + 3”:
第一个字符为文件类型,2-10位三三一组分别代表拥有着、所属组、others的三种文件访问者的权限:
前十位字符之后的标识的含义如下:
特别的,对于第一位文件类型常用的类型标识有:
d:文件夹
-:普通文件
现在我们知道了后面9位表示权限,但是他们分别代表什么意思:
r:代表有“read读”权限
w:代表有“write写”权限
x:代表有“execute执行”权限
-:代表不具有这个权限
每个文件访问者对应三个字符,rwx,这三个字符每个都有两种状态:具有或者不具有。
所以,每个文件访问者的权限都有 2^3 = 8 种状态。这8种状态既可以用“rwx和-”表示,也可以用二进制位0/1表示。
比如,下面这个文件:
其9位权限也可以标识为:拥有者:110 所属组:110 others:100
三、修改文件的属性
1.修改文件的权限 (只有拥有者和root可以修改某一个文件的权限)
我们知道了文件权限的表示方法,但是,接下来怎么修改文件的权限?
(1)指定某一个文件访问者的某权限的变化
命令:chmod 用户标识符+(-)(rwx的一个或者多个) 文件名称
(2)通过三位8进制数字改变某权限的变化
命令:chmod 三位8进制数 文件名称
补充用户标识符:
u:拥有者
g:拥有者同组
o:其它用户
a:所有用户
-R:代表递归的修改目录文件的权限
2.修改文件的拥有者
命令:chown 交给的目标用户 移交的文件
注意:chown -R 交给的目标用户 移交的文件夹 (-R选项表示递归进行)
3.修改文件的所属组
命令:chgrp 目标所属组 移交的文件
注意:chgrp -R 目标所属组 移交的文件夹 (-R选项表示递归进行)
四、文件创建的默认权限
新建文件夹的默认权限=0666,新建目录的默认权限=0777。但是我们实际上创建的文件并不是上面这个值,因为创建文件或者目录的时候,权限还受到umask的影响。
记默认权限为mask,则实际创建出来的文件的权限为mask & ~umask
umask的值是可以查看并手动设置的,查看umask:
命令:umask
设置umask:
命令:umask 三位8进制数
五、权限的具体内容(影响)
对于文件:
r:具有读取文件内容的权限
w:具有修改文件内容的权限
x:具有执行文件的权限
对于目录:
r:具有浏览该目录信息的权限;如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容
w:具有删除移动目录内文件的权限;如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
x: 具有进入目录的权限;如果目录没有可执行权限, 则无法cd到目录中
关于目录的权限,其实可以理解为目录的可执行权限是表示你是否可在目录下执行命令。
如果没有目录的可执行权限,则无法对目录执行任何命令,甚至无法cd进入目录。
目录的r权限非常容易犯错,不能认为有r权限就可以进入目录读取目录下的文件。
如果有可执行权限而没有读权限,则我可以在目录下执行命令,但是由于没有读权限,所以在目录下执行ls时,无法读取目录内的文件。
六、粘滞位
通过上面的关于权限的讲解,我们会发现一个问题如果A在一个共用的目录中创建一个目录文件,作为自己的工作区。由于目录是公用的,所以理所当然每个人都有共用目录的w权限。下班后,B突然把A创建在共用目录中的文件夹删除了,这非常不合理!
A创建的一个目录,B凭什么可以删掉?为了解决这个问题Linux引入了粘滞位的概念:
当一个目录的权限 加上 命令:
chmod +t
这个目录就被设置了粘滞位,这样以后,该目录下的文件只能由超级管理员删除、该目录的所有者删除、该文件的所有者删除。
完~
未经作者同意禁止转载