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


47

ฉันติดตั้ง SSH แล้ว แต่ฉันพบว่าฉันใช้บัญชีเดิมของฉันเพื่อเข้าสู่ระบบ Ubuntu มันมีสิทธิ์มากเกินไป

ฉันต้องการ จำกัด ผู้ใช้ให้มีสิทธิ์สำหรับโฟลเดอร์เฉพาะใน Ubuntu ฉันจะกำหนดค่าผู้ใช้เช่นนี้ได้อย่างไร?

คำตอบ:


49

มันง่ายมาก เพียงแค่สร้างผู้ใช้ใหม่โดยตั้งค่าโฮมไดเรกทอรีของมันเป็นชื่อที่คุณต้องการให้เขามีสิทธิ์เข้าถึง (คำสั่งนี้จะต้องทำงานภายใต้sudoหรือในรูทเชลล์):

adduser --home /restricted/directory restricted_user

สิ่งนี้จะสร้างผู้ใช้restricted_userไดเรกทอรี/restricted/directoryและสิทธิ์ในไดเรกทอรีจะถูกตั้งค่าเพื่อให้ผู้ใช้สามารถเขียนลงไปได้ มันจะไม่มีความสามารถในการเขียนไปยังไดเรกทอรีอื่น ๆ โดยค่าเริ่มต้น

หากคุณมีไดเรกทอรีอยู่แล้วคุณสามารถเรียกใช้adduserคำสั่งด้วย--no-create-homeตัวเลือกต่อท้ายและตั้งค่าการอนุญาตด้วยตนเอง (รวมถึงสิทธิ์ของรูท) เช่น:

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

หากคุณต้องการทำให้แม้แต่ไดเรกทอรีที่เขียนได้ทั่วโลกไม่สามารถเข้าถึงได้สำหรับผู้ใช้รายนี้มีสองสายพันธุ์

1) หากคุณต้องการมอบเซสชั่นเชลล์แบบโต้ตอบให้กับผู้ใช้ให้พิจารณาทำตามคู่มือนี้ในการสร้างคุก chroot (ในของคุณ/restricted/directory)

หลังจากนั้นเพิ่มสิ่งต่อไปนี้ในsshd_config:

Match user restricted_user
  ChrootDirectory /restricted/directory

2) หากคุณต้องการให้เขาคัดลอกไฟล์ระหว่างจุดเชื่อมต่อของเขาและโฮสต์ของคุณทุกอย่างง่ายขึ้นมาก เพิ่มบรรทัดเหล่านี้ในตอนท้ายของคุณsshd_config:

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem       sftp    internal-sftp

