สร้างผู้ใช้ vsftpd ใหม่และล็อคเพื่อ (ระบุ) ไดเรกทอรี home / login


31

ฉันต้องให้สิทธิ์การเข้าถึงไดเรกตอรีหลาย ๆ แบบชั่วคราวและแบบ จำกัด เป็นระยะบนเซิร์ฟเวอร์ CentOS linux ที่ติดตั้ง vsftp

ฉันได้สร้างผู้ใช้ใช้และรหัสผ่านให้แก่พวกเขาใช้useradd [user_name]passwd [password]

ฉันได้สร้างไดเรกทอรี/var/ftpแล้วฉันจะผูกมันไว้ในไดเรกทอรีที่ฉันต้องการ จำกัด การเข้าถึง

ฉันต้องทำอะไรเป็นพิเศษเพื่อให้แน่ใจว่าเมื่อผู้ใช้รายนี้ล็อกอินเข้าสู่ FTP พวกเขาจะสามารถเข้าถึงไดเรกทอรีนี้ได้เท่านั้น


ขออภัยคุณเคยลองตรวจสอบ vsftpd.conf หรือไม่
jirib

ใช่. ฉันมี. ไม่บอกวิธีการสั่งให้ผู้ใช้เฉพาะเข้าสู่ไดเรกทอรีที่เฉพาะเจาะจง ... ?
zigojacko

1
แน่ใจหรือไม่? ตัวเลือก chroot_list_enable ... หรือคุณต้องการแทนที่ไดเรกทอรีที่แตกต่างจาก $ HOME?
jirib

1
ฉันต้องการทราบวิธีประกาศโฮมไดเร็กทอรีเฉพาะสำหรับผู้ใช้ที่ระบุ ผมได้เปิดใช้งานและสร้างchroot_list_enable /etc/vsftpd/chroot_listฉันไม่รู้ว่าจะทำอย่างไรต่อไป
zigojacko

จากนั้นเราจะเปลี่ยน homedir ของผู้ใช้
jirib

คำตอบ:


44

คำตอบที่สมบูรณ์ที่แก้ไขคำถามของฉันสำหรับคนอื่น ๆ ที่มีคำแนะนำแบบทีละขั้นตอน ...

ติดตั้งvsftpdใช้นี้เป็นคู่มือ

  • useradd [user_name]สร้างผู้ใช้ด้วย
  • passwd [user_name]สร้างรหัสผ่านของผู้ใช้ด้วย (คุณจะได้รับแจ้งให้ระบุรหัสผ่าน)
  • สร้างไดเรกทอรี FTP /var/ftpแล้วผูกกับไดเรกทอรี 'home' ที่คุณต้องการระบุสำหรับผู้ใช้รายmount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/นี้
  • เปลี่ยนโฮมไดเรกทอรีของผู้ใช้ด้วย usermod -d /var/ftp/custom_name/ user_name

    ใน/etc/vsftpd/vsftpd.confตรวจสอบให้แน่ใจว่าได้ตั้งค่าทั้งหมดต่อไปนี้: -

    • chroot_local_user = ใช่
    • chroot_list_enable = ใช่
    • chroot_list_file = / etc / vsftpd.chroot_list

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

ในคำอื่น ๆ (สำหรับการอ้างอิง): -

  1. หมายความว่าโดยค่าเริ่มต้นผู้ใช้ทั้งหมดจะได้รับ chrooted ยกเว้นผู้ใช้ในไฟล์ ...
    • chroot_local_user = ใช่
    • chroot_list_enable = ใช่
  2. หมายความว่าโดยค่าเริ่มต้นเฉพาะผู้ใช้ในไฟล์เท่านั้นที่ได้รับ chrooted ...
    • chroot_local_user = ไม่
    • chroot_list_enable = ใช่

ทำไมไม่ตั้งค่าโฮมไดเรกทอรีของผู้ใช้โดยตรงไปที่/var/www/vhosts/domain.com/? มีปัญหาอะไรบ้าง (เช่นความเสี่ยงที่อาจเกิดขึ้น)?
leemes

2
ฉันเพิ่งพบว่า vsftp ดูเหมือนว่าจะไม่อนุญาตให้ผู้ใช้ ftp เขียนสิทธิ์ในระดับสูงสุด chroot สำหรับเหตุผลด้านความปลอดภัย (แต่ฉันไม่แน่ใจ 100%) ดังนั้นอาจเป็นเหตุผลที่มี "การอ้อม" นี้เพื่อให้ผู้ใช้ ftp เขียนการเข้าถึงโฟลเดอร์เฉพาะในขณะที่ไม่อนุญาตให้ดูโฟลเดอร์พี่น้องใด ๆ (ซึ่งจะเป็นกรณีถ้าคุณเพียงแค่ตั้งบ้านของเขาในระดับหนึ่งซึ่ง หลีกเลี่ยงปัญหาที่กล่าวถึง) (ดูubuntuforums.org/… )
leemes

