Fixes for SELinux support

Use /sbin/runuser to execute script as the `rabbitmq` user as this command
does not cause issues with SELinux. See #32 for details.
This commit is contained in:
Luke Bakken 2017-08-16 20:13:30 -07:00
parent 00469eba2f
commit c8b6b74a9c
No known key found for this signature in database
GPG Key ID: CC62EF7B15FC0213
3 changed files with 12 additions and 5 deletions

View File

@ -81,8 +81,7 @@ install -p -D -m 0755 scripts/zsh_autocomplete.sh %{buildroot}%{_datarootdir}/zs
mkdir -p %{buildroot}%{_sysconfdir}/rabbitmq mkdir -p %{buildroot}%{_sysconfdir}/rabbitmq
mkdir -p %{buildroot}%{_sbindir} mkdir -p %{buildroot}%{_sbindir}
sed -e 's|@SU_RABBITMQ_SH_C@|su rabbitmq -s /bin/sh -c|' \ sed -e 's|@STDOUT_STDERR_REDIRECTION@||' \
-e 's|@STDOUT_STDERR_REDIRECTION@||' \
< scripts/rabbitmq-script-wrapper \ < scripts/rabbitmq-script-wrapper \
> %{buildroot}%{_sbindir}/rabbitmqctl > %{buildroot}%{_sbindir}/rabbitmqctl
chmod 0755 %{buildroot}%{_sbindir}/rabbitmqctl chmod 0755 %{buildroot}%{_sbindir}/rabbitmqctl

View File

@ -31,8 +31,7 @@ override_dh_auto_install:
$(MAKE) install-bin DESTDIR=$(DEB_DESTDIR) $(MAKE) install-bin DESTDIR=$(DEB_DESTDIR)
sed -e 's|@SU_RABBITMQ_SH_C@|su rabbitmq -s /bin/sh -c|' \ sed -e 's|@STDOUT_STDERR_REDIRECTION@|> "$$RABBITMQ_LOG_BASE/startup_log" 2> "$$RABBITMQ_LOG_BASE/startup_err"|' \
-e 's|@STDOUT_STDERR_REDIRECTION@|> "$$RABBITMQ_LOG_BASE/startup_log" 2> "$$RABBITMQ_LOG_BASE/startup_err"|' \
< scripts/rabbitmq-script-wrapper \ < scripts/rabbitmq-script-wrapper \
> $(DEB_DESTDIR)$(PREFIX)/sbin/rabbitmqctl > $(DEB_DESTDIR)$(PREFIX)/sbin/rabbitmqctl
chmod 0755 $(DEB_DESTDIR)$(PREFIX)/sbin/rabbitmqctl chmod 0755 $(DEB_DESTDIR)$(PREFIX)/sbin/rabbitmqctl

View File

@ -81,7 +81,16 @@ exec_script_as_rabbitmq() {
} }
exec_script_as_root() { exec_script_as_root() {
@SU_RABBITMQ_SH_C@ "/usr/lib/rabbitmq/bin/$SCRIPT $CMDLINE" if [ -x /sbin/runuser ]
then
exec /sbin/runuser -u rabbitmq /bin/sh -c "/usr/lib/rabbitmq/bin/$SCRIPT $CMDLINE"
elif [ -x /bin/su ]
then
exec /bin/su rabbitmq -s /bin/sh -c "/usr/lib/rabbitmq/bin/$SCRIPT $CMDLINE"
else
echo 'No command present to run as rabbitmq user. Please ensure /bin/su or /sbin/runuser is available.' 1>&2
exit 1
fi
} }
run_script_help_and_fail() { run_script_help_and_fail() {