在用户家目录的 ~/.bashrc 文件末尾添加 umask 命令可实现每次启动交互式 shell 时自动应用自定义默认权限,但需先确认 shell 类型(如 bash 改 ~/.bashrc,zsh 改 ~/.zshrc),设置 umask 002/007/077 对应不同权限策略,执行 source ~/.bashrc 生效并验证,注意 SSH 登录 shell 优先读 ~/.profile,cron 等环境不加载 ~/.bashrc,且语法严禁写成 umask=002。

直接在用户家目录的 ~/.bashrc 文件末尾添加 umask 命令,就能让该用户每次启动交互式 shell(比如新开终端)时自动应用自定义默认权限。这是最常用、最轻量的单用户权限控制方式。
确认用户使用的 shell 类型
不是所有用户都用 bash,先查清再操作,避免配置无效:
- 运行
grep ^用户名 /etc/passwd(把“用户名”换成实际账号),看最后一列是/bin/bash、/bin/zsh还是其他 - 如果是 bash,改
~/.bashrc;如果是 zsh,应改~/.zshrc;若为 dash 或其他 shell,则需对应调整
编辑 ~/.bashrc 并写入 umask
用文本编辑器打开文件,在末尾新增一行,不要加空格或注释符号干扰解析:
- 允许同组用户协作:写
umask 002→ 新建目录为 775,文件为 664 - 仅限用户和所属组访问:写
umask 007→ 目录 770,文件 660 - 严格隔离(推荐安全场景):写
umask 077→ 目录 700,文件 600
使配置立即生效并验证
改完不重启也能马上测试,但要注意生效范围:
- 执行
source ~/.bashrc,当前终端即刻加载新 umask - 运行
umask查看输出值是否匹配所设数字(如 0002 或 0077) - 创建测试项:
touch testfile && mkdir testdir,再用ls -ld testdir testfile检查权限是否符合预期
注意几个常见陷阱
~/.bashrc 只影响非登录式交互 shell(例如图形界面里点开的终端),某些场景下可能不触发:
- SSH 直连默认走登录 shell,优先读
~/.profile,建议同时在~/.profile里也加同一行 umask(更稳妥) - 如果用户用 cron 或 systemd 定时任务,它们不加载
~/.bashrc,需在脚本开头显式声明umask 002 - 别在
~/.bashrc里写成umask=002(少了空格或多了等号会报错)

















