เซิร์ฟเวอร์ FTP พื้นฐานของ Ubuntu


33

ฉันต้องการตั้งค่าเซิร์ฟเวอร์ FTP พื้นฐานในการติดตั้งเซิร์ฟเวอร์ Ubuntu ของฉัน ฉันเล่นกับ VSFTPD แล้ว แต่มีปัญหาในการรับเซิร์ฟเวอร์เพื่ออนุญาตให้ฉันสร้างไดเรกทอรีและคัดลอกไฟล์ ฉันได้ตั้งค่าระบบเพื่ออนุญาตให้ผู้ใช้ภายในเครื่อง แต่ปรากฏว่านั่นไม่ได้หมายความว่าฉันสามารถเข้าถึงเพื่อสร้างไดเรกทอรี นี่อาจเป็นตัวอย่างที่ฉันต้องมีสายดินในการตั้งค่าเซิร์ฟเวอร์ Ubuntu เพื่อกำหนดค่าเซิร์ฟเวอร์ FTP นี้ให้เพียงพอ เป้าหมายสุดท้ายคือสามารถย้ายไฟล์จากโฟลเดอร์ dev ในเครื่องของฉันไปยังโฟลเดอร์ www ของฉันเพื่อนำไปใช้งาน ไดเรกทอรีจะต้องสามารถย้ายได้เช่นกัน ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.


คุณพูดถึงการย้ายไฟล์และโฟลเดอร์ในรูปแบบโลคัล dev ไปที่โฟลเดอร์ www - คุณทำสิ่งนี้ทั้งหมดในเครื่องเดียวกันหรือเครื่องอื่น
Marco Ceppi

คุณขาย VSFTPD เสร็จสมบูรณ์ด้วยหรือยัง หรือคุณสนใจซอฟต์แวร์ประเภท FTP อย่าง pureftp อื่น ๆ
Marco Ceppi

Local dev เป็นเครื่องที่แยกจากกันโดยสิ้นเชิง ฉันคุ้นเคยกับการย้ายไฟล์ไปยังเว็บเซิร์ฟเวอร์ผ่าน FTP อาจมีวิธีที่ดีกว่า
JPrescottSanders

ฉันไม่ได้ขาย VSFTPD มันเป็นครั้งแรกที่ฉันพบในขณะที่ Google ถ้าคุณมีทางออกที่ง่ายกว่าฉันทุกคนหู
JPrescottSanders

คำตอบ:


42

ฉันจะแนะนำ PureFTPD เพราะเป็นวิธีที่ง่ายและใช้ง่ายที่สุดในความคิดของฉัน คุณจะต้องติดตั้งก่อน: sudo apt-get install pure-ftpdเมื่อติดตั้งแล้วมันจะเริ่มต้นเอง โดยค่าเริ่มต้นจะใช้การรับรองความถูกต้อง PAM - หมายถึงมันใช้บัญชีที่มีอยู่แล้วในระบบสำหรับมันเป็นรับรองความถูกต้อง สิ่งที่คุณต้องทำคือสร้างบัญชีผู้ใช้ที่มีไดเรกทอรีบ้านเป็นเส้นทาง www ของคุณและตั้งรหัสผ่านสำหรับบัญชีนั้น จากนั้นคุณควรจะสามารถเชื่อมต่อกับผู้ใช้ / รหัสผ่านนั้นเพื่ออัพโหลด / ดาวน์โหลดไฟล์

บางสิ่งเช่นนี้

sudo adduser ftpman --home /var/www/ --ingroup www-data

ซึ่งจะสร้างftpmanผู้ใช้และทำให้เขาอยู่ในกลุ่ม www-data ที่ Apache ใช้และจะนำคุณไปยังสคริปต์การตั้งค่าที่เหลือ เมื่อมีการกำหนดไว้ให้ตรวจสอบให้แน่ใจว่าchmodโฟลเดอร์ WWW ถ้าคุณได้รับข้อผิดพลาดเกี่ยวกับมันมีอยู่แล้วในการรวมผู้ใช้ / กลุ่มที่คุณสร้างขึ้น

สุดท้ายถ้าคุณต้องการล็อคการเข้าถึง SSH สำหรับการเรียกใช้บัญชีนั้น: sudo chsh -s /bin/false ftpmanซึ่งจะเปลี่ยนผู้ใช้เชลล์เป็นเท็จ (แทนที่ ftpman ด้วยผู้ใช้ ftp ของคุณ)


