]> rtime.felk.cvut.cz Git - novaboot.git/blobdiff - server/adduser-novaboot
tests: Get rid of asynchronous process substitution
[novaboot.git] / server / adduser-novaboot
index 98e1411597d67ff36256087551507b4a8620f001..928e76358cb4bc01dbee7449da8ef380c469e602 100755 (executable)
@@ -49,7 +49,7 @@ fi
 [ -z "$key" -o "$(echo "$key" | wc -l)" -ne 1 ] && die "--key needs to be just one line"
 echo "$key" | grep -q ssh || die "--key does not look like an SSH public key"
 
-adduser --disabled-password --shell $(which novaboot-shell) $adduser_opts "$@"
+adduser --disabled-password --ingroup novaboot --shell $(which novaboot-shell) $adduser_opts "$@"
 
 user="$1"
 home=$(getent passwd "$user"|awk -F: '{print $6;}')
@@ -61,12 +61,12 @@ echo "command=\"user $admin admin\" $key" >> $home/.ssh/authorized_keys
 chown $user: "$home/.ssh" "$home/.ssh/authorized_keys"
 
 if [ -d /srv/tftp -a ! -e /srv/tftp/$user  ]; then
-    echo "Creating symlink from /srv/tftp/$user to $home/tftproot."
-    mkdir -p $home/tftproot
-    chown $user $home/tftproot
-    ln -s $home/tftproot /srv/tftp/$user
+    echo "Creating /srv/tftp/$user and symlink to it from $home/tftproot."
+    mkdir -p /srv/tftp/$user
+    chown $user /srv/tftp/$user
+    ln -s /srv/tftp/$user $home/tftproot
 else
-    echo "NOT creating symlink from /srv/tftp/$user to $home/tftproot."
+    echo "NOT creating /srv/tftp/$user and symlink to it from $home/tftproot."
 fi
 
 if [ -d /run/systemd/system ]; then
@@ -74,13 +74,15 @@ if [ -d /run/systemd/system ]; then
     mkdir -p /etc/systemd/system/user@$uid.service.d
     cat <<EOF > /etc/systemd/system/user@$uid.service.d/novaboot-server.conf
 [Unit]
-Requires=novaboot-server-login@$user.service
-After=novaboot-server-login@$user.service
+Requires=novaboot-server-session@$user.service
+After=novaboot-server-session@$user.service
 EOF
+    systemctl daemon-reload
 fi
 
 echo "Creating configuration template in $home/.novaboot-shell"
 cat <<'CONFIG_EOF' > $home/.novaboot-shell
+#!/bin/sh
 #
 # Configuration for novaboot-shell
 #
@@ -89,17 +91,69 @@ cat <<'CONFIG_EOF' > $home/.novaboot-shell
 
 #reset_cmd='/bin/sh -c "(usbrelay LY03X_2=1; sleep 0.1; usbrelay LY03X_2=0) 2>/dev/null"'
 
-#on_cmd='/bin/sh -c "(usbrelay LY03X_1=1; sleep 0.1; usbrelay LY03X_1=0) 2>/dev/null"';;
-#off_cmd='/bin/sh -c "(usbrelay LY03X_1=1; sleep 7.0; usbrelay LY03X_1=0) 2>/dev/null"';;
+#on_cmd='/bin/sh -c "(usbrelay LY03X_1=1; sleep 0.1; usbrelay LY03X_1=0) 2>/dev/null"';
+#off_cmd='/bin/sh -c "(usbrelay LY03X_1=1; sleep 7.0; usbrelay LY03X_1=0) 2>/dev/null"';
+
+# target_config="\
+# --prefix=/prefix/
+# --uboot==>
+# --uboot-init=setenv serverip 192.168.1.1
+# --uboot-addr=kernel=0x81000000
+# --uboot-addr=fdt=0x83000000
+# --uboot-addr=ramdisk=0x83100000
+# "
+CONFIG_EOF
+chown $user: $home/.novaboot-shell
 
+echo "Done"
+exit 0
 
-target_config() {
-    :
-#    echo '--prefix=/prefix'
-#    echo '--uboot="=>"'
-#    echo '--uboot-init="setenv serverip 192.168.1.1"'
-}
-CONFIG_EOF
+: <<EOF
+=encoding utf8
 
+=head1 NAME
 
-echo "Done"
+adduser-novaboot - create user account for use with novaboot's --ssh option
+
+=head1 SYNOPSIS
+
+B<adduser-novaboot> --key KEY [--admin-id NAME] [adduser options] user
+
+=head1 DESCRIPTION
+
+B<adduser-novaboot> is a wrapper of L<adduser(8)> command that
+simplifies creation of user accounts for I<novaboot>'s --ssh option.
+The created account has its shell set to L<novaboot-shell(1)>. The
+command also creates a template of the configuration file, sets up
+administrator's SSH key in L<authorized_keys(5)> prepares directories
+and symlinks that for integration with TFTP server and, when run under
+L<systemd(1)>, configures systemd service files to automatically
+power-off the target after timeout.
+
+=head1 OPTIONS
+
+=over 8
+
+=item --key KEY
+
+Mandatory argument specifying administrator's public SSH key (e.g.
+F<~/.ssh/id_rsa.pub>). The key will be copied to the created account's
+F<~/.ssh/authorized_keys> and marked with administrator flag.
+
+=item --admin-id NAME
+
+User name associated with the key. This user name is shown to
+connecting users when the target is occupied by the administrator.
+When omitted, I<admin> is used as the user name.
+
+=back
+
+=head1 AUTHORS
+
+Michal Sojka <sojkam1@fel.cvut.cz>
+
+Latest version can be found at
+L<https://github.com/wentasah/novaboot>.
+
+=cut
+EOF