Добавление нового пользователя SFTP в BitrixVM

Если вы используете веб-окружение 1С-Битрикс, то вероятно сталкивались с необходимостью предоставить кому-либо доступ к файлам сайтов на сервере. Сделать это задача нетривиальная, но мы попробуем.

Если вы используете веб-окружение 1С-Битрикс, то вероятно сталкивались с необходимостью предоставить кому-либо доступ к файлам сайтов на сервере.

Сделать это задача нетривиальная, но не стоит направо и налево раздавать доступы от bitrix и root, как и использовать их для повседневной работы.

  • root — учетная запись администратора, у неё полный доступ к серверу и настройкам BitrixVM;
  • bitirix — то же системная запись, для неё доступен ssh, конфиги все сайты на сервере.

Разработка и поддержка сайта, должна вестись с использованием github или другой системы контроля версий. Если же вы по старинке напрямую “ковыряете” файлы сайтов на сервере, на этот случай заведите отдельную учётку с отключенным ssh и ограниченную домашним каталогом, в который смонтируете нужный для работы сайт (или сайты).

При необходимости, такую же учётную запись можно дать сторонним специалистам или сотрудникам напрямую не связанным с разработкой сайта, например внешнему программисту для установки виджета на сайт, маркетологу, меняющему код аналитики или сотруднику поддержки для отладки модуля или сервиса.

Как настроить

Создадим новую группу пользователей.

groupadd developers

Для созданной группы введём ограничение, её пользователи не смогут подключаться по ssh и не смогут видеть директории за исключением /home/developers/ для этого отредактируем /etc/ssh/sshd_config

#Subsystem   sftp   /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match Group developers
ChrootDirectory /home/developers/
X11Forwarding no
AllowTcpForwarding no

Если для доступа к ssh используется ключ, а необходима возможность авторизации по паролю, в /etc/ssh/sshd_config допишите так же:

PasswordAuthentication yes

Перезагрузим sshd для обновления конфигурации.

systemctl reload sshd

Или для более старых версий CentOS.

service sshd restart

Создадим пользователя, которому хотим предоставить доступ.

adduser devuser -g600 -o -u600 -d /home/developers/ -s /sbin/nologin

Число 600 — это id пользователя bitrix, чтобы создаваемые файлы были с нужными правами. Параметр -o позволяет назначить id существующего пользователя другому пользователю.

Установим пользователю пароль.

passwd devuser

Добавим пользователя в ранее созданную группу developers.

usermod -aG developers devuser

Для папки /home/developers/ нужно изменить владельца на root:bitrix и дать права на группу r+x, это нужно для того чтобы ограничения на папку устанавливаемые chroot заработали.

chown root:bitrix /home/developers/
chmod 750 /home/developers/

Создаём в /home/developers директорию для монтирования сайта.

mkdir /home/developers/site
chown bitrix /home/developers/site
chmod 750 /home/developers/site

Примонтируем сайт к созданной директории

mount --bind /home/bitrix/www /home/developers/site

Но при перезагрузке сервера, монтирование отвалится. Чтобы этого не происходило, добавим в /etc/fstab

/home/bitrix/www         /home/developers/site     none    bind            0 0

Если понадобится дать такой же доступ ещё одному пользователю.

adduser seconduser -g600 -o -u600 -d /home/developers/
passwd seconduser
usermod -aG developers seconduser

Если набор сайтов должен отличаться для разных пользователей, придётся создавать отдельные группы и домашние папки с сайтами, остальное по аналогии.

Полезные ссылки

Настройка sftp chroot