summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild1
-rw-r--r--config-mgmt-nshd.PKGBUILD29
-rw-r--r--config-mgmt-ssh.PKGBUILD33
-rw-r--r--config-service-repo.PKGBUILD4
4 files changed, 55 insertions, 12 deletions
diff --git a/build b/build
index bee133b..1b3c5d2 100755
--- a/build
+++ b/build
@@ -12,6 +12,7 @@ main() {
for src in *.PKGBUILD; do
pkg="$(pkgfilename "$src")"
while ! { test "$src" -ot "$pkg" && test config.sh -ot "$pkg"; } 2>/dev/null; do
+ printf '%s: Building %q\n' "$0" "$src"
makepkg -d -p "$src" || exit $?
pkg="$(pkgfilename "$src")"
done
diff --git a/config-mgmt-nshd.PKGBUILD b/config-mgmt-nshd.PKGBUILD
index b3336e3..cd16f17 100644
--- a/config-mgmt-nshd.PKGBUILD
+++ b/config-mgmt-nshd.PKGBUILD
@@ -1,5 +1,5 @@
. ${BUILDFILE%/*}/common.sh
-pkgver=20170203.3
+pkgver=20170204.4
package() {
preamble
@@ -33,16 +33,19 @@ add-file -m755 usr/share/holo/files/10-"$pkgname"/etc/nsswitch.conf.holoscript <
#!/bin/sh
sed 's/ ldap//' | sed -r '/^(passwd|group|shadow):/s/(files|compat)/files ldap/'
EOF
+add-file -m755 usr/share/holo/files/10-"$pkgname"/etc/pam.d/passwd.holoscript <<EOF
+#!/bin/sh
+sed -e '/ldap/d' |
+sed -e 's/^password required pam_unix[.]so/#&/' \\
+ -e '\$apassword required pam_ldap.so minimum_uid=1000'
+EOF
# However, instead of running the normal `nslcd` LDAP client daemon,
# the system has ben configured to run the [parabola-hackers-nshd][]
# `nshd` daemon, which reads user infomation from the same
# `hackers.git` checkout (configured the same way). This way we dn't
# have to worry about keeping `/etc/passwd` in sync with
-# `hackers.git`. To this end, PAM has also been configured to create
-# a users home directory when they log in if it doesn't already exist.
-# Because `hackers.git` doesn't store any password information, `nshd`
-# stores password hashes in `/etc/nshd/shadow`.
+# `hackers.git`.
#
# [parabola-hackers-nshd]: https://www.parabola.nu/packages/libre/x86_64/parabola-hackers-nshd/
add-unit etc/systemd/system/sockets.target.wants/nshd.socket
@@ -50,12 +53,16 @@ add-unit etc/systemd/system/dbus.service.wants/nshd.service # (temporary [system
#
# [sytemd bug workaround][]: https://projects.parabola.nu/packages/parabola-hackers.git/tree/nshd.service.in#n19
-# Sometimes after something fails in PAM, you get a "User not known to
-# the underlying authentication module" message. For exaple, the
-# `pam_ldap.so.2` failed because you typed your password wrong, but
-# the PAM caller thinks `pam_ldap` failed because it didn't "own" the
-# user. I think that it's just a bug in PAM's message selection. But
-# (TODO) we should actually track it down.
+# To this end, PAM has also been configured to create a users home
+# directory when they log in if it doesn't already exist.
+add-file -m755 usr/share/holo/files/10-"$pkgname"/etc/pam.d/system-login.holoscript <<EOF
+#!/bin/sh
+sed '/pam_mkhomedir/d'
+echo 'session required pam_mkhomedir.so skel=/etc/skel umask=0077'
+EOF
+
+# Because `hackers.git` doesn't store any password information, `nshd`
+# stores password hashes in `/etc/nshd/shadow`.
postamble
}
diff --git a/config-mgmt-ssh.PKGBUILD b/config-mgmt-ssh.PKGBUILD
new file mode 100644
index 0000000..2c2831a
--- /dev/null
+++ b/config-mgmt-ssh.PKGBUILD
@@ -0,0 +1,33 @@
+. ${BUILDFILE%/*}/common.sh
+pkgver=20170204.5
+
+package() {
+preamble
+
+depends=(openssh)
+
+add-file -m755 usr/share/holo/files/10-"$pkgname"/etc/ssh/sshd_config.holoscript <<EOF
+#!/bin/sh
+{
+ sed '
+ /^#Port/{
+ aPort 22
+ aPort 1863
+ }
+ /^#PermitRootLogin/{
+ aPermitRootLogin no
+ }
+ '
+ echo
+ echo '## Crypto improvements'
+ echo '## https://stribika.github.io/2015/01/04/secure-secure-shell.html'
+ echo 'KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256'
+ echo 'Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr'
+ echo 'MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com'
+} | awk '\$0==""||!x[\$0]++'
+EOF
+
+add-unit etc/systemd/system/multi-user.target.wants/sshd.service
+
+postamble
+}
diff --git a/config-service-repo.PKGBUILD b/config-service-repo.PKGBUILD
index d66c122..9cb64e1 100644
--- a/config-service-repo.PKGBUILD
+++ b/config-service-repo.PKGBUILD
@@ -1,5 +1,5 @@
. ${BUILDFILE%/*}/common.sh
-pkgver=20170203.4
+pkgver=20170204
provides=(pacman-mirrorlist)
conflicts=(pacman-mirrorlist)
@@ -130,6 +130,8 @@ add-unit etc/systemd/system/sockets.target.wants/rsyncd.socket
add-file -m644 usr/share/holo/files/10-"$pkgname"/etc/rsyncd.conf <<EOF
# The uid, port, et c. are configured in the systemd units.
+use chroot = no
+
[repos]
path = /srv/repo/main
comment = Parabola repos