เชลล์แบบโต้ตอบและแบบไม่โต้ตอบคืออะไร?
คำถาม: สร้างผู้ใช้ john ที่ไม่ควรได้รับ shell แบบโต้ตอบ
เราจะทำสิ่งนี้ได้อย่างไร
เชลล์แบบโต้ตอบและแบบไม่โต้ตอบคืออะไร?
คำถาม: สร้างผู้ใช้ john ที่ไม่ควรได้รับ shell แบบโต้ตอบ
เราจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
/etc/passwd
ไฟล์ได้เป็นรายการสุดท้ายในสายของผู้ใช้โปรแกรมจะทำงานเมื่อเข้าสู่ระบบ สำหรับผู้ใช้ปกตินี้มักจะถูกตั้งค่าเป็น/bin/sh
หรือเปลือกอื่น ๆ (เช่น bash, zsh)
ตามเนื้อผ้าอัตลักษณ์ที่ใช้ในการเป็นเจ้าของกระบวนการหรือไฟล์หรือทรัพยากรอื่น ๆ มี "เปลือก" ของพวกเขาตั้ง/bin/false
เป็นเหมือนใน
syslog:x:101:102::/home/syslog:/bin/false
pseudo-user syslog เป็นเจ้าของ/var/log/syslog
และเป็น UID เดียวที่มีสิทธิ์ในการเขียนสำหรับไฟล์นั้น แต่จะไม่สามารถเข้าสู่ระบบในฐานะผู้ใช้ syslog เนื่องจากไม่มีล่ามคำสั่งที่จะทำงาน
เกี่ยวกับคำถามที่คุณพยายามตอบ:
สร้างผู้ใช้ john ที่ไม่ควรได้รับ shell แบบโต้ตอบ
คำถามหมายถึง "สร้างชื่อผู้ใช้john
ที่จะไม่สามารถเข้าสู่ระบบและเรียกใช้คำสั่งจากเปลือก" อินเตอร์แอคทีฟอธิบายวิธีการทำงานของเชลล์: ผู้ใช้พิมพ์บางอย่างและเชลล์ทำบางสิ่งตาม (มีการสื่อสารระหว่างผู้ใช้กับเชลล์) คำว่า "โต้ตอบ" ไม่ได้เพิ่มข้อมูลใด ๆ ลงในคำถามเพราะตราบใดที่มีคำสั่งพิมพ์ของผู้ใช้เชลล์เซสชันจะเป็นแบบโต้ตอบ
นอกจากนี้ยังมีโหมดที่ไม่ต้องมีการโต้ตอบซึ่งผู้ใช้จะบันทึกชุดคำสั่งที่ต้องการเรียกใช้ในไฟล์ (เรียกว่าเชลล์สคริปต์) และเรียกใช้ไฟล์ในภายหลัง คำสั่งบางตัวจะทำงานแตกต่างกันไปขึ้นอยู่กับว่าเชลล์นั้นทำงานแบบโต้ตอบหรือไม่แบบโต้ตอบ คุณสามารถอ่านเพิ่มเติมได้ที่นี่ (เอกสารนี้มีไว้สำหรับbash
แต่แนวคิดเดียวกันนี้ใช้กับเชลล์อื่น ๆ )
เกี่ยวกับวิธีการสร้างเช่นผู้ใช้ถ้าคุณอ่านผ่านman useradd
มีตัวเลือกที่จะตั้งเปลือกเข้าสู่ระบบหรือ-s
--shell
นอกจากนี้คุณยังสามารถสร้างผู้ใช้ตามปกติในการไปที่คุณต้องการ (ซึ่งผมถือว่าคุณรู้อยู่แล้ว?) แล้วแก้ไข/etc/passwd
เหมือนในคำตอบของขยะ
ใช่เปลี่ยนเปลือกในแฟ้มรหัสผ่าน (/ etc / passwd) ในการเขียนโปรแกรมบางอย่างที่จะไม่ได้ช่วยให้หลบหนีเปลือก
ถ้าคุณต้องการที่จะเป็นbofh / bin / false จะทำสิ่งที่คุณต้องการ
adduser username -s /sbin/nologin