文件访问权限的相关设置方法
chmod 功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式
① 用户表示符+/-=权限字符
- +:向权限范围增加权限代号所表示的权限
- -:向权限范围取消权限代号所表示的权限
- =:向权限范围赋予权限代号所表示的权限
用户符号:
- u:拥有者
- g:拥有者同组用
- o:其它用户
- a:所有用户
# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
# chmod a=x /home/abc.txt
②三位
8
进制数字:
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt
# chmod 777 /home/abc.txt
# chmod 665 /home/abc.txt
chown
功能
:修改文件的拥有者
格式
:
chown [
参数
]
用户名 文件名
# chown user f1
# chown -R user filegroup1
chgrp
功能
:修改文件或目录的所属组
格式
:
chgrp [
参数
]
用户组名 文件名
常用选项
:
-R
递归修改文件或目录的所属组
目录的权限
- 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
- 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
- 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
这里存在一个问题,就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。
[yuan@VM_0_12_centos ~]$ mkdir fortest
[yuan@VM_0_12_centos ~]$ sudo chown root:root fortest
[yuan@VM_0_12_centos ~]$ ll
drwxrwxrwt 2 root root 4096 Sep 9 18:18 fortest
[yuan@VM_0_12_centos ~]$ chmod 0777 fortest
[yuan@VM_0_12_centos ~]$ ls -ld fortest/
drwxrwxrwt 2 root root 4096 Sep 9 18:18 fortest/
[yuan@VM_0_12_centos ~]$ cd fortest/
[yuan@VM_0_12_centos fortest]$ touch test.c
[yuan@VM_0_12_centos fortest]$ ll
total 0
-rw-rw-r-- 1 yuan yuan 0 Sep 9 18:20 test.c
[yuan@VM_0_12_centos fortest]$ sudo touch test_root.c
[yuan@VM_0_12_centos fortest]$ ll
total 0
-rw-rw-r-- 1 yuan yuan 0 Sep 9 18:20 test.c //普通用户的
-rw-r--r-- 1 root root 0 Sep 9 18:20 test_root.c //超级用户的
[yuan@VM_0_12_centos fortest]$ whoami
yuan
[yuan@VM_0_12_centos fortest]$ rm test_root.c //普通用户删除root的文件
rm: remove write-protected regular empty file ‘test_root.c’? y
[yuan@VM_0_12_centos fortest]$ ls //删除成功
test.c
为了解决这个不科学的问题, Linux引入了粘滞位的概念,这个之后再说。
总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
- 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。