1、概述
- Linux 中,所谓的“权限”就是用户能对文件或目录进行哪些操作(读、写、执行),一个文件或目录规定了什么样的用户权限,用户基于规定的权限进行操作。从一个文件或目录的角度出发,将用户分为了三大类:
1、文件或目录的所有者:简称“u”。默认情况下,文件或目录的创建者就是所有者。所有者是可以被更改的。一个文件或目录的所有者只能有一个。
比如说:在现实中,张三自己购买了一台打印机,正常情况下,张三是这个打印机的所有者。
2、文件或目录的所属组:简称“g”。为了方便对一些文件或目录的操作,可以定义一组用户,这组用户中的每一个用户对某个文件或目录拥有一样的权限。一个文件或目录的所属组只能有一个。
比如说:现实中,张三购买了一台打印机后,他可以决定跟他一个宿舍的其他同学都可以使用这台打印机,所以“同宿舍的其他同学”构成了一个组,这个组对打印机有使用权。
3、文件或目录的其他用户:简称“o”。对一个文件或目录而言,除去所有者、所属组之外的用户都是其他用户。
- root 用户不受限制,即使文件或目录针对所有者、所属组、其他用户规定了什么样的权限,即使 root 用户包含在所有者或所属组或其他用户中,它也不会受到任何约束!
2、权限对文件与目录的作业效果
- 用户“对文件具有
r
权限”与“对目录具有r
权限”的含义是不同的:
要正确理解,就比如说“删除文件”,不是说某个用户对这个文件有了
w
权限就能删除该文件,这个想法是错误的,对文件的w
权限的含义是“可以修改文件内容”,而能否删除这个文件,看用户对其所在的目录是否有w
权限!一般情况下,对于一个目录来说,
r
与x
权限一般是共存的,“想列出目录内容的时候总不能连目录都不让进吧”。
3、更改文件或目录的权限
一个文件或目录的权限只能由其所有者以及 root 用户更改,其他的用户无法更改。
chmod
命令用来更改文件或目录的权限:
第一种方式,使用字母修改权限:
注:下面的命令为任意举例,权限不一定合理;
下面例子中/tmp/test-1
为一个目录。
chmod g+w /tmp/test-1
:给目录/tmp/test-1
的所属组增加w
(写)权限。`
chmod o+w,o+x /tmp/test-1
:给目录/tmp/test-1
的其他用户增加w
(写)和x
(执行)权限。当更改的权限项有多个的时候,使用,
分隔且,
后不允许有空格。
chmod o-w /tmp/test-1
:移除其他用户对目录/tmp/test-1
的w
(写)权限。
chmod u=rw- /tmp/test-1
:将所有者对目录/tmp/test-1
的权限设置为能够读、写,但不能执行。
chmod a-r /tmp/test-1
:移除所有者、所属组、其他用户(即全部用户)对目录/tmp/test-1
的r
(读)权限。
chmod -R o+w /tmp/test-1
:给目录/tmp/test-1
以及该目录下的所有文件和目录的其他用户增加w
(写)权限。
第二种方式,使用数字修改权限:
用数字4
代表r
权限,用数字2
代表w
权限,用数字1
代表x
权限,用数字0
表示-
即没有这项权限。然后,所有者、所属组、其他用户这三类的权限,将由数字和表示。
例如:所有者的权限是rwx
,则可以用数字7
表示,因为;所属组的权限是
r--
,则可以用数字4
表示;其他用户的权限是---
,可以用数字0
表示;最后按照ugo
的顺序排列这些数字,得到740
,即权限rwxr-----
可以表示为740
。
chmod 777 /tmp/test-1
:将目录/tmp/test-1
的权限修改为rwxrwxrwx
。
4、更改文件或目录的所有者
-
chown
命令:改变文件或目录的所有者
只有 root 用户才能使用该命令改变文件或目录的所有者。
文件或目录所有者变更前,拟变更的用户必须存在。
5、更改文件或目录的所属组
-
chgrp
命令:
6、文件或目录的缺省(默认)权限
在创建文件或目录的时候,默认的所有者为其创建者,默认的所属组为其创建者的缺省组。
umask
命令:
-S
选项,可以用r
、w
、x
以字母的形式显示默认的目录的权限。在任何情况下,默认的文件权限会比默认的目录权限中少了
x
,对所有的用户都少了x
。例如:默认的目录权限是u=rwx,g=rx,o=rx
,则默认的文件权限是u=rw,g=r,o=r
不使用
-S
选项的话,直接使用umask
得到输出是一串4位的数字,也表示默认的目录权限。
例如:0022
,这串数字的含义是:
第一位:比较特殊,暂时不解释。
第二位到第四位:通过转换,可以将第二位到第四位转换为使用
chmod
命令时所用的“权限数字表示”。022 -> --- -w- -w-
777 -> rwx rwx rwx
上面字母表示的权限进行一种运算即“任何与-
运算得到的结果是本身、相同之间的运算得到是-
”,所以转换之后,得到rwx r-x r-x
,即默认的目录权限。
- 使用
umask
命令,也可以更改目录或文件的缺省(默认)权限,但不建议!
假设,要将默认的目录权限设置为r-x r-x r-x
,则使用的命令是:umask 222
,这个222
即上述的“第二位到第四位”。