From 17939d44d6aa45a0dd50c98031c12798baf7cd85 Mon Sep 17 00:00:00 2001 From: Matthias Lucas Jaros Date: Sat, 18 Oct 2025 22:17:20 +0200 Subject: ssh daemon starting up and user and repos are getting initialized. Missing login because users are locked --- init | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) mode change 100644 => 100755 init (limited to 'init') diff --git a/init b/init old mode 100644 new mode 100755 index db06b55..d167007 --- 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 -- cgit v1.3.1