ansible-role-nginx-lego/docs/selinux.md

63 lines
1.3 KiB
Markdown
Raw Normal View History

# selinux
tl;dr nginx wants
```
sudo semanage fcontext -a -t httpd_sys_content_t "/var/acme(/.*)?"
sudo semanage fcontext -a -t httpd_var_run_t "/var/run/nginx.pid"
sudo restorecon -R /var/acme
sudo semanage port -a -t http_port_t -p tcp 4430-4439
```
## File system access
On RedHat 7.9, in order to permit nginx to read `/var/acme`:
```bash
sudo semanage fcontext -a -t httpd_sys_content_t "/var/acme(/.*)?"
sudo restorecon -R /var/acme
```
This is because its in the `` context:
```bash
$ ls -Z /usr/sbin/nginx
-rwxr-xr-x. root root system_u:object_r:httpd_exec_t:s0 /usr/sbin/nginx
```
Also, it needs access to write a PID file:
```
nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
```
That can be added as well:
```
semanage fcontext -a -t httpd_var_run_t "/var/run/nginx.pid"
restorecon -v /var/run/nginx.pid
```
## Network port utilization
```
nginx: [emerg] bind() to 10.100.102.100:4430 failed (13: Permission denied)
```
Another change that was necessary was to permit nginx to listen on an unpriveled port.
```
semanage port -l | grep http_port_t
sudo semanage port -a -t http_port_t -p tcp 4430-4439
```
And proxy_pass also gets blocked:
```
*126 connect() to 127.0.0.1:8083 failed (13: Permission denied) while connecting to upstream
```
Workaround:
```
sudo setsebool -P httpd_can_network_connect 1
```