จากนั้นคอมเม้นท์Subsystem sftp /usr/lib/openssh/sftp-serverโดยวางเครื่องหมายแฮช ( #) ที่จุดเริ่มต้น

หลังจากรีสตาร์ทเซิร์ฟเวอร์ SSH ของคุณ (จะไม่ฆ่าเซสชันแบบโต้ตอบเมื่อรีสตาร์ทดังนั้นจึงปลอดภัยแม้ว่าคุณจะกำหนดค่าบางอย่างผิดพลาดและยังไม่ปิดเซสชันที่ทำงานอยู่ก่อนที่คุณจะตรวจสอบว่าคุณยังสามารถเข้าสู่ระบบได้) ทุกอย่างควรทำงาน ตามที่ตั้งใจไว้.


1
ฉันพยายาม แต่ดูเหมือนว่าฉันยังคงสามารถ cd .. และเรียกดูไดเรกทอรีบน และเมื่อฉันใช้ vi a.txt ในไดเรกทอรีด้านบนมันจะแสดง: กด Enter หรือคำสั่งเพื่อดำเนินการต่อและฉันไม่สามารถออกจาก vi
โง่

1
ฉันสามารถใช้ตัวเลือก # 2 ได้หรือไม่หากผู้ใช้ควรมีสิทธิ์เข้าถึง sshfs เท่านั้น
flickerfly

1
ทุกอย่างทำงานได้ดียกเว้นว่าฉันไม่ได้รับอนุญาตให้เขียน ฉันจะตั้งค่าสิทธิ์การเขียนสำหรับไดเรกทอรีที่ถูก จำกัด นี้ได้อย่างไร หากฉันใช้ chmod 775 ผู้ใช้จะไม่สามารถเข้าสู่ระบบได้อีกต่อไป
My-Name-Is

3
คุณควรเขียนSubsystem sftp internal-sftpบรรทัดในตัวอย่างที่สองของคุณด้านบนMatchบล็อก มิฉะนั้น ssh จะพิมพ์ข้อผิดพลาดออกมาและไม่เริ่มขึ้น
Tik0

1
การแจ้งเตือนผู้สปอยเลอร์: ไม่ทำงานกับ scp
จักรยาน

5

วิธีที่ง่ายที่สุดในการสร้างผู้ใช้ที่ถูก จำกัด ซึ่งไม่สามารถเดินออกจากไดเรกทอรีที่กำหนดได้ (เช่นไปยังไดเรกทอรีด้านบน ฯลฯ ) และมีชุดคำสั่งที่ จำกัด / เลือกใช้คือการใช้เชลล์ที่ จำกัด Ref:

http://man.he.net/man1/rbash

ขั้นแรกสร้าง symlink ชื่อrbash(เรียกใช้ในฐานะผู้ใช้รูท)

ln -s /bin/bash /bin/rbash

จากนั้นเพียงแค่สร้างผู้ใช้ปกติด้วยเชลล์ที่ จำกัด นี้และตั้งค่าโฮมไดเร็คตอรี่ไปยังโฟลเดอร์ที่ต้องการ:

useradd -s /bin/rbash -d /home/restricted_folder username

แม้ว่าจะไม่มีเชลล์ที่ จำกัด ถ้าคุณไม่เพิ่มผู้ใช้รายนี้ลงในรายการ sudoer หรือกลุ่มพิเศษใด ๆ อย่างชัดเจนเชลล์นั้นจะถูก จำกัด โดยค่าเริ่มต้น

ด้วย Restricted Shell สิ่งต่อไปนี้ไม่ได้รับอนุญาตหรือไม่ได้ทำ:

  • เปลี่ยนไดเรกทอรีด้วย cd

  • การตั้งค่าหรือยกเลิกการตั้งค่าของ SHELL, PATH, ENV หรือ BASH_ENV

  • การระบุชื่อคำสั่งที่มี /

  • การระบุชื่อไฟล์ที่มี / เป็นอาร์กิวเมนต์สำหรับ คำสั่ง builtin

  • การระบุชื่อไฟล์ที่มีเครื่องหมายสแลชเป็นอาร์กิวเมนต์สำหรับตัวเลือก -p ไปที่คำสั่ง hash builtin

  • การอิมพอร์ตนิยามฟังก์ชันจากสภาวะแวดล้อมเชลล์เมื่อเริ่มทำงาน

  • แยกค่าของ SHELLOPTS จากสภาพแวดล้อมของเชลล์เมื่อเริ่มต้น

  • การเปลี่ยนเส้นทางเอาต์พุตโดยใช้ตัวดำเนินการ>,> |, <>,> &, &> และ >> redirect- ion

  • การใช้คำสั่ง exec builtin เพื่อแทนที่เชลล์ด้วยคำสั่งอื่น

  • การเพิ่มหรือลบคำสั่ง builtin ด้วยตัวเลือก -f และ -d เพื่อเปิดใช้งานคำสั่ง builtin

  • การใช้คำสั่ง enable builtin เพื่อเปิดใช้งานเชลล์บิลด์ในตัว

  • การระบุอ็อพชัน -p ให้กับคำสั่ง builtin คำสั่ง

  • ปิดโหมด จำกัด กับ set + r หรือ set + o จำกัด

ข้อ จำกัด เหล่านี้ถูกบังคับใช้หลังจากไฟล์เริ่มต้นใด ๆ

นอกจากนี้ / ทางเลือกในการ จำกัด ผู้ใช้ในชุดคำสั่งที่ จำกัด / หยิบใช้คุณสามารถสร้าง. bash_profile แบบอ่านอย่างเดียวสำหรับผู้ใช้นั้นด้วย

PATH=$HOME/bin

และ symlink คำสั่งใด ๆ ที่คุณอนุญาตให้เข้าไปในโฟลเดอร์ ~ / bin กับผู้ใช้นั้น:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

เป็นต้น

HTH


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