1. 命令概述
- 命令名称:
umask(英文全拼:user file-creation mode mask) - 核心功能:设置创建文件或目录时的默认权限掩码
- 主要用途:控制新创建文件和目录的默认权限
2. 权限掩码原理
- 权限掩码:一个八进制数,用于屏蔽不需要的权限位
- 默认权限:文件 666(rw-rw-rw-),目录 777(rwxrwxrwx)
- 实际权限 = 默认权限 – 权限掩码
3. 语法格式
# 查看当前 umask
umask
# 设置 umask
umask 权限掩码
# 以符号方式显示
umask -S
4. 常用实例详解
(1) 查看当前 umask
# 查看当前 umask(数字形式)
umask
# 输出:0022
# 查看当前 umask(符号形式)
umask -S
# 输出:u=rwx,g=rx,o=rx
(2) 设置 umask
# 设置 umask 为 022
umask 022
# 设置 umask 为 002
umask 002
# 设置 umask 为 077
umask 077
(3) 权限计算示例
# umask 022 时:
文件权限:666 - 022 = 644(rw-r--r--)
目录权限:777 - 022 = 755(rwxr-xr-x)
# umask 002 时:
文件权限:666 - 002 = 664(rw-rw-r--)
目录权限:777 - 002 = 775(rwxrwxr-x)
# umask 077 时:
文件权限:666 - 077 = 600(rw-------)
目录权限:777 - 077 = 700(rwx------)
5. 实际应用场景
场景一:安全权限设置
# 设置严格权限,只允许用户自己访问
umask 077
# 创建文件和目录测试
touch secure_file.txt
mkdir secure_dir
ls -l
# 输出:-rw------- secure_file.txt,drwx------ secure_dir
场景二:团队协作权限
# 设置组可读写权限
umask 002
# 创建文件和目录测试
touch team_file.txt
mkdir team_dir
ls -l
# 输出:-rw-rw-r-- team_file.txt,drwxrwxr-x team_dir
场景三:公共访问权限
# 设置所有用户可读权限
umask 022
# 创建文件和目录测试
touch public_file.txt
mkdir public_dir
ls -l
# 输出:-rw-r--r-- public_file.txt,drwxr-xr-x public_dir
场景四:临时权限设置
# 临时设置 umask 执行特定任务
old_umask=$(umask)
umask 000
touch temp_file.txt
mkdir temp_dir
umask $old_umask
6. 永久设置方法
(1) 用户级别设置
# 编辑用户配置文件
vim ~/.bashrc
# 添加 umask 设置
umask 022
# 使配置生效
source ~/.bashrc
(2) 系统级别设置
# 编辑系统配置文件
sudo vim /etc/profile
# 添加 umask 设置
umask 022
# 使配置生效
source /etc/profile
(3) 特定用户组设置
# 编辑用户组配置文件
sudo vim /etc/bash.bashrc
# 添加 umask 设置
umask 002
7. 注意事项
- 权限计算:umask 是”屏蔽”的权限,不是”设置”的权限
- 文件权限:文件默认没有执行权限(666),目录默认有执行权限(777)
- 执行权限:umask 不会自动添加执行权限,即使掩码对应位为 0
- 符号形式:
umask -S显示的是实际权限,不是掩码值 - 临时生效:直接设置的 umask 只在当前会话有效,退出后恢复默认
8. 常见问题解决
(1) 权限计算错误
# 查看当前 umask
umask
# 输出:0022
# 创建文件测试权限
touch test.txt
ls -l test.txt
# 输出:-rw-r--r-- 644
# 计算:666 - 022 = 644 ✓
(2) 目录权限异常
# 创建目录
mkdir test_dir
ls -ld test_dir
# 输出:drwxr-xr-x 755
# 计算:777 - 022 = 755 ✓
(3) 权限不生效
# 检查当前 umask
umask
# 检查配置文件是否生效
grep umask ~/.bashrc
grep umask /etc/profile
# 重新加载配置文件
source ~/.bashrc
source /etc/profile
(4) 符号形式理解
# 查看符号形式
umask -S
# 输出:u=rwx,g=rx,o=rx
# 对应数字:755(rwxr-xr-x)
# 对应 umask:777 - 755 = 022
核心要点总结:
- umask 作用:控制新创建文件和目录的默认权限
- 权限计算:实际权限 = 默认权限(文件666/目录777) – umask
- 常用值:022(安全)、002(团队协作)、077(严格)
- 查看方式:
umask(数字)、umask -S(符号) - 设置方式:临时设置(当前会话)、永久设置(配置文件)
- 实际应用:安全权限控制、团队协作权限、公共访问权限
- 注意事项:umask 是屏蔽权限,文件默认无执行权限
umask 命令是 Linux 权限管理的基础工具,合理设置可以确保文件安全性和访问控制。