การเปลี่ยนสิทธิ์ในการเขียนสำหรับ SFTP ที่ถูกจำคุกนั้นปฏิเสธการเข้าสู่ระบบ


14

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

ติดตั้ง

sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

สร้างโฟลเดอร์

mkdir /var/www/sites

สร้างผู้ใช้และกลุ่ม

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

สิทธิ์และความเป็นเจ้าของ

chown root:root /var/www
chmod 755 /var/www/sites

ขณะนี้ด้วยการตั้งค่าเหล่านี้ผู้อัปโหลดผู้ใช้สามารถ SFTP ลงในโฮมไดเรกทอรี แต่ไม่สามารถเขียนไปยังไดเรกทอรีได้

มีข้อผิดพลาดทั่วไป 2 ประการที่เกิดขึ้นฉันไม่สามารถเข้าสู่ระบบหรือฉันไม่มีสิทธิ์ในการเขียน

ข้อผิดพลาดในการเข้าสู่ระบบ

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

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

ขอขอบคุณ.

คำตอบ:


16

ค้นพบทางออก /var/www/sitesผู้ใช้จะถูกตัดสินจำคุกไป ฉันสร้างโฟลเดอร์อื่น/var/www/sites/site1แล้ว

ฉันใช้:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

สิ่งนี้ทำให้โฮมไดเร็กตอรี่มีสิทธิ์ที่ถูกต้องในการเข้าสู่ระบบและจากนั้นสามารถเขียนไปยังโฟลเดอร์ถัดไปได้

หากผู้ใช้ต้องการเข้าถึงการเขียน/var/www/sitesคุณต้องล็อกผู้ใช้ที่/var/wwwมีroot:rootความเป็นเจ้าของและสิทธิ์ 755 จากนั้นคุณต้องให้/var/www/sitesสิทธิ์การเป็นเจ้าของรูท: (กลุ่มของคุณ) และการอนุญาต 775


1

บางทีทางออกที่ดีที่สุดคือ:

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

เพิ่มผู้ใช้:

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

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

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

ดังนั้นคุณสามารถจัดการผู้ใช้ทั้งหมดที่คุณต้องการในสภาพแวดล้อมที่ chrooted

Hth, Fabrizio


บล็อกโค้ดสุดท้ายของคุณอีกครั้ง: Matches สนับสนุนเป้าหมายหลายรายการในรายการที่คั่นด้วยเครื่องหมายจุลภาคดังนั้นเราสามารถลดความซับซ้อนได้อย่างมาก / เป็นระเบียบโดยการมีการแทนที่ชุดเดียวสำหรับผู้ใช้ทั้งสองโดยหัวเรื่องMatch User dev1,dev2
underscore_d

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