文件权限控制对文件的访问。
有三种权限类别可应用:读取、写入和执行。
权限对文件和目录的影响:
权限 | 对文件的影响 | 对目录的影响 |
r读取 | 可以读取文件的内容 | 可以列出目录的内容 |
w写入 | 可以更改文件的内容 | 可以创建或删除目录中任一文件 |
x执行 | 可以作为命令执行文件 | 目录可以成为当前工作目录。 |
ls命令-l选项可显示有关权限和所有权的详细信息。
长列表的第一个字符表示文件类型,d表示文件夹,具体解释如下:
-:常规文件。
d:目录。
l:符号链接。
c:字符设备文件。
b:块设备文件。
p:命名管道文件。
s:本地套接字文件。
第一个root表示文件的所有者,第二个root表示文件的所属组。
chmod命令可从命令行更改文件和目录权限。
符号法:
使用chmod命令修改文件和目录权限。以下示例可以帮助理解chmod的用法:
chmod who/what/which file|directory
who是用户的类,如下表所示。
who | 集合 | 描述 |
u | user | 文件所有者 |
g | group | 文件所属组的成员 |
o | other | 既不是文件所有者也不是文件所属组成员的用户 |
a | all | 所有前面的三组 |
what是修改which的操作符,如下表中所示。
what | 操作 | 描述 |
+ | add | 向文件添加权限 |
- | remove | 从文件删除权限 |
= | set exactly | 精确设置所提供的文件权限 |
which是模式,指定文件或目录的权限,如下表所示。
which | 模式 | 描述 |
r | read | 文件的读取权限。目录的列出权限。 |
w | write | 文件或目录的写入权限 |
x | execute | 文件的执行权限。允许进入目录,以及访问该目录中的文件和子目录。 |
chmod的用法:
chmod [选项] 模式 文件
-R:递归更改文件和目录的权限
给所有者增加执行权限:
[root@localhost ~]# ll file.cfg
-rw-r--r--. 1 root root 0 Jul 12 22:12 file.cfg
[root@localhost ~]# chmod u+x file.cfg
[root@localhost ~]# ll file.cfg
-rwxr--r--. 1 root root 0 Jul 12 22:12 file.cfg
给所属组和其他人增加读权限:
[root@localhost ~]# chmod go+r file.cfg
[root@localhost ~]# ll file.cfg
-rwxr--r--. 1 root root 0 Jul 12 22:12 file.cfg
数字法:
权限位的表示
每个权限位可以使用以下八进制数字来表示:
4:读权限(r) 2^2
2:写权限(w)2^1
1:执行权限(x)2^0
0:无权限(-)
设置文件的权限为rwxr-xr--:
[root@localhost ~]# ll file.cfg
-rwxr--r--. 1 root root 0 Jul 12 22:12 file.cfg
[root@localhost ~]# chmod 754 file.cfg
[root@localhost ~]# ll file.cfg
-rwxr-xr--. 1 root root 0 Jul 12 22:12 file.cfg
用户拥有其创建的文件。默认情况下,新文件的组所有权为创建该文件的主要用户组。
可以使用chown(更改所有者)命令更改文件所有权。
chown [选项] [所有者][:[组]] 文件或目录
常用选项
-c:显示更改的信息。
-f:忽略错误信息。
-R:递归更改指定目录及其子目录和文件的所有者和组。
-v:显示处理的详细信息。
更改文件file.cfg的所有者为user。
[root@localhost ~]# chown user file.cfg
[root@localhost ~]# ll file.cfg
-rw-rw-r--. 1 user root 0 Jul 12 22:12 file.cfg
更改文件所有者和组;
[root@localhost ~]# chown user01:group01 file.txt
[root@localhost ~]# ll file.txt
-rw-r--r--. 1 user01 group01 0 Jul 13 11:54 file.txt
chgrp命令是用于更改文件或目录所属的组的Linux命令。
chgrp [选项] [组] 文件或目录
- -c:显示更改的信息。
- -f:忽略错误信息。
- -R:递归更改指定目录及其子目录和文件的组。
- -v:显示处理的详细信息。
- --reference=RFILE:使用文件RFILE的组作为参考,更改指定文件或目录的组。
更改文件组;
[root@localhost ~]# chgrp user file.txt
[root@localhost ~]# ll file.txt
-rw-r--r--. 1 user01 user 0 Jul 13 11:54 file.txt