Restart Nginx and bind() to 0.0.0.0:8088 failed (13: Permission denied)
First declare: If you do not use SELinux you can skip this article.
The Nginx service is installed on ContOS 7. For the project, you need to modify the default 80 port of Nginx to 8088. After modifying the configuration file, restart the Nginx service and check the log for the following error:
[emerg]
9011#0: bind() to 0.0.0.0:8088 failed (13: Permission denied)
The permission was denied, and I thought that the port was occupied by another program. I checked the active port but no program used this port. The online search said that it requires root privileges, but I am running the root user. This is very depressed, but it is still Give google the answer, because selinux only allows 80,81,443,8008,8009,8443,9000 as the HTTP port.
To view the http port allowed by selinux, you must use the semanage command. First install the semanage command tool first.
Before installing the semanage tool, we first install a tab to complete the secondary command function tool bash-completion:
Yum -y install bash-completion
Semanage found directly through the yum installation found no such package:
yum install semange
…
NO package semanage available.
Then find out which package the semanage command provides for this command.
yum provides semanage
Or use the following command:
yum whatprovides /usr/sbin/semanage
We found that we need to install the package policycoreutils- Python to use the semanage command.
Now that we have installed this package via yum, we can use tabs to complete it:
yum install policycoreutils-python.x86_64
Now that you can finally use semanage, let’s first look at the ports that http allow access to:
semanage port -l | grep http_port_t
Http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
Then we will add the port 8088 to be used in the port list:
semanage port -a -t http_port_t -p tcp 8088
semanage port -l | grep http_port_t
Http_port_t tcp 8088, 80, 81, 443, 488, 8008, 8009, 8443, 9000
Ok, now nginx can use port 8088.
The selinux log is in /var/log/audit/audit.log
But the information recorded in this file is not obvious enough, it is difficult to see, we can use the audit2why and audit2allow tools to view, these two tools are also provided by the policycoreutils-python package.
audit2why < /var/log/audit/audit.log
Collect the logs of the selinux tool, there is another tool setroubleshoot, the corresponding package is setroubleshoot-server
Recent Comments