Linux 文件权限
amandakelake opened this issue · 0 comments
一、使用者与群组
Linux是个多人多任务的系统,经常会有多个人同时使用这部主机来进行工作的情况,所以需要给每个人一个使用者身份(用户),身份直接跟文件权限关联
在Linux里面,文件的权限跟使用者身份有关,关于使用者有3个概念
* 文件拥有者
* 群组
* 其他人(非本群组成员)
关于群组,用的最多的应该是在团队开发资源的情况下,不同团队之间的资源权限分配
二、Linux文件权限
我们直接看第一列,是个10位的东西,是关于文件权限的,让我们来拆一下,分为四部分
先看第一部分,档案类型,认得d
和-
基本就够了
* d
目录
* -
文件
* l
连接档(link file)
* b
装置文件里面的可供储存的接口设备(可随机存取装置)
* c
装置文件里面的串行端口设备,例如键盘、鼠标
后面三部分类似,分部代表不同使用者的权限,我们把几个字母拆开来看
* r
可读,read
* w
可写, write
* x
可执行, execute
* 如果是目录,一定要有该权限才能进入,否则有了r也只能查询,不能cd
进入
* 跟文件后缀名是否可执行没有任何关系,跟window下的后缀不一样
-
代表无该权限
然后我们设置或者更改权限的时候,会按照二进制转八进制的读法,还是按照上面的例子,我们只读后面三部分
如果该位是-
,填二进制的0,有字母就是1
每隔3位读一个数字,从二进制转8进制
111
-> 7
101
-> 5
所以,上面这个例子的权限就是755
再简单一点,读4,写2,执行1,需要什么权限就加起来得到权限数字
三类用户*三类权限 = 9种基本权限
让俺再造一个例子来加深理解
-rw-r--r-- [连接数] root root [容量] [时间] file1
-rwxr-xr-- [连接数] user1 group1 [容量] [时间] file2
drwxr-xr-- [连接数] user2 group1 [容量] [时间] dir1
- 文件
file1
的拥有者是root
,所属群组是root
,权限644
- 只有
root
账号拥有读写权限,不可执行;其他组和其他人只有读的权限
- 只有
- 文件
file2
的拥有者是user1
,所属群组是group1
,权限754
user1
可读可写可执行该文件- 同
group1
群组下的user2
、user3
等用户,可读可执行,但不可写(不可修改) - 非
group1
群组下的,亦即其他人,只能读,不可写和执行
- 目录
dir1
的拥有者是user2
,所属群组是group1
,权限754
user2
可以在本目录进行任何操作- 同
group1
群组下的其他账号,可进入该目录,可读可执行,但不能写 - 其他组的账号,虽然有
r
读权限,但是由于没有x
执行权限,也就是无法进入该目录,只能简单查一下该目录下有啥
对于目录来说,最大权限是777
对于文件来说,最大权限是666
,对所有用户读写权限全开
另外,在Linux系统中,root
用户是神,拥有任何权限,所以一般人都不会以root目录来进行日常操作,避免误删一些系统文件等操作,严重会直接导致机器瘫痪
修改文件/目录权限与所属
* `chmod` 改变文件的权限
* `chown` 改变文件拥有者
* `chgrp` 改变文件所属群组
首先是chmod
,我们直接看最常用的修改法
# 修改文件权限
# -R可选 递归 该目录下所有的文件/目录都一起更改
chmod [-R] [权限数字] [文件/目录]
# 修改文件拥有者
# 用户必须是已经存在系统中的账号 存在/etc/passwd中
chown [-R] [账号:组名] [目录/文件]
# 修改所属群组
# 群组必须是已经存在系统中的群组 存在/etc/group
chgrp [-R] [新的群组] [目录/文件]