ฉันติดตั้ง SSH แล้ว แต่ฉันพบว่าฉันใช้บัญชีเดิมของฉันเพื่อเข้าสู่ระบบ Ubuntu มันมีสิทธิ์มากเกินไป
ฉันต้องการ จำกัด ผู้ใช้ให้มีสิทธิ์สำหรับโฟลเดอร์เฉพาะใน Ubuntu ฉันจะกำหนดค่าผู้ใช้เช่นนี้ได้อย่างไร?
ฉันติดตั้ง SSH แล้ว แต่ฉันพบว่าฉันใช้บัญชีเดิมของฉันเพื่อเข้าสู่ระบบ Ubuntu มันมีสิทธิ์มากเกินไป
ฉันต้องการ จำกัด ผู้ใช้ให้มีสิทธิ์สำหรับโฟลเดอร์เฉพาะใน Ubuntu ฉันจะกำหนดค่าผู้ใช้เช่นนี้ได้อย่างไร?
คำตอบ:
มันง่ายมาก เพียงแค่สร้างผู้ใช้ใหม่โดยตั้งค่าโฮมไดเรกทอรีของมันเป็นชื่อที่คุณต้องการให้เขามีสิทธิ์เข้าถึง (คำสั่งนี้จะต้องทำงานภายใต้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 ของคุณ (จะไม่ฆ่าเซสชันแบบโต้ตอบเมื่อรีสตาร์ทดังนั้นจึงปลอดภัยแม้ว่าคุณจะกำหนดค่าบางอย่างผิดพลาดและยังไม่ปิดเซสชันที่ทำงานอยู่ก่อนที่คุณจะตรวจสอบว่าคุณยังสามารถเข้าสู่ระบบได้) ทุกอย่างควรทำงาน ตามที่ตั้งใจไว้.
Subsystem sftp internal-sftp
บรรทัดในตัวอย่างที่สองของคุณด้านบนMatch
บล็อก มิฉะนั้น ssh จะพิมพ์ข้อผิดพลาดออกมาและไม่เริ่มขึ้น
วิธีที่ง่ายที่สุดในการสร้างผู้ใช้ที่ถูก จำกัด ซึ่งไม่สามารถเดินออกจากไดเรกทอรีที่กำหนดได้ (เช่นไปยังไดเรกทอรีด้านบน ฯลฯ ) และมีชุดคำสั่งที่ จำกัด / เลือกใช้คือการใช้เชลล์ที่ จำกัด Ref:
ขั้นแรกสร้าง 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