已解决:这是真的吗?是的。

发布: (2026年2月19日 GMT+8 19:12)
4 分钟阅读
原文: Dev.to

Source: Dev.to

执行摘要

TL;DR:su 后使用 cd 时出现的 Linux “Permission denied” 错误,通常是因为父目录(如 /home)缺少执行 (x) 权限,而不是用户的家目录本身缺少权限。为了解决此问题,只需在父目录上授予遍历权限:

  • 快速修复 – chmod 711 /home(允许遍历但不列出内容)。
  • 安全、生产级修复 – 将组所有权改为专用的管理员组,并设置 chmod 750 /home

在路径中的 所有 目录上都需要执行 (x) 权限才能成功遍历,即使目标目录本身已经拥有完整权限。

问题描述

当服务用户(例如 svc_deploy)在 su 后尝试 cd ~ 时,Shell 可能会返回:

bash: cd: /home/svc_deploy: Permission denied

罪魁祸首往往是父目录 /home。如果 /home 的权限是 700drwx------)且所有者是 root:root,只有 root 能遍历它。即使 /home/svc_deploy 的权限是 755 并且归服务用户所有,用户仍然无法到达该目录,因为无法通过 /home 这扇“锁住的门”。

解决方案

快速修复 – 为所有人授予遍历权限

# 安全、快速,并且比大多数临时修复更符合最小特权原则
sudo chmod 711 /home
  • 效果:
    • 所有者 (root): rwx
    • 组和其他用户: --x(仅执行)

用户可以遍历 /home 以访问他们拥有的子目录,但仍然无法列出 /homels /home 仍会失败)。

安全的基于组的修复

  1. 创建一个管理员组(如有需要):

    sudo groupadd sysadmins
  2. 将你的管理用户添加到该组:

    sudo usermod -aG sysadmins dvance
    # 注销/重新登录或运行 `id` 以验证组成员身份
  3. 更改所有权并设置受限权限:

    sudo chown root:sysadmins /home
    sudo chmod 750 /home
  • 结果:
    • rootsysadmins 组成员可以遍历 /home
    • 所有其他用户被完全阻止。
    • 非管理员用户无法列出目录内容。

较不安全的修复 – 对所有人开放

sudo chmod 755 /home
  • 效果: rwxr-xr-x – 所有人都可以读取和执行。
  • 缺点: 任意用户都可以运行 ls -l /home 并看到所有家目录,泄露用户名。此方式不适用于生产或合规性要求严格的环境。

方法对比

方法命令(s)优点缺点
快速修复chmod 711 /home快速,阻止目录列出,适用于所有非 root 用户。所有非 root 用户均可遍历 /home
永久修复chown root:sysadmins /home; chmod 750 /home最安全,粒度控制,遵循最小特权原则。需要组管理和额外的设置。
彻底方案chmod 755 /home确保所有人都能访问。不安全;通过目录列出暴露所有用户名。

结论

权限是表达意图的手段。确保在需要遍历的路径中的 每个 目录上都设置了执行位 (x)。根据你的安全策略选择合适的修复方案,记录更改,即可恢复正常工作并安心入睡。

原文链接: TechResolve.blog

0 浏览
Back to Blog

相关文章

阅读更多 »

Apex B. OpenClaw,局部嵌入

本地嵌入用于私有记忆搜索。默认情况下,OpenClaw 的 memory search 会将文本发送到外部的 embedding API,通常是 Anthropic 或 OpenAI……

Apex 1. OpenClaw, 供应商历史

从 ChatGPT、Anthropic 和 Google Gemini 导入聊天记录。使用 OpenClaw,你可以做的最强大的事情之一是 bootstrap 你的记忆……