商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > 如何在Linux中设置具体的用户家目录权限

如何在Linux中设置具体的用户家目录权限

  发布于2026-08-15 阅读(0)

扫一扫,手机访问

chmod 700 /home/username仅修复现有家目录权限,但新创建的文件(默认644)和子目录(默认755)仍可能被他人读取,必须配合umask 077才能确保所有新建内容默认私有。

如何在Linux中设置具体的用户家目录权限

家目录权限设成 700 是最常见且安全的选择,但直接 chmod 700 /home/username 只能解决已有目录的权限问题;真正要让新创建的文件、子目录也保持私有,必须配合 umask 调整,默认值 022 会生成不安全的 755 目录和 644 文件。

为什么 chmod 700 /home/username 不够用

家目录本身权限设为 700 确实能阻止其他用户进入或列出内容,但问题出在后续行为:用户在自己家目录下新建的文件默认是 644、新建目录默认是 755(当 umask022 时)。这意味着别人仍可能读取你的配置文件(如 ~/.bash_history)、日志或临时文件。这不是“家目录没锁好”,而是“钥匙链没管住”。

  • chmod 700 只影响目标目录本身,不递归,也不影响未来创建的内容
  • 普通用户无法对 /home/username 执行 chmod -R(可能因权限不足失败),且递归修改已有内容风险高(比如改坏 ~/.ssh700 会导致 SSH 拒绝登录)
  • 很多发行版(如 Ubuntu)默认用 umask 022,它对所有 shell 会话生效,覆盖单次 chmod

如何永久设置家目录新建内容的默认权限

真正要紧的,不是事后把权限改一遍,而是让系统在一开始就别生成过于开放的权限。这个动作通常靠 umask 来完成,它会在用户登录时由 shell 的初始化脚本载入。配置的优先级顺序是:/etc/login.defs(新用户)→ /etc/profile/etc/bash.bashrc(所有用户)→ ~/.bashrc(仅当前用户)。

  • 若只想改单个用户:编辑 ~/.bashrc,末尾加一行 umask 077,然后执行 source ~/.bashrc
  • 若要全局生效(所有新老用户):在 /etc/profile 末尾添加 umask 077,注意不要放在 if [ -n "$PS1" ]; then 块内,否则非交互式 shell 不生效
  • 验证是否生效:新开终端,运行 umask,应输出 0077;再建个测试目录 mkdir test && ls -ld test,权限应为 drwx------(即 700

chown 和 chgrp 通常不需要动家目录所有权

一般情况下,用户按正常方式创建出来后,家目录的属主就是这个用户本人,所属组也会默认对应同名组。比如用户 alice,它的家目录通常就是 alice:alice。只要没有手动用 chown 改过,或者在创建用户时通过 useradd -g othergroup 指定了别的主组,通常就没必要再去动 chownchgrp

  • 错误操作示例:sudo chown root:root /home/alice —— 这会让 alice 自己都进不去家目录
  • 如果确实需要把某个子目录(如 ~/public_html)共享给 Web 服务,应该只改那个子目录,而不是整个家目录:chmod 755 ~/public_html,并确保其父目录至少保留 x 权限(即 701 或更高)
  • 注意:~/.ssh 必须是 700~/.ssh/authorized_keys 必须是 600,用 umask 077 后这些会自然满足;但若之前已存在宽松权限文件,需单独修复

容易被忽略的细节:login.defs 和 systemd-user 的干扰

有些系统(尤其是使用 systemd 的发行版)会绕过 /etc/profile,从 /etc/login.defs 读取 UMASK 值来初始化新用户的 umask。而 systemd --user 服务可能有自己的环境,不加载 shell 配置。

  • 检查 /etc/login.defs 中是否有 UMASK 行,如有且值为 022,建议改为 077(影响未来新建用户)
  • 如果用户通过图形界面(GNOME/KDE)登录,shell 配置可能不自动加载,此时需确认桌面环境是否读取 ~/.profile~/.pam_environment
  • getent passwd username 查看用户实际家目录路径,避免误操作软链接或挂载点(如 /home 单独挂载时,/home/username 可能不在根文件系统上)
本文转载于:https://www.php.cn/faq/2988230.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注