Справочная информация:
Я использую Serverpilot для управления моим сервером Ubuntu, который не предоставляет услуги FTP.
serverpilot
/srv/users/serverpilot/
/srv/users/serverpilot/apps/website/public/
. Что я хочу:
Теперь я хотел бы иметь учетную запись FTP, которая может только читать и записать в этот каталог: /srv/users/serverpilot/apps/website/public/ftpdir/
.
Что я попробовал:
sudo apt-get install vsftpd
sudo useradd -m -d /srv/users/serverpilot/apps/website/public/ftpdir ftpuser
(ведьма является, вероятно, не хорошей идеей иметь корневой каталог пользователя в другом пользовательском корневом каталоге),sudo passwd ftpuser
sudo vi /etc/vsftpd.conf
local_enable=YES
так ftpuser
может использоваться в качестве входа в систему ftpwrite_enable=YES
пользователь может записатьchroot_local_user=YES
ни к чему не может получить доступ снаружи, что это - домашний dirpam_service_name=ftp
потому что я получал 530 Входов в систему неправильная ошибкаsudo ufw allow 21/tcp
Проблемы:
ftpuser
может также использоваться в качестве входа в систему FTP. Я просто хочу иметь 1 пользователя FTP и не позволить другим пользователям системы использовать FTP.ftpuser
может также SSH в сервер.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, который может читать и записать в каталог в пользовательском корневом каталоге, где владение остается на пользователе, откуда корневой каталог?
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
Можно использовать pure-ftpd
PureDB
функция для создания входа в систему ftp только для pure-ftpd
сервис.
vsftpd
не поддерживает предельных пользователей, но proftpd
более мощно и имеет опцию в конфигурационном файле (proftpd.conf
) ограничить вход в систему некоторого пользователя как это:
<Limit LOGIN>
AllowUser barb
AllowUser dave
AllowGroup ftpuser
DenyAll
</Limit>
Править
DenyUsers ftpuser
кому: /etc/ssh/sshd_config
ftpuser
группе serverpilot
и добавьте serverpilot
группе ftpuser
. также необходимо изменить разрешение папки /srv/users/serverpilot/apps/website/public/ftpdir
к 775. Помните ту папку /srv/users/serverpilot/
должен иметь 755 разрешений.