- 在Linux系统下,文件的权限与属性,以及文件的拥有者,都是非常重要的概念,本篇文章将详细介绍一下与文件的各种知识
- 在介绍文件之前,先介绍一下一个比较重要的概念:用户与用户组
用户与用户组
1.文件拥有者
- 概念:Linux是多人多任务的系统,因此可能会有很多人来共同使用一台主机。此时,为了考虑到每个人的隐私,这个文件拥有者的角色就十分的重要。就代表该文件属于谁(哪个账户)拥有
2.用户与用户组
- 用户组:用户组就好比一个团队或者是一个小组,里面可以包含很多的成员
- 用户:在指定的用户组内,用户组里面的每一个成员就是一个用户
- 其他人:不属于指定用户组的成员,对于该指定用户组或者用户来说就是其他人
例如:一个class1用户组中有学生:student1,student2,student3。还有一个class2用户组中有学生:student4
- 上面的class1就是一个用户组,student1-3就是class1用户组里面的用户。class2里面的student4对于class1用户组中的用户来说就是其他人
3.特殊身份
- root:Linux系统中的特殊身份,拥有最大的权利,无论什么文件都可操作
4.用户身份与用户组的记录文件
下面为一般默认情况下的存储位置
- 普通用户账号与root账号的信息记录在:/etc/passwd文件中
- 个人密码记录在:/etc/shadow这个文件内
- 所有的组名记录在:/etc/group中
一、文件权限
- 引入:前面的文章,我们提到过三种身份(拥有者,用户组,其他人),每种身份都有三种权限(rwx)
- 文件分为:文件、文件夹。两个不同的权限有着很大的区别,下面我们将详细讲解
1.文件权限
①文件概念:实际包含数据的地方,例如:一般文本文件、数据库文件、二进制可执行文件(binary program)等
②权限:rwx
- r(read):可读取文件的实际内容
- w(write):可以编辑、新增、修改该文件的内容(但不含删除该文件)
- x(eXecute):该文件具有可以被系统执行的权限
③注意
- 在Windows系统下,一个文件是否可以执行是根据文件的后缀名来判断的(例如:.exe,.bat,.com等),但是在Linux下,一个文件是否能被执行,是由文件的x权限决定的
2.目录权限
①目录概念:记录文件名列表(包括文件、子目录)
②权限:rwx
- r:表示具有读取该目录结构列表的权限(可以用ls命令将该目录的内容列举出来)
- w:具有改动该目录结构列表的权限(建立新的文件与目录、删除已经存在的文件或目录(不论该文件的权限是什么),将已存在的文件或目录进行更名、移动该目录内的文件、目录位置)
- x:代表你是否有权限进入该目录内(表示你是否能进入(cd)该目录,使该目录成为你的工作目录)
③注意:目录有很多重要的地方需要注意
- 在目录的w权限中有一个权限很重要,就是:删除已经存在的文件或目录(不论该文件的权限是什么)==>解析:因为该文件或子目录是存在你这个目录下的,即使你不具有对该文件或子目录任何的权限,但你仍然能把它删除(例如:你有一个抽屉,这个抽屉是属于你的,抽屉内有一封闭的文件夹,但是你无法打开这个文件夹进行查看修改等,但是你可以把这个文件夹扔出抽屉(删除))
- 目录的x权限也十分的重要:x代表你是否能进入该目录内,即使目录内有再多的文件与子目录,你没有x权限,也不能进行任何的操作
④举例
- w权限的一个事例:例如在一个拥有者为dongshao的dir目录下有一个文件text(拥有者与用户组都为root,属性为-rwx------),虽然dongshao不能操作此文件,但是因为此文件在dongshao所属的dir目录下,dongshao有权限删除这个文件
- x权限的一个事例:有一个拥有者与用户组都属于root的目录test,属性为:drwxr--r--。我们有一个dongshao的其他用户去进入该目录被决绝(没有x权限进不去),使用ls -l去列出该目录内的内容,可以列出但是显示的都是问号(因为有r权限可以读取,但是权限不足(没有x权限),所以显示的是问号)
二、文件的属性
1.我们下面使用:ls -al 命令列出一组文件进行讲解说明。里面可能会涉及到权限有关的知识,我们会在后面进行讲解
列出文件后,文件的信息被列为7个区域,代表的意思依次为
- [权限] [链接] [拥有者] [用户组] [文件大小] [修改日期] [文件名]
2.区域分解讲解
①区域1:权限
- 权限共有10个字符,格式为:--------
第1个字符代表这个文件是:目录、文件或是链接文件
- d:目录 -:文件 |:链接文件(link file)
- b:设备文件中可供存储的周边设备
- c:设备文件里面的串行端口设备
接下来的9个字符依次被分为三组,均是[rwx]的组合
- 第一组:文件拥有者的权限
- 第二组:加入此用户组其他成员的权限
- 第三组:非本人且没有加入用户组的其他账号的权限
举例:例如下面这个Music文件
- d开头:说明Music是一个目录。
- 第一组为rwx:拥有者可以进行读、写、执行。第二组为r-x:用户组的其他成员可以读、执行,但不可写。第三组为r-x:其他人可以读、执行
- 特殊:如果一个文件的权限为:----------:说明所有人都不能使用,只有root可以操作
②区域2:链接
- 概念:表示有多少文件名链接到此节点。每个文件都会将它的权限与属性记录到文件系统的inode中,不过,我们使用的目录树却是使用文件名来记录,因此每个文件名就会链接到一个inode,这个属性记录的就是有多少不同的文件名链接到相同的一个inode号码
③区域3:拥有者
- 概念:代表该文件的拥有者是谁,拥有者账号
④区域4:用户组
- 概念:表示这个文件的所属用户组
⑤区域5:文件大小
- 概念:代表该文件的大小,默认单位为字节(Bytes)
⑥区域6:修改日期
- 概念:代表该文件最近修改的日期
- 格式:月/日/时间(备注:如果该文件被修改的时间距离现在太久,那么此部分就只显示年份)
- ls -l --full-time:显示完整的时间格式
⑦区域7:文件名
- 概念:此文件的名称
- 备注:Linux系统下面,以.开头的文件为隐藏文件
三、修改用户组:chgrp
1.引入:用于修改一个文件的用户组,被修改的组名必须要在/etc/group的文件中存在才行
2.格式
- chgrp [-R] 用户组名 文件/目录
- -R:递归修改(将子文件/子目录都修改),下同
3.举例:
- 将一个属于dongshao用户组的work目录文件更改为root用户组所有
四、修改拥有者、用户组:chown
1.引入:此命令一般用于修改文件拥有者,用户必须在/etc/passwd这个文件中存在才行。但是,此命令还可以同时修改文件的用户组,我们将在下面介绍
2.格式
- 单独修改文件拥有者:chown [-R] 账号名称 文件/目录
- 同时修改拥有者与用户组方式一:chown [-R] 账号名称:用户组名称 文件/目录
- 同时修改拥有者与用户组方式二:chown [-R] 账号名称.用户组名称 文件/目录 ===>此命令不建议使用,因为很多文件中带有.字符,可容易误判
- 单独修改用户组:chown [-R] .用户组名 文件/目录
3.举例
- 将一个用户与用户组都是root的work目录修改为用户与用户组都是dongshao
五、修改权限:chmod
1.引入
- 文件的权限有三种:读(r)、写(w)、执行(x)
- 修改权限的方式有两种:①数字类型修改 ②符号类型修改
2.数字类型修改
①r、w、x三个权限分别有不同的值:4、2、1
r | 4 |
w | 2 |
x | 1 |
- rwx ===>7
- r-x ===>5
- --- ===>0
②格式
- chmod [-R] 数字组成 文件/目录
③例如
- 一个文件的属性为rwxrwxr-x,如果想修改为rwxr--r--,只使用744组成(chmod 744 work)
3.符号类型修改
①
- 拥有者、用户组、其他人分别有不同的字符代表
u | 代表拥有者 |
g | 代表用户组 |
o | 代表其他人 |
a | 代表三者的结合 |
- 另外上面的字符还拥有运算符进行属性的修改
+ | 加入 |
- | 移除 |
= | 设置 |
②格式
- chmod 字符组成格式 文件/目录
③例如
- chmod u=rwx,go=rx work ===>将work目录的拥有者赋予rwx权限,用户组与其他人赋予rx权限
- chmod u-w work ===>将work目录的拥有者w权限去除
- chmod u+w work ===>新增work目录的拥有者的w权限