Linux系统为多用户系统,分为三种不同类型的用户:
1. 所有者(User): 文件的拥有者,即创建文件的用户。
2. 同组用户(Group): 与所有者同一组的用户。
3. 其他用户(Others): 除了所有者和同组用户外的其他用户。
一、查看文件属性和权限
Linux系统下,文件的权限有三种: 读、写、执行。
查看文件的权限(和文件的其他属性)
ls -al #隐藏文件(文件名或目录名第一个字符为 . 的文件)也会显示
第一列即为该文件的类型和权限,总共有10个字符位:
第 1 个字符位:表示文件的类型, d 表示目录; - 表示文件; l 表示链接文件; b 表示块设备文件,如硬盘;
c 表示字符设备文件; p 表示命名管道文件; s 表示套接字文件。常见的也就目录 d 和文件 -
第2-4个字符位:表示所有者的权限,分别为读(r)、写(w)、执行(x),- 表示没有该权限
第5-7个字符位:表示同组用户的权限,分别为读(r)、写(w)、执行(x)
第8-10个字符位:表示其他用户的权限,分别为读(r)、写(w)、执行(x)
二、改变文件属性和权限
1. chgrp:即 change group 的简写。改变文件所属群组。
chgrp [-R] groupname dirname/filename
# -R 表示递归该目录下的所有子目录和文件
例子:修改文件test.py的所属组为 users,该组名不存在则报错
chgrp users test.py
2. chown:即change owner 的简写。改变文件所有者,此外,还可以顺便修改所属组。
chown [-R] ownername dirname/filename
例子:修改文件test.py的所有者为 delav
chown delav test.py
#顺便修改所属组为root
chown delav:root test.py
3. chmod:改变文件权限
第一种方法:使用数字
chmod [-R] xyz dirname/filename
Linux文件的基本权限有9个,分别是 user/group/others 三种身份拥有各自的 read/write/execute 权限。
这三种权限可以使用数字来表示:
read: 4
write: 2
execute: 1
当使用数字来表示权限时,每一种身份各自的权限数字代表需要累加,最大数字为 7 。
例如:
user = rwx = 4+2+1 = 7 group = r-x = 4+0+1 = 5 others = --- = 0+0+0 = 0
改变文件test.py的权限为上面的,即为
chmod 750 test.py
第二种方法:使用字符
三种身份 user/group/others 使用字符表示:
user: u
group: g
others : o
all : a (全部身份)
三种权限 read/write/execute 使用字符表示:
read: r
write: w
execute: x
例如:
设置文件test.py的权限为 750
chmod u=rwx,g=rx,o=--- test.py
或
chmod u=rwx,g=rx,o-rwx test.py
设置文件test.py的权限为 755
chmod w=rwx,go=rx
把所有的执行权限去除,增加群组的写权限
chmod u-x,g+w test.py
把所有人的写权限去除
chmod a-w test.py
三、目录和文件的权限意义
对于文件,rwx是针对【文件的内容】来设计权限。
read(r):可读取文件的实际内容
write(w):可修改文件内容
execute(x):可被系统执行
对于目录,rwx是针对【目录内的文件名列表】来设计权限。
read(r):可读取目录的文件列表,即查询该目录下的文件名数据
write(w):可在该目录下新建文件或目录;可删除该目录下文件或目录;可重命名该目录下的文件或目录;可移该目录下的文件或目录
execute(x):可进入该目录进行操作