chmod | 改变文件或目录权限。 |
---|---|
chown | 改变文件或目录的属主和属组。 |
chgrp | 更改文件用户组。 |
umask | 显示或设置权限掩码。 |
chmod命令
chmod命令:改变文件或目录权限。
格式:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
参数:
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;
<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;
<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;
例子:
# 创建文件,默认是644
[root@xxx ~]# vim 1.txt
[root@xxx ~]# ls -l 1.txt
-rw-r--r--. 1 root root 6 Jul 19 05:26 1.txt
# 修改文件为可运行
[root@xxx ~]# chmod u+x 1.txt
[root@xxx ~]# ls -l 1.txt
-rwxr--r--. 1 root root 6 Jul 19 05:26 1.txt
# 多个修改用逗号隔开
[root@xxx ~]# chmod u+x,g+w 1.txt
[root@xxx ~]# ls -l 1.txt
-rwxrw-r--. 1 root root 6 Jul 19 05:26 1.txt
chown命令
chown命令:改变文件或目录的属主和属组。
格式:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
参数:
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。
例子:
# 递归修改文件夹的属主为boy
[root@xxx ~]# chown -R boy boy/
[root@xxx ~]# ls -l
total 114168
-rwxrw-r--. 1 root root 6 Jul 19 05:26 1.txt
-rw-------. 1 root root 1220 Jun 1 07:56 anaconda-ks.cfg
drwxr-xr-x. 2 boy root 19 Jul 19 05:30 boy
-rw-r--r--. 1 root root 11203874 Jul 18 20:06 etc.tar.gz
-rw-r--r--. 1 root root 105684753 Jul 13 00:55 mongodb-linux-x86_64-rhel70-4.0.10.tgz
-rw-r--r--. 1 root root 1049 Jul 18 02:16 pwd
-rw-------. 1 root root 1903 Jul 19 01:13 sent
chgrp命令
chgrp命令:用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。
格式:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
参数:
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
例子:
# 修改文件的属组为boy
[root@xxx ~]# chgrp -R boy boy/
[root@xxx ~]# ls -l
total 114168
-rwxrw-r--. 1 root root 6 Jul 19 05:26 1.txt
-rw-------. 1 root root 1220 Jun 1 07:56 anaconda-ks.cfg
drwxr-xr-x. 2 boy boy 19 Jul 19 05:30 boy
-rw-r--r--. 1 root root 11203874 Jul 18 20:06 etc.tar.gz
-rw-r--r--. 1 root root 105684753 Jul 13 00:55 mongodb-linux-x86_64-rhel70-4.0.10.tgz
-rw-r--r--. 1 root root 1049 Jul 18 02:16 pwd
-rw-------. 1 root root 1903 Jul 19 01:13 sent
umask命令
umask命令:用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。
参数:
-p:输出的权限掩码可直接作为指令来执行;
-S:以符号方式输出权限掩码。
工作原理:
在linux中,一个普通文件的默认权限值是666,文件夹的是777。当创建一个文件或文件夹时,内核会调用默认值“减去”umask值,去得出新文件的权限。
这个列表展示的是umask中每个数字对应的文件或文件夹的权限:
umask数字值 | 默认的文件权限 | 默认的文件夹权限 |
---|---|---|
0 | rw | rwx |
1 | rw | rw |
2 | r | rx |
3 | r | r |
4 | w | wx |
5 | w | w |
6 | x | x |
7 | (no permission allowed) | (no permission allowed) |
例子:
# 默认umask
[root@xxx ~]# umask
0022
[root@xxx ~]# umask -S
u=rx,g=rx,o=rx
# 修改umask
[root@xxx ~]# umask 444
[root@xxx ~]# umask
0444
# 新建文件权限为666-444
[root@xxx ~]# vim test2
[root@xxx ~]# ls -l test2
--w--w--w-. 1 root root 7 Jul 19 05:40 test2
#新建文件夹权限为777-444
[root@xxx ~]# ls -l
d-wx-wx-wx. 2 root root 6 Jul 19 05:47 test6