Создание основного рабочего пользователя с правами sudo
Дата публикации: 24.04.2026

Создание основного рабочего пользователя с правами sudo

Хочу себе такие же кнопки
ccb9a536


Создание основного рабочего пользователя с правами sudo: Защита вашего сервера от взлома

Вы только что арендовали VPS (виртуальный сервер) или выделили dedicated-сервер под свои проекты. Первое, что нужно сделать — избавиться от работы под пользователем root. Почему?

Аналогия: Представьте, что root — это ключ от всех дверей в вашем доме, включая сейф, гараж и подвал. Если злоумышленник его украдёт, он получит полный контроль. А теперь представьте, что у вас есть отдельный ключ для каждой комнаты (пользователь с ограниченными правами) и запасной ключ от всех дверей (sudo), который вы достаёте только когда действительно нужно. Так безопаснее, правда?

В этом уроке вы научитесь: ✅ Создавать основного пользователя для повседневной работы. ✅ Наделять его правами sudo (возможностью временно становиться root). ✅ Защищать сервер от случайных ошибок и атак через уязвимости в ПО. ✅ Отключать вход по паролю для root (чтобы боты не подбирали пароль).


1. Почему работа под root опасна?

Проблема Последствия Решение
Ошибка в команде Удалите не ту папку (rm -rf /) — сервер умрёт. Ограниченные права пользователя.
Уязвимость в софте Если хакер взломает ваш браузер/скрипт, он получит полный доступ к серверу. sudo только по необходимости.
Брутфорс-атаки Боты сканируют IP и подбирают пароль к root. Отключить вход по паролю для root.

Важно! Даже если вы единственный пользователь сервера, работа под root — это как ездить без ремня безопасности: "аварии не будет" — пока не случится.


2. Подготовка: Подключение к серверу

Перед тем как создавать пользователя, убедитесь, что вы: ✔ Подключены к серверу по SSH (например, через Terminal на Mac/Linux или PuTTY на Windows). ✔ Вошли под root (это временно, скоро мы это исправим).

Команда для подключения:

ssh root@ваш_сервер_ip

(Замените ваш_сервер_ip на реальный IP-адрес.)


3. Создание нового пользователя

Мы будем создавать пользователя с именем deploy (вы можете выбрать любое другое, например, admin или ваше имя).

Шаг 1: Создание пользователя

adduser deploy

Система спросит:

  1. Пароль (придумайте сложный, минимум 12 символов, с цифрами и знаками).
  2. Дополнительную информацию (можно пропустить, нажимая Enter).

Почему adduser, а не useradd? adduserинтерактивная и более дружелюбная команда (создаёт домашнюю папку, задаёт пароль). useraddнизкоуровневая, требует ручной настройки.

Шаг 2: Проверка создания пользователя

Убедитесь, что пользователь появился в системе:

id deploy

Ожидаемый вывод:

uid=1001(deploy) gid=1001(deploy) groups=1001(deploy)

(Цифры могут отличаться.)


4. Наделение пользователя правами sudo

Теперь нужно дать пользователю возможность выполнять команды от имени root, но только когда это действительно необходимо.

Шаг 1: Добавление в группу sudo

usermod -aG sudo deploy
  • -aG — добавляет пользователя в дополнительную группу (sudo).
  • Если группы sudo нет (редко, но бывает на некоторых дистрибутивах), используйте wheel:
    usermod -aG wheel deploy

Шаг 2: Проверка прав sudo

Переключитесь на нового пользователя:

su - deploy

И попробуйте выполнить команду с sudo (например, обновить пакеты):

sudo apt update

(Для CentOS/RHEL используйте sudo yum update.)

Если всё работает, система спросит пароль пользователя deploy и выполнит команду.

Важно!

  • Пароль спрашивается один раз за сессию (по умолчанию 15 минут).
  • Если вы видите ошибку deploy is not in the sudoers file, значит пользователь не в группе sudo. Повторите шаг 1.

5. Настройка SSH для безопасного входа

Теперь нужно отключить вход по паролю для root и разрешить вход только по SSH-ключу (это защитит от брутфорс-атак).

Шаг 1: Генерация SSH-ключей (на вашем локальном компьютере)

Если у вас ещё нет SSH-ключа, сгенерируйте его:

ssh-keygen -t ed25519 -C "ваш_email@example.com"

