summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorGravatar Matthias Lucas Jaros <jarlucmat@mailbox.org>2025-10-18 22:17:20 +0200
committerGravatar Matthias Lucas Jaros <jarlucmat@mailbox.org>2025-10-18 22:17:20 +0200
commit17939d44d6aa45a0dd50c98031c12798baf7cd85 (patch)
tree361360208189c6e8b6a477e9be08dd6e982db35d /init
parentaa41ae926beba85ad2cb06e10b5f4f270309b9c4 (diff)
ssh daemon starting up and user and repos are getting initialized. Missing login because users are locked
Diffstat (limited to 'init')
-rwxr-xr-x[-rw-r--r--]init41
1 files changed, 34 insertions, 7 deletions
diff --git a/init b/init
index db06b55..d167007 100644..100755
--- a/init
+++ b/init
@@ -1,17 +1,44 @@
-#!/usr/sbin/env fish
+#!/usr/bin/env fish
-argparse 'u/users+' 'r/repos+' -- $argv
+argparse 'u/users=+' 'r/repos=+' -- $argv
+or exit 1;
# create users and copy keys in correct location, set permissions
-for user in $_flag_u
+for user in (string split ',' $_flag_u)
echo "Setting up user: $user"
- set -l HOME="/home/$user"
- adduser --home $HOME --disabled-password "$user"
+ set -l HOME "/home/$user"
+ adduser --home $HOME -D "$user"
mkdir "$HOME/.ssh"
- cp "/srv/keys/$user" "$HOME/.ssh"
+ cp "/var/keys/$user/authorized_keys" "$HOME/.ssh/"
chown -R $user "$HOME"
- chmod 700 "$HOME"
+ chmod -R 700 "$HOME"
end
+for repoConfig in (string split ',' $_flag_r)
+ set -l parsedConfig (string split ':' $repoConfig)
+ set -l repo $parsedConfig[1]
+
+ # we assume all repos to be in /srv/repos
+ set -l repoDir "/srv/repos/$repo"
+ echo "Setting up repo: $repo"
+ addgroup "$repo"
+
+ # assign groups to user
+ for user in $parsedConfig[2..]
+ adduser "$user" "$repo"
+ id "$user"
+ end
+
+ # setup repo dir
+ if not test -d $repoDir
+ mkdir -p $repoDir
+ git init --bare $repoDir -b trunk
+ end
+ chgrp -R "$repo" "$repoDir"
+end
+
+echo "Setting up server"
+# generate host keys in case
+mkdir -p /var/keys/etc/ssh/ && ssh-keygen -A -f /var/keys
# run ssh daemon
/usr/sbin/sshd -D -e