LINUX.ORG.RU

Почему httpd_log_t? Это же не файл лога. Попробуй заменить на httpd_var_run_t. Ну и покажи

ls -alZ /run/uwsgi

Ivan_qrt ★★★★★
()

/run монтируется в tmpfs и /run/uwsgi каждый раз пересоздаётся?
Что говорит ls -Z /run/uwsgi и ls -Z /run/uwsgi/myapp.sock ?
По идее должно быть что-то типа:
-rw-r--r--. root root system_u:object_r:httpd_var_run_t:s0

как решить проблему?

Вместо uwsgi_pass unix:/tmp/uwsgi.socket; использовать uwsgi_pass localhost:9000;
C tcp сокетами такой проблемы нет.

imul ★★★★★
()
Ответ на: комментарий от Ivan_qrt

ls -alZ /run/uwsgi

drwxr-xr-x. uwsgi uwsgi system_u:object_r:httpd_var_run_t:s0 . drwxr-xr-x. root root system_u:object_r:var_run_t:s0 .. srwxr-xr-x. uwsgi uwsgi system_u:object_r:httpd_var_run_t:s0 stats.sock -rw-r--r--. root root system_u:object_r:httpd_var_run_t:s0 uwsgi.pid srwxrwxrwx. uwsgi uwsgi system_u:object_r:httpd_var_run_t:s0 myapp.sock

iYaroslav
() автор топика
Ответ на: комментарий от imul

Вместо uwsgi_pass unix:/tmp/uwsgi.socket; использовать uwsgi_pass localhost:9000;

Спасибо! работает, но хотелось бы решить проблему

iYaroslav
() автор топика
Ответ на: комментарий от iYaroslav

Спасибо! работает, но хотелось бы решить проблему

проблема с SELinux (комментарий)
Пиши правило для сокета, или выноси сокет за пределы tmpfs, чтобы не приходилось пересоздавать контекст каждый раз.
А что не так с tcp сокетом? Почему такое желание привязаться к файлу? Быстрее не будет. Безопаснее тоже.

imul ★★★★★
()
Ответ на: комментарий от imul

или выноси сокет за пределы tmpfs, чтобы не приходилось пересоздавать контекст каждый раз.

/home/yaroslav/pyvenv/s/myapp.sock такая же проблема

А что не так с tcp сокетом? Почему такое желание привязаться к файлу? Быстрее не будет. Безопаснее тоже.

на хабре видел совет не использовать tcp сокет. только файловый

iYaroslav
() автор топика
Ответ на: комментарий от iYaroslav

drwxr-xr-x. uwsgi uwsgi system_u:object_r:httpd_var_run_t:s0 .
drwxr-xr-x. root root system_u:object_r:var_run_t:s0 ..
srwxr-xr-x. uwsgi uwsgi system_u:object_r:httpd_var_run_t:s0 stats.sock
-rw-r--r--. root root system_u:object_r:httpd_var_run_t:s0 uwsgi.pid
srwxrwxrwx. uwsgi uwsgi system_u:object_r:httpd_var_run_t:s0 myapp.sock

Так с selinux для myapp.sock у тебя полный порядок. Проблемы у процесса, который хочет стучаться в myapp.sock. Для него надо правило сделать через audit2allow и добавить в /etc/selinux/targeted/modules/active/modules.

imul ★★★★★
()
Ответ на: комментарий от iYaroslav

/home/yaroslav/pyvenv/s/myapp.sock такая же проблема

посмотри ls -Z /home/yaroslav/pyvenv/s/myapp.sock
сильно удивишься
ну и плюс посмотри файл аудита, что там пишется, когда происходит обращение к сокету.

на хабре видел совет не использовать tcp сокет. только файловый

это когда-то было актуально, без selinux, поскольку позволяло накладывать ещё и ограничения доступа через юниксовые rwx+user:group
С selinux абсолютно пофиг, тем более на 127.0.0.1
Удалось сделать правило с помощью audit2allow?

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от imul

Удалось сделать правило с помощью audit2allow?

да

 $ grep nginx /var/log/audit/audit.log | audit2allow -M mypol
$ semodule -i mypol.pp

насколько этот способ правильный? тру админы также делают?

iYaroslav
() автор топика
Ответ на: комментарий от iYaroslav

насколько этот способ правильный?

это штатный способ
теперь работает с uwsgi_pass unix:/run/uwsgi/myapp.sock; ?

Кстати, какие права и владелец:группа у /run/uwsgi ?
А то srwxrwxrwx на /run/uwsgi/myapp.sock как-то совсем по колхозному.

imul ★★★★★
()
Ответ на: комментарий от imul

теперь работает с uwsgi_pass unix:/run/uwsgi/myapp.sock; ?

да

Кстати, какие права и владелец:группа у /run/uwsgi ?

uwsgi:uwsgi

А то srwxrwxrwx на /run/uwsgi/myapp.sock как-то совсем по колхозному.

это только для тестового сервера

imul, большое вам спасибо за помощь

iYaroslav
() автор топика
Ответ на: комментарий от iYaroslav

uwsgi:uwsgi

а процесс nginx запускается как nginx:nginx?
Лучше конечно на каталог /run/uwsgi сделать srwxrwx... и владельца nginx:nginx. В настройках модуля наверняка где-то указывается. Иначе зачем делать именно файловый сокет по советам Ъ-админов с хабра, а потом его открывать всем на чтение и запись. Хотя конечно selinux спасёт в этом случае, но как я уже написал раньше именно такой вариант ничем не лучше и не безопаснее tcp сокета.

большое вам спасибо за помощь

на самом деле тебе ответ правильный дали ещё во втором комментарии, а я так, score набивал. :D

imul ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.