文件权限基本概念
- Linux一般将文件权限身份分为三种:
owner
、group
、others
- Linux系统默认情况下所有账号信息(包括root)都记录在
/etc/passwd
文件中。个人密码则是记录在/etc/shadow
文件下。群组名称记录在/etc/group
中
Linux文件属性
- 切换至root账户命令:
su root
- 退出root账户命令:
exit
- 查看文件属性命令:
ls -al
或者ll
第1列为权限
第2列为链接,表示有多少文件名链接到此节点(i-node)
第3列为owner
第4列为group
第5列为文件大小
弟6,7,8列为文件修改日期
第9列为文件名
权限列解读
- 权限列第一个字符表示文件类型
- 当为
d
则是目录 - 当为
-
则是文件 - 若是
l
则表示为链接文件 - 若是
b
则表示为设备文件里面的可供储存的周边设备(可随机存取设备); - 若是
c
则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)。
- 权限列后面每3位为一组,且都是
rwx
组合,r
代表可读,w
代表可写,x
表达可执行。 第一组代表owner
的权限,第二组代表group
的权限,第三组代表others
的权限。
例如:
-rw-r--r-- 1 root root 6 May 6 10:38 test.txt
- 第1位为
-
,表示test.txt为一个文件- 第2-4位为
rw-
,表示test.txt的owner对该文件有读写权限,但是没有执行权限- 第5-7位为
r--
,表示test.txt的group成员对该文件只有读权限,没有写和执行权限- 第8-10位为
r--
,表示test.txt的除去owner和group之外的用户对该文件只有读权限,没有写和执行权限
修改文件权限
- 改变文件所属群组:
chgrp [-R] [groupname] [dirname/filename]
-R
表示递归修改所属群组,可以在修改目录所属群组时使用,递归将目录下所有文件的所属群组修改。
groupname
必须是在/etc/group
文件中存在的群组名,否则会报错
- 改变文件所有者:
chown [-R] [ownername] [dirname/filename]
- 还可以直接同时修改owner和group:
chown [-R] [ownername]:[groupname] [dirname/filename]
ownername
必须在/etc/passwd
文件中存在的用户名,否则会报错
- 修改文件权限:
chmod [-R] xyz [dirname/filename]
- Linux系统中给权限分别分配了权值:
r -> 4
、w -> 2
、x -> 1
。上述test.txt文件中owner权限为rw-
,其权值为6,group和others权限都为r--
,权值都为4,故用权值的形式表达test.txt文件为644
- Linux系统分别用
u
、g
、o
符号来代表owner、group、others - 通过权值的方式直接修改文件权限:
上述用
chmod 777 test.txt
之后可以看到test.txt的文件权限变为了-rwxrwxrwx
- 通过符号来
+
、-
给对应用户添加、删除权限
- 使用
chmod u=rw,go=rw test.txt
后,可以看到test.txt文件权限变为-rw-rw-rw-
,说明可以直接使用u|g|o = r|w|x
的方式直接修改文件权限- 使用
chmod u+x,go-w test.txt
后,可以看到test.txt文件权限变为-rwxr--r--
,说明可以直接使用u|g|o +|- r|w|x
的方式直接给指定身份添加或删除文件权限- 使用
chomod a-x test.txt
后,可以看到test.txt文件权限变为-rw-r--r--
,这里a
代表的是所有用户的意思,所以直接将owner、group、others的权限都删去了x权限。
目录与文件权限意义
文件类型 | 内容 | r | w | x |
---|---|---|---|---|
文件 | 详细数据data | 读取文件内容 | 修改文件内容 | 执行文件 |
目录 | 文件名 | 读到文件名 | 修改文件名,以及目录中内容 | 进入目录 |
- 只有对目录有执行权限,才可以进入目录
- 如果对目录没有
r
权限,则即使有x
权限进入了目录,使用ls
命令也是会报permission deny
错误