【问题标题】:permission denied to write into /var/www/ folder写入 /var/www/ 文件夹的权限被拒绝
【发布时间】:2021-10-21 11:27:21
【问题描述】:

我的 python 应用程序正在使用 sentence_transformers 包,它尝试写入我的 ubuntu 系统上的 /var/www/ 目录。

这是它当前显示的错误:

Thu Aug 19 18:33:32.980245 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] mod_wsgi (pid=50371): Failed to exec Python script file '/var/www/html/flaskapp/production.wsgi'.
[Thu Aug 19 18:33:32.980302 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] mod_wsgi (pid=50371): Exception occurred processing WSGI script '/var/www/html/flaskapp/production.wsgi'.
[Thu Aug 19 18:33:32.980465 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396] Traceback (most recent call last):
[Thu Aug 19 18:33:32.980514 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   File "/var/www/html/flaskapp/production.wsgi", line 7, in <module>
[Thu Aug 19 18:33:32.980520 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]     from run_app import app as application
[Thu Aug 19 18:33:32.980531 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   File "/var/www/html/flaskapp/run_app.py", line 4, in <module>
[Thu Aug 19 18:33:32.980536 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]     import utils as helper
[Thu Aug 19 18:33:32.980546 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   File "/var/www/html/flaskapp/utils.py", line 5, in <module>
[Thu Aug 19 18:33:32.980551 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]     model = SentenceTransformer('stsb-roberta-large')
[Thu Aug 19 18:33:32.980561 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   File "/var/www/html/flaskapp/venv/lib/python3.8/site-packages/sentence_transformers/SentenceTransformer.py", line 81, in __init__
[Thu Aug 19 18:33:32.980566 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]     model_path_tmp = snapshot_download(model_name_or_path,
[Thu Aug 19 18:33:32.980577 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   File "/var/www/html/flaskapp/venv/lib/python3.8/site-packages/sentence_transformers/util.py", line 424, in snapshot_download
[Thu Aug 19 18:33:32.980582 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]     os.makedirs(nested_dirname, exist_ok=True)
[Thu Aug 19 18:33:32.980592 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   File "/usr/lib/python3.8/os.py", line 213, in makedirs
[Thu Aug 19 18:33:32.980597 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]     makedirs(head, exist_ok=exist_ok)
[Thu Aug 19 18:33:32.980607 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   File "/usr/lib/python3.8/os.py", line 213, in makedirs
[Thu Aug 19 18:33:32.980611 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]     makedirs(head, exist_ok=exist_ok)
[Thu Aug 19 18:33:32.980621 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   File "/usr/lib/python3.8/os.py", line 213, in makedirs
[Thu Aug 19 18:33:32.980625 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]     makedirs(head, exist_ok=exist_ok)
[Thu Aug 19 18:33:32.980635 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   File "/usr/lib/python3.8/os.py", line 223, in makedirs
[Thu Aug 19 18:33:32.980640 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]     mkdir(name, mode)
[Thu Aug 19 18:33:32.980640 2021] [wsgi:error] [pid 50371:tid 140121496090368] [client 95.138.162.70:43396]   PermissionError: [Errno 13] Permission denied: '/var/www/.cache'

/var/www目录的权限设置:

ubuntu@ip-xxx-xx-xx-xxx:/var$ ls -l
total 48
drwxr-xr-x  3 root root   4096 Aug 18 19:38 www
drwxr-xr-x  2 root root   4096 Aug 19 13:24 backups
drwxr-xr-x 14 root root   4096 Aug 19 11:03 cache
drwxrwxrwt  2 root root   4096 Apr 30 23:25 crash
drwxr-xr-x 39 root root   4096 Aug 18 19:38 lib
drwxrwsr-x  2 root staff  4096 Apr 15  2020 local
lrwxrwxrwx  1 root root      9 Apr 30 23:15 lock -> /run/lock
drwxrwxr-x 10 root syslog 4096 Aug 18 19:38 log
drwxrwsr-x  2 root mail   4096 Apr 30 23:15 mail
drwxr-xr-x  2 root root   4096 Apr 30 23:15 opt
lrwxrwxrwx  1 root root      4 Apr 30 23:15 run -> /run
drwxr-xr-x  6 root root   4096 Apr 30 23:36 snap
drwxr-xr-x  4 root root   4096 Apr 30 23:17 spool
drwxrwxrwt  7 root root   4096 Aug 19 18:11 tmp

chmod 777 设置为/var/www/ 是否理想?

【问题讨论】:

  • chmod 777 从来都不是一个好主意。顺便说一句:这与权限无关,还与这些权限是谁的权限有关!
  • @UlrichEckhardt 所说的:这不是一个好主意,永远不会(除非它是 /tmp 并且设置了粘性位)。我会考虑将运行 uWSGI 应用程序的用户组设为所有者并授予该组写权限。但是,仅当您不打算同时运行多个网站时才适用。如果您执行后者,则在每个应用程序的/var/www 下创建一个子目录并拥有不同的所有权。您可以更细化并创建 .cache 并使其归该组所有。
  • @tink,现在说得通了。但是,我仍然不确定如何授予组写入权限。能否请您指教。
  • 例如touch /var/www/.cache; chgrp www-data /var/www/.cache; chmod g+w /var/www/.cache
  • @tink 谢谢!你的解决方案对我有用!!!

标签: python apache mod-wsgi


【解决方案1】:

不要那样做 (777)。

细化(参见上面的 cmets)。

touch /var/www/.cache
chgrp www-data /var/www/.cache
chmod g+w /var/www/.cache

【讨论】:

    猜你喜欢
    • 2017-10-26
    • 2010-12-01
    • 2019-05-17
    • 1970-01-01
    • 2016-05-03
    • 2015-11-24
    • 1970-01-01
    • 2016-07-02
    • 2012-01-18
    相关资源
    最近更新 更多