Score:0

เซิร์ฟเวอร์ vsftpd FTP บน Ubuntu 20.04

ธง cn

ฉันกำลังทดลองกับ กวดวิชานี้ เพื่อตั้งค่าเซิร์ฟเวอร์ FTP บนอินสแตนซ์ Ubuntu 20.04 และดูว่าฉันสามารถพุชไฟล์ CSV จากอินสแตนซ์ Windows 10 ด้วย Python ได้หรือไม่

ที่ฝั่ง linux ฉันมีการตั้งค่าเหมือนกับสถานะการสอนเมื่อทำการแก้ไขไฟล์ vsftd config ด้วย nano:

ฟัง = ไม่
Listen_ipv6=ใช่
anonymous_enable=ไม่
local_enable=ใช่
write_enable=ใช่
dirmessage_enable=ใช่
use_localtime=ใช่
xferlog_enable=ใช่
connect_from_port_20=ใช่
chroot_local_user=ใช่
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=ใช่
user_sub_token=$USER
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 บน LAN ที่มีอินสแตนซ์ของ 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 = "เบน"

พิมพ์ ("ฉันกำลังทำงาน ... ")
ftp = เอฟทีพี ()
#ftp.connect (FTP_HOST, FTP_PORT)

ftp.connect(FTP_HOST)
ftp.login(FTP_USER, FTP_PASS)

# ชื่อไฟล์ในเครื่องที่คุณต้องการอัปโหลด
ชื่อไฟล์ = "madison_office_2020.csv"
ด้วย open(ชื่อไฟล์, "rb") เป็นไฟล์:
    ftp.storbinary(f"STOR {ชื่อไฟล์}", ไฟล์)

ftp.quit()

ในสคริปต์ Python ฉันมีหมายเลขพอร์ตแสดงความคิดเห็นและชื่อผู้ใช้ / รหัสผ่านคือผู้ใช้ Ubuntu Linux ที่กำลังทำงานบนอินสแตนซ์ Linux เคล็ดลับใด ๆ ที่ชื่นชมนี่คือการย้อนกลับที่เกือบจะดูเหมือนข้อผิดพลาดในการอนุญาตไฟล์หรือไดเร็กทอรี เคล็ดลับใด ๆ ชื่นชมภูมิปัญญา Linux ไม่มากที่นี่เกี่ยวกับวิธีตรวจสอบสิทธิ์ของไฟล์

Traceback (การโทรครั้งล่าสุดล่าสุด):
  ไฟล์ "C:\Users\bbartling\Desktop\ftp_client\client_side_push.py" บรรทัดที่ 20 ใน <โมดูล>
    ftp.storbinary(f"STOR {ชื่อไฟล์}", ไฟล์)
  ไฟล์ "C:\Python39\lib\ftplib.py", บรรทัด 498 ใน storbinary
    ด้วย self.transfercmd(cmd, ส่วนที่เหลือ) เป็น conn:
  ไฟล์ "C:\Python39\lib\ftplib.py", บรรทัด 393, ใน transfercmd
    ส่งคืน self.ntransfercmd (cmd, ส่วนที่เหลือ) [0]
  ไฟล์ "C:\Python39\lib\ftplib.py", บรรทัด 359, ใน ntransfercmd
    resp = self.sendcmd (ซม.)
  ไฟล์ "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/empty
sudo chown -R เบน /var/run/vsftpd/empty
sudo chown -R 755 /var/run/vsftpd/empty

ตอนนี้ถ้าฉันลองตรวจสอบการอนุญาต ไม่แน่ใจว่าวิธีนี้ถูกต้องหรือไม่ด้วย just ls -อัล สิ่งนี้จะให้ฉัน ls: ไม่สามารถเปิดไดเร็กทอรี '.': การอนุญาตถูกปฏิเสธ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา