写在前面
本文主要介绍一些Linux
系统下的权限管理
权限概述
总述
Linux
系统一般将文件可存/取访问的身份分为3个类别:owner
、group
、others
,且3种身份各有read
、write
、execute
等权限。
权限介绍
Q:什么是权限?
A:在多用户(可以不同时)计算机系统的管理中,权限是指某个特定的用户具有特定的系统资源使用权力,像是文件夹、特定系统指令的使用或存储量的限制。
在Linux
中有读、写、执行三种权限
- 读权限:
- 对于目录来说,读权限影响用户是否可以列出目录结构
- 对于文件来说,读权限影响用户是否可以查看文件内容
- 写权限:
- 对于目录来说,写权限影响用户是否可以在目录下创建/删除/复制/移动目录或者文件
- 对于文件来说,写权限影响用户是否可以对文件内容进行编辑
- 执行权限
- 一般都是对于文件来说,例如脚本文件,影响用户是否能运行该文件
身份介绍
Owner
文件所有者,默认为文档的创建者,由于Linux
是多用户、多任务的操作系统,因此可能常常有多人同时在某台主机上工作,但每个人均可在主机上设置文件的权限,让其成为个人的“私密文件”,即个人所有者。因为设置了适当的文件权限,除本人(文件所有者)之外的用户无法查看文件内容。
Group
与文件所有者同组的用户,与文件所有者同组最有用的功能就体现在多个团队在同一台主机上开发资源的时候。例如主机上有 $A$、$B$ 两个团体,$A$中有 $a_1$,$a_2$,$a_3$三个成员,$B$中有$b_1$,$b_2$两个成员,这两个团体要共同完成一份报告$F$。由于设置了适当的权限,$A$、$B$团体中的成员都能互相修改对方的数据,但是团体$C$的成员则不能修改$F$的内容,甚至连查看的权限都没有。同时,团体的成员也能设置自己的私密文件,让团队的其它成员也读取不了文件数据。在Linux
中,每个账户支持多个用户组。如用户$a_1$、$b_1$即可属于$A$用户组,也能属于$B$用户组【主组和附加组】。
Others
其他人,相对于所有者,
Root
超级用户,拥有所有权限
文件权限
要设置权限,就需要知道文件的一些基本属性和权限的分配规则。在Linux
中,ls
命令常用来查看文件的属性,用于显示文件的文件名和相关属性。
红色部分即为Linux
中的权限信息,其权限信息分配如下
图例解释:
- 第一位:
- d:表示目录
- -:表示文件
- l:表示软连接
- s:表示套接字
- 第2~4位:
- 表示目录/文件所有者的权限
- 2号位:
r
代表可读,-
表示不可读 - 3号位:
w
代表可写,-
代表不可写 - 4号位:
x
代表可执行,-
代表不可执行
- 第5~7位:
- 表示与目录/文件所有者同组成员的权限
- 5号位:
r
代表可读,-
表示不可读 - 6号位:
w
代表可写,-
代表不可写 - 7号位:
x
代表可执行,-
代表不可执行
- 第8~10位:
- 表示其他用户的权限
- 8号位:
r
代表可读,-
表示不可读 - 9号位:
w
代表可写,-
代表不可写 - 10号位:
x
代表可执行,-
代表不可执行
- 权限分配中,均是
rwx
的三个参数组合,且位置顺序不会变化。没有对应权限就用–
代替。 - eg:上述图片中第一个文件
Desktop
权限解读
该文件是目录,所有者具有全部权限(可读、可写、可执行),同组人员具有可读、可执行权限,其他用户具有可读、可执行权限。
权限设置
chomd
- 常用命令:
chmod 要更改权限的用户 权限信息 文档 - 注意事项:
- 当要给一个目录添加命令时可以使用
-R
(递归)设置权限 - 如果想要给文档设置权限,操作者要么是root用户,要么就是文档的所有者。
- 当要给一个目录添加命令时可以使用
字母形式
- 更改权限的用户
- u:表示所有者身份owner(user)
- g:表示给所有者同组用户设置(group)
- o:表示others,给其他用户设置权限
- a:表示all,给所有人设置权限
- 权限字符:
- r:读权限
- w:写权限
- x:执行权限
- -:没有权限
- 权限分配方式:
- +:表示给具体的用户新增权限(相对当前)
- -:表示删除用户的权限(相对当前)
- =:表示将权限设置成具体的值(注重结果)【赋值】
- eg1:更改
examples.desktop
权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只读权限
注意:当文件的任意一个用户拥有可执行权限时,文件在终端都会显示为绿色
数字形式
每组有三个权限,每个权限位有两种状态,于是三个位组合起来就有8种状态,如下:
|Octal|Binary|FileMode|
|-------|-------|-------|
|0|0 0 0|- - -|
|1|0 0 1|- - x|
|2|0 1 0|- w -|
|3|0 1 1|- w x|
|4|1 0 0|r - -|
|5|1 0 1|r - x|
|6|1 1 0|r w -|
|7|1 1 1|r w x|
这张表的目的是为了简化权限的表示,不必每次都写全部字母,用一个数字就可以代替.
表解释:
- Octal:代表通过8进制描述的文件权限
- Binary:0代表该位置没有权限,1代表有该权限
- FileMode:文件权限
- 通过该表可以得出
- 0:代表没有任何权限
- 1:代表可执行
- 2:代表可写
- 4:代表可读
- eg1:需要给
examples.desktop
设置权限,权限要求所有者拥有全部权限,同组用户拥有读执行权限,其他用户只读。- 所有者拥有全部权限:7
- 同组用户拥有读和执行:5
- 其他用户只读:4
- 该文件权限为:754
注意事项
- 当权限中出现$2$,$3$时,权限一般不合理
- 在
Linux
中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录是否有写权限,如果有才可以删除。
属主与属组设置
- 属主:文件所属的用户
- 属组:文件所属的用户组
红框左侧代表文件的属主,右侧代表属组,使用的时创建该文件的人的信息.
chown
作用:更改文档所属的用户
语法:chown -R username 文档路径
eg1:将examples.desktop
所有者改为root
chgrp
作用:更改文档的所属用户组
语法:#chgrp -R groupname 文档的路径
eg1:将examples.desktop
所属组改为root
sudo
作用
由于某些命令权限较高只能通过root
用户执行,所以root
可以配置sudo
去添加一些可以使普通用户以root
身份执行的一些命令,sudo
是一个允许系统管理员授权让普通用户执行部分或全部root
命令的工具。这样可以减少root
登陆提高系统安全性。
配置
文件地址/etc/sudoers
其中第 20 行为权限配置
root
表示用户名,如果是用户组,则可以写成%组名
ALL
:表示允许登录的主机(地址白名单)(ALL)
:表示以谁的身份执行,ALL表示root身份ALL
:表示当前用户可以执行的命令,多个命令可以使用,
分割