Нет ничего проще, чем добавить пользователя на свой сервер. Просто введите консольную команду adduser
и ответить на несколько вопросов, включая пароль, после чего вы войдете в систему под своим именем пользователя и паролем и сможете размещать файлы и т.д.
Затем вам нужно будет создать папки вручную. Например, один для вашего сайта. Еще один для временных файлов. Чтобы не бросать их в общий /tmp для защиты. еще один для сессии, если в Redis не установлен кэш. Вам также нужно будет скопировать соответствующие файлы конфигурации, например, открытый ключ ssh для аутентификации.
Это может быть утомительным процессом, если вам приходится создавать пользователей часто, а то и всегда. К счастью, есть много вещей, которые можно настроить, включая первичные параметры во время создания (расположение домашней папки, группы) и вторичные параметры (необходимые папки, файлы конфигурации).
Основные настройки, определяемые командой adduser
берется из файла /etc/adduser.conf.
Изменяем домашнюю папку
Изначально домашние папки всех пользователей находятся в каталоге /home. Однако можно предварительно определить местоположение, используя другие папки, например, /var/www. Для этого используйте DHOME
.
DHOME=/var/www
Обратите внимание на опции SKEL=/etc/skel
. Это определяет, откуда копируются конфигурационные файлы и папки каждого пользователя. Возможно, вы видели такие файлы, как .profile и .bashrc в папке пользователя вашего сервера. Они скопированы из этого источника.
Добавление пользователей в единую группу
Конфигурация по умолчанию создает группу с одинаковым именем для каждого пользователя. Однако можно добавить разных пользователей в одну группу для веб-сервера, чтобы лучше управлять политиками безопасности.
Если вы создаете пользователя для размещения вашего сайта, только ему должно быть разрешено редактировать/удалять файлы. Веб-серверы, такие как nginx или apache, должны работать под отдельным пользователем, доступным только для чтения. Никакой другой пользователь не должен иметь никаких прав.
Добавив всех пользователей в одну группу, вы можете установить разрешения только для чтения для этой группы. Затем вы можете запустить свой веб-сервер от имени этой группы. Это лучше, чем добавлять пользователей веб-сервера в группу пользователей, в которой размещен сайт.
Общей группой будет группа пользователей www-data. Он разработан специально для запуска веб-сервера с максимально ограниченными привилегиями и не может использовать оболочку.
В файле adduser.conf необходимо сначала запретить создание групп с одинаковым именем при создании пользователя.
USERGROUPS=no
Затем укажите идентификатор группы www-data.
USERS_GID=33.
Обычно идентификатор равен 33. Однако вам нужно будет перепроверить это с помощью команд, запущенных от имени root. id www-data
.
И это последний параметр, который нужно изменить в этом конфигурационном файле.
DIR_MODE=0710.
Здесь определяются разрешения для домашнего каталога пользователя, /var/www/username. Здесь владельцу файла разрешены все действия, группе разрешено только выполнение, и никакие другие люди не имеют прав.
Права для конкретного пользователя и дополнительные файлы
Теперь вам нужно продолжать предоставлять правильные разрешения, но в рамках одного пользователя. Чтобы сразу предоставить необходимые разрешения для создания файла или папки, используйте параметр umask
в ваших файлах .bashrc и .profile.
umask 027
Для папок это будет интерпретировано как «0750», что дает владельцу файла право делать все, а группе — право на чтение и выполнение.
А для файлов — 0640: чтение/изменение для владельца, только чтение для группы; мы рекомендуем вам самостоятельно прочитать статью о разрешениях в Linux.
Также не забудьте обновить разрешения существующих файлов и папок в /etc/skel с помощью команды chmod.
Наконец, создайте дополнительные папки для сайтов, временных файлов, сессий и т.д. Файл authorized_keys и открытые ключи ssh должны быть помещены в папку .ssh пользователя. Полученная структура должна выглядеть следующим образом
/etc/skel -.ssh/ --authorized_keys -sessions/ -tmp/ -www/ -.bashrc -.profile
Все это будет скопировано в домашний каталог пользователя при его создании.