Я хотел бы получить некоторые разъяснения о правильном способе создания ограниченных пользователей для доступа к моему пользователю VPS как WEBSERVER с Nginix.
Я привык НЕ устанавливать FTP и получать доступ только через SFTP. Это нормально для любой настройки?
это то, что я обычно делаю, чтобы создать ограниченного пользователя с именем «admin», который должен иметь доступ через SFTP к папке с данными веб-сайта
mkdir -p /var/www/mysite.com/
adduser admin
adduser admin www-data
chown -R root:root /var/www
chmod -R 755 /var/www
chmod -R 755 /var/www/mysite.com
chown -R admin:www-data /var/www/mysite.com/
Кажется, это не правильный способ, у меня всегда возникают проблемы с разрешением при загрузке некоторых файлов (например, с Wordpress в целом). Я хотел бы создать пользователя, который работает точно так же, как тот, который «предоставляет» своему клиенту, когда он покупает услугу хостинга (то есть FTP, я бы предпочел доступ по SFTP). Это для личного пользователя, но я думаю, что использовать ограниченного пользователя намного безопаснее, чем "root" через SFTP.
Вы можете использовать sftp, просто установите каталог /var/www/mysite.com следующим образом:
chmod 2775 /var/www/mysite.com
Это сделает группу каталогов доступной для записи и привяжет www-данные группы к каждому файлу, созданному ниже этого каталога. Если у вас уже есть файлы в каталоге, вы можете передать права доступа к каталогу с помощью этой команды:
find /var/www/mysite.com -type d -exec chmod 2775 {} \;
Надеюсь, это поможет вам получить то «чувство хостинга», которое вы ищете. ;)
Похоже, проблема связана с критериями, по которым chroot jailing требует настройки пользователей. Две самые большие проблемы, с которыми сталкиваются люди, заключаются в том, что домашний каталог пользователя и все каталоги над ним должны быть доступны для записи только пользователю root, и они должны принадлежать root. Из-за этого условия лучший способ создать тюрьму (на мой взгляд):
mkdir -p /var/www/vhosts/mysite.com/public_html
useradd -d /var/www/vhosts/mysite.com mynewuser
chown -R root:root /var/www/vhosts/mysite.com
chmod 755 /var/www/vhosts/mysite.com
chown mynewuser:www-data /var/www/vhosts/mysite.com/public_html
Или, если вам нужен Apache для записи, измените его на 775 для необходимых каталогов.
Я настроил это таким образом, чтобы, когда пользователь входит в единственную директорию, к которой у них есть доступ, это «public_html», и не знает никаких других виртуальных хостов в системе. Это дает вид полностью изолированного экземпляра, который вы получите от любого поставщика.
Лучший способ настроить это - использовать виртуального пользователя, настроенного с помощью программного обеспечения, такого как ProFTPD или Pure-FTPD, которые поддерживают виртуальных пользователей из ldap, mysql или других баз данных, а также поддерживают FTP и SFTP в одном пакете. Используя виртуальных пользователей, вы можете заблокировать их в каталоге FTP, а также установить UID и GID, которые этот пользователь будет использовать для хранения файлов и доступа к ним. См. Соответствующую документацию о том, как именно это реализовать.