я экспериментирую с этот учебник настроить FTP-сервер на экземпляре Ubuntu 20.04 и посмотреть, смогу ли я отправить на него CSV-файл из экземпляра Windows 10 с помощью Python.
На стороне Linux у меня есть настройки точно такие же, как в учебнике при изменении файла конфигурации vsftd с помощью nano:
слушать = НЕТ
listen_ipv6 = ДА
анонимный_включить = НЕТ
local_enable = ДА
write_enable = ДА
dirmessage_enable = ДА
use_localtime = ДА
xferlog_enable = ДА
connect_from_port_20=ДА
chroot_local_user = ДА
secure_chroot_dir=/var/run/vsftpd/пусто
pam_service_name = vsftpd
rsa_cert_file=/etc/ssl/частный/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable = ДА
user_sub_token=$ПОЛЬЗОВАТЕЛЬ
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable = ДА
userlist_file=/etc/vsftpd.user_list
userlist_deny = НЕТ
На стороне клиента, которая представляет собой компьютер с Windows 10 в локальной сети с экземпляром Ubuntu, у меня есть этот файл Python, чтобы попытаться передать файл CSV на FTP-сервер, работающий на экземпляре Ubuntu. Я как бы потерялся в том, что я буду использовать для аутентификации FTP-сервера, а также номер порта, чтобы указать, на котором работает FTP-сервер.
Python 3.9 из Windows 10:
из ftplib импортировать FTP
FTP_HOST = "192.168.0.105"
#FTP_PORT = 7021
FTP_USER = "бен"
FTP_PASS = "бен"
print("Я работаю...")
фтп = фтп()
#ftp.connect(FTP_HOST, FTP_PORT)
ftp.connect(FTP_HOST)
ftp.login(FTP_USER, FTP_PASS)
# локальное имя файла, который вы хотите загрузить
имя файла = "madison_office_2020.csv"
с открытым (имя файла, "rb") в качестве файла:
ftp.storbinary(f"STOR {имя файла}", файл)
ftp.выйти()
В сценарии Python я закомментировал номер порта, а имя пользователя/пароль — это пользователь Ubuntu Linux, работающий в данный момент в экземпляре Linux. Любые советы оценены, это трассировка, которая почти похожа на ошибку прав доступа к файлу или каталогу. Любые советы оценили здесь не так много мудрости Linux о том, как проверить права доступа к файлам.
Traceback (последний последний вызов):
Файл "C:\Users\bbartling\Desktop\ftp_client\client_side_push.py", строка 20, в <module>
ftp.storbinary(f"STOR {имя файла}", файл)
Файл "C:\Python39\lib\ftplib.py", строка 498, в storbinary
с self.transfercmd(cmd, rest) в качестве соединения:
Файл "C:\Python39\lib\ftplib.py", строка 393, в transfercmd
вернуть self.ntransfercmd (cmd, остальное) [0]
Файл "C:\Python39\lib\ftplib.py", строка 359, в ntransfercmd
resp = self.sendcmd(cmd)
Файл "C:\Python39\lib\ftplib.py", строка 281, в sendcmd
вернуть self.getresp()
Файл "C:\Python39\lib\ftplib.py", строка 254, в getresp
повысить error_perm (соотв.)
ftplib.error_perm: 550 Отказано в доступе.
И последнее замечание: этот каталог существует. /var/run/vsftpd/пустой
Я просто не знаю, как проверить права пользователя для этого каталога. Попробуйте это ниже. Я, вероятно, испортил это еще хуже, здесь не так много мудрости, какие-либо ценные советы:
sudo chown -R бен: /var/run/vsftpd/пусто
sudo chown -R бен /var/run/vsftpd/пустой
sudo chown -R 755 /var/run/vsftpd/пустой
Теперь, если я попытаюсь проверить разрешения, не уверен, что это правильно, просто лс-ал
это даст мне ls: невозможно открыть каталог '.': Отказано в доступе