我们知道在Linux下一切皆文件,那么所对应的文件应该有它自己的权限,不然如果任何用户都能修改某个文件,那么可能会导致许多未知的后果。
一、用户和用户组
- 用户:用户是计算机的使用者,用计算机可识别的用户ID标识。
- 用户组:用户容器,用来将多个用户合并为一个单一的逻辑组件,用计算机可识别的用户组ID标识。
用户类别:
- 管理员用户:也成为root用户,UID为0。
- 系统用户:为系统运行提供服务的非登陆式用户,UID从1-999分配。
- 登陆用户:真正使用计算机的普通用户,UID从500-60000分配。
二、文件访问者
(1)文件访问者权限
Linux下文件访问者主要有三类,所以我们可以根据这三种不同的访问者设置不同的权限:
- 拥有者(u–User):文件的拥有者。
- 所属组 (g–Group):文件的拥有者所在的组。
- 其他用户(o–Others):其他用户。
(2)文件所具有的基本权限
- 读(r–Read): 对文件而言有读取文件内容的权限,对于目录来说,具有浏览该目录信息的权限。
- 写 (w–Write): 对文件而言有修改文件内容的权限,对于目录来说,具有删除和移动该目录信息的权限。
- 执行(x–execute): 对文件而言有执行文件的权限,对于目录来说,具有进入该目录的权限。
(3)文件权限表示方法
a)字符表示方法
b)8进制表示方法
三、更改文件权限方法
4.1chmod
命令:
- chmod [参数] 权限 文件名
功能:
- 修改文件的权限
参数:
- R:递归修改目录文件的权限。
只有文件的拥有者和root才可更改文件的权限。
修改的方式主要有两种:
①用户标识符+/-/=权限字符
- +表示向权限范围增加权限代号所表示的权限
- -表示向权限范围取消权限代号所表示的权限
- =表示向权限范围赋予权限代号所表示的权限
用户符号:
- u:拥有者
- g:所属组
- o: 其他用户
- a:所有用户
②三位八进制数字
命令:
- chmod 权限 文件名
功能:
- 修改文件的权限
四、更改文件拥有者
命令:
- chown [参数] 用户名 文件名
功能:
- 修改文件的拥有者。
五、更改文件所有组
命令:
- chgrp [参数] 用户组名 文件名
功能:
- 更改文件所属组。
常用选项:
- -R递归修改文件或目录所属组。
六、文件掩码
什么是文件掩码?当我们创建一个文件时候,它的权限是什么呢?这个又是如何设定的呢?这便是文件掩码的存在。
L;inux中提供了umask这个命令来查看或设置文件文件掩码。
命令:
- umask 权限值
功能:
- 查看或修改文件掩码。
超级用户的默认掩码为0022
普通用户的默认掩码为0002
那这个默认权限是如何算的呢?
默认权限计算
新建文件夹默认权限=0666-权限掩码
新建目录默认权限=0777-权限掩码
七、粘滞位
①什么是粘滞位
粘滞位(Stickybit),或粘着位,只有目录内文件的所有者或者root才可以删除或移动该文件。
②为什么要有粘滞位
最常见的用法在目录上设置粘滞位,如此以来,只有目录内文件的所有者或者root才可以删除或移动该文件。如果不为目录设置粘滞位,任何具有该目录写和执行权限的用户都可以删除和移动其中的文件。
即当一个目录被设置为“粘滞位”则该目录下的文件只能由
- 超级管理员删除
- 该目录所有者删除
- 该文件的所有者删除
③粘滞位如何设置、
命令:chmod o+t 目录名
实际应用中,粘滞位一般用于/tmp目录,以防止普通用户删除或移动其他用户的文件。
八、权限总结
目录的可执行权限表示你能否在该目录下执行命令
如果这个目录没有x权限,则你无法对该目录进行任何操作,甚至无法cd进入该目录,即使该目录仍然有可读的权限(这个很重要,不要认为有了读的权限就可以进入该目录读取该目录下的文件)
如果该目录有x执行权限,但是没有r读权限,则用户可以对它进行执行操作,可以cd进入该目录,但是没有读的权限,所以在该目录下即使可执行ls命令,但是仍然没有权限读出该目录下的文档。