Настройка пользователя tuner для управления LEMP сервером на Ubuntu 16.04

Категория: Linux

Создание и настройка пользователя tuner для управления Web сервером. Настройка автодеплоя проектов на PHP 7.2.

Создание пользователя tuner

Создаем нового пользователя tuner + настройка групп:

sudo adduser tuner
sudo usermod -aG sudo,www-data tuner
groups tuner ## просмотр групп пользователя

Генерим новый ssh ключ для пользователя tuner и заливаем на сервер:

ssh-keygen -t ed25519 -q -N "" -C "service,user" -f ~/.ssh/id_ed25519_service_user
ssh-keygen -t ecdsa -b 521 -q -N "" -C "service,user" -f ~/.ssh/id_ecdsa_service_user

ssh-copy-id -o PubkeyAuthentication=no -i ~/.ssh/id_ecdsa_service_user user@host
Примечание

Если при создании droplet вы добавляли ssh ключ для пользователя root, тогда ssh-copy-id не сработает.
Нужно добавить содержимое локального ~/.ssh/id_ecdsa_service_user.pub ключа в файл на сервере: /home/tuner/.ssh/authorized_keys

Ключи RSA/DSA устаревают
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_service_name -C "user@host" -q -N ""
ssh-copy-id -o PubkeyAuthentication=no -i ~/.ssh/id_rsa_service_name.pub -p XXXXX user@X.X.X.X
Используйте ключи ed25519 или ecdsa.

Настройка sudoers

Создаем файл /etc/sudoers.d/tuner с разрешениями пользователю tuner выполнять определенные команды под sudo без ввода пароля root.

sudo visudo -f /etc/sudoers.d/tuner
Внимание!

Для редактирования файлов /etc/sudoers.d/ используйте visudo - утилита проверяет валидность синтаксиса и ставит нужные права на файл 0440.

# Перезагрузка nginx
tuner ALL=NOPASSWD: /usr/sbin/nginx *
tuner ALL=NOPASSWD: /usr/sbin/service nginx *

# Управление virtualhost и корневыми каталогами сайтов /var/www/
tuner ALL=NOPASSWD: /bin/chown -R root\:tuner /etc/nginx/sites-*, /bin/chmod -R 775 /etc/nginx/sites-*
tuner ALL=NOPASSWD: /bin/chown -R www-data\:www-data /var/www/*, /bin/chown -R tuner\:www-data /var/www/*
tuner ALL=NOPASSWD: /bin/chmod -R 755 /var/www/*, /bin/chmod -R 775 /var/www/*

# Чтение логов
tuner ALL=NOPASSWD: /usr/bin/tail /var/log/*
tuner ALL=NOPASSWD: /bin/rm /var/log/nginx/error.log, /bin/rm /var/log/nginx/access.log

Установка прав на каталоги

sudo chown -R root:tuner /etc/nginx/sites-*
sudo chmod -R 775 /etc/nginx/sites-*
sudo chown -R tuner:www-data /var/www/
sudo chmod -R 755 /var/www/

Разрешения для www-data юзера

Разрешаем пользователю www-data запускать скрипт деплоя от имени пользователя tuner:

sudo visudo -f /etc/sudoers.d/www-data
www-data ALL = (tuner) NOPASSWD: /usr/bin/git pull *
www-data ALL = (tuner) NOPASSWD: /var/www/site.domain/deploy.sh

или:

read -r -d '' sudoers_www_data_config << EOM
www-data ALL = (tuner) NOPASSWD: /var/www/site.domain/deploy.sh
EOM
sudo echo "$sudoers_www_data_config" > /etc/sudoers.d/www-data

Можно дать права пользователю www-data на выполнение любых команд от имени root (ОПАСНО!):

www-data ALL=(ALL) NOPASSWD: ALL


Примечание

Чтобы не запрашивался sudo пароль при выполнении команд с правами root:

sudo visudo
stan ALL=(ALL) NOPASSWD:ALL

#lemp, #sudo, #lemp setup user, #create lemp managed user on ubuntu 16.04, #setup linux user permissions for lemp, #linux user permissions for auto deploy

категория: Linux