多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # Linux权限详解 Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。这也是Linux有别于Windows的机制,也是基于这个权限机智,Linux可以有效防止病毒自我运行,因为运行的条件是必须要有运行的权限,而这个权限在Linux是用户所赋予的。 <br> Linux的文件权限有以下设定: * Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。 * Linux下权限的属组有 拥有者 、群组 、其它组 三种。每个文件都可以针对这三个属组(粒度),设置不同的rwx(读写执行)权限。 * 通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。 <br> 如果我们要表示一个文件的所有权限详情,有两种方式: * 第一种是十位二进制表示法,(三个属组每个使用二进制位,再加一个最高位共十位),可简化为三位八进制形式 * 另外一种十二位二进制表示法(十二个二进制位),可简化为四位八进制形式 ## 十位权限表示 常见的权限表示形式有: ``` -rw------- (600) 只有拥有者有读写权限。 -rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。 -rwx------ (700) 只有拥有者有读、写、执行权限。 -rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。 -rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。 -rw-rw-rw- (666) 所有用户都有文件读、写权限。 -rwxrwxrwx (777) 所有用户都有读、写、执行权限。 ``` 后九位解析: 我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。 <br> 实际上,后九位每个位置的意义(代表某个属组的某个权限)都是固定的,如果我们将各个位置权限的有无用二进制数 1和 0来代替,则只读、只写、只执行权限,可以用三位二进制数表示为 ``` r-- = 100 -w- = 010 --x = 001 --- = 000 ``` <br> 转换成八进制数,则为 r=4, w=2, x=1, -=0(这也就是用数字设置权限时为何是4代表读,2代表写,1代表执行) <br> 实际上,我们可以将所有的权限用二进制形式表现出来,并进一步转变成八进制数字: ``` rwx = 111 = 7 rw- = 110 = 6 r-x = 101 = 5 r-- = 100 = 4 -wx = 011 = 3 -w- = 010 = 2 --x = 001 = 1 --- = 000 = 0 ``` <br> 由上可以得出,每个属组的所有的权限都可以用一位八进制数表示,每个数字都代表了不同的权限(权值)。如 最高的权限为是7,代表可读,可写,可执行。 <br> 故 如果我们将每个属组的权限都用八进制数表示,则文件的权限可以表示为三位八进制数 ``` -rw------- = 600 -rw-rw-rw- = 666 -rwxrwxrwx = 777 ``` <br> 关于第一位最高位的解释: 上面我们说到了权限表示中后九位的含义,剩下的第一位代表的是文件的类型,类型可以是下面几个中的一个: * d代表的是目录(directroy) * -代表的是文件(regular file) * s代表的是套字文件(socket) * p代表的管道文件(pipe)或命名管道文件(named pipe) * l代表的是符号链接文件(symbolic link) * b代表的是该文件是面向块的设备文件(block-oriented device file) * c代表的是该文件是面向字符的设备文件(charcter-oriented device file) <br> <br> # 目录与文件权限意义 ## 权限对文件的重要性 文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等 * r (read):可读取此文件的实际内容,如读取文本文件的文字内容等; * w (write):可以编辑、新增或者是修改该文件的内容 但不含删除该文件 * x (eXecute) :该文件具有可以被系统执行的权限。 ## 权限对目录的重要性 * r (read contents in directory) 表示具有读取目录结构列表的权限,所以当你具有读取 ( 一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来! * w (modify contents of directory): 这个可写入的权限对目录来说,是很了不起的!这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限因为他表示你具有异动该目录结构列表的权限: * 建立新的建立新的文件文件与目录;与目录; * 删除已经存在的删除已经存在的文件文件与目录与目录((不论该不论该文件文件的权限为何!的权限为何!)) * 将已存在的将已存在的文件文件或目录进行更名;或目录进行更名; * 搬移该目录内的搬移该目录内的文件文件、目录位置。、目录位置。 * x (access directory) 目录的 x 代表的是用户能否进入该目录成为工作目录 的用途 | 组件 | 内容 | 迭代物件 | r | w | x| | --- | --- | --- | --- | --- | --- | | 文件 | 详细资料 data | 文件文件夹 | 读到文件内容 | 修改文件内容 | 执行文件内容 | 目录 | 目录名 | 可分类抽屉 | 读到目录名 | 修改目录名 | 进入该目录的权限 (key) <br> <br> # 参考资料 * [Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)](https://blog.csdn.net/u013197629/article/details/73608613) * 《鸟哥的Linux私房菜-基础篇》第四版