1. ติดตั้ง vsftpd service บน ubuntu
1. การติดตั้ง
sudo apt-get install vsftpd
2. เพิ่มผู้ใช้ (UFTP)
sudo useradd -d /home/uftp -s /bin/bash uftp
3. ตั้งรหัสผ่านผู้ใช้
sudo useradd -d /home/uftp -s /bin/bash uftp
4. สร้างไดเรกทอรีผู้ใช้
sudo mkdir /home/uftp
5. ตั้งรหัสผ่านผู้ใช้
sudo passwd uftp
6. ตั้งค่าไฟล์การกำหนดค่า /etc/vsftpd.conf
sudo vim /etc/vsftpd.conf
. แก้ไขสิทธิ์ในการอัปโหลดไฟล์:
จะมีปัญหาที่นี่ โดยค่าเริ่มต้นการอนุญาตเริ่มต้นคือ 077 ซึ่งหมายถึง 700 ที่สอดคล้องกันใน Linux กฎการคำนวณคือการอนุญาตของ Linux 777 - local_umask
หากไม่ได้ตั้งค่าสิทธิ์ไฟล์ local_umask ไฟล์ที่อัปโหลดจะไม่สามารถเข้าถึงได้ผ่านเซิร์ฟเวอร์ (การอนุญาตที่ขาดหายไป)
ข. เพิ่มในตอนท้ายของไฟล์กำหนดค่า:
userlist_deny = ไม่มี userlist_enable = ใช่ userlist_file =/etc/leaded_users secocomp_sandbox = ไม่มี local_enable = ใช่
ค. ตั้งค่าสิทธิ์สำหรับการอัปโหลดไฟล์:
write_enable = YES
หากคุณไม่ได้ตั้งค่าเป็นใช่การอัปโหลดไฟล์จะไม่ได้รับอนุญาตตามค่าเริ่มต้น
7. สร้าง /etc /readed_users
เพิ่มอนุญาตให้เพิ่มงานลงในไฟล์
8. รีสตาร์ทบริการ
sudo service vsftpd restart
9. ใช้ XFTP เพื่อทดสอบการเชื่อมต่อ
ใช้ XFTP เพื่อสร้างการเชื่อมต่อใหม่ ที่นี่คุณต้องให้ความสนใจกับโปรโตคอล FTP ที่คุณเลือก พอร์ตคือ 21 หลังจากกรอกรหัสผ่านบัญชีคุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์ของเรา
ไฟล์ทดสอบอัปโหลด:
ไฟล์ TXT ถูกอัปโหลดที่นี่และเราจะเห็นได้ว่าการอนุญาตของไฟล์คือ 666 นี่เป็นส่วนใหญ่เป็นเพราะเราตั้งค่าสิทธิ์หลังจากอัปโหลดไฟล์ local_umask
2. Java FTPClient ดำเนินการอัปโหลดไฟล์
1. การพึ่งพา Maven
<!-ส่วนประกอบเครื่องมือ Apache-> <การพึ่งพา> <roupId> org.apache.Commons </groupId> <ratifactId> Commons-Lang3 </artifactid> </การพึ่งพาอาศัย> <การพึ่งพา> <roupId> org.apache.Commons </groupid> <ratifactid> <ARTIFACTID> Commons-Net </artifactid> </derdency>
2. สร้างวัตถุ FTPClient เพื่อเชื่อมต่อกับเซิร์ฟเวอร์จากระยะไกล
ftpClient ftp = new ftpClient (); // ลิงค์ระยะไกลบริการ ftp.connect ("192.168.148.128", 21);ผลการเชื่อมต่อสามารถดูได้ที่การดีบัก:
3. เซิร์ฟเวอร์ล็อกอิน ftpClient
ftp.login ("uftp", "**"); // ส่งคืนสถานะผลลัพธ์การเข้าสู่ระบบ int ตอบ = ftp.getReplyCode (); if (! ftpreply.ispositiveCompletion (ตอบกลับ)) {ftp.disconnect (); กลับ ; -เราสามารถตรวจสอบได้ว่าผู้ใช้เข้าสู่ระบบได้สำเร็จหรือไม่โดยตัดสิน ReplyCode และ REPORSTRING!
4. แก้ไขพา ธ การอัปโหลดไฟล์และประเภทไฟล์
// แก้ไขพา ธ ไฟล์อัปโหลด ftp.changeworkingDirectory ("/home/uftp/images/"); // แก้ไขประเภทไฟล์ ftp.setFileType (ftp.binary_file_type);5. อัปโหลดไฟล์
// รับสตรีมอินพุตของไฟล์ที่อัปโหลด FileInputStream FileInputStream = ใหม่ FileInputStream (ไฟล์ใหม่ ("D: /123.JPG")); // ส่งไฟล์ไปยังเซิร์ฟเวอร์ ftp.storefile ("hello.jpg", fileInputStream);หลังจากไฟล์อัปโหลดเสร็จสมบูรณ์การอัปโหลดจะสำเร็จโดยการตรวจสอบผลการส่งคืน
6. ออกจากระบบ
// เข้าสู่ระบบ ftp.logout ();
ขั้นตอนข้างต้นคือการใช้ FTPClient เพื่อดำเนินการอัปโหลดไฟล์ให้เสร็จสมบูรณ์
3. ใช้ Nginx เพื่อดูรูปภาพเซิร์ฟเวอร์
1. ไฟล์กำหนดค่า nginx
เพิ่มความละเอียดที่อยู่รูปภาพในเซิร์ฟเวอร์
ตำแหน่ง ~.*/. (gif | jpg | jpeg | bmp | png | ico | txt) $ {root/home/uftp/images; หมดอายุ 7D; -2. รีสตาร์ท nginx
./nginx -s reload
3. ดูรูปภาพ
http://192.168.148.128/hello.jpg
สรุป: ณ จุดนี้เราทำการอัปโหลดภาพไปยังเซิร์ฟเวอร์อย่างง่าย ๆ และแสดงการสาธิตเล็ก ๆ ปัญหาหลักที่พบในระหว่างกระบวนการกำหนดค่าเป็นเรื่องเกี่ยวกับการอนุญาตไฟล์ หากไม่ได้ตั้งค่า local_umask ในไฟล์การกำหนดค่าใน VSFTPD แม้ว่าเราจะอัปโหลดไฟล์สำเร็จเราก็ไม่สามารถใช้ Nginx เพื่อเรียกดูได้ ตั้งค่า write_enable = ใช่เพื่อให้แน่ใจว่าสามารถอัปโหลดไฟล์ได้
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะช่วยในการศึกษาหรือทำงานของทุกคน ฉันหวังว่าจะสนับสนุน Wulin.com เพิ่มเติม!