1. chmod 改变已有目录或文件的权限
chmod 设置已有目录或文件的权限。可以为指定范围的用户添加或删除权限。
权限范围的表示法如下:
- u:User,即文件或目录的拥有者;
- g:Group,即文件或目录的所属群组;
- o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
- a:All,即全部的用户,包含拥有者,所属群组以及其他用户;
权限设置如下:
- r:读取权限,数字代号为“4”;
- w:写入权限,数字代号为“2”;
- x:执行或切换权限,数字代号为“1”;
- -:不具任何权限,数字代号为“0”;
- s:特殊功能说明:变更文件或目录的权限。
语法:
chmod [选项] 权限模式 文件
选项:
-
-f
或--quiet
或--silent
:不显示错误信息; -
-R
或--recursive
:递归处理,将指令目录下的所有文件及子目录一并处理; -
-v
或--verbose
:显示指令执行过程; -
--reference=<参考文件或目录>
:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同; -
+
:开启权限范围的文件或目录的该选项权限设置; -
-
:关闭权限范围的文件或目录的该选项权限设置; -
=
:指定权限范围的文件或目录的该选项权限设置;
示例:
chmod u+x,g+w file // 所有者添加可执行权限,同组用户添加可写入权限
chmod u=rwx,g=rw,o=r file
chmod 764 file
chmod a+x file //对文件的 u,g,o 都设置可执行属性
2. umask 设置用户创建目录或文件时的默认权限
默认情况下的 umask 值是 022。
与 chmod 相反,umask 用来设置限制新建目录或文件的权限掩码,用于指定在新目录或文件的默认权限中删除哪些权限。当创建新目录或文件时,默认的初始权限由权限掩码决定。用户每次登陆系统时都会自动执行 umask 命令,并自动设置权限掩码来限制新文件的权限。可以手动执行 umask 命令来改变默认值。
设置掩码时,文件和目录的可执行权限有所区别。文件基数为 666,目录为 777,即文件无法设置可执行位,目录可设可执行位。所以 033 效果与 022 一样,假设使用 033 掩码进行设置,则真实权限应为 633 即 rw- r-x r-x
,但前提规定文件不生成 x 位,所以文件的权限最终将以 rw-r--r--
出现。因此建立的文件默认权限是 644,建立的目录的默认权限是 755。
语法:
umask [选项] [权限掩码]
选项:
-
-p
:输出的权限掩码可直接作为指令来执行; -
-S
:以符号方式输出权限掩码。
示例:
将新文件和目录的默认权限就为 642,753:
umask 024
下面的两个命令创建相同作用的掩码,取消组用户的写权限,其他用户的读、写和执行权限:
umask u=, g=w, o=rwx
或
umask 027
上面的命令执行以后,对于下面创建的新文件,其文件主的权限未做任何改变,而组用户没有写权限,其他用户的所有权限都被取消。
查看当前权限掩码:
[root@VM_120_242_centos ~]# umask
0022
[root@VM_120_242_centos ~]# umask -S
u=rwx,g=rx,o=rx
umask 一般在 /etc/profile
、~/.bash_profile
或 ~/.profile
中设置,由于 profile 的读取有一定的顺序: /etc/profile
-> ~/.profile
-> ~/.bash_profile
,所以在 .profile
里面设置的 umask 会被后面的 profile 覆盖,推荐设置在 ~/.bash_profile
[root@VM_120_242_centos ~]# cat /etc/profile
...
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
else
umask 022
fi
...