5
PureFTP เป็นวิธีที่ง่ายที่สุดในการตั้งค่าเท่าที่ฉันกังวล
นาธานออสมัน

1
คุณมีนิสัยชอบให้คำอธิบายที่สมบูรณ์เสมอเหมือนครู ที่น่ากลัว !!!
user3215

1
ฉันลองสิ่งนี้ แต่ฉันไม่สามารถเชื่อมต่อกับผู้ใช้ที่เพิ่งสร้างใหม่ได้ ผู้ใช้ที่มีอยู่ทำงานได้ดี
wim

1
ทั้งหมดนี้ทำงานได้ดียกเว้นเมื่อฉันเรียกใช้สิ่งchshนี้ดูเหมือนว่าจะป้องกันผู้ใช้จากการเข้าสู่ระบบผ่านทาง FTP เช่นกัน การตั้งค่ากลับเพื่อ/bin/bashให้สามารถทำงานได้อีกครั้ง
DanH

1
ขอบคุณและฉันสามารถยืนยันได้ว่าฉันใช้เวลาทั้งวันกับ vsftpd และ 5 นาทีกับ pureftpd ในเวลาติดตั้ง สำหรับการตั้งค่าที่ง่ายและปลอดภัยให้ใช้ pureftpd ฉันสับสนว่าเหตุใดจึงทำเป็น vsftpd!
RyBolt

10

ในความคิดของฉัน SFTP เป็นวิธีที่ดีกว่าที่จะไป เฮ้มันมีคำว่า "ปลอดภัย" ในชื่อมันต้องดีกว่า :)

SFTP ใช้ ssh เพื่อถ่ายโอนไฟล์ (แตกต่างจาก FTPS ซึ่งเป็น FTP + TLS โดยทั่วไป) หมายความว่าถ้าคุณสามารถ ssh ไปยังเครื่องเป้าหมายคุณสามารถ SFTP ได้เกือบทุกครั้งเนื่องจากใช้กลไกการตรวจสอบสิทธิ์แบบเดียวกันดังนั้นไม่ต้องติดตั้งและกำหนดค่า daemons เซิร์ฟเวอร์ที่แตกต่างกันเลย (เช่น no pureftpd หรือ vsftpd) ตราบใดที่สิทธิ์ของคุณได้รับการตั้งค่าอย่างถูกต้อง/var/www- ซึ่งอาจเป็นเรื่องของsudo chmod g+w /var/www; sudo usermod -g $USER -G www-data $USER- คุณควรจะสามารถใช้ SFTP ได้ทันที

ซอฟต์แวร์ไคลเอ็นต์ส่วนใหญ่ในปัจจุบันจะทำ SFTP อย่างมีความสุขและคุณสามารถใช้scpจากเชลล์บนเซิร์ฟเวอร์ dev เพื่อคัดลอกข้อมูลข้าม ( scp -Rจะคัดลอกโฟลเดอร์ทั้งหมดไปและมีประโยชน์มาก) คุณสามารถไปอีกขั้นตอนหนึ่งและทำการล็อคอินด้วยกุญแจสาธารณะโดยอัตโนมัติโดยไม่ต้องพิมพ์รหัสผ่านอีกต่อไป :)


3
คำแนะนำคำใบ้ ... หากคุณมีไคลเอนต์ Windows พวกเขาสามารถใช้ WinSCP winscp.net/eng/index.phpเพื่อเข้าถึงเซิร์ฟเวอร์ SFTP
LassePoulsen

ตามความคิดเห็นของคุณ OP ควรในการใช้หลักสูตร vsftpd เพราะ VS ยืนสำหรับความปลอดภัยมาก :-)
qbi

PureFTPD ใช้การรับรองความถูกต้องแบบเดียวกับที่ SFTP ทำได้จริง ๆ แล้วมันมีความปลอดภัยมากกว่าในความคิดของฉันเพราะถ้าข้อมูลบัญชีของคุณถูกรั่วไหลจะไม่มีใครเข้าถึง SSH ในเครื่องของคุณ ที่แย่ที่สุดคือพวกเขามีการเข้าถึงไฟล์
Marco Ceppi

หากแอปของคุณรองรับ FTP เท่านั้นและคุณกำลังขุดผ่าน SSH ความแตกต่างคืออะไร? :)
endolith

5

