You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu无法cd进入/etc/letsencrypt/live目录提示Permission denied

问题根因

两个核心逻辑没搞清楚:

  1. sudo权限不是登录就默认生效的:只有你在命令前显式加sudo调用时,才会临时提权到root执行对应操作,日常普通操作走的还是你当前账号的权限,不会自动带root权限。
  2. 目录的访问权限规则:能在上级目录看到某个文件夹的条目,只需要上级目录有读权限;但要cd进入这个文件夹,必须当前操作的用户对该文件夹拥有执行(x)权限。

Certbot(签发Let's Encrypt证书的官方工具)默认会将/etc/letsencrypt全目录权限设为700(rwx------),属主属组均为root,普通用户对这个目录没有任何读写执行权限,所以直接cd会报权限拒绝。你能看到这个目录存在,只是因为上级/etc目录默认对所有用户开放了读+执行权限,允许你列出/etc下的文件/文件夹名而已,不代表你有权限访问这个文件夹内部。

解决方案

根据你的使用场景选对应方案即可:

  • 临时操作(推荐,安全性最高)
    因为cd是shell内置命令,无法直接通过sudo cd提权进入,两种常用操作方式:
    • 直接提权执行你需要的操作,不需要cd进目录,比如查看live目录下内容、读取证书文件:
      # 列出live目录下所有内容
      sudo ls -l /etc/letsencrypt/live
      # 读取指定证书内容
      sudo cat /etc/letsencrypt/live/你的域名/cert.pem
      
    • 临时切换到root shell操作,操作完成输入exit即可退回普通用户:
      sudo -i
      cd /etc/letsencrypt/live
      # 后续正常操作即可
      exit
      
  • 长期给普通用户开放访问权限(强烈不推荐生产环境使用)
    目录内存储的证书私钥属于高敏感信息,放开权限后可能被恶意程序窃取,导致HTTPS流量被解密、站点被仿冒。如果是本地测试环境确实需要,可以用ACL给指定用户授予权限:
    # 安装acl工具
    sudo apt update && sudo apt install -y acl
    # 递归给当前用户授予/etc/letsencrypt下的读+执行权限(X是大写,只会给目录加执行权限,不会给文件乱加)
    sudo setfacl -R -m u:$USER:rX /etc/letsencrypt/
    
    执行完后当前普通用户就可以直接cd进入对应目录,不需要加sudo。

内容的提问来源于stack exchange,提问作者gabogabans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:51:19