|
1 | 1 | #!/bin/bash
|
2 |
| -set -eux |
| 2 | +set -euxo pipefail |
3 | 3 |
|
4 |
| -which sudo || until \ |
5 |
| - apt-get update -y && \ |
6 |
| - apt-get install sudo -yf --install-suggests; do |
7 |
| - sleep 3 |
| 4 | +readonly user='algo' |
| 5 | + |
| 6 | +export DEBIAN_FRONTEND='noninteractive' |
| 7 | + |
| 8 | +until which sudo; do |
| 9 | + apt-get update -qq |
| 10 | + apt-get install -qqf --install-suggests sudo |
| 11 | + sleep 3 |
8 | 12 | done
|
9 | 13 |
|
10 |
| -getent passwd algo || useradd -m -d /home/algo -s /bin/bash -G adm -p '!' algo |
| 14 | +getent passwd "${user}" \ |
| 15 | + || useradd -m -d "/home/${user}" -s /bin/bash -G adm -p '!' "${user}" |
| 16 | + |
| 17 | +( |
| 18 | + umask 0337 \ |
| 19 | + && printf '%s\n' "${user} ALL=(ALL) NOPASSWD:ALL" \ |
| 20 | + >"/etc/sudoers.d/10-algo-user" |
| 21 | +) |
| 22 | + |
| 23 | +printf "{{ lookup('template', 'files/cloud-init/sshd_config') }}\n" \ |
| 24 | + >/etc/ssh/sshd_config |
11 | 25 |
|
12 |
| -(umask 337 && echo "algo ALL=(ALL) NOPASSWD:ALL" >/etc/sudoers.d/10-algo-user) |
| 26 | +# This should be idempotent; correct permsission on .ssh dir if exists |
| 27 | +install -o "${user}" -g "${user}" -m 0700 -d "/home/${user}/.ssh" |
13 | 28 |
|
14 |
| -cat <<EOF >/etc/ssh/sshd_config |
15 |
| -{{ lookup('template', 'files/cloud-init/sshd_config') }} |
16 |
| -EOF |
| 29 | +# umask does not reliably work with sudo |
| 30 | +install -o "${user}" -g "${user}" -m 0600 \ |
| 31 | + /dev/null "/home/${user}/.ssh/authorized_keys" |
17 | 32 |
|
18 |
| -test -d /home/algo/.ssh || (umask 077 && sudo -u algo mkdir -p /home/algo/.ssh/) |
19 |
| -echo "{{ lookup('file', '{{ SSH_keys.public }}') }}" | (umask 177 && sudo -u algo tee /home/algo/.ssh/authorized_keys) |
| 33 | +printf "{{ lookup('file', '{{ SSH_keys.public }}') }}\n" \ |
| 34 | + >"/home/${user}/.ssh/authorized_keys" |
20 | 35 |
|
21 |
| -dpkg -l sshguard && until apt-get remove -y --purge sshguard; do |
22 |
| - sleep 3 |
23 |
| -done || true |
| 36 | +until ! dpkg -l sshguard; do |
| 37 | + apt-get remove -qq --purge sshguard |
| 38 | + sleep 3 |
| 39 | +done || : |
24 | 40 |
|
25 | 41 | systemctl restart sshd.service
|
0 commit comments