1 Linux 权限介绍
上一篇介绍了 Linux 用户管理,接下来介绍一下 Linux 的权限管理。Linux 是多用户的操作系统,允许多个用户同时登录和工作,Linux 权限是操作系统用来限制不同用户对资源的访问机制。这里暂且将 Linux 中的权限分为三类:
基本权限:给文件和目录的所属者(u)、所属组(g)、其他用户(o) 分配的 读(r)、写(w)、执行(x) 权限
ACL权限:ACL 权限可以针对单一用户或用户组设定权限,是基本权限之外更细化的权限设定,弥补了基本权限设定不能满足的一些场景
特殊权限:除了读写执行权限(rwx) 的另一种 特殊权限(s/t, SUID/SGID/SBIT)
2 基本权限
2.1 权限位介绍
使用 ls 命令时,长格式显示的第一列就是文件的权限,例如:
[root@localhost ~]# ls -l install.log
-rw-r--r--. 1 root root 28425 11月 30 18:50 install.log
第一列的权限位 -rw-r--r--.,则共11位,这11位权限位的含义如下图所示:
第1位:代表文件类型。Linux不像Windows使用扩展名表示文件类型,而是使用权限位的第一位表示文件类型。虽然Linux文件的种类不像Windows中那么多,但是分类也不少,详细情况可以使用“info ls” 命令查看。这里列出一些常见的文件类型:
-: 普通文件
d: 目录文件。Linux中一切皆文件,所以目录也是文件的一种
l: 软链接文件
b: 块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件
c: 字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等
p: 管道符文件。这是一种非常少见的特殊设备文件。
s: 套接字文件。这也是一种特殊设备文件,一些服务支持socket访问就会产生这样的文件
第2~4位:代表文件所属者的权限
r: 代表read,是读取权限
w: 代表write,是写权限
x: 代表execute,是执行权限
第5~7位:代表文件所属组的权限,同样拥有 "rwx" 权限
第8~10位:代表文件其他人的权限,同样拥有 "rwx" 权限
第11位
.:如果是个点代表受 SELinux 安全上下文保护,这里忽略暂不做详细介绍
+:如果是个加号表示设置了ACL权限,下文再做详细介绍
2.2 权限含义解释
读、写、执行权限对文件和目录的含义是不同的。
权限对文件的作用
读(r):对文件有读权限,代表可以读取文件中的数据。如果把权限对应到命令上,那么一旦对文件有读权限,就可以对文件执行 cat、more、less、head、tail 等文件查看命令
写(w):对文件有写权限,代表可以修改文件中的数据。如果把权限对应到命令上,那么一旦对文件有写权限,就可以对文件执行 vim、echo 等修改文件数据的命令。注意:对文件有写权限,是不能删除文件本身的,只能修改文件中的数据,如果想要删除文件,则需要对文件的上级目录拥有写权限。
执行(x):对文件有执行权限,代表文件可以运行。在Linux中,只要文件有执行权限,这个文件就是执行文件了,只是这个文件到底能不能正确执行,不仅需要看执行权限,还要看文件的代码是不是正确的语言代码
权限对目录的作用
读(r):对目录有读权限,代表可以查看目录下的内容,也就是可以查看目录下有哪些文件和子目录。如果包权限对应到命令上,那么一旦对目录拥有了读权限,就可以在目录下执行 ls 命令查看目录下的内容了
写(w):对目录有写权限,代表可以修改目录下的数据,也就是可以在目录中新建、删除、复制、剪贴子文件或子目录。如果把权限对应到命令上,那么一旦对目录拥有了写权限,就可以在目录下执行 touch、rm、cp、mv 等命令
执行(x):目录是不能运行的,那么对目录拥有执行权限,代表可以进入目录。如果把权限对应到命令上,那么一旦对目录拥有了执行权限,就可以对目录执行 cd 命令进入目录
2.3 权限设定
2.3.1 chmod 命令
chmod 命令用来修改文件或目录的权限。
命令格式:chmod [选项] 权限模式 文件或目录
选项:
-R:递归设置权限,也就是给予目录中的所有文件和子目录设定权限
--reference=参考文件或目录:使用参考文件或参考目录的权限来设置目标文件或目录的权限
权限模式:权限模式分为符号组合和八进制数组合
符号组合的格式是[ugoa][[+-=][permission]],也就是[用户身份][[赋予方式][权限]]的格式。
用户身份
u:代表所有者(user)
g:代表所属组(group)
o:代表其他人(other)
a:代表全部身份(all)
赋予方式
+:加入权限
-:减去权限
=:设置权限
权限
r: 读取权限(read)
w: 写权限(write)
x: 执行权限(execute)
八进制数组合的格式是 [0-7][0-7][0-7] 三位数字组成(每一位数字都是权限之和),第一位是所属者权限之和,第二位是所属组权限之和,第三位其他人权限之和
r 读取权限对应的数字是 4
w 写权限对应的数字是 2
x 执行权限对应的数字是 1
例如读写权限 rw 八进制数表示 6
示例:
# 1. 添加组用户的写权限。
chmod g+w test