Repositories / jai.git

jai.git

Clone (read-only): git clone http://git.guha-anderson.com/git/jai.git

Branch

Don't create user from makefile, might be viewed as impolite. Also, if there's already a user jai, use _jai.

Don't create user from makefile, might be viewed as impolite.
Also, if there's already a user jai, use _jai.
Author
David Mazieres <dm@uun.org>
Date
2026-03-27 13:43:51 -0700
Commit
6ad9584b022b2bc304add62c3f170047a948fa75
INSTALL
index b3ac144..87f5cc6 100644
--- a/INSTALL
+++ b/INSTALL
@@ -23,12 +23,14 @@ If building from a release tarball, autotools are not required:
 To install (must be root for setuid):
 
     sudo make install
+    sudo systemd-sysusers
 
 To override the installation prefix:
 
     ./configure --prefix=/usr
     make
     sudo make install
+    sudo systemd-sysusers
 
 Most of the tests require a setuid root version of jai to test.  Since
 people's build directories are often mounted nosuid, make `jai.suid`
Makefile.am
index 8d29fed..eed0201 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -26,7 +26,8 @@ CLEANFILES = *~ jai.suid
 DISTCLEANFILES = jai.conf
 
 maintainer-clean-local:
-	-rm -rf .deps
+	rm -rf .cache .deps
+	rm -f compile_commands.json jai-*.tar.gz
 
 MAINTAINERCLEANFILES = \
 	jai.1 \
@@ -45,15 +46,19 @@ install-exec-hook:
 	-chmod 04511 $(DESTDIR)$(bindir)/jai
 
 install-data-hook:
-	test ! -r "$(DESTDIR)/etc/passwd" || \
-		([[ "$(prefix)" == /usr || "$(prefix)" == /usr/local ]] && \
-		systemd-sysusers --root="$(DESTDIR)/") || :
+	@if test -z "$(DESTDIR)" && \
+		! getent passwd $(JAI_USER) >/dev/null; then \
+	    printf "\nTo to create the jai user, please run\n\n"; \
+	    if test /usr = "$(prefix)" -o /usr/local = "$(prefix)"; then \
+	      printf "    systemd-sysusers\n\n"; \
+	    else \
+	      printf "    systemd-sysusers %s\n\n" "$(sysusersdir)/jai.conf"; \
+	    fi; \
+	fi
 
 uninstall-hook:
-	@set -x; if test -r "$(DESTDIR)/etc/passwd" && \
-	[[ "$(prefix)" == /usr || "$(prefix)" == /usr/local ]] && \
-	gecos=$$(getent passwd @UNTRUSTED_USER@ 2>/dev/null | cut -d: -f5) \
-	    && test "$$gecos" = "JAI sandbox untrusted user"; then \
-	  echo "userdel $(JAI_USER)"; \
-	  userdel -R "$(DESTDIR)/" "$(JAI_USER)" || :; \
+	@if test -z "$(DESTDIR)" && \
+		getent passwd $(JAI_USER) >/dev/null; then \
+	    printf "\nTo to remove the jai user, please run\n\n    %s\n\n" \
+		"userdel $(JAI_USER)"; \
 	fi
configure.ac
index 28e9c4a..a86207a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -34,7 +34,10 @@ AC_ARG_WITH([untrusted-user],
 AS_IF([test -z "$UNTRUSTED_USER"], [
   UNTRUSTED_USER=$(getent passwd 2>/dev/null | \
     awk -F: '$3 != 0 && $5 == "JAI sandbox untrusted user" { print $1; exit }')
-  AS_IF([test -z "$UNTRUSTED_USER"], [UNTRUSTED_USER=jai])
+  AS_IF([test -z "$UNTRUSTED_USER"], [
+    AS_IF([getent passwd jai > /dev/null],
+      [UNTRUSTED_USER=_jai], [UNTRUSTED_USER=jai])
+  ])
 ])
 AC_MSG_NOTICE([untrusted user: $UNTRUSTED_USER])
 AC_SUBST([UNTRUSTED_USER])
tests/Makefile.am
index 50a038e..36e31e5 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -32,7 +32,7 @@ EXTRA_DIST = $(TESTS) common.sh.in setup-setuid.sh.in
 CLEANFILES = *~
 
 maintainer-clean-local:
-	-rm -rf .deps
+	rm -rf .cache .deps
 
 MAINTAINERCLEANFILES = $(srcdir)/Makefile.in