diff --git a/abuild.in b/abuild.in
index faa569e92b1e9f455bc3e0989a8d85b62fb7231f..8862a565e6ef0fc5bcb625d78d0ff2b1d955fabe 100755
--- a/abuild.in
+++ b/abuild.in
@@ -26,7 +26,7 @@ BUILD_BASE="build-base"
 
 SUDO=${SUDO:-"sudo"}
 
-default_cmds="sanitycheck builddeps clean fetch unpack rootpkg apkcache"
+default_cmds="sanitycheck builddeps clean fetch unpack mkusers rootpkg apkcache"
 
 # read config
 ABUILD_CONF=${ABUILD_CONF:-"$sysconfdir/abuild.conf"}
@@ -264,7 +264,24 @@ cleanoldpkg() {
 	done
 	return 0
 }
-	
+
+mkusers() {
+	local i
+	for i in $pkgusers; do
+		if ! getent passwd $i >/dev/null; then
+			msg "Creating user $i"
+			$SUDO adduser -D -H $i || return 1
+		fi
+	done
+	for i in $pkggroups; do
+		if ! getent group $i >/dev/null; then
+			msg "Creating group $i"
+			$SUDO addgroup $i || return 1
+		fi
+	done
+}
+
+
 runpart() {
 	local part=$1
 	[ -n "$DEBUG" ] && msg "$part"
@@ -488,7 +505,8 @@ create_apks() {
 
 apkcache() {
 	if ! apk_up2date || [ -n "$force" ]; then
-		sanitycheck && builddeps && clean && fetch && unpack && rootpkg || return 1
+		sanitycheck && builddeps && clean && fetch && unpack \
+			&& mkusers && rootpkg || return 1
 	fi
 
 	local apk