应设置umask 002使新文件默认664、目录775,并配合SGID位(chmod 2775)确保新建项自动继承父目录所属组;还需chown指定属组、验证ls -ld输出含小写s,且用户属目标组。

您需要在麒麟操作系统中为新创建的文件或子目录设定默认权限规则,避免每次手动 chmod,比如让团队协作目录下所有新建文件自动具备组读写权限、所有新建子目录自动继承 SGID 位。
理解 umask 的作用与查看当前值
umask 不是直接“设置文件夹权限”,而是控制进程创建新文件/目录时的默认权限屏蔽位。它从最大权限(目录777、文件666)中减去对应位,得到实际权限。例如 umask 002 → 目录得 775、文件得 664。
执行 umask 命令即可查看当前 shell 会话的掩码值,输出如 0002。注意:前导零不表示八进制,整个数值就是八进制;若显示 u=rwx,g=rx,o=rx 这类符号形式,说明已启用符号模式,需先运行 umask -S 查看完整映射,再用 umask 002 切回数字模式以便后续操作。
临时修改当前终端会话的 umask
在当前终端窗口中执行:umask 002。
这会让接下来本终端内所有新建文件默认权限为 664(所有者/组可读写,其他用户只读),新建目录为 775(所有者/组可读写执行,其他用户只读执行)。该设置仅对当前 shell 及其子进程生效,关闭终端即失效。
永久设置用户级 umask(推荐)
第一步:编辑用户 shell 配置文件。普通用户执行:nano ~/.bashrc;若使用 zsh,则改 ~/.zshrc。
第二步:在文件末尾新增一行:umask 002。不要加 sudo,否则写入的是 root 的配置文件,对你当前用户无效。
第三步:使配置立即生效:source ~/.bashrc(或 source ~/.zshrc)。此时新开终端或当前终端新建文件均按此掩码生成权限。
【必须确认当前用户主目录归属正确,否则 ~/.bashrc 修改后仍不生效——执行 ls -ld ~,输出第三列应为你的用户名】
系统级全局 umask 设置(慎用)
方法一:修改 /etc/profile.d/umask.sh(若存在)
用 sudo 编辑该文件:sudo nano /etc/profile.d/umask.sh,将其中的 umask 行改为 umask 002。
方法二:修改 /etc/login.defs(影响所有新创建用户)
执行 sudo nano /etc/login.defs,找到 UMASK 行,将其值改为 002。注意:此设置仅对后续新建用户生效,对已有用户不生效。
方法三:修改 /etc/bash.bashrc(影响所有 bash 用户登录会话)
执行 sudo nano /etc/bash.bashrc,在末尾添加 umask 002。该方式最直接,但需重启所有用户会话才完全覆盖。
【修改系统级配置前,请确保已备份原文件,且明确知晓该设置会影响所有普通用户的新建文件权限】
配合 SGID 实现协作目录自动继承组权限
仅设 umask 不足以让新建文件自动归属到目录所属组——还需启用 SGID 位。先确保目标文件夹归属正确:sudo chown :devgroup /path/to/shared。
然后对该文件夹设置 SGID:sudo chmod 2775 /path/to/shared。其中开头的 2 表示 SGID 位,它强制该目录下新建文件/子目录自动继承父目录的所属组。
最后验证:切换到普通用户,在该目录下执行 touch testfile && mkdir testdir && ls -ld testfile testdir,确认 testfile 所属组与父目录一致、testdir 权限含 s 位(如 drwxr-sr-x)。


















