KatolaZ:
/etc/rc.local is expected to be executed by rc at the end of each
multiuser runlevel.
[...]
Removing the +x bit will break it immediately, and to no avail.
There is a bit of a myth that has grown up about /etc/rc.local in recent
years, that it was executed "last".
* https://github.com/systemd/systemd/issues/7703
In fact, in Seventh Edition and 4BSD it was not. /etc/rc invoked
/etc/rc.local partway down, as books on Unix used to note. This can
still be seen in the OpenBSD /etc/rc, which still invokes it between
invoking other stuff, and which calls out this misconception in its manual.
* https://github.com/openbsd/src/blob/master/etc/rc#L606
* https://man.openbsd.org/rc.local
FreeBSD /etc/rc hasn't even invoked /etc/rc.local at all, last or
otherwise, since 1998.
In the van Smoorenburg rc system, where /etc/rc.local isn't invoked
directly but is rather invoked by the /etc/init.d/rc.local backwards
compatibility mechanism, it is /etc/init.d/rc.local not /etc/rc.local
that is conventionally invoked via the "99" symbolic links in the
/etc/rcN.d directories. But insserv complicated this years ago.
Also note that it is only the backwards compatibility mechanisms in van
Smoorenburg rc and systemd that care about the x bit. It being unset
did not in fact break the old BSD systems, which generally either
sourced it with "." or passed it to a subshell with "sh /etc/rc.local",
neither of which need execute permission. The backwards compatibility
mechanism in Mewburn rc sources it as well, and only tests for its
existence not its executability.
*
https://github.com/freebsd/freebsd/commit/eab2c349799b5be274b03a396e9730509da13f9d#diff-34187173865821c23c7e1b0807ea0ee5L339
*
https://github.com/freebsd/freebsd/commit/11cc829faea7c94837080def42b5535946dd9357