68 lines
1.8 KiB
Bash
68 lines
1.8 KiB
Bash
sudo adduser epostolit --ingroup docker
|
|
|
|
echo 'export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock' | sudo tee -a /home/tpanov/.bashrc
|
|
echo 'export PATH=/home/$(whoami)/bin:$PATH' | sudo tee -a /home/tpanov/.bashrc
|
|
sudo mkdir /home/tpanov/.ssh
|
|
echo 'ssh-ключ' | sudo tee -a /home/tpanov/.ssh/authorized_keys
|
|
|
|
|
|
--------------
|
|
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
USER_NAME=""
|
|
SSH_PUBLIC_KEY=""
|
|
|
|
HOME_DIR="/home/${USER_NAME}"
|
|
BASHRC="${HOME_DIR}/.bashrc"
|
|
SSH_DIR="${HOME_DIR}/.ssh"
|
|
AUTHORIZED_KEYS="${SSH_DIR}/authorized_keys"
|
|
|
|
DOCKER_HOST_LINE='export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock'
|
|
PATH_LINE='export PATH=$HOME/bin:$PATH'
|
|
|
|
|
|
USER_PASSWORD="$(openssl rand -base64 24)"
|
|
|
|
if ! id "${USER_NAME}" &>/dev/null; then
|
|
sudo adduser \
|
|
--ingroup docker \
|
|
--gecos "" \
|
|
--disabled-password \
|
|
"${USER_NAME}"
|
|
|
|
echo "${USER_NAME}:${USER_PASSWORD}" | sudo chpasswd
|
|
fi
|
|
|
|
sudo install -d \
|
|
-m 700 \
|
|
-o "${USER_NAME}" \
|
|
-g "${USER_NAME}" \
|
|
"${SSH_DIR}"
|
|
|
|
if ! sudo grep -qxF "${SSH_PUBLIC_KEY}" "${AUTHORIZED_KEYS}" 2>/dev/null; then
|
|
echo "${SSH_PUBLIC_KEY}" | sudo tee -a "${AUTHORIZED_KEYS}" >/dev/null
|
|
fi
|
|
|
|
sudo chown "${USER_NAME}:${USER_NAME}" "${AUTHORIZED_KEYS}"
|
|
sudo chmod 600 "${AUTHORIZED_KEYS}"
|
|
|
|
# =========================
|
|
# BASHRC CONFIG
|
|
# =========================
|
|
grep -qxF "${DOCKER_HOST_LINE}" "${BASHRC}" || \
|
|
echo "${DOCKER_HOST_LINE}" | sudo tee -a "${BASHRC}" >/dev/null
|
|
|
|
grep -qxF "${PATH_LINE}" "${BASHRC}" || \
|
|
echo "${PATH_LINE}" | sudo tee -a "${BASHRC}" >/dev/null
|
|
|
|
sudo chown "${USER_NAME}:${USER_NAME}" "${BASHRC}"
|
|
|
|
# =========================
|
|
# OUTPUT
|
|
# =========================
|
|
echo "✅ User configured successfully"
|
|
echo
|
|
echo "User: ${USER_NAME}"
|
|
echo "Password: ${USER_PASSWORD}" |