目录
一.权限的概念
二.Linux权限管理
1.文件访问者的分类(人)
2.文件类型和访问权限(事物属性)
3.文件权限值的表示方法
4.文件访问权限的相关设置方法
5.修改文件的拥有者
6.修改文件所属组
7.查看或修改文件权限掩码
8.目录的权限
9.粘滞位
一.权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。
命令:adduser [用户名]
功能:添加用户
命令:userdel -r [用户名]
功能:删除用户
注意:我们在输入密码时是不显示的;创建用户删除用户都需要root的身份。
二.Linux权限管理
1.文件访问者的分类(人)
Linux中一切皆文件,对于一个文件,按照文件访问者的来分类,有三种情况:
- 文件和文件目录的所有者:u---User (拥有者)
拥有者很好理解,就是拥有这个文件的人
- 其它用户:o---Others (其他人)
其他人也很容易理解,就是外来的访问者
- 文件和文件目录的所有者所在的组的用户:g---Group (所属组)
所属组与我们日常生活中的小组类似,将多人添加到同一个小组,可以方便权限的分配,即方便管理。对于小组外的成员,是没有权限访问所属组的文件的。
注意:Linux中没有对other的标注位,因为如果一个访问者既不属于拥有者,也不属于所属组,那他相对这个文件就是other。root用户对于所有文件都拥有最高权限,即便root用户对于某个文件为other角色。
2.文件类型和访问权限(事物属性)
注意:Linux不是以文件的后缀来区分文件类型的,而是通过属性的第一个字符来区分的。
文件类型
d:目录文件
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
图示如下:
基本权限
r :读(浏览)
w :写(修改)
x :可执行
- :表示不具有该项权限
3.文件权限值的表示方法
a)字符表示方法
Linux表示 | 说明 |
---|---|
r-- | 只读 |
-w- | 仅可写 |
--x | 仅可执行 |
rw- | 可读可写 |
-wx | 可写可执行 |
r-x | 可读可执行 |
rwx | 可读可写可执行 |
--- | 无任何权限 |
b)8进制数值表示方法
用二进制表示权限:即有对应权限为1,无对应权限为0,对应了八进制中的0到7.
权限符号 | 二进制 | 八进制 |
---|---|---|
r-- | 100 | 4 |
-w- | 010 | 2 |
--x | 001 | 1 |
rw- | 110 | 6 |
-wx | 011 | 3 |
r-x | 101 | 5 |
rwx | 111 | 7 |
--- | 000 | 0 |
4.文件访问权限的相关设置方法
chmod
格式:chmod [参数] 权限 文件名
功能:设置文件的访问权限
常用选项:
r : 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod 命令权限值的格式:
①用户表示符+/-=权限字符
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限 用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
示例:
减去拥有者的读权限:chmod u-r 文件名
减去所属组和其它用户的写权限:chmod g-w,o-w 文件名
给所有用户所有权限:chmod u+rwx,g+rwx,o+rwx 文件名
注意:root用户不受权限约束
即便root对于file.txt属于others,没有写权限,但仍能进行操作。
②三位8进制数字
有了上面的表格 ,我们不难看出每一种权限状态都能对应一种八进制数字且最高为7,所以chmod也可以用8进制数字来更改权限。
示例:
去掉所有人的所有权限:chmod 000 文件名
添加指定权限:
统一修改权限:chmod a=* 文件名
5.修改文件的拥有者
chown
格式:chown [参数] 用户名 文件名
功能:修改文件的拥有者
注意:chown
是一个管理命令,因此您需要是 root
或具有 sudo
权限才能使用 chown
命令进行更改。
如果不是root或没有sudo权限
正确示例:
6.修改文件所属组
chgrp
格式: chgrp [参数] 用户组名 文件名
功能:修改文件或目录的所属组
常用选项: -R 递归修改文件或目录的所属组
注意:对于一般用户,如果文件的拥有者是自己,所属组是别人,可以将所属组改为自己不需要他人同意,但改为别人则需要同意。
附:如何创建一个组
- 增加用户:
useradd -d /usr/username -m username
- 为用户增加密码:
passwd username
- 新建工作组:
groupadd groupname
- 将用户添加进工作组:
usermod -G groupname username
- 删除用户:
userdel username
- 查看小组成员 : cat /etc/group | grep groupname
注意:创建完组后要把所有登录状态退出之后,重新登录后才可以正常访问组内文件。
7.查看或修改文件权限掩码
umask
功能:查看或修改文件掩码
新建文件夹默认权限=0666,新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是umask,则实际创建的出来的文件权限是:mask & ~umask。
本别用root和普通用户创建一个目录文件和一个txt文件,我们发现:
普通用户创建的目录文件权限值为775,txt文件权限值为334
root创建的目录文件权限值为755,txt文件权限值为344
之所以出现这样的结果,是因为普通用户和root用户的权限掩码不一致
注意:权限掩码往往只有后三位起作用,第一位是0.
下附普通用户创建目录文件的计算过程
8.目录的权限
- r可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
- w可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
- x可执行权限: 如果目录没有可执行权限, 则无法cd到目录中
9.粘滞位
通过对文件和目录权限的学习,我们不难发现一个问题,如果一个人有目录的w权限,但没有其中文件的w权限,但仍可以删除这个文件,这是不合理的。
所以为了解决这个不科学的问题,Linux引入了粘滞位的概念.
总结:当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
- 一、超级管理员root删除
- 二、该目录的所有者删除
- 三、该文件的所有者删除
可以使用ls -ld /tmp 来查看当前目录是否有粘滞位。