umask值决定新建文件和目录的默认权限,通过umask命令查看或临时修改,永久修改需编辑.bashrc等配置文件,其值从默认权限中“屏蔽”相应权限,仅影响新创建的文件和目录,不影响已有文件,可使用八进制或符号模式设置,常用于提升系统安全性。

Linux中,查看和修改用户的umask值,主要涉及到了解umask的作用和使用方法。简单来说,umask决定了新建文件和目录的默认权限。
查看和修改umask值:
查看umask值: 在终端输入
umask
命令即可查看当前用户的umask值。 通常显示的是一个八进制数,例如0022
。修改umask值: 使用
umask XXX
命令修改,XXX代表你希望设置的umask值。 例如,umask 0027
会将umask设置为0027。 请注意,这只会影响当前shell会话,要永久修改,需要修改用户的profile文件。
如何理解umask值?
umask值本质上是一个权限掩码。它用于从默认权限中“拿走”一些权限。Linux中,新建文件的默认权限是666 (rw-rw-rw-),新建目录的默认权限是777 (rwxrwxrwx)。umask值会从这些默认权限中减去相应的权限。
例如,如果umask是0022,意味着:
- 用户权限不受影响 (0)
- 组权限去掉写权限 (2)
- 其他用户权限去掉写权限 (2)
因此,新建的文件权限将是666 - 0022 = 644 (rw-r--r--),新建的目录权限将是777 - 0022 = 755 (rwxr-xr-x)。 这里需要注意的是,计算是按位进行的,不是简单的数字减法。

如何永久修改umask值?
临时修改umask值只影响当前会话。要永久修改,需要编辑用户的profile文件,例如
.bashrc、
.profile或者
/etc/profile(影响所有用户)。
编辑profile文件: 使用文本编辑器打开你选择的profile文件。 例如,
vim ~/.bashrc
。添加umask命令: 在文件末尾添加
umask XXX
,XXX是你希望设置的umask值。保存并退出: 保存文件并退出编辑器。
重新加载profile: 运行
source ~/.bashrc
(或者你修改的profile文件) 使修改生效,或者重新登录。
修改
/etc/profile需要root权限,并且会影响所有用户的默认umask值,所以要谨慎操作。

为什么需要修改umask值?
修改umask值主要出于安全考虑。默认的umask值可能过于宽松,导致新建的文件或目录权限过大,存在安全风险。例如,如果umask是0000,新建的文件默认权限是666,意味着所有用户都可以读取和修改这些文件,这在生产环境中通常是不可接受的。
通过设置合适的umask值,可以限制新建文件和目录的权限,降低安全风险。 例如,将umask设置为0027,可以确保新建的文件只有所有者可以读写,而组和其他用户只能读取,新建的目录只有所有者可以读写执行,组可以读取执行,其他用户只能读取执行。

umask值对已有文件和目录有影响吗?
umask值只影响新建的文件和目录,对已存在的文件和目录没有任何影响。如果需要修改已有文件和目录的权限,需要使用
chmod命令。
例如,要将所有文件的权限设置为644,可以使用
chmod 644 *。 要将所有目录的权限设置为755,可以使用
chmod 755 *。 当然,这需要你有相应的权限。
如何使用八进制以外的格式设置umask?
虽然umask通常使用八进制表示,但也可以使用符号模式。 符号模式更加直观,易于理解。
例如,
umask u=rwx,g=rx,o=rx等价于八进制的
0002。
符号模式中:
u
代表用户g
代表组o
代表其他用户r
代表读权限w
代表写权限x
代表执行权限+
代表添加权限-
代表移除权限=
代表设置权限
不过,直接使用符号模式设置umask并不常见,因为八进制更简洁。










