From a609011776bb808698f6f4acd00574fb34bfc73a Mon Sep 17 00:00:00 2001 From: Andreas Messer Date: Fri, 5 Jan 2018 20:19:02 +0100 Subject: [PATCH] Add sysv init scripts and splitoff pam module --- debian/control | 14 ++++- debian/elogind.init | 103 +++++++++++++++++++++++++++++++++ debian/elogind.install | 2 - debian/extra/elogind | 7 +++ debian/libelogind.install | 1 - debian/libpam-elogind.install | 4 ++ debian/libpam-elogind.postinst | 7 +++ debian/libpam-elogind.prerm | 9 +++ 8 files changed, 143 insertions(+), 4 deletions(-) create mode 100644 debian/elogind.init create mode 100644 debian/extra/elogind create mode 100644 debian/libpam-elogind.install create mode 100755 debian/libpam-elogind.postinst create mode 100755 debian/libpam-elogind.prerm diff --git a/debian/control b/debian/control index 030d44eba..2ab734c4a 100644 --- a/debian/control +++ b/debian/control @@ -36,7 +36,8 @@ Multi-Arch: same Pre-Depends: debconf, ${misc:Pre-Depends} Depends: ${shlibs:Depends}, ${misc:Depends}, - libelogind (= ${binary:Version}) + libelogind (= ${binary:Version}), + libpam-elogind (= ${binary:Version}) Recommends: dbus (>= 1.4), policykit-1 Conflicts: openrc Description: user, seat and session management daemon @@ -76,3 +77,14 @@ Description: libelogind development files This package contains the files needed for developing applications that use libelogind +Package: libpam-elogind +Section: admin +Priority: optional +Architecture: linux-any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, + ${misc:Depends}, + libpam-runtime +Provides: libpam-systemd +Description: elogind PAM module diff --git a/debian/elogind.init b/debian/elogind.init new file mode 100644 index 000000000..6c1177e3e --- /dev/null +++ b/debian/elogind.init @@ -0,0 +1,103 @@ +#! /bin/sh + +### BEGIN INIT INFO +# Provides: logind +# Required-Start: $dbus $remote_fs $syslog +# Required-Stop: $dbus $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: +# Short-Description: elogind session management daemon +### END INIT INFO + +set -e + +# /etc/init.d/elogind: start and stop the elogind session management daemon + +ELOGIND=/lib/elogind/elogind + +test -x $ELOGIND || exit 0 + +umask 022 + +. /lib/lsb/init-functions + +ELOGIND_OPTS="-D" + +# Are we running from init? +run_by_init() { + ([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ] +} + +check_for_upstart() { + if init_is_upstart; then + exit $1 + fi +} + +export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" + +case "$1" in + start) + check_for_upstart 1 + log_daemon_msg "Starting session management daemon" "elogind" || true + if start-stop-daemon --start --quiet --oknodo --pidfile /run/elogin.pid --exec $ELOGIND -- $ELOGIND_OPTS; then + log_end_msg 0 || true + else + log_end_msg 1 || true + fi + ;; + stop) + check_for_upstart 0 + log_daemon_msg "Stopping session management daemon" "elogind" || true + if start-stop-daemon --stop --quiet --oknodo --pidfile /run/elogind.pid; then + log_end_msg 0 || true + else + log_end_msg 1 || true + fi + ;; + reload|force-reload|restart) + check_for_upstart 1 + log_daemon_msg "Restarting session management daemon" "elogind" || true + start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /run/elogind.pid + if start-stop-daemon --start --quiet --oknodo --pidfile /run/elogind.pid --exec $ELOGIND -- $ELOGIND_OPTS; then + log_end_msg 0 || true + else + log_end_msg 1 || true + fi + ;; + try-restart) + check_for_upstart 1 + log_daemon_msg "Restarting session management daemon" "elogind" || true + RET=0 + start-stop-daemon --stop --quiet --retry 30 --pidfile /run/elogind.pid || RET="$?" + case $RET in + 0) + # old daemon stopped + if start-stop-daemon --start --quiet --oknodo --pidfile /run/elogind.pid --exec $ELOGIND -- $ELOGIND_OPTS; then + log_end_msg 0 || true + else + log_end_msg 1 || true + fi + ;; + 1) + # daemon not running + log_progress_msg "(not running)" || true + log_end_msg 0 || true + ;; + *) + # failed to stop + log_progress_msg "(failed to stop)" || true + log_end_msg 1 || true + ;; + esac + ;; + status) + check_for_upstart 1 + status_of_proc -p /run/elogind.pid $ELOGIND elogind && exit 0 || exit $? + ;; + *) + log_action_msg "Usage: /etc/init.d/elogind {start|stop|reload|force-reload|restart|try-restart|status}" || true + exit 1 +esac + +exit 0 diff --git a/debian/elogind.install b/debian/elogind.install index d405bcef3..9483f24aa 100644 --- a/debian/elogind.install +++ b/debian/elogind.install @@ -1,7 +1,6 @@ bin/loginctl bin/elogind-inhibit etc/elogind/logind.conf -etc/pam.d/elogind-user lib/elogind/elogind lib/elogind/elogind-cgroups-agent lib/udev/rules.d/*.rules @@ -12,7 +11,6 @@ usr/share/factory/* usr/share/man/man1/loginctl.1 usr/share/man/man5/logind.conf.5 usr/share/man/man7/elogind.*.7 -usr/share/man/man8/pam_elogind.8 usr/share/man/man8/elogind.8 usr/share/polkit-1/* usr/share/zsh/* diff --git a/debian/extra/elogind b/debian/extra/elogind new file mode 100644 index 000000000..e66eebb6d --- /dev/null +++ b/debian/extra/elogind @@ -0,0 +1,7 @@ +Name: elogind Session Management +Default: yes +Priority: 0 +Session-Interactive-Only: yes +Session-Type: Additional +Session-Final: + optional pam_elogind.so diff --git a/debian/libelogind.install b/debian/libelogind.install index 62e19c2ba..964806c1d 100644 --- a/debian/libelogind.install +++ b/debian/libelogind.install @@ -1,2 +1 @@ lib/*/libelogind.so.* -lib/*/security/pam_elogind.so diff --git a/debian/libpam-elogind.install b/debian/libpam-elogind.install new file mode 100644 index 000000000..c6dc41c03 --- /dev/null +++ b/debian/libpam-elogind.install @@ -0,0 +1,4 @@ +etc/pam.d/elogind-user +lib/*/security/pam_elogind.so +usr/share/man/man8/pam_elogind.8 +debian/extra/elogind /usr/share/pam-configs/ diff --git a/debian/libpam-elogind.postinst b/debian/libpam-elogind.postinst new file mode 100755 index 000000000..9310a1408 --- /dev/null +++ b/debian/libpam-elogind.postinst @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +pam-auth-update --package + + diff --git a/debian/libpam-elogind.prerm b/debian/libpam-elogind.prerm new file mode 100755 index 000000000..11329dd13 --- /dev/null +++ b/debian/libpam-elogind.prerm @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +if [ "$1" = remove ]; then + pam-auth-update --package --remove consolekit +fi + + -- 2.30.2