logo头像
Snippet 博客主题

linux系统中文件权限

在linux系统下,一切皆为文件。

我们先执行一下ls -l命令

1
2
3
[root@centos7g home]# ls -l
total 0
drwx------ 4 qiantang sonargroup 214 Jun 18 18:36 sonar

最左边的drwx------就代表 sonar的权限。

那么这些权限都代表什么意思呢?

第一位代表文件类型

1
2
3
d:是英语directory的缩写,表示“目录”。就是说这是一个目录。
l:是英语link的缩写,表示“链接”。就是说这是一个链接。
-:代表普通文件。

剩余还有9位,分为三组,依次代表文件所有者的权限、群组用户的权限、其他用户的权限。
每组又分为3位。

1
2
3
r:是英语read的缩写,表示“读”。就是说可以读这个文件。
w:是英语write的缩写,表示“写”。就是说可以写这个文件,也就是可以修改。
x:是英语execute的缩写,表示“执行,运行”。就是说可以运行这个文件。

举个栗子:

1
-rwxr-xr-x sonar sonargroup a.txt

还是分成4部分:

1
2
3
4
-: 代表a.txt是一个普通文件
rwx: 代表文件所有者(sonar用户)对文件有读、写、执行权限。
r-x: 代表文件所在组(sonargroup组)中的用户有读、执行权限。
r-x: 代表其他用户有读、执行权限。

那么文件的权限是如何设置的呢?

chmod命令

使用命令chmod来设置文件权限。(具体可以使用chmod --help来查看使用方法)

1
chmod 765 a.txt
1
2
ls -l
-rwxrw-r-x sonar sonargroup a.txt

a.txt的权限已经被改变了。

其实Linux系统对每种权限分配了对应的数字。

1
2
3
4
权限 数字
r 4
w 2
x 1

所以chmod 744 a.txt代表了赋予了(4+2+1)(4+2)(4+1)权限,即(rwx)(wx-)(r-x)

另外,还可以直接用字母来设置权限。

需要用到的参数:

1
2
3
4
u:user的缩写,是英语“用户”的意思。表示所有者。
g:group的缩写,是英语“群组”的意思。表示群组用户。
o:other的缩写,是英语“其他”的意思。表示其他用户。
a:all的缩写,是英语“所有”的意思。表示所有用户。
1
2
3
+:加号,表示添加权限。
-:减号,表示去除权限。
=:等号,表示分配权限(会覆盖原有的权限)。

使用例子:

1
2
3
4
5
6
7
8
9
10
#先清空所有权限
chmod =- a.txt
# 给文件所有者添加读、写、执行权限
chmod u+rwx a.txt
# 给文件所在组用户添加读、执行权限。
chmod g+rx a.txt
# 给其他用户赋予读权限(会覆盖原有权限)
chmod o=r a.txt
# 上面三个操作一次完成
chmod u+rwx,g+rw,o=r a.txt

文件的所有者和群组是如何改变的呢?

chown 命令

使用chown命令来改变文件的所有者和群组。(使用chown --help查看具体使用方法)

1
Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...

Examples:

1
2
3
chown root /u        Change the owner of /u to "root".
chown root:staff /u Likewise, but also change its group to "staff".
chown -hR root /u Change the owner of /u and subfiles to "root".

chgrp命令

chgrp命令用于改变文件的群组。

1
chgrp groupname a.txt
微信打赏

赞赏是不耍流氓的鼓励