vsftpd - local_root = / var / www / sites / $ USER ไม่ถูกตีความ?


11

เมื่อฉันพยายามเชื่อมต่อกับเซิร์ฟเวอร์ FTP ฉันจะได้รับ: "500 OOPS: ไม่สามารถเปลี่ยนไดเรกทอรี: / home / $ USER / public_html"

  • เมื่อฉัน echo $ USER - ฉันได้รับชื่อผู้ใช้ที่เหมาะสม
  • ดูเหมือนว่า $ USER จะไม่ถูกตีความภายใน /etc/vsftpd.conf ของฉัน
  • เมื่อฉันลบ "local_root = / var / www / sites / $ USER" ฉันทุกอย่างทำงานได้อย่างราบรื่น

ฉันใช้ vsftpd 2.2.2 และ Ubuntu 10.04.1 LTS วันวางจำหน่าย: 10.04 ชื่อไฟล์: lucid

คำตอบ:


21

สิ่งที่คุณต้องใช้คือคอมโบของ user_config_dir และ local_root ในไฟล์ config หลัก /etc/vsftpd/vsftp.conf คุณมีรายการดังนี้:

chroot_local_user=YES
user_config_dir=/etc/vsftpd/users

ภายในไดเรกทอรีนั้น (/ etc / vsftpd / users) คุณมีไฟล์กำหนดค่าที่มีชื่อเดียวกับผู้ใช้ ($ USER ในกรณีของคุณ) และภายในไฟล์นั้นคุณ:

local_root=/var/www/sites/USER
dirlist_enable=YES
download_enable=YES
write_enable=YES

... โดยที่ USER เป็นชื่อจริง (ไม่ใช่ USER หรือ $ USER)


2
ใช้รหัสผ่านที่สำคัญที่นี่: user_sub_token=$USERสิ่งนี้ทำให้การกำหนดค่าโปสเตอร์ดั้งเดิมทำงานได้เนื่องจากตัวแปร $ USER ได้รับค่าที่ใช้ได้ ดูความคิดเห็นของฉันในคำตอบอื่น ๆ
user3450548

5

คุณต้องตั้งค่าuser_sub_token:

user_sub_token=$USER
local_root=/var/www/sites/$USER

2
สนุกที่นี่เป็นทางออกที่แท้จริงจริง ๆ สิ่งที่โปสเตอร์ต้นฉบับที่ต้องการทำนั้นใช้ได้จริง คุณสามารถใช้มันยังอยู่ในตัวอย่างที่นำเสนออื่น ๆ แต่คุณไม่จำเป็นต้อง necessarly user_config_dirเพื่อเปิดใช้งาน คุณสามารถทำได้หรือทำไม่ได้ขึ้นอยู่กับรสนิยมของคุณ รหัสผ่านที่สำคัญคือที่นี่user_sub_token=$USERเพราะนี่คือคนที่เติม$USERวาร์พร้อมกับสิ่งที่สามารถใช้งานได้ภายใน conf ดูuser_sub_tokenคำอธิบายในหน้า man: "ตัวเลือกนี้จะมีผลถ้า local_root มี user_sub_token"
user3450548
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.