Предоставление пользователю sftp доступа к каталогу / var / www

12

Я создал пользователя и сделал его домашний каталог /var/www/mysite/ftpdir

Я также добавил запись пользователя Match для этого пользователя в sshd_configChrootDirectory, который указывает на/var/www/mysite

Я перезапустил, sshчтобы забрать это.

Когда я вхожу с sftp - пользователь все еще идет в старый каталог пользователя, т.е. /home/user

Что мне не хватает?

Hawkeye
источник
как насчет ссылки /home/userна цель?
иш

Ответы:

17

Это процесс:

  1. Добавьте пользователя в группу: sudo usermod -aG www blubкак в « Какой самый простой способ редактировать и добавлять файлы в« / var / www »?

    или просто использовать sudo adduser <username> www-data

  2. Установите vsftpd sudo apt-get install vsftpd
  3. Настройте vsftpd для удаленного доступа: sudo nano /etc/vsftpd.confи внутри набора файлов

    chroot_local_user=YES
    

    и убедитесь, что это закомментировано:

    #chroot_list_enable=YES
    

    в соответствии с документацией .

  4. Перезапустите nsftp: sudo service vsftpd restart
  5. Настройте домашний каталог пользователя на веб-каталог (не в /home):

    sudo usermod -d /var/www/mysite/ftpaccessdir <username>
    
  6. Настроить ssh chroot

    sudo nano /etc/ssh/sshd_config
    

    добавить в конец следующее:

    Subsystem  sftp  internal-sftp
    Match user <username>
        ChrootDirectory /var/www/site
        ForceCommand internal-sftp
    AllowTcpForwarding no
    

    и убедитесь, что далее в файле это закомментировано (т.е. перед тем, который вы только что добавили)

    #Subsystem sftp /usr/lib/openssh/sftp-server
    
  7. Перезагрузите SSH

    sudo service ssh restart
    
  8. Изменим разрешения для apache:

    chown root:root /var/www
    chown root:root /var/www/site
    chmod 755 /var/www
    

    Как в документации здесь .

  9. Убедитесь, что ваш каталог имеет доступ к данным www

    sudo chown -R www-data:www-data /var/www/site
    chmod 755 /var/www/site
    
Hawkeye
источник
2
Я следовал этим инструкциям, но в конце я получил отказ в соединении при добавлении этих строк. Подсистема sftp internal-sftp Соответствие пользователя <username> ChrootDirectory / var / www / site ForceCommand internal-sftp AllowTcpForwarding no
Ata
1
У меня тоже есть такая же проблема с Ubuntu 14.04
torayeff
У меня такая же проблема!
Maxisme
4
Почему на шаге 9 вам нужно chown root:root /var/www/siteтолько вернуть его sudo chown -R www-data:www-data /var/www/siteна шаг 10, это преднамеренно?
JohnnyQ
Это не работает для меня
Linga
2

Если в конце вы получаете сообщение об ошибке «Отказано в соединении», убедитесь, что после «UsePAM yes» указано «Subsystem sftp internal- sftp» . Если нет, то обновите и перезапустите ssh и все заработало.

Needhi Agrawal
источник
0

У меня есть простой метод, и он работал для меня Apache.

sudo useradd -d /var/www demo_user -g www-data
sudo passwd demo_user
sudo service ssh restart

Вот и все, если вы все еще сталкиваетесь с проблемой использования разрешений chmodи chownрешаете их в соответствии со своими потребностями.

Имран Захур
источник