TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #228 2.42K
Автоматическая настройка нового пользователя и окружения на сервере

Когда ты создаёшь нового пользователя в Linux, особенно для dev/stage-серверов, каждый раз настраивать окружение вручную - трата времени. Попробуем автоматизировать процесс: скрипт добавит пользователя, настроит SSH, переменные окружения, alias'ы и даже zsh или tmux - по вкусу.

🌟 Что делает скрипт:

Создаёт пользователя с паролем
Добавляет в группу sudo
Копирует SSH-ключ для входа
Устанавливает alias'ы и переменные окружения
Устанавливает и настраивает Zsh/Tmux (опционально)


📱 Пример скрипта:


#!/bin/bash

USERNAME="$1"
PUBKEY_PATH="$2" # путь до публичного ключа, например ~/.ssh/id_rsa.pub

if [[ -z "$USERNAME" || -z "$PUBKEY_PATH" ]]; then
echo "Использование: $0 <имя_пользователя> <путь_до_публичного_ключа>"
exit 1
fi

# Создание пользователя
useradd -m -s /bin/bash "$USERNAME"
usermod -aG sudo "$USERNAME"
echo "$USERNAME:changeme" | chpasswd # можно заменить на генерацию пароля

# Настройка SSH
mkdir -p /home/$USERNAME/.ssh
cp "$PUBKEY_PATH" /home/$USERNAME/.ssh/authorized_keys
chmod 700 /home/$USERNAME/.ssh
chmod 600 /home/$USERNAME/.ssh/authorized_keys
chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh

# Bash-окружение
cat >> /home/$USERNAME/.bashrc <<EOF

# Custom environment
alias ll='ls -lah'
export EDITOR=nano
EOF

# Установка zsh (опционально)
if command -v zsh &>/dev/null; then
chsh -s $(which zsh) "$USERNAME"
fi

echo "Пользователь $USERNAME создан и настроен."


▪️ Расширения:

1. Добавить установку oh-my-zsh или tmux конфигов
2. Автоматически генерировать пароль и сохранять его в файл
3. Настраивать .vimrc, .gitconfig или Docker-окружение
4. Добавить пост-инсталляционный скрипт: установка утилит, обновления и пр.


▪️ Хранение шаблонов

Для advanced-сценариев: можно использовать шаблоны с /etc/skel/ или Ansible playbooks для развёртывания целого окружения под одного пользователя.

BashTex 📱 #bash
  • 👍 13
More from @bash_tex
  1. Oct 13, 2026openat2(): как Linux защищает от выхода за пределы каталога Допустим, приложение должно чи…
  2. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  3. Oct 9, 2026BashTex 📱 #мем
  4. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  5. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  6. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →