主题
umask
什么是umask?
umask(用户掩码)是一个用于确定新创建的文件和目录权限的四位八进制数字。更具体地说,它定义了默认情况下哪些权限不被授予新创建的文件或目录。因此,umask实际上是一种权限限制器,帮助系统管理员控制用户在创建文件和目录时的默认访问权限。
umask的表示方式
umask值通常以八进制数形式表示,刨除前面一位0,后面三位如022、002等。每个数字分别对应文件或目录的权限位:user(文件所有者)、group(所属组)和others(其他用户)。每个位上的数字减去其自身的值就是相应用户类别能获得的最终权限。
如何查看和设置umask值
查看umask值
要查看当前用户的umask设置,只需在终端输入:
bash
umask1
设置umask值
设置umask值也很简单,直接使用umask命令后跟上希望设置的值即可:
bash
umask 022
# 或者(即第一位可以省略)
umask 00221
2
3
2
3
这会将当前shell会话的umask值设为022。需要注意的是,这个设置仅对当前用户和当前shell会话有效。若要永久更改umask值,可以将上述命令添加到用户的shell配置文件中,如.bashrc或.profile。
umask与文件/目录权限的关系
对文件的影响
对于文件,666-umask即为新建文件的默认权限。
对于文件,Linux默认的最大权限是666(即rw-rw-rw-),应用umask后,将从这些权限中减去umask值,得到实际的默认权限。例如,如果umask为022,则新创建的文件权限将是644(-rw-r--r--)。
对目录的影响
对于目录,777-umask即为新建目录的默认权限
对于目录,默认的最大权限是777(即rwxrwxrwx),同样应用umask规则。但因为目录需要执行权限才能进入,所以即使umask中去除了执行权限,目录的执行权限仍会被保留。例如,umask为022时,新创建的目录权限将是755(drwxr-xr-x)。
永久修改umask值
要永久修改umask值,需要编辑用户的shell配置文件。以下是针对Bash shell的步骤:
打开
**~/.bashrc**文件:针对root用户,/root/.bashrc
针对普通用户,比如csh,/home/csh/.bashrc
使用文本编辑器打开
~/.bashrc文件,例如使用vim:bashvim ~/.bashrc1添加或修改umask设置:
在文件的末尾添加或修改以下行:
bashumask 00221将
0022替换为你想要的umask值。保存并关闭文件:
在vim中,按
Esc键,然后输入:wq并按回车键以保存并退出。重新加载配置文件:
为了让更改立即生效,可以重新加载~/.bashrc文件:
bash
source ~/.bashrc1
或者,你也可以重新启动终端会话。
练习
使用umask命令查看一下当前的umask值
在家目录中新建目录abc,使用ll命令查看abc的权限
在家目录中新建目录123.txt,使用ll命令查看123.txt的权限
使用umask 666命令,修改当前的umask
在家目录中新建目录bcd,使用ll命令查看bcd的权限
在家目录中新建目录234.txt,使用ll命令查看234.txt的权限
新打开一个终端,使用umask命令查看一下当前的umask值又变回了默认的umask
说明umask 666命令只是临时的,重启也会恢复成默认的umask。
根据上面方法修改.bashrc文件永久修改umask
新打开一个终端或者重启测试umask修改是否永久生效?
实践中的应用
了解并合理设置umask值对于维护系统安全和数据保护至关重要。通过限制不必要的写权限,可以减少误操作和恶意修改的风险。在多用户环境中,管理员可能会根据不同的用户角色和需求来调整umask,以确保文件和目录的权限既不过于开放也不过于严格。