วิธีเพิ่มผู้ใช้ ssh ที่มีสิทธิ์ในการเข้าถึงโฟลเดอร์เฉพาะเท่านั้น


17

จะเพิ่มผู้ใช้ ssh ที่ได้รับอนุญาตให้เข้าถึงโฟลเดอร์เฉพาะได้อย่างไร

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

musteriฉันสร้างผู้ใช้ที่เรียกว่า ฉันตั้งค่าโฮมโฟลเดอร์และกลุ่ม ดังนั้นฉันต้องการรวมmusteriผู้ใช้เป็น "/var/www/xyz.com.tr/musteri" ฉันไม่ต้องการให้มันเข้าถึงโฟลเดอร์อื่น


คุณต้องการให้ผู้ใช้มีสิทธิ์เข้าถึงเชลล์แบบเต็มหรือเฉพาะโปรโตคอลการคัดลอกไฟล์เช่น sftp และ rsync หรือไม่
Gilles 'หยุดความชั่วร้าย'

หากสิ่งหลังคุณอาจต้องการมองscponlyว่าเป็นเชลล์ซึ่งอาจทำงานในchrootโหมดเพื่อ จำกัด การเข้าถึงไดเร็กทอรีของเขาและไม่มีที่อื่น
Shadur

1
@Gilles - ฉันต้องการเข้าถึงผ่าน sftp แต่ฉันไม่ต้องการให้เข้าถึงโฟลเดอร์อื่น
Cell-o

1
@ Cell-o: หากคุณต้องการโปรโตคอลการถ่ายโอนไฟล์เพียงเล็กน้อยและไม่ใช่ shells ให้ใช้ chroot plus scponly หรือ rssh (Google scponly chrootหรือrssh chrootควรพาคุณไปยัง howtos)
Gilles 'หยุดความชั่วร้าย'

วิธีการเกี่ยวกับการใช้ ACL
fpmurphy

คำตอบ:


19

ดูเหมือนว่าคุณต้องการให้müşterilerของคุณเข้าถึงการถ่ายโอนไฟล์ไปยังโฟลเดอร์โดยไม่ต้องให้เปลือก สิ่งนี้เป็นสิ่งที่ดีเพราะเมื่อbinfalse ชี้ให้เห็นการให้ผู้คนที่มีการเข้าถึงแบบ จำกัด นั้นเป็นเรื่องยากเพราะกระสุนจำเป็นต้องเข้าถึงทุกสิ่งที่กระจัดกระจายอยู่ในระบบเพื่อให้ทำงานได้

ในการให้ SFTP เข้าถึงโฟลเดอร์เฉพาะคุณสามารถทำสิ่งนี้ได้

  1. เพิ่มกลุ่มใหม่เข้าสู่ระบบพูด 'sftponly'
  2. เพิ่มผู้ใช้ในระบบของคุณที่ควรมีสิทธิ์ จำกัด ในกลุ่มนี้ คุณสามารถให้เปลือกหอยแบบ จำกัด เช่น / bin / true ได้ แต่ไม่จำเป็น
  3. เปลี่ยนไฟล์ ssh config ของคุณ (โดยปกติ/etc/ssh/sshd_config) ด้วยบรรทัดเหล่านี้
    ระบบย่อย sftp internal-sftp

    จับคู่กลุ่มอย่างตรงไปตรงมา
        ChrootDirectory% h
        อนุญาตให้ TCP ส่งต่อหมายเลข
        X11 หมายเลขส่งต่อ
        ForceCommand internal-sftp

