aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buildtools/debian-skeleton/rpki-rp.postinst36
-rw-r--r--buildtools/freebsd-skeleton/rpki-rp/pkg-install39
-rw-r--r--rcynic/Makefile.in9
-rw-r--r--rcynic/rules.darwin.mk35
-rw-r--r--rcynic/rules.freebsd.mk24
-rw-r--r--rcynic/rules.linux.mk26
-rw-r--r--rtr-origin/rules.freebsd.mk4
-rw-r--r--rtr-origin/rules.linux.mk2
8 files changed, 146 insertions, 29 deletions
diff --git a/buildtools/debian-skeleton/rpki-rp.postinst b/buildtools/debian-skeleton/rpki-rp.postinst
index 46ef8b97..ef45c861 100644
--- a/buildtools/debian-skeleton/rpki-rp.postinst
+++ b/buildtools/debian-skeleton/rpki-rp.postinst
@@ -5,26 +5,36 @@
set -e
-setup_rcynic_ownership() {
- install -o rcynic -g rcynic -d /var/rcynic/data /var/rcynic/rpki-rtr /var/rcynic/rpki-rtr
- if test -d /var/www
+setup_groups() {
+ if ! getent group rcynic >/dev/null
then
- install -o rcynic -g rcynic -d /var/www/rcynic
+ groupadd rcynic
+ fi
+ if ! getent group rpkirtr >/dev/null
+ then
+ groupadd rpkirtr
fi
}
-setup_rcynic_user() {
+setup_users() {
if ! getent passwd rcynic >/dev/null
then
useradd -g rcynic -M -N -d /var/rcynic -s /sbin/nologin -c "RPKI validation system" rcynic
fi
+ if ! getent passwd rpkirtr >/dev/null
+ then
+ useradd -g rpkirtr -M -N -d /var/rcynic/rpki-rtr -s /sbin/nologin -c "RPKI router server" rpkirtr
+ fi
+ usermod -a -G rpkirtr rcynic
}
-setup_rcynic_group() {
- if ! getent group rcynic >/dev/null
+setup_directories() {
+ install -o rcynic -g rcynic -d /var/rcynic/data /var/rcynic/rpki-rtr
+ if test -d /var/www
then
- groupadd rcynic
+ install -o rcynic -g rcynic -d /var/www/rcynic
fi
+ install -o rpkirtr -g rcynic -m 775 -d /var/rcynic/rpki-rtr/sockets
}
# We want to pick a *random* minute for rcynic to run, to spread load
@@ -39,7 +49,7 @@ setup_rcynic_cron() {
fi
}
-setup_rpki_rtr_listener() {
+setup_rpkirtr_listener() {
if test -f /var/run/xinetd.pid
then
kill -HUP `cat /var/run/xinetd.pid`
@@ -61,11 +71,11 @@ setup_rpki_rtr_listener() {
case "$1" in
configure)
- setup_rcynic_group
- setup_rcynic_user
- setup_rcynic_ownership
+ setup_groups
+ setup_users
+ setup_directories
setup_rcynic_cron
- setup_rpki_rtr_listener
+ setup_rpkirtr_listener
;;
abort-upgrade|abort-remove|abort-deconfigure)
diff --git a/buildtools/freebsd-skeleton/rpki-rp/pkg-install b/buildtools/freebsd-skeleton/rpki-rp/pkg-install
index 90abb8f2..3a8d960e 100644
--- a/buildtools/freebsd-skeleton/rpki-rp/pkg-install
+++ b/buildtools/freebsd-skeleton/rpki-rp/pkg-install
@@ -25,6 +25,28 @@ PRE-INSTALL)
echo "Please create it, then try again."
exit 1
fi
+ if /usr/sbin/pw groupshow "rpkirtr" 2>/dev/null
+ then
+ echo "You already have a group \"rpkirtr\", so I will use it."
+ elif /usr/sbin/pw groupadd rpkirtr
+ then
+ echo "Added group \"rpkirtr\"."
+ else
+ echo "Adding group \"rpkirtr\" failed..."
+ echo "Please create it, then try again."
+ exit 1
+ fi
+ if /usr/sbin/pw usershow "rpkirtr" 2>/dev/null
+ then
+ echo "You already have a user \"rpkirtr\", so I will use it."
+ elif /usr/sbin/pw useradd rpkirtr -g rpkirtr -h - -d /nonexistant -s /usr/sbin/nologin -c "RPKI router server"
+ then
+ echo "Added user \"rpkirtr\"."
+ else
+ echo "Adding user \"rpkirtr\" failed..."
+ echo "Please create it, then try again."
+ exit 1
+ fi
;;
POST-INSTALL)
@@ -41,6 +63,11 @@ POST-INSTALL)
/usr/bin/install -o rcynic -g rcynic -d /var/rcynic
fi
done
+ if ! test -d /var/rcynic/rpki-rtr/sockets
+ then
+ echo "Creating /var/rcynic/rpki-rtr/sockets"
+ /usr/bin/install -o rpkirtr -g rcynic -m 775 -d /var/rcynic/rpki-rtr/sockets
+ fi
if test ! -f /usr/local/etc/rcynic.conf
then
/bin/cp -p /usr/local/etc/rcynic.conf.sample /usr/local/etc/rcynic.conf
@@ -51,13 +78,7 @@ POST-INSTALL)
echo "Creating $htmldir"
/usr/bin/install -o rcynic -g rcynic -d $htmldir
fi
- sockdir=/var/rcynic/rpki-rtr/sockets
- if ! test -d $sockdir
- then
- echo "Creating $sockdir"
- /usr/bin/install -o nobody -g rcynic -d $sockdir
- fi
- if test "X`/usr/bin/crontab -l -u ${RCYNIC_CRON_USER} 2>/dev/null`" != "X"
+ if test "X`/usr/bin/crontab -l -u rcynic 2>/dev/null`" != "X"
then
echo "rcynic user already has a crontab, leaving it alone"
else
@@ -80,7 +101,7 @@ POST-INSTALL)
if /usr/bin/egrep -q "rpki-rtr[ ]+stream[ ]+tcp[ ]" /etc/inetd.conf
then
echo "You already have an inetd.conf entry for rpki-rtr on TCPv4, so I will use it."
- elif echo >>/etc/inetd.conf "rpki-rtr stream tcp nowait nobody /usr/local/bin/rtr-origin rtr-origin --server /var/rcynic/rpki-rtr"
+ elif echo >>/etc/inetd.conf "rpki-rtr stream tcp nowait rpkirtr /usr/local/bin/rtr-origin rtr-origin --server /var/rcynic/rpki-rtr"
then
echo "Added rpki-rtr for TCPv4 to /etc/inetd.conf."
else
@@ -90,7 +111,7 @@ POST-INSTALL)
if /usr/bin/egrep -q "rpki-rtr[ ]+stream[ ]+tcp6[ ]" /etc/inetd.conf
then
echo "You already have an inetd.conf entry for rpki-rtr on TCPv6, so I will use it."
- elif echo >>/etc/inetd.conf "rpki-rtr stream tcp6 nowait nobody /usr/local/bin/rtr-origin rtr-origin --server /var/rcynic/rpki-rtr"
+ elif echo >>/etc/inetd.conf "rpki-rtr stream tcp6 nowait rpkirtr /usr/local/bin/rtr-origin rtr-origin --server /var/rcynic/rpki-rtr"
then
echo "Added rpki-rtr for TCPv6 to /etc/inetd.conf."
else
diff --git a/rcynic/Makefile.in b/rcynic/Makefile.in
index 709dbb58..e3b45036 100644
--- a/rcynic/Makefile.in
+++ b/rcynic/Makefile.in
@@ -54,11 +54,15 @@ RCYNIC_CONF_DATA = @RCYNIC_CONF_DATA@
RCYNIC_CONF_TA_DIR = @RCYNIC_CONF_TA_DIR@
RCYNIC_USER = rcynic
RCYNIC_GROUP = rcynic
-NOBODY_USER = nobody
+RPKIRTR_USER = rpkirtr
RCYNIC_GECOS = RPKI Validation System
RCYNIC_STATIC_RSYNC = @RCYNIC_STATIC_RSYNC@
RCYNIC_HTML_DIR = @RCYNIC_HTML_DIR@
RCYNIC_CRON_USER = @RCYNIC_CRON_USER@
+RPKIRTR_USER = rpkirtr
+RPKIRTR_GROUP = rpkirtr
+RPKIRTR_GECOS = RPKI router server
+RPKIRTR_MODE = 775
SCRIPTS = rcynic-text rcynic-html rcynic-svn validation_status rcynic-cron
@@ -155,7 +159,8 @@ ${RCYNIC_DIRS} ${DESTDIR}${bindir} ${DESTDIR}${sysconfdir}:
install-directory-ownership: ${RCYNIC_DATA_DIR} ${RCYNIC_RPKI_RTR_DIR}
chown ${RCYNIC_USER}:${RCYNIC_GROUP} ${RCYNIC_DATA_DIR} ${RCYNIC_RPKI_RTR_DIR}
- chown ${NOBODY_USER}:${RCYNIC_GROUP} ${RCYNIC_RPKI_RTR_DIR}/sockets
+ chown ${RPKIRTR_USER}:${RCYNIC_GROUP} ${RCYNIC_RPKI_RTR_DIR}/sockets
+ chmod ${RPKIRTR_MODE} ${RCYNIC_RPKI_RTR_DIR}/sockets
install-rcynic-conf: ${RCYNIC_CONF_FILE}
diff --git a/rcynic/rules.darwin.mk b/rcynic/rules.darwin.mk
index 998b5f54..d37b0e75 100644
--- a/rcynic/rules.darwin.mk
+++ b/rcynic/rules.darwin.mk
@@ -36,6 +36,41 @@ install-user-and-group: .FORCE
echo "Please create it, then try again."; \
exit 1; \
fi
+ @if /usr/bin/dscl . -read "/Groups/${RPKIRTR_GROUP}" >/dev/null 2>&1; \
+ then \
+ echo "You already have a group \"${RPKIRTR_GROUP}\", so I will use it."; \
+ elif gid="$$(/usr/bin/dscl . -list /Groups PrimaryGroupID | /usr/bin/awk 'BEGIN {gid = 501} $$2 >= gid {gid = 1 + $$2} END {print gid}')" && \
+ /usr/bin/dscl . -create "/Groups/${RPKIRTR_GROUP}" && \
+ /usr/bin/dscl . -create "/Groups/${RPKIRTR_GROUP}" RealName "${RPKIRTR_GECOS}" && \
+ /usr/bin/dscl . -create "/Groups/${RPKIRTR_GROUP}" PrimaryGroupID "$$gid" && \
+ /usr/bin/dscl . -create "/Groups/${RPKIRTR_GROUP}" GeneratedUID "$$(/usr/bin/uuidgen)" && \
+ /usr/bin/dscl . -create "/Groups/${RPKIRTR_GROUP}" Password "*"; \
+ then \
+ echo "Added group \"${RPKIRTR_GROUP}\"."; \
+ else \
+ echo "Adding group \"${RPKIRTR_GROUP}\" failed..."; \
+ echo "Please create it, then try again."; \
+ exit 1; \
+ fi; \
+ if /usr/bin/dscl . -read "/Users/${RPKIRTR_USER}" >/dev/null 2>&1; \
+ then \
+ echo "You already have a user \"${RPKIRTR_USER}\", so I will use it."; \
+ elif uid="$$(/usr/bin/dscl . -list /Users UniqueID | /usr/bin/awk 'BEGIN {uid = 501} $$2 >= uid {uid = 1 + $$2} END {print uid}')" && \
+ /usr/bin/dscl . -create "/Users/${RPKIRTR_USER}" && \
+ /usr/bin/dscl . -create "/Users/${RPKIRTR_USER}" UserShell "/usr/bin/false" && \
+ /usr/bin/dscl . -create "/Users/${RPKIRTR_USER}" RealName "${RPKIRTR_GECOS}" && \
+ /usr/bin/dscl . -create "/Users/${RPKIRTR_USER}" UniqueID "$$uid" && \
+ /usr/bin/dscl . -create "/Users/${RPKIRTR_USER}" PrimaryGroupID "$$gid" && \
+ /usr/bin/dscl . -create "/Users/${RPKIRTR_USER}" NFSHomeDirectory "/var/empty" && \
+ /usr/bin/dscl . -create "/Users/${RPKIRTR_USER}" GeneratedUID "$$(/usr/bin/uuidgen)" && \
+ /usr/bin/dscl . -create "/Users/${RPKIRTR_USER}" Password "*"; \
+ then \
+ echo "Added user \"${RPKIRTR_USER}\"."; \
+ else \
+ echo "Adding user \"${RPKIRTR_USER}\" failed..."; \
+ echo "Please create it, then try again."; \
+ exit 1; \
+ fi
install-shared-libraries: .FORCE
diff --git a/rcynic/rules.freebsd.mk b/rcynic/rules.freebsd.mk
index f5391ce8..5233386e 100644
--- a/rcynic/rules.freebsd.mk
+++ b/rcynic/rules.freebsd.mk
@@ -12,10 +12,21 @@ install-user-and-group: .FORCE
echo "Please create it, then try again."; \
exit 1; \
fi
+ @if /usr/sbin/pw groupshow "${RPKIRTR_GROUP}" 2>/dev/null; \
+ then \
+ echo "You already have a group \"${RPKIRTR_GROUP}\", so I will use it."; \
+ elif /usr/sbin/pw groupadd ${RPKIRTR_GROUP}; \
+ then \
+ echo "Added group \"${RPKIRTR_GROUP}\"."; \
+ else \
+ echo "Adding group \"${RPKIRTR_GROUP}\" failed..."; \
+ echo "Please create it, then try again."; \
+ exit 1; \
+ fi
@if /usr/sbin/pw usershow "${RCYNIC_USER}" 2>/dev/null; \
then \
echo "You already have a user \"${RCYNIC_USER}\", so I will use it."; \
- elif /usr/sbin/pw useradd ${RCYNIC_USER} -g ${RCYNIC_GROUP} -h - -d /nonexistant -s /usr/sbin/nologin -c "${RCYNIC_GECOS}"; \
+ elif /usr/sbin/pw useradd ${RCYNIC_USER} -g ${RCYNIC_GROUP} -h - -d /nonexistant -s /usr/sbin/nologin -c "${RCYNIC_GECOS}" -G "${RPKIRTR_GROUP}"; \
then \
echo "Added user \"${RCYNIC_USER}\"."; \
else \
@@ -23,6 +34,17 @@ install-user-and-group: .FORCE
echo "Please create it, then try again."; \
exit 1; \
fi
+ @if /usr/sbin/pw usershow "${RPKIRTR_USER}" 2>/dev/null; \
+ then \
+ echo "You already have a user \"${RPKIRTR_USER}\", so I will use it."; \
+ elif /usr/sbin/pw useradd ${RPKIRTR_USER} -g ${RPKIRTR_GROUP} -h - -d /nonexistant -s /usr/sbin/nologin -c "${RPKIRTR_GECOS}"; \
+ then \
+ echo "Added user \"${RPKIRTR_USER}\"."; \
+ else \
+ echo "Adding user \"${RPKIRTR_USER}\" failed..."; \
+ echo "Please create it, then try again."; \
+ exit 1; \
+ fi
# We use static compilation on FreeBSD, so no need for shared libraries
diff --git a/rcynic/rules.linux.mk b/rcynic/rules.linux.mk
index 84275361..6a962cef 100644
--- a/rcynic/rules.linux.mk
+++ b/rcynic/rules.linux.mk
@@ -25,7 +25,31 @@ install-user-and-group: .FORCE
echo "Please create it, then try again."; \
exit 1; \
fi
-
+ @if getent group ${RPKIRTR_GROUP} >/dev/null; \
+ then \
+ echo "You already have a group \"${RPKIRTR_GROUP}\", so I will use it."; \
+ elif /usr/sbin/groupadd ${RPKIRTR_GROUP}; \
+ then \
+ echo "Added group \"${RPKIRTR_GROUP}\"."; \
+ else \
+ echo "Adding group \"${RPKIRTR_GROUP}\" failed..."; \
+ echo "Please create it, then try again."; \
+ exit 1; \
+ fi
+ @nogroup='-N'; \
+ if test -f /etc/redhat-release; then read vendor release version < /etc/redhat-release; if test $$vendor = CentOS; then nogroup='-n'; fi; fi; \
+ if getent passwd ${RPKIRTR_USER} >/dev/null; \
+ then \
+ echo "You already have a user \"${RPKIRTR_USER}\", so I will use it."; \
+ elif /usr/sbin/useradd -g ${RPKIRTR_GROUP} -M $$nogroup -d "${RPKIRTR_DIR}" -s /sbin/nologin -c "${RPKIRTR_GECOS}" ${RPKIRTR_USER}; \
+ then \
+ echo "Added user \"${RPKIRTR_USER}\"."; \
+ else \
+ echo "Adding user \"${RPKIRTR_USER}\" failed..."; \
+ echo "Please create it, then try again."; \
+ exit 1; \
+ fi
+ usermod -a -G ${RPKIRTR_GROUP} ${RCYNIC_USER}
install-shared-libraries: .FORCE
@echo "Copying required shared libraries"
diff --git a/rtr-origin/rules.freebsd.mk b/rtr-origin/rules.freebsd.mk
index 4cb21f3b..df99da47 100644
--- a/rtr-origin/rules.freebsd.mk
+++ b/rtr-origin/rules.freebsd.mk
@@ -18,7 +18,7 @@ install-listener: .FORCE
@if /usr/bin/egrep -q "rpki-rtr[ ]+stream[ ]+tcp[ ]" /etc/inetd.conf; \
then \
echo "You already have an inetd.conf entry for rpki-rtr on TCPv4, so I will use it."; \
- elif echo >>/etc/inetd.conf "rpki-rtr stream tcp nowait nobody /usr/local/bin/rtr-origin rtr-origin --server /var/rcynic/rpki-rtr"; \
+ elif echo >>/etc/inetd.conf "rpki-rtr stream tcp nowait rpkirtr /usr/local/bin/rtr-origin rtr-origin --server /var/rcynic/rpki-rtr"; \
then \
echo "Added rpki-rtr for TCPv4 to /etc/inetd.conf."; \
else \
@@ -28,7 +28,7 @@ install-listener: .FORCE
@if /usr/bin/egrep -q "rpki-rtr[ ]+stream[ ]+tcp6[ ]" /etc/inetd.conf; \
then \
echo "You already have an inetd.conf entry for rpki-rtr on TCPv6, so I will use it."; \
- elif echo >>/etc/inetd.conf "rpki-rtr stream tcp6 nowait nobody /usr/local/bin/rtr-origin rtr-origin --server /var/rcynic/rpki-rtr"; \
+ elif echo >>/etc/inetd.conf "rpki-rtr stream tcp6 nowait rpkirtr /usr/local/bin/rtr-origin rtr-origin --server /var/rcynic/rpki-rtr"; \
then \
echo "Added rpki-rtr for TCPv6 to /etc/inetd.conf."; \
else \
diff --git a/rtr-origin/rules.linux.mk b/rtr-origin/rules.linux.mk
index 2faa0e41..73a00f9d 100644
--- a/rtr-origin/rules.linux.mk
+++ b/rtr-origin/rules.linux.mk
@@ -19,7 +19,7 @@ ${DESTDIR}/etc/xinetd.d/rpki-rtr:
print " protocol = tcp"; \
print " port = ${RPKI_RTR_PORT}"; \
print " wait = no"; \
- print " user = nobody"; \
+ print " user = rpkirtr"; \
print " server = /usr/bin/rtr-origin"; \
print " server_args = --server /var/rcynic/rpki-rtr"; \
print "}"; \