Add a rc script and have taskd run as an unprivileged user

PR:		204757
Submitted by:	Ike Eichorn <ike@michaeleichorn.com>
This commit is contained in:
Steven Kreuzer 2016-08-11 16:06:51 +00:00
parent d46d497ab7
commit d830ec9925
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=420083
6 changed files with 88 additions and 19 deletions

2
GIDs
View File

@ -557,7 +557,7 @@ freeswitch:*:610:
# free: 613
# free: 614
ntpa:*:615:
# free: 616
taskd:*:616:
# free: 617
# free: 618
# free: 619

2
UIDs
View File

@ -562,7 +562,7 @@ freeswitch:*:610:610::0:0:Freeswitch user:/nonexistent:/usr/sbin/nologin
# free: 613
# free: 614
ntpa:*:615:615::0:0:NTPa user:/nonexistent:/usr/sbin/nologin
# free: 616
taskd:*:616:616::0:0:taskd user:/nonexistent:/usr/sbin/nologin
# free: 617
# free: 618
# free: 619

View File

@ -3,7 +3,7 @@
PORTNAME= taskd
PORTVERSION= 1.1.0
PORTREVISION= 2
PORTREVISION= 3
CATEGORIES= deskutils
MASTER_SITES= http://taskwarrior.org/download/
@ -16,6 +16,19 @@ LIB_DEPENDS= libgnutls.so:security/gnutls
RUN_DEPENDS= bash:shells/bash
USES= cmake:outsource compiler:c++11-lib shebangfix
USE_RC_SUBR= taskd
USERS= taskd
GROUPS= taskd
TASKD_DBDIR?= /var/db/${PORTNAME}
PLIST_SUB+= TASKD_DBDIR="${TASKD_DBDIR}" \
TASKD_USER="${USERS}" \
TASKD_GROUP="${GROUPS}"
SUB_LIST+= TASKD_DBDIR="${TASKD_DBDIR}"
SHEBANG_FILES= demo/client/case* \
demo/client/malformed* \
demo/client/run \
@ -33,25 +46,10 @@ SHEBANG_FILES= demo/client/case* \
CFLAGS+= -g -O0
PLIST_FILES= bin/taskd \
bin/taskdctl \
man/man1/taskd.1.gz \
man/man1/taskdctl.1.gz \
man/man5/taskdrc.5.gz \
share/taskd/README \
share/taskd/generate \
share/taskd/generate.ca \
share/taskd/generate.client \
share/taskd/generate.crl \
share/taskd/generate.server \
share/taskd/vars
PORTDOCS= *
post-install:
(cd ${WRKSRC}/pki && ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR})
.for s in generate generate.ca generate.client generate.crl generate.server
${CHMOD} 755 ${STAGEDIR}${DATADIR}/${s}
.endfor
${MKDIR} ${STAGEDIR}${TASKD_DBDIR}
.include <bsd.port.mk>

View File

@ -0,0 +1,35 @@
#!/bin/sh
# $FreeBSD$
#
# PROVIDE: taskd
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add these lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# taskd_enable (bool): Set to NO by default.
# Set it to YES to enable taskd.
# taskd_data (path): Set to %%TASKD_DBDIR%% by default.
# Taskd data directory (TASKDDATA)
# taskd_user (str): Set to taskd by default.
# User to run taskd as.
. /etc/rc.subr
name=taskd
rcvar=taskd_enable
load_rc_config $name
: ${taskd_enable="NO"}
: ${taskd_data="%%TASKD_DBDIR%%"}
: ${taskd_user="taskd"}
command=%%PREFIX%%/bin/${name}
pidfile=$(${command} config --data $taskd_data | awk '/pid.file/ {print $2}')
command_args="server --data $taskd_data --daemon"
run_rc_command "$1"

View File

@ -0,0 +1,22 @@
=======================================================================
taskd requires user directed configuration prior to use.
See taskwarrior.org/docs/taskserver/configure.html for configuration
information. The generate script has been installed to
/usr/local/share/taskd.
After completing configuration to start taskd at system startup add
taskd_enable="YES" to rc.conf. If you configured taskd with a TASKDDATA
other than /var/db/taskd you will also need to set taskd_data in rc.conf
to that path.
The rc script will start taskd as the unprivileged user taskd, this
requires that your TASKDDATA directory and /var/log/taskd.log be owned
by taskd:taskd. If you prefer to use another user specify this in
rc.conf using taskd_user.
To add users see: taskwarrior.org/docs/taskserver/user.html
To configure taskwarrior to use your taskd server see:
taskwarrior.org/docs/taskserver/taskwarrior.html
=======================================================================

14
deskutils/taskd/pkg-plist Normal file
View File

@ -0,0 +1,14 @@
bin/taskd
bin/taskdctl
man/man1/taskd.1.gz
man/man1/taskdctl.1.gz
man/man5/taskdrc.5.gz
share/taskd/README
@mode 0755
%%DATADIR%%/generate
%%DATADIR%%/generate.ca
%%DATADIR%%/generate.client
%%DATADIR%%/generate.crl
%%DATADIR%%/generate.server
%%DATADIR%%/vars
@dir(%%TASKD_USER%%,%%TASKD_GROUP%%,) %%TASKD_DBDIR%%