diff --git a/package/gluon-core/files/lib/gluon/functions/users.sh b/package/gluon-core/files/lib/gluon/functions/users.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d05798588922f188df0ba7a2b1230ce4377ccd45
--- /dev/null
+++ b/package/gluon-core/files/lib/gluon/functions/users.sh
@@ -0,0 +1,12 @@
+add_user() {
+	local username="$1"
+	local id="$2"
+
+	[ "$username" -a "$id" ] || return 1
+
+	sed -i "/^$username:/d" /etc/passwd
+	sed -i "/^$username:/d" /etc/shadow
+
+	echo "$username:*:$id:100:$username:/var:/bin/false" >> /etc/passwd
+	echo "$username:*:0:0:99999:7:::" >> /etc/shadow
+}