Linux的文件权限管理chomd chown chgrp
chomd文件的权限管理
1 | # brian @ DESKTOP-FH09R9R in ~ [16:36:58] |
首先用ls -lh
可以查看所在目录/home/brian
的文件情况:
- 文件
brianfile.txt
属于用户brian
和组brian
- 文件
rootfile.txt
属于用户root
和组root
他们分别的权限都是:-rw-r--r--
我们拆开成4段来看,分别是-
、rw-
、r--
、r--
,他们代表的含义是:
- 第1组:
-
代表是一个文件,如果是文件夹则显示为d
- 第2组:
rw-
表示文件所有者拥有读
、写
权限,如果还有执行权限为rwx
,但是txt文件不需要执行权限,所以默认为-
- 第3组:
r--
代表所在组拥有读
的权限,即brian
组的用户有读
的权限。其他同上。 - 第4组:
r--
代表其他人拥有读
的权限,除用户brian
和brian
组的用户之外,都有读
的权限。其他同上。
我们现在用root
用户,在rootfile.txt
文件里面加入一行文字root user add line
1 | root@DESKTOP-FH09R9R:/home/brian# vim rootfile.txt |
并且查看root
用户所在的组,只有root
查看brian
用户所在的组,只有brian adm dialout cdrom floppy sudo audio dip video plugdev netdev
但是没有root
证明brian
和root
用户不在同一个组里面里面
1 | root@DESKTOP-FH09R9R:/home/brian# groups brian |
chmod 777 写法
现在用root
用操作把rootfile.txt
的权限修改为700,即所有者能读、写、执行。同组的啥权限都没有,其他用户什么权限都没有。
1 | root@DESKTOP-FH09R9R:/home/brian# chmod 700 rootfile.txt |
我们切换到brian
用户,尝试一下能不能读。
返现返回Permission denied
的报错权限被拒绝
1 | root@DESKTOP-FH09R9R:/home/brian# exit |
这里用到的chmod 700 rootfile.txt
是修改文件权限的其中一种写法,必须要由这个问文件的所有者来操作。虽然基础权限只有无
、执行
、写
、读
这4种。但是通过加减可以做到其他新的权限操作。
0:无权限
1:执行
2:写
3:写和执行 = 1 + 2
4:读
5:读和执行 = 1 + 4
6:读和写 = 2 + 4
7:读、写和执行 = 1 + 2 + 4
我们回到root
用户,执行chmod 644 rootfile.txt
,这是时候的rootfile.txt
可以被其他用户读取,即brian
用户应该能读取才对。
使用exit
回到brian
用户,用cat
命令,果然这次能读取出来内容了。
1 | # brian @ DESKTOP-FH09R9R in ~ [17:12:23] C:1 |
如果用brian
用户尝试用vim rootfile.txt
去修改这个文件,就会被告知只有读
的权限,无法修改文件。
chmod o+w 写法
从下面可以看到,在root
用户中对文件rootfile.txt
进行chmod o+w rootfile.txt
就是给这个文件的其他用户加上写
的权限。
1 | # brian @ DESKTOP-FH09R9R in ~ [11:43:13] |
列举的用法如下
1 | chmod u+w rootfile.txt # 为所有者添加写权限 |
1 | chmod o+w rootfile.txt # 为所在组添加写权限 |
1 | chmod o+w rootfile.txt # 为所在组添加写权限 |
这种操作可以一次性处理多个权限类型
1 | root@DESKTOP-FH09R9R:/home/brian# chmod o+rwx rootfile.txt |
briandoc
是一个文件夹,里面有doc1
和doc2
两个文件,文件和文件夹的权限都是drwxr--r--
和-rwxr--r--
- 如果我们用
chmod 777 briandoc
只能把文件夹的权限修改。 - 我们需要用
chmod -R 777 briandoc
才能把文件夹及里面的文件的全部权限都修改了。
1 | # brian @ DESKTOP-FH09R9R in ~ [13:50:21] |
chown的文件所属人和用户改变
如下面root
用户通过chown brian:brian rootfile.txt
命令,把本来属于自己的rootfile.txt
文件给了brian
用户和用户组。
1 | # brian @ DESKTOP-FH09R9R in ~ [13:36:43] |
同样,如果修改的是文件夹和里面的文件,需要用到chown -R briandoc
来操作,不然就只能修改到这个文件夹的权限,里面的文件权限都不会变。
chgrp修改文件所在组
如下文:root
用户通过chgrp brian rootfile.txt
把文件所在的组给了brian
组
1 | root@DESKTOP-FH09R9R:/home/brian# ls -lh |