Dockerfile切换新用户删除文件时遇Permission denied问题求助
Docker构建Permission Denied问题解决建议
你的Dockerfile内容如下:
FROM ubuntu WORKDIR / RUN touch file1 RUN adduser luffy RUN chown luffy file1 USER luffy RUN rm file1
构建时出现Permission denied错误,核心原因是:普通用户luffy对根目录/没有写入/删除权限。虽然file1的所有者是luffy,但删除文件需要所在目录的写权限,而根目录权限归root所有,因此无法执行rm操作。
方案一:使用普通用户的家目录(推荐,符合最小权限原则)
将操作目录切换到luffy的家目录,普通用户对自己的家目录拥有完全权限:
FROM ubuntu # 先创建用户,切换后自动进入家目录 RUN adduser luffy USER luffy RUN touch file1 RUN rm file1
或者调整目录顺序,确保操作在用户权限范围内:
FROM ubuntu RUN adduser luffy WORKDIR /home/luffy RUN touch file1 RUN chown luffy file1 USER luffy RUN rm file1
方案二:临时切换回root删除文件(不推荐,仅用于特殊场景)
如果必须在根目录操作,可临时切换回root完成删除,再切回普通用户:
FROM ubuntu WORKDIR / RUN touch file1 RUN adduser luffy RUN chown luffy file1 USER luffy # 临时切换root执行删除 USER root RUN rm file1 # 切回普通用户 USER luffy
内容的提问来源于stack exchange,提问作者Ninad Mahure
相关产品推荐
相关产品推荐

