簡體   English   中英

獲取 chown():從 ini 文件運行 uwsgi 時不允許操作

[英]Getting chown(): Operation not permitted while running uwsgi from ini file

我正在嘗試運行 nginx 和 uwsgi。 當我嘗試使用 proj 用戶在我的 proj 虛擬環境中使用以下命令運行 uwsgi 時,出現錯誤。 當我運行 uwsgi 時,我看到在proj.sock中創建了/run/uwsgi/proj.sock我將/run/uwsgi drwxrwxrwx權限更改為drwxrwxrwx以查看問題是否與權限相關。 但是問題還是出現了。 我還檢查了/etc/passwd並且沒有 uwsgi 用戶。

/run/uwsgi的目錄信息是:

drwxrwxrwx   2 root           root             60 Jul 16 10:53 uwsgi

當我嘗試將 proj 用戶的 sock 文件的所有權更改為 proj 虛擬環境中的 proj:nginx 時,出現以下錯誤。

chown: changing ownership of ‘/run/uwsgi/proj.sock’: Operation not permitted

當我檢查/run/uwsgi/proj.sock文件時,它是proj:proj但它應該更改為proj:nginx 這個操作可以用root手動完成。 但不能用 proj 用戶完成。

運行以下命令:

uwsgi --ini /etc/uwsgi/sites/proj.ini

錯誤 :

[uWSGI] getting INI configuration from /etc/uwsgi/sites/proj.ini<br>
*** Starting uWSGI 2.0.15 (64bit) on [Mon Jul 16 10:53:02 2018] ***<br>
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-28) on 13 July 2018 17:12:50<br>
os: Linux-3.10.0-862.6.3.el7.x86_64 #1 SMP Tue Jun 26 16:32:21 UTC 2018<br>
nodename: localhost.localdomain<br>
machine: x86_64<br>
clock source: unix<br>
detected number of CPU cores: 2<br>
current working directory: /home/proj<br>
detected binary path: /home/proj/Env/proj/bin/uwsgi<br>
!!! no internal routing support, rebuild with pcre support !!!<br>
chdir() to /home/proj/work/proj<br>
your processes number limit is 4096<br>
your memory page size is 4096 bytes<br>
detected max file descriptor number: 1024<br>
lock engine: pthread robust mutexes<br>
thunder lock: disabled (you can enable it with --thunder-lock)<br>
chown(): Operation not permitted [core/utils.c line 2623]<br>
VACUUM WARNING: unix socket /run/uwsgi/proj.sock changed inode. Skip removal

我用於proj.ini ini 配置的proj.ini文件是:

[uwsgi]
py-autoreload = 2
project = proj
username = proj
base = /home/%(username)
chdir = %(base)/%(project)
home = %(base)/Env/%(project)
module = %(project).wsgi:application
master = true
processes = %k
uid = %(username)
socket = /run/uwsgi/%(project).sock
chown-socket = %(username):nginx
chmod-socket = 666
vacuum = true
#logto = /var/log/uwsgi/%(project).log

用戶只能將文件的組設置為他所在的組。在這種情況下,您的用戶proj不在nginx組中,因此不允許進行更改。 如果您將用戶添加到nginx組(並重新登錄),那么它應該可以工作。

此外,將目錄權限設置為777允許任何用戶在該目錄中創建和刪除文件,而套接字的666允許任何用戶訪問它。 你可能不想那樣。 更合理的做法是讓/run/uwsgi由 root:nginx 擁有,模式為770 ,並且chmod-socket = 660在您的項目中。

我解決了這個問題。 套接字文件位於/run/uwsgi目錄中。

我賦予相關項目用戶在此文件夾上寫入讀取執行的權限。

setfacl -m u:projuser:rwx /run/uwsgi/

正如“ivbtar”所建議的,我剛剛從 uwsgi.ini 文件中刪除了以下幾行,然后它就開始工作了,

chown-socket = %(username):nginx
chmod-socket = 666

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM