[guacd] Run service as user and set $HOME
Simone Caronni
slaanesh at fedoraproject.org
Wed Jan 30 15:35:49 UTC 2013
commit 766598f411591f9c8507050e83db4b486e21f86c
Author: Simone Caronni <negativo17 at gmail.com>
Date: Wed Jan 30 16:35:35 2013 +0100
Run service as user and set $HOME
guacd.init | 4 ++++
guacd.service | 3 +++
guacd.spec | 16 +++++++++++++++-
3 files changed, 22 insertions(+), 1 deletions(-)
---
diff --git a/guacd.init b/guacd.init
index b9f1cae..3bc421c 100644
--- a/guacd.init
+++ b/guacd.init
@@ -25,6 +25,10 @@ OPTS="$OPTS -p /var/run/$prog.pid"
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
+# Ensure $HOME is set properly, even if environment is clear
+USER=`whoami`
+export HOME=`sh -c "echo ~$USER"`
+
lockfile=/var/lock/subsys/$prog
start() {
diff --git a/guacd.service b/guacd.service
index 1178ecf..b87489f 100644
--- a/guacd.service
+++ b/guacd.service
@@ -6,8 +6,11 @@ After=network.target
[Service]
EnvironmentFile=-/etc/sysconfig/guacd
+Environment=HOME=`sh -c "echo ~%U"`
ExecStart=/usr/sbin/guacd -f $OPTS
Restart=always
+User=guacd
+Group=guacd
[Install]
WantedBy=multi-user.target
diff --git a/guacd.spec b/guacd.spec
index e2fd317..ed91402 100644
--- a/guacd.spec
+++ b/guacd.spec
@@ -1,3 +1,5 @@
+%global username guacd
+
Name: guacd
Version: 0.7.0
Release: 2%{?dist}
@@ -37,6 +39,8 @@ Requires(preun): /sbin/service
Requires(postun): /sbin/service
%endif
+Requires(pre): shadow-utils
+
%description
Guacamole is an HTML5 web application that provides access to desktop
environments using remote desktop protocols such as VNC or RDP. A centralized
@@ -61,6 +65,7 @@ make %{?_smp_mflags} CFLAGS="%{optflags}"
make install DESTDIR=%{buildroot} INSTALL="install -p"
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
install -p -m 644 -D %{SOURCE1} %{buildroot}%{_sysconfdir}/sysconfig/%{name}
+mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
@@ -78,6 +83,12 @@ install -p -m 755 -D %{SOURCE3} %{buildroot}%{_initrddir}/%{name}
%if 0%{?fedora} == 16 || 0%{?fedora} == 17
+%pre
+getent group %username >/dev/null || groupadd -r %username &>/dev/null || :
+getent passwd %username >/dev/null || useradd -r -s /sbin/nologin \
+ -d %{_sharedstatedir}/guacd -M -c 'Guacamole proxy daemon' -g %username %username &>/dev/null || :
+exit 0
+
%post
if [ $1 -eq 1 ] ; then
# Initial installation
@@ -141,11 +152,14 @@ fi
%else
%{_initrddir}/%{name}
%endif
+%attr(750,%{username},%{username}) %{_sharedstatedir}/%{name}
%changelog
-* Wed Jan 09 2013 Simone Caronni <negativo17 at gmail.com> - 0.7.0-2
+* Wed Jan 30 2013 Simone Caronni <negativo17 at gmail.com> - 0.7.0-2
- Updated init script according to Fedora template.
https://fedoraproject.org/wiki/Packaging:SysVInitScript?rd=Packaging/SysVInitScript
+- Run daemon as guacd user/group.
+- Make sure $HOME is set before starting the daemon or the child crashes.
* Thu Dec 13 2012 Simone Caronni <negativo17 at gmail.com> - 0.7.0-1
- Updated to 0.7.0.
More information about the scm-commits
mailing list