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