สิ่งนี้จะเปิดใช้งานระบบย่อย sftp ภายใน SSH และบังคับให้สมาชิกของกลุ่มระบบนั้นใช้ระบบนั้นเมื่อเข้าสู่ระบบเท่านั้นมันจะ chroot ให้กับโฮมไดเร็กตอรี่ของพวกเขาด้วย. คุณสามารถเปลี่ยนให้เป็นโฟลเดอร์ย่อยของโฮมไดเร็คตอรี่ของพวกเขาได้เช่นกันChrootDirectory %h/musteri_sftpเพื่อที่พวกเขาจะไม่สามารถมองเห็นไฟล์ระบบที่เหลือได้ แต่จะทำการล็อกอินโดยตรงไปที่โฟลเดอร์ย่อยพิเศษของโฮมโฟลเดอร์ของพวกเขา

Kolay gelsin


Öncelikleteşekkürler. ;) ตามที่คุณกล่าวถึงฉันตั้งค่า SFTP แต่ฉันมีปัญหาเกี่ยวกับ iptables นี่คือกฎของฉัน -> RH-Firewall-1-INPUT -m state - state ใหม่ -m tcp -p tcp --dport 21 -j ACCEPT
Cell-o

1
Birşeydeğil ในขณะที่ FTP จะใช้พอร์ต 21, SFTP เป็นโปรโตคอล ftp เช่นที่ทำงานผ่านช่อง SSH ดังนั้นจึงจะใช้พอร์ต SSH ซึ่งโดยค่าเริ่มต้นคือ 22
Caleb

โปรดทราบว่าคุณควรค้นหาและแสดงความคิดเห็นคำสั่งระบบย่อยที่มีอยู่ก่อนหน้านี้ (เช่นระบบย่อย sftp / usr / lib / openssh / sftp-server)
CnrL

แก้ไขปัญหาของฉันและเรียนรู้วลีภาษาตุรกีที่มีประโยชน์! โบนัส!
eimajenthat

2

ในความคิดของฉันนี้เป็นเรื่องยากมากหากไม่ได้ เมื่อเชื่อมต่อผู้ใช้ผ่านทาง SSH bashอย่างน้อยที่สุดเขาต้องการเปลือกในกรณีของคุณ ในการดำเนินการที่เขาต้องการสิทธิ์ในการเข้าถึง/bin/bash ตัวเองต้องการที่จะอ่านสิ่งบางอย่างจาก(เช่น) ดังนั้นผู้ใช้ต้องการยังเข้าถึง สมมติว่าผู้ใช้ไม่เพียง แต่ต้องการแฮงค์ในไดเรกทอรีนี้เขาอาจต้องการอ่านไฟล์ แต่เพื่อดำเนินการเช่นเขาต้องการเข้าถึงด้วย นี่เป็นเพียงการสาธิตเล็กน้อยมีการขึ้นต่อกันบางอย่างเช่นฉันไม่รู้ว่าจะเกิดอะไรขึ้นหากผู้ใช้ไม่สามารถเข้าถึง../binbash/etc/etc/bash.bashrc/etcvim/usr/bin
/tmp

คุณควรคิดถึงความตั้งใจของคุณ คุณเพียงต้องการให้ใครบางคนมีสิทธิ์เข้าถึงแบบอ่าน / เขียนในส่วนหนึ่งของบริการเว็บของคุณหรือไม่? จากนั้นคุณอาจตั้งค่าบางอย่างเช่น FTP เพื่อส่งออกไดเรกทอรีเฉพาะไปยังผู้ใช้รายนี้ ดังนั้นเขาจึงสามารถอ่าน / เขียนไฟล์นี้โดยไม่ต้องเข้าถึง SSH
ทางออกที่ดีอีกอย่างหนึ่งคือที่เก็บ ตัวอย่างเช่นการตั้งค่า repo GIT และให้ผู้ใช้โคลนมัน เขาสามารถทำการเปลี่ยนแปลงภายในเครื่องและส่งแพตช์ให้คุณ คุณสามารถตัดสินใจได้ว่าจะใช้โปรแกรมแก้ไขนี้หรือไม่การย้อนกลับสำหรับโปรแกรมแก้ไขบั๊กกี้ก็ง่ายมากเช่นกัน


rbashถูกออกแบบมาเพื่อทำสิ่งนี้
บาฮามาต

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