Linux 文件权限
前言
Linux
系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux
系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
Linux 文件属性
在 Linux
中,文件属性是一个字符串,它描述了文件的权限,文件的所有者,文件的所有者组,文件的其他用户的访问权限。
使用 ls -l
命令可以显示文件的属性:
root@emoryhuang:/# ls -l
total 970048
lrwxrwxrwx 1 root root 7 Nov 23 18:08 bin
drwxr-xr-x 18 root root 3880 Jan 12 08:46 dev
drwxr-xr-x 90 root root 4096 Jan 12 18:44 etc
drwxr-xr-x 5 root root 4096 Jan 12 21:29 home
-rw------- 1 root root 993249280 Nov 23 18:08 swapfile
...
可以发现,返回值共有 7 个部分:
权限 | 连结数 | 拥有者 | 用户组 | 文件容量 | 修改时间 | 文件名 |
---|---|---|---|---|---|---|
drwxr-xr-x | 18 | root | root | 3880 | Jan 12 08:46 | dev |
文件类型
每个文件的属性由左边第一部分的 10
个字符来确定, 其中 第 0 位 表示 文件类型。
Linux
中文件可以分为 5
个类型:
字符 | 文件类型 |
---|---|
d | 目录 |
- | 文件 |
l | 符号链接 |
b | 可供储存的接口设备 |
c | 串行端口设备,如键盘、鼠标等 |
用户与用户组
- 文件 拥有者 -
user
- 文件的拥有者所在 用户组 的其他成员 -
group
- 除 拥有者 和 用户组 成员以外的其他用户 -
others
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在 Linux
系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所属组的同组用户和其他用户。
文件权限是相对于这三类用户而言的,不同身份的用户可以具有不同的权限。
权限信息
考虑到用户的身份的不同,同样文件的权限信息也可以分为三类, 以三个为一组, 分别对应 拥有者, 用户组, 其他人 拥有的权限。
对于权限信息 rwxr-xr-x
来说, 拥有者 的权限为 rwx
, 用户组 和 其他人 的权限为 r-x
。
r
, w
, x
分别表示读、写、执行权限。
要注意的是,三个权限的位置不会改变,如果没有权限,就会用 -
字符表示。
改变文件属性与权限
chgrp
: 修改文件所属用户组chown
: 修改文件拥有者chmod
: 改变文件的权限
修改文件所属用户组
代码语言:javascript复制chgrp [-R] 用户组名称 文件或目录
范例: 修改 install.log 所属用户组为 users
root@emoryhuang:/# chgrp users install.log
root@emoryhuang:/# ls -l
-rw-r--r-- 1 root users 68495 Jun 25 08:53 install.log
-R
: 递归更改文件属组, 就是在更改某个目录文件的属组时, 如果加上 -R
的参数,那么该目录下的所有文件的属组都会更改。
修改文件拥有者
代码语言:javascript复制chown [–R] 账号名称 文件或目录
chown [-R] 账号名称:组名 文件或目录
范例: 修改 install.log 拥有者为 bin
root@emoryhuang:/# chown bin install.log
root@emoryhuang:/# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
修改文件权限
数字类型改变文件权限
我们可以使用数字来代表各个权限,各权限的分数对照表如下:
权限 | 分数 |
---|---|
r | 4 |
w | 2 |
x | 1 |
每种身份各自的三个权限分数是需要 累加 的,例如当权限为 rwxrwx---
时,对应的分数为:
user = rwx = 4 2 1 = 7
group = rwx = 4 2 1 = 7
others = --- = 0 0 0 = 0
得到的文件权限数字也就为 770
, 修改权限时就可以使用这个数字完成:
root@emoryhuang:/# ls -l .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
root@emoryhuang:/# chmod 777 .bashrc
root@emoryhuang:/# ls -l .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
符号类型改变文件权限
还有一个改变权限的方法, 使用 u
, g
, o
来代表 user
, group
, others
的权限, a 则代表 all 亦即全部的身份。
命令 | 身份 | 操作 | 权限 | 对象 |
---|---|---|---|---|
chmod | u | (添加) | r | 文件或目录 |
g | - (去除) | w | ||
o | = (设定) | x | ||
a |
范例: 修改 .bashrc 的 user 权限为 rwx, group 和 others 的权限为 r-x
root@emoryhuang:/# chmod u=rwx,go=rx .bashrc
root@emoryhuang:/# ls -l .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
范例: 去除全部人的可执行权限
root@emoryhuang:/# chmod a-x .bashrc
root@emoryhuang:/# ls -al .bashrc
-rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc
参考资料
- Linux 文件权限
- Linux 文件权限概念 - 鸟哥的 Linux 私房菜