ฉันจะแนะนำอย่างยิ่งให้ใช้ vsftpd เป็นหนึ่งในดีมอน FTP ที่ปลอดภัยที่สุดใน Linux หลายคนมีจุดอ่อนในอดีตและดูเหมือนว่า FTP นั้นยากที่จะนำไปใช้อย่างปลอดภัย

vsftpd เริ่มต้นทันทีหลังจากที่คุณติดตั้ง Ubuntu ให้ผู้ใช้ภายในสามารถเข้าสู่ระบบได้ดังนั้นให้เริ่มไคลเอนต์ FTP ของคุณและลงชื่อเข้าใช้ในฐานะผู้ใช้ปกติด้วยรหัสผ่านระบบของคุณ (ตัวอย่างของฉันใช้ lftp):

> lftp 127.0.0.1 ftp
lftp 127.0.0.1:~> user qbi
Password: #typing my password which I also use to log in via GDM
lftp qbi@127.0.0.1:~> ls
drwxr-xr-x 10 1000 1000   4096 2008-07-28 16:32 Desktop
... many more

ตอนนี้ฉันกำลังใช้ตัวจัดการไฟล์บางประเภท (Nautilus, Shell ฯลฯ ) เพื่อสร้างไดเรกทอรีใหม่fooและกลับไปที่ไคลเอนต์ FTP ของฉัน:

ftp qbi@127.0.0.1:~> ls -l
...
drwxr-xr-x 2 1000 1000   4096 2010-08-09 13:32 foo

ไดเรกทอรีอยู่ที่นั่นและฉันสามารถcdเข้าไปและใช้งานได้ สิ่งนี้ก็เหมือนกันถ้าคุณมีผู้ใช้พิเศษ ที่นั่นคุณสามารถสร้างไดเรกทอรีและเข้าถึงได้ทันที ที่นี่เป็นสิ่งสำคัญในการค้นหาสิทธิ์การเข้าถึง


3

ฉันเจียมแนะนำเซิร์ฟเวอร์ FTP ผมเขียนตัวเองจากรอยขีดข่วน: JetFTP มันง่ายมากที่จะติดตั้งและใช้งาน


การติดตั้ง:

  • เพิ่ม PPA ของฉันไปยังแหล่งซอฟต์แวร์ของคุณและอัปเดต:

    sudo apt-add-repository ppa:george-edison55/george-edison
    
  • เรียกใช้คำสั่งต่อไปนี้:

    sudo apt-get install jetftp
    
  • แค่นั้นแหละ!

การใช้ JetFTP นั้นง่ายมากเพียงแค่เชื่อมต่อพอร์ต8021โดยใช้ชื่อเข้าสู่ระบบและรหัสผ่านบนคอมพิวเตอร์ที่ JetFTP กำลังทำงานอยู่


2

อย่าใช้ ftpมันเป็นโปรโตคอลที่ไม่ปลอดภัยอย่างแน่นอนเพราะมันจะส่งชื่อผู้ใช้และรหัสผ่านไปยังเซิร์ฟเวอร์ การติดตั้ง sftp นั้นง่ายดายและคุณจะได้รับประโยชน์อย่างมากจากความปลอดภัยของการเชื่อมต่อของคุณ


ปัญหาที่ชัดเจนคือคำตอบที่ดีที่สุด :-)
Sajad Bahmani

0

มีสามวิธีในการตั้งค่าเซิร์ฟเวอร์ ftp:

(1) FTP ที่ไม่ระบุตัวตน:

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

(2) FTP ที่มีทั้งการเข้าถึงแบบไม่ระบุชื่อและผู้ใช้ที่มีบัญชีรหัสผ่าน:

วิธีนี้ช่วยให้ผู้ใช้บัญชีทั้งที่ไม่ระบุชื่อและรหัสผ่านสามารถเข้าสู่เซิร์ฟเวอร์ได้ พวกเขาจะสามารถเข้าถึงไดเรกทอรีที่ระบุยกเว้นผู้ใช้รูทที่สามารถดู / แก้ไข / ลบไฟล์และ / หรือโฟลเดอร์ทั้งหมด

(3) FTP ที่มีการสนับสนุน mysql สำหรับการตรวจสอบผู้ใช้เสมือน:

วิธีนี้อนุญาตการเข้าถึงเซิร์ฟเวอร์สำหรับกลุ่มผู้ใช้บางกลุ่มที่ไม่มีบัญชีเชลล์การตรวจสอบผู้ใช้เสมือนบนระบบ จะใช้เซิร์ฟเวอร์ mysql ภายนอกที่เก็บข้อมูลผู้ใช้