(Или ssh-keygen -t rsa -b 4096 для старой системы.)

Почему ed25519? Это самый современный и безопасный алгоритм (быстрее и надёжнее RSA).

Следуйте инструкциям (можно оставить пустым пароль для ключа, но это менее безопасно).

Шаг 2: Копирование ключа на сервер

Скопируйте публичный ключ (~/.ssh/id_ed25519.pub) на сервер:

ssh-copy-id deploy@ваш_сервер_ip

(Если ssh-copy-id нет, используйте cat ~/.ssh/id_ed25519.pub | ssh deploy@ваш_сервер_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys".)

Шаг 3: Отключение входа по паролю для root

Откройте файл конфигурации SSH:

sudo nano /etc/ssh/sshd_config

Найдите и измените следующие строки:

PermitRootLogin no          # Запрещаем вход под root
PasswordAuthentication no    # Запрещаем вход по паролю (только по ключу)

Сохраните (Ctrl+O, затем Enter) и закройте (Ctrl+X).

Шаг 4: Перезапуск SSH-сервиса

sudo systemctl restart sshd

ВАЖНО! Перед выходом из root проверьте, что можете войти под новым пользователем:

ssh deploy@ваш_сервер_ip

Если вход прошёл — можно закрыть сессию root и больше не использовать её.


6. Дополнительные меры безопасности (по желанию)

Действие Команда/настройка Зачем нужно?
Смена порта SSH В /etc/ssh/sshd_config измените Port 22 на другой (например, 2222). Уменьшает количество автоматических атак.
Ограничение доступа по IP AllowUsers deploy@ваш_ip в sshd_config. Разрешает вход только с вашего IP.
Установка fail2ban sudo apt install fail2ban Блокирует IP после нескольких неудачных попыток входа.

7. Типичные ошибки и их решение

Проблема Причина Решение
sudo: no tty present Скрипт пытается использовать sudo без терминала. Добавьте Defaults:deploy !requiretty в /etc/sudoers.
Permission denied (publickey) SSH-ключ не скопировался или права неверные. Проверьте ~/.ssh/authorized_keys и права (chmod 600 ~/.ssh/authorized_keys).
adduser: command not found На минимальных образах может не быть adduser. Используйте useradd -m deploy + passwd deploy.

Практика для закрепления

Упражнение 1: Создание пользователя

  1. Создайте пользователя testuser с паролем SecurePass123!.
  2. Добавьте его в группу sudo.
  3. Проверьте, может ли он выполнить sudo apt update.

Упражнение 2: Настройка SSH

  1. Сгенерируйте новый SSH-ключ ed25519 на локальном компьютере.
  2. Скопируйте его на сервер для пользователя testuser.
  3. Отключите вход по паролю в /etc/ssh/sshd_config и перезапустите SSH.

Упражнение 3: Диагностика проблем

Представьте, что после настройки sudo пользователь testuser видит ошибку:

testuser is not in the sudoers file. This incident will be reported.

Вопрос: Какие 3 возможные причины этой ошибки и как их исправить?

Упражнение 4: Безопасность

  1. Поменяйте порт SSH с 22 на 2222.
  2. Настройте fail2ban для защиты от брутфорса.
  3. Проверьте логи аутентификации (/var/log/auth.log), чтобы увидеть попытки входа.

Упражнение 5: Автоматизация (для продвинутых)

Напишите bash-скрипт, который:

  1. Создаёт пользователя с именем из переменной (USERNAME).
  2. Добавляет его в sudo.
  3. Копирует ваш локальный SSH-ключ в authorized_keys.
  4. Отключает вход по паролю для root.

Подсказка: Используйте expect или sshpass для автоматизации ввода пароля (но в продакшене лучше избегать этого).


Заключение: Что дальше?

Теперь ваш сервер защищён от основных угроз, связанных с работой под root. Следующие шаги: 🔹 Настройка фаервола (ufw или iptables). 🔹 Установка необходимого ПО (Nginx, Docker, Node.js и т.д.) под обычным пользователем. 🔹 Резервное копирование (настройка rsync или borgbackup).

Помните: Безопасность — это процесс, а не одноразовая настройка. Регулярно обновляйте систему (sudo apt update && sudo apt upgrade) и следите за логами (journalctl -xe).

Если остались вопросы — задавайте их в комментариях! 🚀


Введение: чем VDS отличается от шаред-хостинга и зачем это веб-мастеру
Как правильно выбрать тариф: CPU, RAM, NVMe или SSD, канал
Выбор операционной системы: почему Ubuntu 22.04/24.04 — стандарт индустрии
Регистрация домена и первичная настройка DNS-записей (A, AAAA, CNAME)
Генерация SSH-ключей на локальном компьютере (Windows/Mac/Linux)
Добавление публичного ключа на сервер и первый вход по SSH
Отключение входа по паролю и запрет авторизации для root
Смена стандартного порта SSH для снижения шума в логах
Создание основного рабочего пользователя с правами sudo
Базовое обновление системы и установка необходимых утилит (curl, wget, git, htop)
Настройка часового пояса и синхронизация времени (NTP)
Установка и базовая настройка фаервола UFW
Разрешение только необходимых портов (SSH, HTTP, HTTPS)
Установка Fail2Ban для защиты от перебора паролей
Настройка правил Fail2Ban для SSH и веб-сервера
Знакомство с Docker: установка движка и CLI
Установка Docker Compose для управления мульти-контейнерными приложениями
Основы изоляции: почему каждый проект должен быть в своем контейнере
Подготовка файловой структуры сервера для удобного хранения проектов
Развертывание Nginx как обратного прокси-сервера через Docker
Настройка конфигурации Nginx для статических сайтов
Установка PHP-FPM в отдельном контейнере
Связка Nginx и PHP-FPM через внутреннюю Docker-сеть
Оптимизация настроек PHP-FPM (pm.max_children, memory_limit) под нагрузку
Установка MariaDB/MySQL в изолированном контейнере
Безопасное хранение паролей от БД через переменные окружения (.env)
Подключение к базе данных из внешнего клиента (DBeaver/Navicat) через туннель
Установка Redis для кэширования запросов и сессий
Интеграция Redis с PHP-приложением для ускорения работы
Автоматическая выдача SSL-сертификатов через Certbot (Let's Encrypt)
Настройка автопродления SSL-сертификатов по крону
Принудительный редирект с HTTP на HTTPS в Nginx
Включение gzip и brotli сжатия для ускорения загрузки страниц
Настройка кэширования статики (browser caching) в заголовках Nginx
Защита от простых DDoS и ботов: модуль limit_req в Nginx
Настройка резервного копирования баз данных (mysqldump) по расписанию
Настройка резервного копирования файлов проектов (tar)
Отправка бэкапов на удаленное хранилище (S3-compatible storage или другой сервер)
Ротация и очистка старых логов, чтобы не забить диск
Мониторинг нагрузки: установка и настройка htop и iotop
Просмотр логов в реальном времени: tail, grep и journalctl
Установка простого мониторинга доступности (Uptime Kuma или скрипт в Telegram)
Изоляция арбитражных инструментов: запуск ботов в отдельных контейнерах
Установка SOCKS5/HTTP прокси (3proxy) внутри Docker для мультиаккаунтинга
Настройка аутентификации и ограничения доступа к прокси по IP
Проверка анонимности и работы прокси-сервера
Оптимизация ядра Linux (sysctl.conf) для высоких нагрузок и сетевых соединений
Настройка swap-файла: когда он нужен, а когда вредит
Чек-лист финальной проверки безопасности перед запуском проекта
План действий при взломе или падении сервера: восстановление из бэкапа
АПТЕЧКА ДЛЯ ЖИВОТНЫХ
Автомобили Германии — FORD, MERSEDES, VW, IVECO
Чат рулетка 2026: чаты, где каждый момент — шанс
Чат рулетка онлайн
Чат с Аней: психологический разговор
Чатрулетка: новый способ общения
Чай и кофе: сила вкуса
Детские игрушки из безопасных материалов
Эксплуатация шин: Рекомендации по использованию
Фототехника для пейзажей
Как Aptum хостинг помогает малым бизнесам в управлении CRM-системами
Как выбрать Vdsina вечный хостинг для своего проекта
Компоненты безопасности IP
Конкуренция на российском автомобильном рынке
Онлайн генератор паролей для Windows
Оптимизация обработки форм GEO проекта
Сервер для социальных сетей: Безопасность, Скорость, Изоляция
Смешные моменты
Сравнение Arsys хостинг сервисов для блогеров с WordPress на 2023 год
Весь экран под циферблат
рейтинг хостингов 2026 Быстрые VDS серверы