2
@zigojacko ผู้ใช้ของคุณเห็นเฉพาะบ้าน dir หรือไม่ สำหรับฉันค่าเริ่มต้นนี้ผู้ใช้ไปยังไดเรกทอรีที่กำหนด แต่พวกเขายังคงสามารถเห็นโฟลเดอร์อื่น ๆ และสามารถสอดแนมไปรอบ ๆ จนถึงรูทแม้ว่าจะมีการเข้าถึงเพื่ออ่านเท่านั้น
GraehamF

1
คำตอบนี้เมื่อใช้ร่วมกับunix.stackexchange.com/questions/208960/…เป็นคำตอบที่สมบูรณ์สำหรับฉัน ฉันสิ้นสุดการสร้างผู้ใช้ในกลุ่มและ จำกัด การเข้าถึงกลุ่มไปยังไดเรกทอรีที่ต้องการ
GraehamF

10

สำหรับฉันมันใช้งานไม่ได้แม้หลังจากข้างต้น มี local_root ตั้งค่าไว้ที่ไดเรกทอรีแล้วและไม่ว่าฉันจะทำอะไรไดเรกทอรีของผู้ใช้ไม่ได้ถูกจำคุก ในที่สุดมันก็ทำงานหลังจากเปลี่ยนเพียง

chroot_local_user = ใช่

และขั้นตอนต่อไป

  1. vi /etc/vsftpd.conf
  2. เพิ่มบรรทัด 'user_config_dir = / etc / vsftpd_user_conf' (ไม่มีเครื่องหมายอัญประกาศ)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi ชื่อผู้ใช้;
  6. ป้อนบรรทัด 'local_root = / srv / ftp / user_name'

แค่สองเซ็นต์ของฉันถ้าใครมีปัญหาเดียวกัน


ฉันทำตามขั้นตอนนี้เพื่อเปลี่ยนไดเรกทอรีรูทของ vsftpd รวมถึงขั้นตอนเพิ่มเติมโดย gnaanaa น่าเสียดายที่มันยังใช้งานไม่ได้ Filezilla รายงาน 530 เข้าสู่ระบบไม่ถูกต้อง ผู้ใช้และรหัสผ่านเป็นไปตามขั้นตอนข้างต้น (ชื่อผู้ใช้) ฉันสร้างผู้ใช้ทดสอบ ftp2 และตั้งรหัสผ่าน การเข้าสู่ระบบปกติ Filezilla ใช้ชื่อผู้ใช้และรหัสผ่านนั้น ฉันยังตั้งค่าไดเรกทอรีรากอ่านอย่างเดียวและสร้างไดเรกทอรีระดับล่างด้วยสิทธิ์เขียนตามโพสต์นี้ฉันใช้ Ubuntu 16.04 ถ้านั่นสร้างความแตกต่าง
tim11g

ฉันใช้ Ubuntu 16.04 ถ้านั่นสร้างความแตกต่างได้ @gnaanaa นอกจากนี้ฉันคิดว่ามันแปลกที่ไม่มีไดเรกทอรี ftp ใน / var ดังนั้นฉันต้องสร้าง / var / ftp จากนั้น / var / ftp / ชื่อผู้ใช้ code<br/> คำตอบ: 220 (vsFTPd 3.0.3) คำสั่ง <br/>: USER ftp2 <br/> คำตอบ: 331 โปรดระบุรหัสผ่าน <br/> คำสั่ง: PASS ***** <br/> : เข้าสู่ระบบ 530 ไม่ถูกต้อง <br/> ข้อผิดพลาด: ข้อผิดพลาดร้ายแรง: ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ <br/>code
tim11g

ประการแรกดูว่าทำไมคุณไม่สามารถเข้าสู่เซิร์ฟเวอร์ คุณสามารถดีบักปัญหาด้วยการจำคุกหลังจากเข้าสู่ระบบสำเร็จเท่านั้น ไชโย
gnaanaa

vsftp ใช้ชื่อผู้ใช้ / รหัสผ่านอื่นกับบัญชีในเครื่องหรือไม่? ฉันค้นพบว่าต้องตั้งค่ารหัสผ่าน smb แยกต่างหากด้วย smbpasswd -a vsftpd ทำงานในลักษณะเดียวกันหรือไม่?
tim11g

ไม่เป็นบัญชีผู้ใช้ของระบบ ตรวจสอบคำตอบนี้: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.