ตัวเลือกแรก: FTP ที่ไม่ระบุตัวตน

ก่อนที่จะเริ่มการสร้างเซิร์ฟเวอร์ ftp แบบไม่ระบุชื่อคุณต้องเพิ่มผู้ใช้ชื่อ ftp ในระบบของคุณด้วยโฮมไดเร็กตอรี่ด้วย ขั้นตอนนี้ง่ายมากเพียงทำตามคำสั่งเหล่านี้:

useradd -d /home/ftp/ftp -s /bin/false ftp

mkdir -p /home/ftp/upload

การทำเช่นนี้อนุญาตให้บัญชีนี้เท่านั้นที่จะเขียนในโฟลเดอร์นี้ คุณสามารถใช้ตัวแปรเพิ่มเติมเพื่อระบุสิ่งที่เซิร์ฟเวอร์ ftp จะทำ นี่คือตัวอย่างบางส่วน:

-e Allow access to the server only by anonymous users
-B Start the server with background demon
-i Anonymous users can't upload files
-M Let anonymous users create folders
-s ftp user files cannot be downloaded

ตัวเลือกที่สอง: '' 'ผู้ใช้บัญชีทั้งที่ไม่ระบุชื่อและรหัสผ่าน' ''

เพื่อให้สามารถมีทั้งบัญชีผู้ใช้ที่ไม่ระบุชื่อและรหัสผ่านในเซิร์ฟเวอร์เดียวกันให้ทำตามคำแนะนำเล็ก ๆ นี้:

-B ,-i ,M, -r, -s same of before
-u <uid> Enable users with a specified user id (uid) to access the server 
-V <Ip address> Only specified IPs will be able to access the server in non-anonymous mode 

ตัวเลือกที่สาม: '' 'ผู้ใช้เสมือนจริงที่มี Mysql' ''

ในการสร้างเซิร์ฟเวอร์ที่มีการสนับสนุน mysql ให้ทำตามขั้นตอนนี้:

ดาวน์โหลดและติดตั้งตัวจัดการผู้ใช้สำหรับ PureFTPd ซึ่งคุณสามารถหาได้ที่นี่ http://machiel.generaal.net/index.php?subject=user_manager_pureftpd

ขยายและอัพโหลดเนื้อหาทั้งหมดลงในไดเรกทอรี www เว็บเซิร์ฟเวอร์ของคุณจากนั้นเขียนลิงก์เบราว์เซอร์ของคุณที่ลิงค์http: //localhost/ftp/install.php ทำตามขั้นตอนทั้งหมดที่โปรแกรมติดตั้งขอให้คุณคัดลอกและบันทึก rge pureftpd-mysql .conf ลงในไดเรกทอรีผู้จัดการผู้ใช้ pureftpd

เสร็จสิ้น เข้าถึงแผงการบริหารโดยใช้ลิงค์นี้http: // localhost / ftp

ตัวเลือกเพิ่มเติมที่จะเพิ่มก่อนเรียกใช้กระบวนการเซิร์ฟเวอร์

-c <num> Max client that can connect to the server
-C <num> Max connections for a IP
-T <bandwitdh> Max bandwitdh disponible for each connection
-n <MBytes> Max MB that a user can have into its home folder
-m <Cpu Loading> Stops the anonymous uploads if the cpu loading exceed from this value 

และดูสิ่งนี้สำหรับแอพพลิเคชันเซิร์ฟเวอร์ ftp:
https://help.ubuntu.com/6.06/ubuntu/serverguide/C/ftp-server.html


4
เมื่อคุณคัดลอกและวางคำตอบจากที่อื่นคุณควรให้เครดิตแหล่งที่มาเสมอ
Dori

0

การติดตั้งเริ่มต้นของ VSFTPD ไม่อนุญาตให้สร้าง / แก้ไขการเปลี่ยนแปลงตามค่าเริ่มต้น คุณต้องแก้ไข/etc/vsftpd.confและยกเลิกหมายเหตุบรรทัดต่อไปนี้ ...

write_enable=YES

และประการที่สองคุณต้องกำหนดค่าการอนุญาตระบบไฟล์ที่เหมาะสมในไฟล์และโฟลเดอร์ที่เกี่ยวข้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.