Eu experimentez acest tutorial să configurez un server FTP pe o instanță Ubuntu 20.04 și să văd dacă pot împinge un fișier CSV către el dintr-o instanță Windows 10 cu Python.
Pe partea Linux, am setările exact așa cum se arată în tutorial când trec prin modificarea fișierului de configurare vsftd cu nano:
asculta=NU
listen_ipv6=DA
anonymous_enable=NU
local_enable=DA
write_enable=DA
dirmessage_enable=DA
use_localtime=DA
xferlog_enable=DA
connect_from_port_20=DA
chroot_local_user=DA
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=DA
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=DA
userlist_file=/etc/vsftpd.user_list
userlist_deny=NU
Pe partea client, care este o mașină Windows 10 pe LAN cu instanța Ubuntu, am acest fișier Python pentru a încerca să împing fișierul CSV pe serverul FTP care rulează pe instanța Ubuntu. Am cam pierdut ce aș folosi pentru autentificarea serverului FTP, precum și numărul portului pentru a specifica faptul că serverul FTP rulează.
Python 3.9 din Windows 10:
din ftplib import FTP
FTP_HOST = „192.168.0.105”
#FTP_PORT = 7021
FTP_USER = "ben"
FTP_PASS = "ben"
print("Lucrez...")
ftp = FTP()
#ftp.connect(FTP_HOST, FTP_PORT)
ftp.connect(FTP_HOST)
ftp.login(FTP_USER, FTP_PASS)
# nume de fișier local pe care doriți să îl încărcați
nume de fișier = „madison_office_2020.csv”
cu open(filename, "rb") ca fișier:
ftp.storbinary(f"STOR {nume fișier}", fișier)
ftp.quit()
În scriptul Python, am numărul portului comentat, iar numele de utilizator/parola este utilizatorul Ubuntu Linux care rulează în prezent pe instanța Linux. Orice sfat apreciat, acesta este urmărirea care aproape pare a fi o eroare de permisiuni de fișier sau director. Orice sfat nu a apreciat prea multă înțelepciune Linux aici despre cum să verificați permisiunile fișierelor.
Traceback (cel mai recent apel ultimul):
Fișierul „C:\Users\bbartling\Desktop\ftp_client\client_side_push.py”, rândul 20, în <modul>
ftp.storbinary(f"STOR {nume fișier}", fișier)
Fișierul „C:\Python39\lib\ftplib.py”, linia 498, în storbinary
cu self.transfercmd(cmd, rest) ca conn:
Fișierul „C:\Python39\lib\ftplib.py”, linia 393, în transfercmd
return self.ntransfercmd(cmd, rest)[0]
Fișierul „C:\Python39\lib\ftplib.py”, linia 359, în ntransfercmd
resp = self.sendcmd(cmd)
Fișierul „C:\Python39\lib\ftplib.py”, linia 281, în sendcmd
return self.getresp()
Fișierul „C:\Python39\lib\ftplib.py”, linia 254, în getresp
ridicare error_perm(resp)
ftplib.error_perm: 550 Permisiune refuzată.
O ultimă notă este că acest director există. /var/run/vsftpd/empty
Pur și simplu nu știu cum să verific permisiunile utilizatorului pentru acest director. Încercați asta mai jos, probabil că am încurcat-o și mai rău, nu prea multă înțelepciune aici, niciun sfat este apreciat:
sudo chown -R ben: /var/run/vsftpd/empty
sudo chown -R ben /var/run/vsftpd/empty
sudo chown -R 755 /var/run/vsftpd/empty
Acum, dacă încerc să verific permisiunile, nu sunt sigur dacă acesta este modul corect cu doar ls -al
asta imi va da ls: nu se poate deschide directorul '.': Permisiune refuzată