mirror of
https://github.com/trailofbits/algo.git
synced 2025-06-07 15:43:54 +02:00
Refactor cloud-init/base.sh (#1797)
* Refactor cloud-init/base.sh * Pass shellcheck * Use variable for username * Fix issues with umask and sudo * Simplify until loops * Use literal algo for filename in /etc/sudoers.d/10-algo-user
This commit is contained in:
parent
3fe09bd904
commit
f0d0e91be0
1 changed files with 31 additions and 15 deletions
|
@ -1,25 +1,41 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -eux
|
set -euxo pipefail
|
||||||
|
|
||||||
which sudo || until \
|
readonly user='algo'
|
||||||
apt-get update -y && \
|
|
||||||
apt-get install sudo -yf --install-suggests; do
|
export DEBIAN_FRONTEND='noninteractive'
|
||||||
|
|
||||||
|
until which sudo; do
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get install -qqf --install-suggests sudo
|
||||||
sleep 3
|
sleep 3
|
||||||
done
|
done
|
||||||
|
|
||||||
getent passwd algo || useradd -m -d /home/algo -s /bin/bash -G adm -p '!' algo
|
getent passwd "${user}" \
|
||||||
|
|| useradd -m -d "/home/${user}" -s /bin/bash -G adm -p '!' "${user}"
|
||||||
|
|
||||||
(umask 337 && echo "algo ALL=(ALL) NOPASSWD:ALL" >/etc/sudoers.d/10-algo-user)
|
(
|
||||||
|
umask 0337 \
|
||||||
|
&& printf '%s\n' "${user} ALL=(ALL) NOPASSWD:ALL" \
|
||||||
|
>"/etc/sudoers.d/10-algo-user"
|
||||||
|
)
|
||||||
|
|
||||||
cat <<EOF >/etc/ssh/sshd_config
|
printf "{{ lookup('template', 'files/cloud-init/sshd_config') }}\n" \
|
||||||
{{ lookup('template', 'files/cloud-init/sshd_config') }}
|
>/etc/ssh/sshd_config
|
||||||
EOF
|
|
||||||
|
|
||||||
test -d /home/algo/.ssh || (umask 077 && sudo -u algo mkdir -p /home/algo/.ssh/)
|
# This should be idempotent; correct permsission on .ssh dir if exists
|
||||||
echo "{{ lookup('file', '{{ SSH_keys.public }}') }}" | (umask 177 && sudo -u algo tee /home/algo/.ssh/authorized_keys)
|
install -o "${user}" -g "${user}" -m 0700 -d "/home/${user}/.ssh"
|
||||||
|
|
||||||
dpkg -l sshguard && until apt-get remove -y --purge sshguard; do
|
# umask does not reliably work with sudo
|
||||||
|
install -o "${user}" -g "${user}" -m 0600 \
|
||||||
|
/dev/null "/home/${user}/.ssh/authorized_keys"
|
||||||
|
|
||||||
|
printf "{{ lookup('file', '{{ SSH_keys.public }}') }}\n" \
|
||||||
|
>"/home/${user}/.ssh/authorized_keys"
|
||||||
|
|
||||||
|
until ! dpkg -l sshguard; do
|
||||||
|
apt-get remove -qq --purge sshguard
|
||||||
sleep 3
|
sleep 3
|
||||||
done || true
|
done || :
|
||||||
|
|
||||||
systemctl restart sshd.service
|
systemctl restart sshd.service
|
||||||
|
|
Loading…
Add table
Reference in a new issue