1 文件和目录的归属管理
1.1 查看文件和目录的归属
文件的归属(所有权):
- 属主:拥有该文件或目录的用户账号。
- 属组:拥有该文件或目录的组账号。
使用 ls -l 命令查看文件的属性:
[root@localhost test]# ls -l 1.txt -rw-r--r--. 1 root root 13 2月 10 20:28 1.txt 复制代码
文件的属性分为9列,每列含义如下:
- 第一列:表示文件类型,-属于普通文件。
- 第二列:表示文件的UGO权限。rw-r--r--每三个一组。
rw- :属主的权限;
r-- :属组的权限;
r-- :其他人的权限。 - 第三列:表示ACL表中是否设置了ACL权限。“.” 表示无ACL权限,“+”表示设置了ACL权限。
- 第四列:表示硬链接数。
- 第五列:表示文件的属主。
- 第六列:表示文件的属组。
- 第七列:表示文件的大小,有多少字节。
- 第八列:表示最后一次修改时间。
- 第九列:表示文件名。
网络异常,图片无法展示
|
1.2 设置文件和目录的归属chown、chgrp
chown命令格式:
chown 属主 文件或目录 //修改属主 chown :属组 文件或目录 //修改属组 chown 属主:属组 文件或目录 //修改属主和属组 复制代码
chgrp 属组 文件或目录 //修改属组 复制代码
常用选项:
-R:递归修改指定目录下所有文件、子目录的归属
示例:
1)chown既可以修改属主,也可以修改属组
[root@localhost test]# ls -l 1.txt //查看文件1.txt的归属,属主为root,属组为root组 -rw-r--r--. 1 root root 13 2月 10 20:28 1.txt [root@localhost test]# chown jack:hr 1.txt //将属主修改为jack,属组修改为hr [root@localhost test]# ll 1.txt //查看归属,修改成功 -rw-r--r--. 1 jack hr 13 2月 10 20:28 1.txt 复制代码
2)chgrp 只能修改属组
[root@localhost test]# ls -dl data //查看data目录的归属,属主和属组为都root组 drwxr-xr-x. 2 root root 34 2月 22 15:46 data [root@localhost test]# ls -l data //data目录下的文件,属主和属组都为root 总用量 0 -rw-r--r--. 1 root root 0 2月 22 15:46 f1.txt -rw-r--r--. 1 root root 0 2月 22 15:46 f2.txt [root@localhost test]# chgrp -R hr data //将data目录的属组修改为hr,同时递归修改目录下的所有文件 [root@localhost test]# ls -dl data //查看data目录的属组已变为hr drwxr-xr-x. 2 root hr 34 2月 22 15:46 data [root@localhost test]# ll data //查看data目录下所有文件的属组也都变为hr 总用量 0 -rw-r--r--. 1 root hr 0 2月 22 15:46 f1.txt -rw-r--r--. 1 root hr 0 2月 22 15:46 f2.txt 复制代码
注:
因为chgrp 命令只能修改属组,而chown命令既可修改属主也可修改属组,故实际运用中一般使用chown命令。
2 文件和目录的权限管理
文件的访问权限:
权限类型 | 对文件的影响 | 对目录的影响 |
r (读取) | 可读取文件内容 | 可列出目录内容 |
w (写入) | 可修改文件内容 | 可在目录中新建、移动、删除文件或子目录 |
x (执行) | 可作为程序执行 | 可切换目录 |
网络异常,图片无法展示
|
文件的读、写、执行权限,既可以用字符r、w、x表示,也可以分别表示为八进制数字4、2、1 。
目录的权限需注意:
- 当只有 r 权限时,不能进入该目录,也不能在目录内创建、删除、修改文件。只能通过 “ls 目录路径”查看目录内的文件名称,不能查看文件的属性信息。
- 当只有 w 权限时,不能进入目录,不能列出目录内的文件,也不能在目录内创建、删除、修改文件。必须同时有 x 权限,才能创建、删除、修改目录内的文件。
- 当只有x权限时,只能进入该目录,但不能列出目录内容,也不能创建文件。
- x 权限是目录最基础的权限,没有x权限,其他权限也会受影响。
2.1 基本权限UGO
Linux权限授权,默认是授权给三种角色UGO: user(属主)、group(属组)、other(其他人)。
每个文件的权限基于UGO进行设置。
权限三位一组(rwx),同时授权给三种角色UGO。
权限对象UGO:
- u 属主(user);
- g 属组(group);
- o 其他人(other)。
- a 所有人 all(u+g+o)
2.2 设置文件和目录的权限 chmod
chmod命令格式:
字符形式:
chmod 对象(u/g/o/a)赋值符(+/-/=)权限类型(r/w/x) 文件/目录 “+”号代表增加权限,“-”号代表减少相应权限,“=”号代表覆盖对应的权限。 复制代码
数字形式:
chmod nnn 文件/目录 复制代码
选项:
-R 递归修改知道目录下所有子项的权限
示例:
1)使用字符形式设置权限
[root@localhost ceshi]# chmod u+x file01 //为属主增加执行权限 [root@localhost ceshi]# ls -l file01 -rwxr--r--. 1 root root 87 1月 21 17:37 file01 [root@localhost ceshi]# chmod g=rw file01 //为属组覆盖读写权限 [root@localhost ceshi]# ls -l file01 -rwxrw-r--. 1 root root 87 1月 21 17:37 file01 [root@localhost ceshi]# chmod o-r file01 //去掉其他人的读取权限 [root@localhost ceshi]# ls -l file01 -rwxrw----. 1 root root 87 1月 21 17:37 file01 [root@localhost ceshi]# chmod a+r file01 //为所有人增加读写权限 [root@localhost ceshi]# ls -l file01 -rwxrw-rw-. 1 root root 87 1月 21 17:38 file01 复制代码
2)使用数字形式设置权限
[root@localhost test]# ll 1.txt //查看文权限,属主为读写,属组和其他人只有读权限 -rw-r--r--. 1 jack hr 13 2月 10 20:28 1.txt [root@localhost test]# chmod 666 1.txt //设置属主、属组、其他人的权限都为读和写 [root@localhost test]# ll 1.txt //查看文件权限,所有人都拥有读写权限 -rw-rw-rw-. 1 jack hr 13 2月 10 20:28 1.txt [root@localhost test]# chmod 744 1.txt //设置属主拥有读写执行权限,属组和其他人只拥有读权限 [root@localhost test]# ll 1.txt -rwxr--r--. 1 jack hr 13 2月 10 20:28 1.txt 复制代码
2.3 权限掩码umask
umask作用:
- 控制新建的文件或者目录的权限。
- 默认权限去除umask的权限为新建的文件
umask查看: umask
umask设置: umask 0022
创建新文件和目录时,落地权限计算:
- 系统默认umask为0022(第一个0与特殊权限有关,目前只需要看后三位)。
- 目录的落地权限=0777-0022=0755。目录必须要有执行权限,用户才能访问该目录。
- 文件的落地权限=0666-0022=0644。系统出于安全考虑,创建文件时去掉了所有的执行权限,防止一些不安全的程序文件被错误执行。
示例:
1)将umask设置为0000,创建目录和文件,查看权限。
[root@localhost test]# umask //查看umask,为0022 0022 [root@localhost test]# umask 0000 //将umask设置为0000 [root@localhost test]# umask //查看umask,为0000 0000 [root@localhost test]# mkdir a1 //创建al目录 [root@localhost test]# ls -dl a1 //查看目录权限,所有人都拥有读写执行权限 drwxrwxrwx. 2 root root 6 2月 22 17:51 a1 [root@localhost test]# touch b1.txt //创建b1文件 [root@localhost test]# ll b1.txt //查看目录权限,所有人都只拥有读写权限 -rw-rw-rw-. 1 root root 0 2月 22 17:55 b1.txt 复制代码
2)将umask设置为0011,创建目录和文件,查看权限。
[root@localhost test]# umask 0011 //将umask设置为0011 [root@localhost test]# umask //查看umask,为0011 0011 [root@localhost test]# mkdir a2 //创建a2目录 [root@localhost test]# ls -dl a2 //查看目录权限,属主拥有读写执行权限,属组和其他人拥有读写权限 drwxrw-rw-. 2 root root 6 2月 22 18:00 a2 [root@localhost test]# touch b2.txt //创建b2文件 [root@localhost test]# ll b2.txt //查看文件权限,所有人都只拥有读写权限 -rw-rw-rw-. 1 root root 0 2月 22 18:00 b2.txt 复制代码
注意:
当umask为0011时,创建文件,文件的权限是0666(rw-rw-rw-),而不是0655。
这是因为当umask为0011时,表示减去属组和其他人的执行权限。而创建文件时初始最高权限是0666,UGO三者本身就没有执行权限,无需再减去,所以落地权限为0666。