Счет FTP всего на один каталог

Справочная информация:

Я использую Serverpilot для управления моим сервером Ubuntu, который не предоставляет услуги FTP.

  • Существует пользователь: serverpilot
  • С корневым каталогом: /srv/users/serverpilot/
  • И существует веб-сайт, работающий в этом каталоге: /srv/users/serverpilot/apps/website/public/.

Что я хочу:

Теперь я хотел бы иметь учетную запись FTP, которая может только читать и записать в этот каталог: /srv/users/serverpilot/apps/website/public/ftpdir/.

Что я попробовал:

  • Я установил vsftpd: sudo apt-get install vsftpd
  • Созданный новый пользователь с тем каталогом как домой: sudo useradd -m -d /srv/users/serverpilot/apps/website/public/ftpdir ftpuser (ведьма является, вероятно, не хорошей идеей иметь корневой каталог пользователя в другом пользовательском корневом каталоге),
  • Я изменил пароль с sudo passwd ftpuser
  • Отредактированный значение по умолчанию vsftpd конфигурация с sudo vi /etc/vsftpd.conf
    • local_enable=YES так ftpuser может использоваться в качестве входа в систему ftp
    • write_enable=YES пользователь может записать
    • chroot_local_user=YES ни к чему не может получить доступ снаружи, что это - домашний dir
    • pam_service_name=ftp потому что я получал 530 Входов в систему неправильная ошибка
  • И открытый мой брандмауэр с: sudo ufw allow 21/tcp

Проблемы:

  • Другие пользователи около ftpuser может также использоваться в качестве входа в систему FTP. Я просто хочу иметь 1 пользователя FTP и не позволить другим пользователям системы использовать FTP.
  • ftpuser может также SSH в сервер.
  • Я получаю a 553 error: could not create file ошибка при попытке загрузить файл, зафиксировать это я столкнулся с этим вопросом: https://askubuntu.com/a/320186, но я не думаю, что это - правильный путь, потому что файл должен принадлежать serverpilot пользователь, не ftpuser пользователь. Веб-сайт, работающий под serverpilot пользователь должен обработать загруженные файлы.

Как я решил его прежде:

В прошлом на другом сервере я изменил владение каталога и после добавления этих дополнительных vsftpd параметров конфигурации, это наконец работало:

file_open_mode=0775
local_umask=022
allow_writeable_chroot=YES
pam_service_name=vsftpd

Но на том сервере у меня были проблемы с обработкой загруженных файлов из-за владения, таким образом, там я использую file_get_contents() PHP функционируют для получения файлов по сети вместо прямого доступа их на сервере, который не настолько хорош.

Заключительный вопрос:

Как у меня может просто быть 1 вход в систему ftp, который может читать и записать в каталог в пользовательском корневом каталоге, где владение остается на пользователе, откуда корневой каталог?

3
задан 13 April 2017 в 15:23

3 ответа

local_enable=YES - то, что позволяет другим пользователям войти в систему, необходимо добавить пользователя к explict списку пользователей вместо этого

из руководства:

local_enable
Controls whether local logins are permitted or not. If enabled,       normal user accounts in /etc/passwd (or wherever your PAM config references) may be used to log in. This must be enable for any non-anonymous login to work, including virtual users.
Default: NO

userlist_file
This option is the name of the file loaded when the userlist_enable option is active.
Default: /etc/vsftpd.user_list

Для сортировки проблем полномочий включают команду SITE CHMOD и заставляют клиент ftp использовать его

chmod_enable
When enabled, allows use of the SITE CHMOD command. NOTE! This only applies to local users. Anonymous users never get to use SITE CHMOD.
Default: YES
2
ответ дан 1 December 2019 в 15:24

Можно использовать pure-ftpd PureDB функция для создания входа в систему ftp только для pure-ftpd сервис.

0
ответ дан 1 December 2019 в 15:24

vsftpd не поддерживает предельных пользователей, но proftpd более мощно и имеет опцию в конфигурационном файле (proftpd.conf) ограничить вход в систему некоторого пользователя как это:

<Limit LOGIN>
AllowUser barb
AllowUser dave
AllowGroup ftpuser
DenyAll
</Limit>

Править

  1. для Вашей первой проблемы решение как выше.
  2. вторая проблема также может решить путем добавления DenyUsers ftpuser кому: /etc/ssh/sshd_config
  3. и третья проблема может решить путем добавления ftpuser группе serverpilot и добавьте serverpilot группе ftpuser. также необходимо изменить разрешение папки /srv/users/serverpilot/apps/website/public/ftpdir к 775.

Помните ту папку /srv/users/serverpilot/ должен иметь 755 разрешений.

4
ответ дан 1 December 2019 в 15:24

Другие вопросы по тегам:

Похожие вопросы: