Я запускаю сервер LAMP Ubuntu 12.04.1, и я пытаюсь заставить пользователя читать и писать FTP-доступ к / var / www.
Сначала я установил vsftpd и установил write_enable = YES и chroot_local_user = YES в vsftpd.conf, затем добавил следующий абзац в / etc / ssh / sshd_config:
Subsystem sftp internal-sftp
Match group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
А также комментируем:
#Subsystem sftp /usr/lib/openssh/sftp-server
После этого я перезапустил SSH и VSFTPD, а затем установил права доступа к файлам на / var / www следующим образом:
chown -R root /var/www
chgrp -R www-data /var/www
Первые два устанавливают пользователя и владельца группы.
chmod -R 775 /var/www
Затем они определяют разрешения (пользователь и группа имеют право на чтение, запись и выполнение)
Затем я создаю пользователя и добавляю его в группы sftponly и www-data.
adduser test
usermod -aG www-data test
usermod -aG www-data test
И установите их домашний каталог в / var / www
usermod -d /var/www test
Как только это будет сделано, я не смогу подключиться к SFTP, если не сделаю следующее:
chmod g-w /var/www
Это означает, что www-data (а также мой пользователь) не может писать в папку www, но может писать во все последующие папки, чего недостаточно.
Я также не могу изменить пользователя-владельца папки www, так как это также препятствует успешному соединению с SFTP.
Я просто хочу знать, почему я не могу подключиться к SFTP, если у группы есть доступ на запись, но может, если нет?
Я поискал в сети и нашел кое-что интересное: http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/
в нем говорится, что ваш пользователь homedir должен быть: / или у вас должны быть символические ссылки в каталоге / var / www примерно так:
cd /var/www ; ln -s var . ; ln -s www .
потому что пользователь chrooted и ищет его домашний адрес: / var / www в / var / www
надеюсь, это поможет вам.