And did you do anything to configure SELinux to allow httpd access as logs 
point out is the problem?

BTW, giving write access to others, ie.,

    -rwxrwxrwx. 1 apache apache  4 Apr 26 20:35 openme

is bad security practice.

It actually looks like you did 'chmod -r 0777 .' You should never blindly give 
rwx permissions recursively to directories as it changes permissions on files 
to stuff they don't need.

What I suggest you do if you are just starting out is to not configure your 
system Apache at all. Instead use mod_wsgi-express and run it on a non 
privileged port out of your own home directory.

https://pypi.org/project/mod-wsgi/ <https://pypi.org/project/mod-wsgi/>
http://blog.dscpl.com.au/2015/04/introducing-modwsgi-express.html 
<http://blog.dscpl.com.au/2015/04/introducing-modwsgi-express.html>

Worry about using system Apache much later when you actually have a need to 
permanently deploy it and must use system Apache.

Graham

> On 27 Apr 2020, at 12:51 pm, Mike Archbold <[email protected]> wrote:
> 
> Hi,
> 
> I have tried to understand the prior problems -- sorry, I can't figure it out 
> from the priors. I'm a newbie to mod_wsgi and Apache trying to create a 
> python server. I'm self-taught but totally stuck... thanks guys, at a dead 
> end. It is something I am clueless about.
> 
> ---------------------------------------
> 
> *** This is the guts of the config.d file:
> 
> 
> Listen 80
> <VirtualHost *:80>
>     DocumentRoot "/var/www/jsss/html"    
>     ServerName localhost:80
>     
>     
>     WSGIDaemonProcess jsss processes=1 threads=1 display-name=%{GROUP} 
> user=apache group=apache
>     WSGIProcessGroup jsss
>     
>     WSGIScriptAlias / /var/www/jsss/jsss.wsgi
> 
>     <Directory /var/www/jsss/>        
>             Options All
>             Require all granted
>     </Directory>
> 
> 
> 
> </VirtualHost>
> 
> ---------------------------------------------------------------
> 
> ***  This is my main program, a single line, called from Apache, jsss_wsgi:
> 
> 
>              from jsss_flask_rest import app as application
> 
> ---------------------------------------------------------------
> 
> *** this is the jsss_flask_rest program called from the single line jsss_wsgi:
> 
> 
> from flask import Flask, request
> from flask_restful import Resource, Api
> import subprocess
> import sys
> import base64
> import os
> import getpass
> 
> app = Flask(__name__)
> api = Api(app)
> 
> class jsss(Resource):
>         def get(self):
>         
>         f = open("/var/www/jsss/openme","r+")         <<<--- dies right here
>         
>         username = getpass.getuser()
>     
>         stdout_data = username
>         
>         return {"output>": stdout_data}
> 
> 
> api.add_resource(jsss, '/jsss')
> 
> if __name__ == '__main__':
>     app.run
> 
> ---------------------------------------------------------------
> 
> *** these are the permissions I set up for the test "openme" file. The apache 
> should have read access to root.
> 
> -rwxrwxrwx. 1 apache apache  4 Apr 26 20:35 openme
> 
> 
> ---------------------------------------------------------------
> 
> *** error from apache:
> 
> File "/usr/lib64/python3.6/site-packages/jsss_flask_rest.py", line 17, in get
> [Sun Apr 26 22:01:31.063590 2020] [wsgi:error] [pid 14886:tid 
> 140318833870592] [remote ::1:37856]     f = open("/var/www/jsss/openme","r+")
> [Sun Apr 26 22:01:31.063592 2020] [wsgi:error] [pid 14886:tid 
> 140318833870592] [remote ::1:37856] PermissionError: [Errno 13] Permission 
> denied: '/var/www/jsss/openme'
> 
> -----------------------------------------------------------
> 
> *** error from Linux:
> 
> 22:01:34 setroubleshootd: SELinux is preventing /usr/sbin/httpd from write 
> access on the file openme.
> 
> *****  Plugin httpd_write_content (92.2 confidence) suggests   ***************
> 
> If you want to allow httpd to have write access on the openme file
> Then you need to change the label on 'openme'
> Do
> # semanage fcontext -a -t httpd_sys_rw_content_t 'openme'
> # restorecon -v 'openme'
> 
> *****  Plugin catchall_boolean (7.83 confidence) suggests   ******************
> 
> If you want to allow httpd to unified
> Then you must tell SELinux about this by enabling the 'httpd_unified' boolean.
> 
> Do
> setsebool -P httpd_unified 1
> 
> *****  Plugin catchall (1.41 confidence) suggests   **************************
> 
> If you believe that httpd should be allowed write access on the openme file 
> by default.
> Then you should report this as a bug.
> You can generate a local policy module to allow this access.
> Do
> allow this access for now by executing:
> # ausearch -c 'httpd' --raw | audit2allow -M my-httpd
> # semodule -X 300 -i my-httpd.pp
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "modwsgi" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/modwsgi/902c645a-05ca-4dc3-9f0c-51786ea3a668%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/modwsgi/902c645a-05ca-4dc3-9f0c-51786ea3a668%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/modwsgi/01AD31BA-9BCB-4986-B4F9-A4E85127847D%40gmail.com.

Reply via email to