У меня есть VPS с Debian 6.0. В настоящее время SSH настроен так, чтобы не принимать входы по паролю, а только на основе ключей.
Человек, которому нужно работать на одном конкретном веб-сайте (vhost), желает использовать FTP. Ему не нужен / не нужен SSH. Как я могу настроить для него доступ по FTP, чтобы он имел права на запись для всех файлов в соответствующем каталоге и только для соответствующего каталога? Каталог /srv/www/domainname.com/public_html
В настоящее время все каталоги и файлы в этом каталоге принадлежат www-data: www-data и имеют размер 644/755.
Я установил vsftpd и читал некоторые руководства, но все они, похоже, имеют дело с тем, чтобы позволить нескольким пользователям иметь свои собственные каталоги с именами пользователей, что мне не нужно. Кажется, я не могу понять, как просто определить одного пользователя FTP с паролем, который имеет доступ к одному каталогу по моему выбору.
Это мой первый опыт настройки FTP-сервера.
Спасибо.
Изменить: также нашли этот - может мне стоит использовать ProFTPd, или vsftpd может делать то, что я хочу?
Если вы хотите использовать только решение SFTP, я недавно создал сообщение в блоге, которое описывает именно это, включая несколько распространенных ошибок: http://blog.frands.net/sftp-only-chroot-users-with-openssh-in-debian-166/
Если вы хотите использовать FTP-решение, vsftpd - действительно хороший выбор. Однако, когда пользователь загружает файл, он будет настроен с его пользователем и группой после определенной umask. Вы можете установить основную группу пользователя на www-data, а затем создать umask, подходящую для vsftpd.
Это быстрый способ сделать то, что я предложил:
Создайте пользователя с группой www-data, без реальной оболочки и правильным домашним каталогом, затем установите пароль
useradd -d /path/to/his/domain.com -g www-data -s /bin/false theusername
passwd theusername
Убедитесь, что vsftpd принимает его оболочку. cat / etc / shells и найдите / bin / false (по умолчанию его там не должно быть) - если его там нет, добавьте:
echo "/bin/false" >> /etc/shells
Затем отредактируйте файл конфигурации vsftpd. Коснитесь этих параметров: (если они закомментированы, удалите #)
Отключить анонимный доступ к серверу
anonymous_enable=NO
Разрешить локальным пользователям использовать FTP
local_enable=YES
Разрешить загрузку файлов
write_enable=YES
Установите umask, чтобы файлы, загружаемые пользователем, также были доступны для записи по группе (www-data)
local_umask=002
Chroot пользователя, чтобы он не мог покинуть свой домашний каталог
chroot_local_user=YES
Теперь перезапустите vsftpd
/etc/init.d/vsftpd restart
и все должно быть готово.
НО!