วิธีสร้างผู้ใช้ SFTP (SSH) ด้วยสิทธิ์ที่ จำกัด อย่างมาก


8

ฉันเรียกใช้เซิร์ฟเวอร์บนเซิร์ฟเวอร์ Ubuntu 14.04 ฉันต้องการสร้างผู้ใช้ที่สามารถเชื่อมต่อผ่าน sftp, ดาวน์โหลด 1 ไฟล์และยุติการเชื่อมต่อ ผู้ใช้ไม่ควรทำสิ่งอื่นใด เรียกดูไฟล์ระบบหรือการตั้งค่าหรือรายการบรรทัดคำสั่งไม่มีอะไร เข้าสู่ระบบดาวน์โหลดไฟล์ gg เมื่ออัปเดตไฟล์แล้วให้ลงชื่อเข้าใช้ดาวน์โหลดมัน gg ไฟล์อยู่ในไดเรกทอรีเดียวกันทุกครั้งและมีชื่อเดียวกันทุกครั้ง แต่มีการอัพเดท

แก้ไข: ฉันพยายามใช้โซลูชันของคุณ แต่ฉันพบปัญหา: ในไฟล์ config ของ ssh ในการกำหนดค่าของฉันมีบรรทัดที่มี "allow groups sshdusers" ฉันได้เพิ่ม sftp_users แต่ก็มีปัญหาอื่นรออยู่เบื้องหน้า sudo chown root.root / ubuntu / ไม่เหมาะสำหรับฉันเพราะ root ไม่สามารถ ssh และเขียนไปยังไดเรกทอรีไฟล์ที่ "ubuntu" ต้องดาวน์โหลด (เราจะเรียกมันว่า user1 ฉันต้องการ user1 เพื่อให้สามารถเขียนบน ไดเรกทอรีและอูบุนตูเพื่ออ่านเท่านั้นถ้าฉันเปลี่ยน sudo chown user1.user1 / ubuntu / และฉันพยายาม sftp กับผู้ใช้ Ubuntu การเชื่อมต่อล้มเหลวถ้าฉันปล่อยให้รูทคุณสามารถเชื่อมต่อได้ แต่ฉันไม่เห็น ไดเรกทอรีปัจจุบันฉันเห็นเพียง / และ empy ใน filezilla ฉันได้เพิ่ม user1 ไปยัง sftp_users แต่ก็ยังไม่ประสบความสำเร็จ

ขอบคุณมาก

คำตอบ:


11

เริ่มกันเลย

สร้างผู้ใช้ ubuntu

sudo useradd ubuntu

สร้างรหัสผ่าน

sudo passwd ubuntu
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

สร้างสำหรับกลุ่ม SFTP เท่านั้น

xxx@xxx:~$ sudo groupadd sftp_users 

เพิ่มให้กับผู้ใช้ "ubuntu" สำหรับกลุ่ม SFTP เท่านั้น

xxx@xxx:~$ sudo usermod -G sftp_users ubuntu 

ทำให้ dir สำหรับsftpการเข้าถึง

sudo mkdir /ubuntu

เปลี่ยนเจ้าของเพราะสิทธิ์ในการอ่าน / เขียน

sudo chown root.root /ubuntu/

เพิ่มการอนุญาต

sudo chmod 755 /ubuntu/

แก้ไข /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

ใส่ความคิดเห็นและเพิ่มบรรทัดด้านล่าง

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

เพิ่มในที่สุด

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /ubuntu
  ForceCommand internal-sftp

เริ่มsshบริการใหม่

sudo service ssh restart

ด้วยการกำหนดค่านี้คุณสามารถ ssh ลงในโฟลเดอร์ubuntuและรับไฟล์ได้ ไม่สามารถputหรือdelete

ลอง.

แก้ไข 1

เพื่อ SFTP /etc/passwdในโฟลเดอร์ที่ถูกต้องแก้ไข เปลี่ยน line เพื่อให้ผู้ใช้ubuntuมีลักษณะเช่นนี้

sudo nano /etc/passwd

 ubuntu:x:1001:1001::/ubuntu:

สิ่งนี้จะเปลี่ยนโฟลเดอร์บ้านของผู้ใช้ Ubuntu เป็นโฟลเดอร์เซิร์ฟเวอร์ sftp ของคุณ

การเปิดใช้งานrootบัญชีไม่ใช่ความคิดที่ดี

คุณสามารถ ssh user1ไปยังเซิร์ฟเวอร์ด้วย

หากคุณเพิ่มผู้ใช้user1ในsudoer groupคุณจะสามารถเขียนในโฟลเดอร์/ubuntu/และตั้งค่าการอนุญาตที่เหมาะสม

sudo adduser user1 sudo

สร้างโฟลเดอร์เขียนในโฟลเดอร์อูบุนตู ubuntuหลังจากที่การกระทำที่คุณจะต้องตั้งค่าสิทธิ์สำหรับผู้ใช้ วิธีที่ง่ายที่สุดคือการอนุญาตให้ agai ตั้งค่าเป็น 755

sudo chmod 755 -R /ubuntu/

-R - ตัวเลือกจะให้สิทธิ์การอ่านของไฟล์และ dir ทั้งหมดสำหรับผู้ใช้ ubuntu


ขอบคุณมากสำหรับคุณ ดูการแก้ไขของฉันเพิ่มเติมเนื่องจากความคิดเห็นแน่นจริงๆ
BlueStarry

1
คุณมีคำตอบ 1 คำตอบของฉัน
2707974

ฉันขอโทษที่จะบอกว่ามันไม่ทำงาน ด้วย filezilla sftp ฉันไม่สามารถเขียนบนโฟลเดอร์ด้วย user1 หรือ ubuntu เข้าสู่ระบบด้วย Ubuntu ผ่าน sftp ให้ฉัน / โฟลเดอร์แม้จะมีการปรับเปลี่ยนครั้งล่าสุด ฉันลองมาหลายครั้งแล้วและหาทางแก้ปัญหาไม่ได้
BlueStarry

ฉันคิดว่า 755 นั้นไม่ดีสำหรับวัตถุประสงค์นี้เพราะเจ้าของคือ root และ sudoers ไม่สามารถเขียนในโฟลเดอร์ด้วย 755
BlueStarry

เมื่อย้อนกลับไปในปี 2015 ผมว่าใช้อูบุนตูadduserและaddgroupมากกว่าuseradd, groupaddฯลฯsudo chown root.root /ubuntu/เป็นสิ่งที่ผิดเพียง คุณสร้างไดเรกทอรีใช้เพื่อให้เจ้าของที่มีอยู่แล้วsudo มันควรจะใช้root ubuntu.sftp_usersท้ายที่สุดถ้าคุณสร้างมันขึ้นมาเป็นเจ้าของในตอนแรกubuntuทุกอย่างจาก " การเปิดใช้งานผู้ใช้รูท ... " นั้นไม่จำเป็น
Auspex
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.