如何解决Errno 13 Permission denied权限拒绝问题?此前用绝对路径解决现复现
解决Errno 13 Permission Denied 权限问题的实用步骤
嘿,我之前处理过不少这类权限报错,结合你之前用绝对路径解决过类似问题的情况,给你几个针对性的排查和解决步骤,一步步来:
先核查文件与父目录的权限细节
登录服务器后,先跑这条命令看文件的权限和归属:ls -l /home/pep_web/Structure_Descriptor/Input.csv输出会像
-rw-r--r-- 1 root root 4096 Jun 1 14:30 Input.csv,重点看前10位权限位(比如rw-r--r--)和后面的所有者/组(比如root root)。同时别漏了父目录的权限:ls -ld /home/pep_web/Structure_Descriptor/目录必须有**执行权限(x)**才能让进程进入,比如
drwxr-xr-x这种设置才是正常的。确认你的Web服务进程跑在哪个用户下
不同的Web服务查看方式略有不同:- 如果用Gunicorn/uWSGI:
ps aux | grep gunicorn(或uwsgi),看输出第一列的用户名。 - 如果是Apache/Nginx:通常是
www-data、apache或nginx用户。
核心是要确保这个运行用户对Input.csv有读权限(r),对父目录有执行权限(x)。
- 如果用Gunicorn/uWSGI:
调整权限或归属(生产环境谨慎操作)
- 如果文件所有者是root,而Web进程用的是
www-data,可以修改文件归属:sudo chown www-data:www-data /home/pep_web/Structure_Descriptor/Input.csv - 要是暂时想快速验证,也可以临时放宽文件和目录权限(不推荐长期用在生产环境):
sudo chmod o+r /home/pep_web/Structure_Descriptor/Input.csv sudo chmod o+x /home/pep_web/Structure_Descriptor/ - 更规范的做法是把Web用户加入文件所在的组,然后给组设置读权限,比如:
sudo usermod -aG pep_web www-data sudo chmod g+r /home/pep_web/Structure_Descriptor/Input.csv
- 如果文件所有者是root,而Web进程用的是
检查SELinux(针对CentOS/RHEL系服务器)
很多时候权限问题不是Linux文件权限的锅,是SELinux在拦着。可以临时关闭测试:sudo setenforce 0要是这时候你的视图能正常运行了,就需要给目录配置SELinux规则:
sudo semanage fcontext -a -t httpd_sys_content_t "/home/pep_web/Structure_Descriptor(/.*)?" sudo restorecon -Rv /home/pep_web/Structure_Descriptor/配置完记得重新开启SELinux:
sudo setenforce 1最后确认路径和文件存在性
别忽略最基础的点:确保文件真的存在,路径拼写完全正确(Linux路径大小写敏感!),可以用ls /home/pep_web/Structure_Descriptor/Input.csv验证一下,避免是打错了字母或者符号链接失效的问题。
内容的提问来源于stack exchange,提问作者jax
相关产品推荐
相关产品推荐

