ประโยชน์ของ sudo over su คืออะไร?


19

อะไรคือประโยชน์ที่แท้จริงที่ Ubuntu (หรือ Debian อนุพันธ์) บรรลุโดยการปิดใช้งานผู้ใช้รูท?

ทุกที่ที่ฉันอ่านมีข้อความว่าเพื่อป้องกันความเสียหายโดยไม่ตั้งใจสำหรับผู้ใช้ที่ไม่มีประสบการณ์ ฉันต้องการที่จะรู้ว่าสิ่งที่แน่นอนเพราะsudoสามารถดำเนินการคำสั่งทั้งหมด (ที่ฉันรู้ / ใช้)

ดังนั้นในกรณีใดรูทสามารถทำให้เกิดความเสียหายในขณะที่sudoไม่สามารถ?

PS: ฉันรู้วิธีการsudoทำงาน


คำตอบ:


31

ดังนั้นในกรณีใดรูทสามารถทำให้เกิดความเสียหายในขณะที่ sudo ไม่สามารถ?

เนื่องจากโดยปกติคุณจะต้องเรียกใช้sudoทุกครั้งที่คุณต้องการทำสิ่งที่ต้องการสิทธิ์การใช้เหตุผลคือคุณจะ "คิดก่อนที่คุณจะกระโดด" นั่นคือไม่เพียงแค่ติด sudo ต่อหน้าอะไรสักอย่างโดยไม่คิดอะไรสักอย่าง กำลังจะทำ

ด้วยsuในทางกลับกันเมื่อคุณอยู่ในคุณอยู่ใน. คุณมี Carte Blanche (ใบอนุญาตเปิด) จะทำอะไรและทุกอย่างและเหตุผลคือคุณอาจลืมสำหรับช่วงเวลาที่ว่าคุณมีสิทธิ์เหล่านั้นและถ้าคุณ โชคไม่ดีรันบางสิ่งที่จะส่งผลกระทบอย่างรุนแรง / ทำให้ระบบของคุณเสียหาย - หากคุณไม่มีสิทธิ์ su คำสั่งจะไม่ทำอะไรที่ร้ายแรง


8
ตรรกะ "คิดก่อนกระโดด" ไร้เดียงสาเหมือนที่ผู้ใช้คิดจะหยุดคิดเมื่อแสดงกล่องโต้ตอบที่แจ้งว่า "คุณต้องการติดตั้ง TrashTheComputer.Virus: ใช่ / ไม่?" จะลดอัตราการติดมัลแวร์
Dan Neely

9
@DanNeely - ฉันไม่คิดอย่างนั้น ฉันพิมพ์คำสั่งจำนวนมากและส่วนใหญ่ไม่ต้องการsudoดังนั้นฉันจึงไม่ใช้มัน เมื่อฉันใช้มันจะทำให้ฉันหยุดชั่วขณะ ใช่ฉันพูดในฐานะโปรแกรมเมอร์ไม่ใช่ผู้ใช้ทั่วไป แต่จากนั้นอีกครั้งผู้ใช้ทั่วไปไม่ใช้บรรทัดคำสั่ง
นาธานลอง

2
@NathanLong ไม่มากจริงกับลินุกซ์, เหตุผลที่คำถามนี้มีอยู่แสดงให้เห็นว่าเป็น "ผู้ใช้โดยเฉลี่ย" ไม่เข้าใจว่าทำไมการใช้งานมากกว่าsudo suบ่อยครั้งที่ผู้คนพูดว่า "ใช้ sudo เพราะปลอดภัยกว่า su" - ซึ่งไร้เดียงสาที่จะคิดเพราะไม่มีความปลอดภัยใด ๆ เลย การลืมว่าคุณใช้suไม่ใช่ข้อแก้ตัวนั่นเป็นเพียงการไร้ความสามารถที่ถูกต้องหากคุณเรียกใช้คำสั่งในฐานะรูทโดยไม่ตั้งใจ
เถ้า

1
@ash ฉันยังคงบอกว่าผู้ใช้โดยเฉลี่ยจะไม่ถามเกี่ยวกับผลกระทบด้านความปลอดภัยเปรียบเทียบของสองวิธีในการเพิ่มสิทธิ์ของผู้ใช้ อันที่จริงแล้ว OP มีคำถามเกี่ยวกับ StackOverflow แต่อย่าลืมว่าการจดจำสิ่งที่คุณทำเมื่อ 15 วินาทีก่อนนั้นง่ายกว่าการจดจำสิ่งที่คุณทำเมื่อวานนี้และคุณสามารถมีช่วงเวลาเทอร์มินัลที่ครอบคลุม ดังนั้นใช่คุณไม่ควรลืมเมื่อใช้suแต่โดยส่วนตัวแล้วฉันไม่ควรตั้งระเบิดมากกว่าที่คิดว่าฉันจำได้ว่าจะปลดอาวุธพวกเขา
Nathan Long

16

IMO ข้อได้เปรียบที่สำคัญของ sudo over su คือ sudo มีการบันทึกที่เหนือกว่าของคำสั่งใดที่ทำงานและ sudo ให้การควบคุมที่ดียิ่งขึ้นต่อสิ่งที่ผู้ใช้สามารถทำได้

su คือทั้งหมดหรือไม่มีเลย แต่ sudo สามารถกำหนดค่าให้อนุญาตการเข้าถึงบางคำสั่ง แต่ไม่ใช่ทั้งหมด

ดูhttps://help.ubuntu.com/community/RootSudoสำหรับการสนทนาที่สมบูรณ์ยิ่งขึ้นรวมถึงข้อดีและข้อเสีย


11

ซู -

เมื่อเข้าสู่ระบบในฐานะrootงานใด ๆ ที่คุณเริ่มต้นการกระทำที่คุณเรียกใช้หรือเหตุการณ์สุ่มที่เกิดจากการเข้าชมเว็บไซต์บางอย่าง ฯลฯ .. จะทำงานเป็นผู้ใช้ขั้นสูง

sudo

เมื่อคุณเรียกใช้sudoในขณะที่คุณเรียกใช้คำสั่งเฉพาะคำสั่งนั้นจะทำงานเป็นผู้ใช้ขั้นสูง

คุณจะถูกถามรหัสผ่านก่อนที่คำสั่งจะถูกดำเนินการ ดังนั้นผู้ใช้ปฏิสัมพันธ์โดยคุณยังจำเป็นต้องใช้

ความพยายามในการเรียกใช้sudoสามารถถูกบันทึกได้ด้วย


2
อันที่จริงมันจะถามรหัสผ่านของผู้ใช้ปัจจุบันซึ่งทำให้ง่ายต่อการจัดการรหัสผ่านรูต หากบัญชีถูกลบออกจากระบบรหัสผ่านรูทไม่จำเป็นต้องรีเซ็ต ยิ่งกว่านั้นบัญชีรูทไม่จำเป็นต้องใช้รหัสผ่านเลยดังนั้นบัญชีรูทไม่สามารถถูกโจมตีได้ด้วยการบังคับให้เดรัจฉาน
jippie

@jippie ระบุแนวปฏิบัติทั่วไปที่ดีในการลบ / บล็อก / ทำให้รหัสผ่านรูทใช้งานไม่ได้และอนุญาตการเข้าถึงผ่านsudo suเท่านั้น ในขณะที่ยัติภังค์-เป็นธงยอมรับsuและปฏิบัติต่อเปลือกของคุณราวกับว่าคุณเข้าสู่ระบบในฐานะผู้ใช้(เรียกใช้ชุดของไฟล์สภาพแวดล้อมที่แตกต่างกันเช่น. bashrc / .profile)
เถ้า

3

มันเกี่ยวกับการจัดการผู้ใช้ / รหัสผ่านสำหรับ sysadmins

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

ฉันพบว่ามันสะดวกสบายเป็นการส่วนตัวที่จะไม่มีรหัสผ่านอื่นเพื่อติดตามสูญหายและถูกบุกรุก ใน RHEL ฉันปิดใช้งานบัญชีรูทโดยเฉพาะหลังจากกำหนดค่า sudo ดังนั้นฉันจึงไม่ต้องติดตามมัน เมื่ออยู่ครู่หนึ่งผู้ใช้ b0rks ไฟล์ sudo แต่สามารถแก้ไขได้ในโหมดผู้ใช้คนเดียว (โดยปกติมันเป็นเครื่องผลิต)

หมายเหตุ: 'sudo bash' จะช่วยให้คุณข้ามการพิมพ์ sudo สำหรับแต่ละคำสั่ง ...


ฉันมักจะsudo mc: D
Rony

คำตอบเดียวที่ควรค่าแก่การลงคะแนนคือตอบคำถามอย่างชัดเจนโดยไม่ทำให้สับสนกับคำถามหรือทำให้ผู้คนเข้าใจผิดเกี่ยวกับข้อมูล
เถ้า

@flickerfly ฉันเชื่อว่าใน "รีเซ็ตรหัสผ่านรูทสำหรับผู้ใช้รายเดียวกัน" ควรลบ "สำหรับผู้ใช้รายเดียวกัน" - มันจะแม่นยำมากขึ้นด้วยวิธีการนั้น
Richlv

@ Richlv คุณพูดถูก ฉันแก้ไขตามที่คุณแนะนำ ไม่แน่ใจในสิ่งที่ฉันตั้งใจไว้
flickerfly

2

ฉันคิดว่าอันดับแรกเราต้องดูว่าจริง ๆ แล้ว su และ sudo คืออะไร

su - หมายถึงผู้ใช้สำรอง คุณใช้สิ่งนี้เพื่อสลับเปลือกเป็นผู้ใช้อื่นโดยใช้รหัสผ่านของผู้ใช้นั้น ใช้กับราก ไม่ต้องการรหัสผ่านเมื่อดำเนินการในฐานะรูท

sudo - อนุญาตให้ผู้ใช้ที่ได้รับอนุญาตดำเนินการคำสั่งที่ระบุเป็นผู้ใช้อื่น นอกจากนี้ยังใช้กับราก อย่างไรก็ตามสิ่งนี้ช่วยให้คุณสามารถจัดการคำสั่งที่อาจถูกเรียกใช้เป็นการใช้งานอื่นโดยเฉพาะ (ตัวอย่างเช่นคุณสามารถให้ผู้ใช้สามารถเรียกใช้สคริปต์ init.d แต่ไม่มีอะไรอื่น)

หมายเหตุคุณสามารถเรียกใช้sudo suหรือเสมอsudo -iและจะให้รูทเชลล์แก่คุณ อย่างไรก็ตามไม่มีรหัสผ่านรูทหมายความว่าไม่มีการล็อกอินโดยตรงในฐานะรูท ... ซึ่งหมายความว่าไม่มีใครสามารถเจาะเข้าสู่ผู้ใช้รายนั้น

แก้ไข: ดังนั้นคำตอบที่คุณต้องการคือ: ไม่มีรหัสผ่านรูทบังคับให้คุณใช้sudoซึ่งโดยธรรมชาติแล้วจะสอดคล้องกับsudoปรัชญาของคุณซึ่งแนะนำให้คุณบังคับควบคุมการกระทำที่เรียกใช้ในฐานะรูท


ฉันเขียนสิ่งนี้ด้วยตัวเอง ....
606723

2

นอกจากนี้ยังมีข้อควรพิจารณาในการบันทึกเพื่อพิจารณาระหว่าง sudo และ su การเป็นซูก็ทำทุกอย่างในฐานะรูทโดยไม่มีรายการอื่นนอกจากบรรทัดเดียวในบันทึกรับรองความถูกต้องที่บอกว่าคุณกลายเป็นรูต

Sudo ตรงกันข้ามจะได้รับการบันทึกเป็น ID ผู้ใช้ของคุณด้วย priveleesw ที่เพิ่มขึ้น


0

โดยปกติแล้วการเข้าสู่ระบบในฐานะ su นั้นง่ายกว่าเมื่อดำเนินการเกี่ยวกับการดูแลระบบ อย่างไรก็ตามมีข้อยกเว้นอย่างน้อยหนึ่งข้อ: เมื่อความเป็นเจ้าของไฟล์มีความสำคัญ หากคุณต้องการให้ผู้ใช้เป็นเจ้าของไฟล์ให้ล็อกอินในฐานะผู้ใช้นั้นและใช้ sudo เพื่อ donwload หรือคัดลอกไฟล์ ตัวอย่างง่ายๆคือไฟล์คั่นหน้าและไฟล์ภาพพื้นหลัง หากผู้ใช้ไม่ได้เป็นเจ้าของไฟล์บุ๊กมาร์ก "คืนค่า" จาก "ไฟล์" ของ Firefox จะล้มเหลว เมื่อคุณตั้งค่ารูปพื้นหลังเดสก์ท็อปมันอาจไม่ทำงานจนกว่าคุณจะเป็นเจ้าของไฟล์ บางครั้งคุณสามารถตั้งค่าสิทธิพิเศษหรือเปิดใช้งานเป็นไฟล์ที่ปฏิบัติการได้ แต่การตั้งค่าหรือโปรแกรมบางอย่างอาจล้มเหลวหากคุณไม่ใช่เจ้าของไฟล์


คุณเข้าสู่ระบบในฐานะ root และใช้ Firefox เพื่อท่องเว็บหรือไม่ ฉันคิดว่านี่เป็นสาเหตุของการปิดใช้งานบัญชีรูท มันกำจัดความเป็นไปได้ของการเข้าสู่ระบบในฐานะ root สำหรับการใช้งานรายวัน
adempewolff
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.