写入日志文件时拒绝权限

Shw*_*nka 15 django ubuntu uwsgi

我正在使用ubuntu 13.04.我正在使用uwsgisudo service uwsgi start

我在django中配置了日志文件 /home/shwetanka/logs/mysite/mysite.log

但是我收到了这个错误 -

ValueError: Unable to configure handler 'file': [Errno 13] Permission denied: '/home/shwetanka/logs/mysite/mysite.log'
Run Code Online (Sandbox Code Playgroud)

我如何解决它?当我将uwsgi作为sudo运行时,这不应该发生.

Luk*_*uka 28

您需要使用chmod命令修复权限,如下所示:chmod 775 /home/shwetanka/logs/mysite/mysite.log.

查看文件的所有者ls -l /home/shwetanka/logs/mysite/mysite.log并使其可写uwsgi.如果文件不属于uwsgi,则必须使用该chown命令.

查看运行服务的用户名ps aux | grep 'uwsgi'.

如果此时安全性对您不那么重要,请使用即可chmod 777 /home/shwetanka/logs/mysite/mysite.log.但这不是这样做的方式.

最安全的方法是检查文件的所有者和组,然后在必要时更改它们并相应地调整权限.

我们举个例子吧.

如果我有一个文件,/home/shwetanka/logs/mysite/mysite.log命令ls -l /home/shwetanka/logs/mysite/mysite.log提供以下输出:

-rw-rw-r-- 1 shwetanka shwetanka 1089 Aug 26 18:15 /home/shwetanka/logs/mysite/mysite.log
Run Code Online (Sandbox Code Playgroud)

这意味着该文件的所有者是shwetanka,该组也是shwetanka.现在让我们读一下这些rwx位.第一组与文件所有者相关,因此rw-意味着该文件是所有者可读写的,组可读和可写,并且可由其他人读取.您必须确保文件的所有者是尝试向其写入内容的服务,或者该文件属于该服务的组,否则您将收到permission denied错误.

现在,如果我有一个uwsgiUSWGI服务使用的用户名,并希望上述文件可以被该服务写入,我必须更改文件的所有者,如下所示:

chown uwsgi /home/shwetanka/logs/mysite/mysite.log.由于所有者(第一rwx组)的写入位已设置为1,因此该文件现在可由UWSGI服务写入.如有任何其他问题,请发表评论.

  • 谢谢.实际上uwsgi进程是在'www-data'用户下运行的.我用chown更改了用户并且工作正常.无论如何,我将日志文件位置移动到var并给了chmod 775和chown www-data:www-data并且正在工作.再次感谢. (2认同)