ค่าเริ่มต้นปัจจุบันสำหรับบัญชีหลักในการมี/etc/passwd
root:x:0:0:root:/root:/bin/bash
ทำไมไม่ตั้งค่าให้root:x:0:0:root:/root:/usr/sbin/nologin
?
ค่าเริ่มต้นปัจจุบันสำหรับบัญชีหลักในการมี/etc/passwd
root:x:0:0:root:/root:/bin/bash
ทำไมไม่ตั้งค่าให้root:x:0:0:root:/root:/usr/sbin/nologin
?
คำตอบ:
หากเป็นเช่นนั้นคุณจะสามารถเรียกใช้คำสั่งได้sudo
ทีละรายการเท่านั้น แต่คุณจะไม่สามารถเริ่มรูทเชลล์ได้ รูทเชลล์มีความสะดวกในหลาย ๆ กรณีเช่นหากคุณวางแผนที่จะรันหลายคำสั่งเหมือนกับรูทในแถว
โดยเฉพาะอย่างยิ่งคุณไม่สามารถทำงานได้sudo -i
ตามที่ AlexP ระบุไว้ จากman sudo
:
-i, --login Run the shell specified by the target user's password database entry as a login shell.
sudo /bin/bash
หรือไม่
sudo -s
ฉันคิด (รูทเชลล์ แต่ไม่ใช่รูทเชลล์ล็อกอิน ) แม้ว่าจะเป็นจุดที่ดี - และในความเป็นจริงsudo -s
ดูเหมือนว่าจะทำงานได้แม้ในขณะที่รูทของรูทอยู่/usr/sbin/nologin
-i
, -s
, /bin/bash
และอื่น ๆ โดยเพียงแค่ช่วยให้รายการที่อนุญาตของคำสั่งให้ดูเอกสารสำหรับ sudoers ไฟล์ ดังนั้นนี่คือเม็ดเล็กดีว่ามันเป็นตัวอย่างที่เป็นไปได้เพื่อให้ผู้ใช้เรียกใช้เป็นรากโดยไม่อนุญาตให้พวกเขาให้ทำงาน/etc/init.d/someservice restart
/etc/init.d/someservice stop
แต่ค่าเริ่มต้นของอูบุนตูนั้นเป็นเพียงการตั้งรหัสผ่านroot
และอนุญาตให้ผู้ใช้ผู้ดูแลระบบทำทุกอย่างด้วย sudo อาจมีเหตุผลคือ a) ผู้ใช้ที่เป็นผู้ดูแลระบบมากกว่าหนึ่งคนและ b) ผู้ใช้ที่เป็นผู้ดูแลระบบไม่จำเป็นต้องจำรหัสผ่านที่สองสำหรับบัญชีรูท
นอกจากคำตอบ sudo ของ Alberto Santini แล้วยังมีอีกคำตอบ (ดีกว่า) หากเชลล์ของรูทถูกตั้งค่าเป็นสิ่งที่ไม่ใช่เชลล์การบูตผู้ใช้คนเดียวจะไม่ทำงาน มีการกู้คืนsulogin
สำหรับสิ่งต่าง ๆ เช่นเชลล์ที่ไม่ได้อยู่หรือเชลล์ที่เสียหายโดยสมบูรณ์ แต่มันจะไม่ทำงานหากเชลล์นั้นดูเหมือนจะเป็นเชลล์ที่ถูกต้อง แต่ไม่ใช่เชลล์จริงๆ
คุณยังคงsudo
สามารถรับเชลล์ได้โดยตรงโดยระบุเชลล์ไว้sudo
เพื่อไม่ให้มีการป้องกันที่ดี
sudo -i
อย่างไร