I have an iptables script I want to run at boot.
I created /etc/rc.d/rc.local file with CHMOD 755 permissions which have worked on previous operating systems.
Root owns the file.
I also have #!/bin/bash as the first line.
I have also tried #!/bin/sh
I have also added a 5 second sleep thinking maybe something needs to finish.
I have temporarily disabled selinux to eliminate that as a cause.
The rc.local file looks like this:
#!/bin/bash
sleep 5
/usr/local/sbin/miniptables
The miniptables file is also owned by root, chmod 755, starts with #!/bin/bash, contains some iptables commands, and has worked on hundreds of servers.
What am I missing?
Thanks in advance.
Best Answer
TL;DR: Just create
/etc/rc.d/rc.local
and make it executable. That's all.I have no idea why so many articles and blogs mentions the unnecessary and incorrect step of enabling
rc-local
service unit. It won't even work as the defaultrc.local
file does not haveWantedBy
statement on purpose, because systemd carries so called generator that checks if such file exists and it is executable it automatically generates the mentionedrc-local.service
. There is no need to enable it manually, in fact, you cannot do that until systemd boots and generates it or you run the generator manually: