对于系统中的用户及用户组有权限的限制,同样系统中各种文件也有其相应的权限。文件权限是系统最底层安全设定的方法,它限制了用户及用户组对文件的使用权利,只允许用户做相应操作。那么系统是怎样实现对权限的分配和管理的?
一、文件和目录的属性
- 查看文件和目录的属性
ls -l file 用来查看文件的属性,我们用 ls -l 查看目录属性,发现查到的是该目录中的子目录。这时我们可以用 ls -ld test 查看目录的属性。 - 文件和目录属性各部分的含义
d | rwxr-xr-x | 2 |root | root | 6 | Mar 31 08:20 | test
(1)d 表示文件的类型
使用 file file/dir 命令可以查看文件或目录的类型 ,以下几种是常用的类型
- l 快捷方式 (软连接)
- d 目录
- " - " 纯文本或空文件
- b 块设备
- c 字符设备
- s 套接字 程序的一扇窗,可进入程序的内部,并进行交互
- p 管道设备
(2) rwxr-xr-x 文件权限设定
文件的权限有三种,分别是读、写和执行;而对于文件面向的用户也有三种,分别是文件所有人(u)、所属组(g)和其他用户(o)。
- u:文件拥有者可以做什么操作
- g:文件所有组可以做什么操作
- o:其他人对文件可以做什么操作
(3)一个数字
- 对文件:文件内容被记录的次数(文件硬连接个数)
- 对目录:目录中子目录的个数
(4)文件的所有人
(5)文件的所有组
(6)一个数字
- 对文件:文件的大小
- 对目录:目录中子文件元数据的大小
(7)文件内容被修改的时间
(8)文件或目录的名称
二、所有人和所有组的更改
- 更改所有人
chown username file|dir ##改变文件/目录所有人
chown user:group file|dir ##改变所有人和所有组,user和group之间也可以用"."
chown -R user:group dir ##改变该目录及子目录的所有人和所有组
2. 更改所有组
chgrp groupname file|dir ##改变所有组
chgrp -R group dir ##改变该目录下及子目录下的所有组
注意:在使用chgrp username test 时,我们会发现只有该目录发生改变,该目录下的所有文件的所属组均未改变。因此我们可以利用 -R ,对目录下的文件一改到底。
三、权限的更改
- 认识权限
(1)读 r
对文件:是否可以查看文件中的内容
对目录:是否可以查看目录中有什么子文件或子目录
(2)写 w
对文件:是否可以改变文件里面记录的字符
对目录:是否可以对目录中子目录或子文件的元数据进行更改(元数据是指数据的属性)
(3)执行 x
对文件:是否可以通过文件名称调用文件内记录的程序
对目录:是否可以进入目录 - 权限更改的方式
(1)chmod更改权限
chmod (o|g|u)+rwx file|dir ##赋予权力
chmod (o|g|u)-rwx file|dir ##撤销权力
chmod ug-r file|dir ##撤销所有人和所有组读的权利
chmod +r file|dir ##更改所有位
chmod -r file|dir
chmod +x file|dir
chmod -x file|dir
chmod +w file|dir ##只对所有人赋予权限
chmod o=r-x file|dir
chmod -R o=rw dir ##改变该目录下子目录的权限
(2)umask更改权限
umask 系统建立文件是默认保留的权利
umask 077 ##临时设定系统预留权限为077
注意:umask只是临时修改权限的,退出terminal后权限未改变
(3)永久设置用户的权限
vim /etc/profile ##修改系统文件中的umask
vim /etc/bashrc ##修改shell配置文件中的umask
source /etc/profile ##让更改立即生效
source /etc/bashrc
注意:在执行完以上命令后,新建文件并查看它的权限,发现并未更改,我们需要使用sudo命令来告诉系统该用户具备这样的权限。