用户和用户组(user & group)
在Linux系统中,所有用户可以被分为三类人:文件拥有者/用户、用户组以及其他人(other)
- 用户可以创建、修改、读取自己的文件,并对文件进行权限管理
- 在同一用户组下的用户可以查看该用户组对应权限的文件
- 对于一个文件来说,除去以上两类人的其他用户都是other
文件权限概念
文件类型权限这一类便展示了该文件的类型以及对应三类人操作该文件的权限:
d r w x r w x r w x
- --------- --------- ---------
user group other
第一位表示文件类型:
- d表示该文件是一个文件夹(director)
-
表示文件是一个普通文件- l 表示文件是一个链接文件(linkfile)
- b则是设备文件中能够存储的周边设备
- c表示是串行端口设备,如鼠标、键盘
后面九位则是三位为一组,对应不同用户身份的权限【other身份不需要展示,排除法得到】。依次是读(read)权限,写(write)权限,执行(execute)权限。当字母显示时,说明该用户身份具有该权限,否则对应权限位置为‘-’
为什么需要权限
- 保护系统,某些文件不能让普通用户读写,只让root用户读写,所以会看到文件类型权限是‘----------’
- 团队开发时需要共享数据,所以诞生了用户组的概念,可以让他人看见“我“的文件内容
- 防止误操作,权限可以一定程度上杜绝用户的误操作,比如A用户一般不能删除/home/B路径下的文件
修改属性与权限
-
chgrp:修改文件所属用户组
-
chown:修改文件拥有者
以上二者的可选项为[-R],即递归修改,但实际使用中,只有root用户可以执行这两个命令。 -
chmod:修改文件权限
有两种方式使用该命令修改文件的权限,数字类型与符号类型
chmod命令
- 数字类型修改
不同权限对应的数字对应如下:
r:4
w:2
x:1
这样编码使得不同权限组合相加的和是唯一的,所以可以通过累加和来表示不同身份的权限。例如当某个文件的权限为:【-rwxr-x—】
owner: rwx=4+3+1=7 | 自
group: r-x=4+0+1=5 | 上
other: ---=0+0+0=0 | 而
\/下
得到该文件的权限数字为:750
则可以执行如下命令,更改[target_file]的权限
$ chmod 750 [target_file]
- 符号类型修改
一句话概括:使用不同的符号表示对不同用户身份(user/group/othrt)增加或移除(+/-/=)权限(r/w/x),详细见下表:
身份 | 操作 | 权限选项 |
---|---|---|
u | +(加入) | r |
g | -(移除) | w |
o | =(设置) | x |
a(所有) |
文件权限与文件夹权限的区别
把二者都看作文件(file),二者权限的本质是一致的,无非是基于系统还是基于文件来说的权限。
- 文件(‘-’为前缀)权限
- r:读这个文件的内容
- w:对这个文件进行增、删、改
- x:执行当前这个文件
- 文件夹(‘d’为前缀)权限【下文的文件均指(普通文件及文件夹)】
- r:读取当前文件夹下的文件
- w:在文件夹下创建、删除文件
- x:进入到文件夹路径
补充内容
缺省权限
在新建一个文件/文件夹时默认就会生成新文件的权限内容,默认的起始权限均为:
directory:777 -> 所有人都能读、能写、能访问
file:666 -> 所有人都能读、能写、但都不能执行
这样所有用户都具有较高的权限,容易产生混乱,因此Linux系统为管理者提供了自定义新文件权限的方法——umask,文件权限掩码。
实际新建文件的权限是由下式计算而来:最终权限=起始权限 & (~umask)。不同的系统中umask的值不同,导致了实际创建的新文件有不同的默认权限。
粘滞位
文件夹权限的存在,使得他人不能轻易访问自己的文件夹,这也产生了一个问题,如果需要协作开发项目,如何多人共享一个文件?Linux系统中,对于文件夹权限还有一种类型:[t],使所有用户都能够访问该文件夹。例如根目录下的/tmp目录
- 粘滞位既可以添加在普通文件上,也能添加在文件夹上。但是一般只添加在文件夹上,用以作为公共文件夹
- 只要有文件夹的写权限,就能增减粘滞位