文件和目录的权限
简介:用户对一个文件或目录具有访问权限,这些访问权限决定了谁能访问,以及如何范围这些文件和目录。通过设置权限可以限制或允许以下三种用户访问:
- 文件的用户所有者(属主)
- 文件的组群所有者(用户所在组的同组用户)
- 系统中的其他用户
文件和目录和权限简介
为了系统的安全性,Linux对文件和目录赋予了3种属性
- 可读性:对于文件而言,可以读取文件内容;对于目录来说,可以浏览目录
- 可写性:对于文件而言,可以新增、修改文件内容;对于目录来说,可以有删除、移动目录内文件
- 可执行性:对于文件而言,可以执行文件;对于目录来说,其它用户可以进入目录,如果目录没有可执行性,则其它用户不能进入此目录
对应3种属性,Linux文件常用权限分为4种权限
- 可读性权限:用
r
表示;对于文件而言,该用户具有读取文件内容的权限;对于目录来说,该用户具有浏览目录的权限 - 可写性权限:用
w
表示;对于文件而言,该用户具有新增、修改文件内容的权限;对于目录来说,该用户具有删除、移动目录内文件的权限 - 可执行性权限:用
x
表示;对于文件而言,该用户具有执行文件的权限;对于目录来说,其它用户具有进入目录的权限,如果目录没有可执行权限,则其它用户不能进入此目录 - 无权限:用
-
表示,表示具备该权限
###如何查看文件和目录的权限信息
在Linux系统中,使用ls命令
就可以查看文件和目录的权限信息,不带任何参数的ls命令只显示文件名,要想显示文件和目录的权限信息,需要使用使用ls -l
命令来显示文件和目录的详细信息,也可使用ls -al
命令显示全部文件和目录的详细信息
[root@localhost ~]# ls -l /
总用量 16
lrwxrwxrwx. 1 root root 7 11月 20 21:21 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 11月 20 21:29 boot
drwxr-xr-x. 20 root root 3220 12月 3 14:09 dev
drwxr-xr-x. 75 root root 8192 12月 3 01:49 etc
drwxr-xr-x. 3 root root 16 12月 3 00:34 home
lrwxrwxrwx. 1 root root 7 11月 20 21:21 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 11月 20 21:21 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 2 root root 6 4月 11 2018 opt
dr-xr-xr-x. 112 root root 0 12月 3 14:08 proc
dr-xr-x---. 5 root root 190 11月 22 22:22 root
drwxr-xr-x. 25 root root 740 12月 3 14:14 run
lrwxrwxrwx. 1 root root 8 11月 20 21:21 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 12月 3 14:09 sys
drwxrwxrwt. 10 root root 240 12月 3 14:24 tmp
drwxr-xr-x. 13 root root 155 11月 20 21:21 usr
drwxr-xr-x. 19 root root 267 11月 20 21:32 var
第一列显示文档类型与执行权限,由10个字符组成,分为4部分,其中文件权限标志位由3部分组成,如drwxr-xr-x
,如下图所示
- 第一位d表示普通文件
- 接下来的3位
rwx
表示文件属主具有可读可写可执行的权限 - 接下来的3位
r-x
表示与属主属于同一组的用户具有可读可执行权限,不具备可写权限 - 接下来的3位
r-x
表示其它用户具有可读可执行权限,不具备可写权限
###文件和目录的属主和属组
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者
、文件所有者同组用户
和其他用户
来规定了不同的文件访问权限。
对于文件和目录而言,可以划分为3类用户
- 属主用户:文件或目录的所有者
- 属组用户:属主所在的属组的同组用户
- 其它用户:除了属主和属组之外的用户
对于 root 用户来说,一般情况下,文件的权限对其不起作用。
设置文件和目录基本权限
3种权限按照不同方式可以分为字符模式和数字模式
- 字符模式:4种权限可以用r、w、x、-表示,这种方法称为字符模式
- 数字模式:4种权限可以用4、2、1、0表示,这种方法称为数字模式
所以按照模式的不同设置文件和目录基本权限也分为两种,一种是文字设定法设置权限,另一种是数字设定法设置权限
chmod语法
功能说明:
语法
chmod [操作对象] [操作符号] [权限] [文件|目录]
选项及参数
-c
,--changes
:效果类似于-v参数,但仅回报更改的部分-f
,--quiet
,--silent
:不显示错误信息-R
,--recursive
:递归处理,将指定目录下的所有文件及子目录一并处理-v
,--verbose
:显示指令执行过程--help
:在线帮助--reference=<参考文件或目录>
:把指定文件或目录的权限全部设成和参考文件或目录的权限相同--version
:显示版本信息
权限范围的表示法如下
u
:User,即文件或目录的拥有者g
:Group,即文件或目录的所属群组o
:Other,除了文件或目录拥有者或所属群组之外,其它用户皆属于这个范围a
:All,即全部的用户,包括拥有者,所属群组以及其它用户
有关权限代号的部分,列表与下
r
:读取权限,数字代号为4w
:写入权限,数字代号为2x
:执行或切换权限,数字代号为1-
:不具任何权限,数字代号为0s
:特殊功能说明:变更文件或目录的权限
权限操作说明,列表与下
<权限范围>+<权限设置>
:开启权限范围的文件或目录的该项权限设置<权限范围>-<权限设置>
:关闭权限范围的文件或目录的该项权限设置<权限范围>=<权限设置>
:指定权限范围的文件或目录的该项权限设置
简单版说明
部分 | 选项 | 选项含义 |
操作对象 | ||
u | 用户所有者:即文件或目录的所有者 | |
g | 组群所有者:即与文件的用户所有者有相同组群GID的所有用户 | |
o | 其它用户 | |
a | 所有用户:这是系统默认值 | |
操作符号 | ||
+ | 添加权限 | |
- | 取消权限 | |
= | 赋予给定权限并取消原有权限(如果有的话) | |
权限 | ||
r | 读取权限 | |
w | 写入权限 | |
x | 可执行权限 |
文字设定法设置权限
对文件所有者添加权限
[root@localhost ~]# chmod u+w text.txt
对文件所有者取消权限
[root@localhost ~]# chmod u-w text.txt
对文件所有者设置权限
[root@localhost ~]# chmod u=w text.txt
对文件所有者,组群所有者,其它用户添加权限
[root@localhost ~]# chmod u+rwx,g+rx,o+r text.txt
对文件所有者,组群所有者,其它用户取消权限
[root@localhost ~]# chmod u-rwx,g-rx,o-r text.txt
对文件所有者,组群所有者,其它用户设置权限
[root@localhost ~]# chmod u=rwx,g=rx,o=r text.txt
数字设定法设置权限
数字表示法就是将4种权限r、w、x、-分别用4、2、1、0表示,然后再把授予的权限数字相加而成,如下面实例所示
权限数字说明实例
原始权限 | 转换为数字 | 数字表示法 | 说明 |
---|---|---|---|
rwxrwxrwx | (421)(421)(421) | 777 | 用户所有者具有读取、写入、执行权限;组群所有者具有读取、写入、执行权限;其它用户具有读取、写入、执行权限 |
数字及其对应权限
数字表示法虽然简单,但是可读性较差,必须经发换算才能够知道相应的权限设置
数字 | 转换过的数字 | 对应权限 |
---|---|---|
7 | 4+2+1 | rwx |
6 | 4+2+0 | rw- |
5 | 4+0+1 | r-w |
4 | 4+0+0 | r– |
3 | 0+2+1 | -wx |
2 | 0+0+0 | -w- |
1 | 0+0+1 | –x |
0 | 0+0+0 | — |
设置用户所有者拥有读取、写入、执行权限
设置用户所有者拥有读取、写入、执行权限
[root@localhost ~]# chmod 700 text.txt
设置组群所有者拥有读取、写入、执行权限
设置用户所有者拥有读取、写入、执行权限,组群所有者拥有读取、写入、执行权限
[root@localhost ~]# chmod 770 text.txt
设置其它用户拥有读取、写入、执行权限
设置用户所有者拥有读取、写入、执行权限,组群所有者拥有读取、写入、执行权限,其它用户拥有读取、写入、执行权限
[root@localhost ~]# chmod 777 text.txt
##设置文件和目录的特殊权限
在Linux系统中,除了可读性权限``可写性权限``可执行性权限
外,还有三个特殊的权限,分别是SUID、SCID和Sticky
特殊权限简介
用户如果没有特殊的需求,一般不需要启用特殊权限,避免出现安全问题的隐患
特殊权限有以下几种类型
SUID
:对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的用户所有者身份来执行
SGID
:对于一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的组群所有者身份来执行
Sticky
:对文件或目录设置Sticky之后,尽管其他用户有写权限,也必须由文件所有者执行删除和移动等操作
因为SUID、SGID、Sticky占用x(执行权限)的位置来表示,所以在表示上会有大小写之分。假如同时开启执行权限和SUID、SGID、Sticky,则权限表示字符是小写的,如下所示
-rwsr-sr-t 1 root root 4096 8月 16 08:16 text.txt
如果关闭执行权限,则表示字符会变成大写
-rwSr-Sr-T 1 root root 4096 8月 16 08:16 text.txt
文字设定法设置特殊权限
添加SUID特殊权限
[root@localhost ~]# chmod u+s text.txt
删除SGID特殊权限
[root@localhost ~]# chmod g+s text.txt
设置Sticky特殊权限
[root@localhost ~]# chmod o=t text.txt
###数字设定法设置特殊权限
如果要设置特殊权限,就必须使用四位数字才能表示
特殊权限的对应数值如下所示
SUID
:对应数值4SGID
:对应数值2Sticky
:对应数值1
设置SUID特殊权限
[root@localhost ~]# chmod 4000 text.txt
设置SGID特殊权限
[root@localhost ~]# chmod 2000 text.txt
设置Sticky特殊权限
[root@localhost ~]# chmod 1000 text.txt
设置具有SUID、SGID、Sticky权限
[root@localhost ~]# chmod 7000 text.txt