การเป็นเจ้าของหรือโหมดที่ไม่ถูกต้องสำหรับองค์ประกอบไดเรกทอรี chroot


56

ฉันสร้างผู้ใช้ MY_USER ตั้งค่า dir บ้านของเขาเป็น / var / www / RESTRICTED_DIR ซึ่งเป็นเส้นทางที่เขาควรถูก จำกัด จากนั้นฉันแก้ไข sshd_config และตั้งค่า:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR

จากนั้นฉันเริ่ม ssh ใหม่ ทำให้เจ้าของ MY_USER (และเจ้าของกลุ่ม) เป็น RESTRICTED_DIR และเปลี่ยนเป็น 755 ฉันได้รับ

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER

หากฉันลบ 2 บรรทัดจาก sshd_config ผู้ใช้สามารถเข้าสู่ระบบได้สำเร็จ แน่นอนว่ามันสามารถเข้าถึงเซิร์ฟเวอร์ทั้งหมดได้ มีปัญหาอะไร? ฉันพยายามแม้กระทั่ง chown RESTRICTED_DIR ให้รูท (เพราะฉันอ่านบางที่ว่ามีคนแก้ไขปัญหาเดียวกันนี้ได้) ไม่มีโชค..

คำตอบ:


73

จากหน้า :man

ChrootDirectory
ระบุชื่อพา ธ ของไดเรกทอรีที่จะ chroot (2) ไปหลังจากการตรวจสอบ ส่วนประกอบทั้งหมดของชื่อพา ธ ต้องเป็นไดเรกทอรีที่เป็นเจ้าของรูทซึ่งไม่สามารถเขียนได้โดยผู้ใช้หรือกลุ่มอื่น หลังจาก chroot, sshd (8) เปลี่ยนไดเรกทอรีทำงานเป็นโฮมไดเร็กตอรี่ของผู้ใช้

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


นี่ทำให้ฉันเป็นบ้า ฉันทำ "chown root: root -R / var / www"; "chmod 775 -R / var / www /"; "usermod -a -G root www-data" แต่ฉันยังไม่สามารถเข้าสู่ระบบด้วย MY_USER
MultiformeIngegno

1
ความต้องการที่อยู่ในส่วนประกอบเส้นทาง ( /, /var, /var/wwwและ/var/www/RESTRICTED_DIRทุกคนจะต้องตอบสนองความต้องการการรักษาความปลอดภัยด้านบน) มันเป็นchroot จริง (ตรวจสอบหน้าคน) - ไดเรกทอรีบ้านของผู้ใช้ของคุณต้องมีอยู่ใน chrootตามที่ต้อง/bin& ทุกสิ่งอื่น ๆ ที่ผู้ใช้ของคุณจะต้อง ...
voretaq7

2
ตกลง! แก้ไข ฉันตั้ง dir chrooted ระดับขึ้น จากนั้นฉันให้ 777 เปอร์เซ็นต่อ chrooted_dir ดั้งเดิม มันใช้งานได้แล้ว :)
MultiformeIngegno

1
แม้จะมีสิ่งที่ manpage บอกไว้และแม้จะตั้งกลุ่มเป็น 'root' แต่ฉันต้องตั้งค่าการอนุญาต gw ก่อนที่มันจะใช้งานได้ (Ubuntu 14.04) manpage ควรบอกว่าส่วนประกอบทั้งหมดของชื่อพา ธ ต้องเป็นไดเรกทอรีที่เป็นเจ้าของโดยผู้ใช้รายอื่นหรือกลุ่มใด ๆ ที่ไม่สามารถเขียนได้ sudo chown root:root -R /path/to/home; sudo chmod 755 -R /path/to/home
mmell

3
ฉันรู้ว่ามันค่อนข้างเก่า แต่แทนที่จะแก้ไขสิทธิ์สำหรับ/var/wwwเส้นทางโดยตรงซึ่งอาจทำให้ apache เสียหายคุณจะดีกว่าที่จะวางไดเรกทอรี sftp ของคุณในเส้นทางอื่นแล้วใช้การจับคู่ URL ใน Apache เพื่อชี้ไปยังไดเรกทอรีอื่น . ตรวจสอบเอกสารที่นี่httpd.apache.org/docs/2.4/urlmapping.htmlภายใต้Files Outside DocumentRoot
Daniel

32

ไดเรกทอรี ChrootDirectory ต้องเป็นเจ้าของโดย root และมีโหมด 755:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR

ตกลงตอนนี้ทุกไฟล์/var/www/RESTRICTED_DIRต้องเป็นของMY_USERซึ่งต้องอยู่ในwww-dataกลุ่มและมีโหมด 775 เพื่ออนุญาตการอนุญาตกลุ่มเช่นนี้:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*

หมายเหตุ: ข้อควรจำคือวิธีปฏิบัติที่ดีอนุญาตให้เข้าถึงเฉพาะโฟลเดอร์ htdocs เท่านั้นหากคุณกำหนดค่า apache


3
ค่อนข้างแน่ใจว่ามันควรจะsudo usermod -a -G www-data MY_USERเป็นตามที่กลุ่มควรจะมาหลังจาก-G
sMyles

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

3

หลังจากการแก้ไขปัญหาบางอย่างในวันนี้ฉันรู้ว่ารูตจะต้องสามารถเขียนไปยังไดเรกทอรี

ต่อไปนี้ไม่ทำงาน:

$ ls -ld /mnt/synology03/files/
dr-xr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
$ ls -ld /mnt/synology03
drwxr-xr-x 7 root root 4096 Oct  1 21:26 /mnt/synology03
$ ls -ld /mnt
drwxr-xr-x 6 root root 4096 Feb  8 10:01 /mnt
$ ls -ld /
drwxr-xr-x 24 root root 4096 Jan 14 09:22 /

ทันทีที่ฉันแก้ไขสิ่งนี้ chroot ของฉันก็เริ่มทำงานได้

$ sudo chmod 755 /mnt/synology03/files/
$ ls -ld /mnt/synology03/files/
drwxr-xr-x 1 root root 156 Oct  8 20:10 /mnt/synology03/files/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.