文件权限说明
文件权限有四种:可读、可写、可执行、无
文件权限作用对象有三种:拥有者、用户组用户、其他用户
拥有者
:文件拥有者,默认情况下,谁创建的文件拥有者就是谁,例如使用dev用户创建的文件则拥有者为dev用户组用户
:用户组用于多人协作,每个用户都会属于一个用户组,当权限作用在用户组上时对用户组内的所有用户均生效。其他用户
:非拥有者、非用户组内用户视为其他用户。
文件权限的阅读
通过ls -al
命令查看当前目录下的所有文件和目录,并列出详细信息,如图:
第一栏
:文件权限属性第二栏
:链接数(快捷方式数)第三栏
:拥有者用户名第四栏
:用户组名称第五栏
:文件大小第六栏
:最后修改日期或创建时间第七栏
:文件名称
文件权限解读如下:
例如:-rwxr--r--@
,将整串权限属性字符串拆分成
[-]
[rwx]
[r--]
[r--]
[@]
- 第一处为文件类型
-
:表示文件
d
:表示目录
c
:字符设备,如键盘、鼠标等
b
:块设备,如硬盘、光驱等
l
:链接文件
s
:套接字文件 - 第二处为拥有者权限
其中r
表示可读,w
表示可写,x
表示可执行。以上拥有者权限则为可读可写可执行。 - 第三处为用户组权限
其中r
表示可读,-
表示无。以上用户组用户权限则为可读。 - 第四处则为其他用户权限
其中r
表示可读,-
表示无。以上其他用户权限则为可读。 第五处?请指点!!!
以上需要注意的是,读、写、执行三个权限始终按照这样的顺序排列,如果没有对应的权限则使用-
来代替。
文件权限的修改
-
修改文件权限
一、字符修改
字符修改的基本思路是告诉系统程序谁
要增加、删除、修改
什么权限
。这里的“谁”就是权限作用对象,所以首先需要知道文件权限作用对象如何表达:拥有者为u
(即user),用户组用户为g
(即group),其他用户为o
(即other),全部则为a
(即all)。然后增加、删除、修改可以通过 “+” , “-” , “=”来表示,权限则通过"rwx"来表示。系统借助chmod程序
来完成文件权限的修改。那么修改文件权限则可以通过chmod <作用对象><+ | - | =><权限> <文件名称>
来完成,如:
A. 修改1.txt拥有者权限为可读可写可执行:chmod u+rwx 1.txt
B. 取消1.txt拥有者可写权限:chmod u-w 1.txt
C. 设置1.txt拥有者权限为可读:chmod u=r 1.txt
D. 设置1.txt用户组权限为可读可执行:chmod g=rx 1.txt
E. 取消1.txt用户组可写权限:chmod g-w 1.txt
F. 设置1.txt其他用户权限为不可读不可写不可执行:chmod o=-
优势
:可以看出,通过字符修改只需要关注我们需要为什么对象改变什么权限,而不需要关注它原本具备什么权限,更不需要关心别的权限作用对象具备什么权限。(个人观点)
二、数字修改
数字修改的基本思路是通过一个数字来表达三个权限,建立在如何让三个数字混合后得到的数字是唯一的数学问题上,很庆幸这个问题不是太难。文件权限对应的数字分别为:可读4
,可写2
,可执行1
。为什么不是3,2,1?因为如果给定一个权限数3,没法确定是[可读3]还是[可写2+可执行1]权限。那么修改文件权限则可以通过chmod <拥有者权限数><用户组权限数><其他用户权限数> <文件名称>
来完成,如:
A. 修改1.txt拥有者、用户组用户、其他用户权限为可读可写可执行:chmod 777 1.txt
,7=4+2+1表示可读可写可执行。
B. 修改1.txt拥有者权限为可读可写可执行、用户组用户权限为可读、其他用户权限为可读可执行:chmod 745 1.txt
C. 修改1.txt拥有者权限为可读可写、用户组权限为可写、其它用户没有权限:chmod 620 1.txt
探究
:chmod 7 1.txt
chmod 77 1.txt
,权限数不够三位的表达:作用对象从后到前,例如第一句命令表示拥有者和用户组用户均无权限,其他用户拥有可读可写可执行权限。第二句命令表示拥有者无权限,用户组用户和其他用户拥有可读可写可执行权限。
优势
:命令更简洁,如果我们需要同时设置各个对象权限,使用起来比较方便,但没有字符修改那么灵活(个人观点) -
修改文件所属用户组
chgrp <组名> <文件名>
例:chgrp test01 1.txt
注意
:如果组名不存在,将会出现chgrp: invalid group: 'test01'
,此时可以通过groupadd test01
添加用户组,不需要的时候再通过groupdel test01
删除用户组。
思考
:如果设置1.txt的用户组为test01后删除test01。那么1.txt的用户组会变成什么?
经过实践,创建用户组时会给用户组产生一个数字标识,当组被删除后,文件用户组部分会变成这个数字标识。如果新建了用户组得到同样的标识,那么文件用户组部分会变成新建的用户组名称。 -
修改拥有者
(未完待续)