`sudo reboot 'vs` reboot` - ความแตกต่างคืออะไร?


60

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


1
ระบบการรีบูตเครื่องโดยผู้ใช้ปกติไม่ได้มีเสียงที่สมเหตุสมผล การเปลี่ยนระดับรูทของกระบวนการรูท (init) ควรทำได้โดยผู้ใช้ root และผู้ใช้ root เท่านั้น คุณไม่สามารถแม้แต่เข้าถึงทางลัดระบบแฟ้มของ sysrq โดยผู้ใช้รายอื่น แต่! คุณสามารถรีบูตลินุกซ์ของคุณโดยsysrq คีย์มันไม่จำเป็นต้องsudo:)
Svetlana Linuxenko

sudoย่อมาจาก "Super-user Do" มันไม่มีผลกับคำสั่งของตัวเอง (นี่คือreboot) มันเพียงทำให้มันทำงานในฐานะผู้ใช้ super - มากกว่าที่คุณ ใช้เพื่อทำสิ่งต่าง ๆ ที่คุณอาจไม่ได้รับอนุญาตให้ทำ แต่ไม่เปลี่ยนแปลงสิ่งที่ทำ หากคุณมีสิทธิ์ในการเรียกใช้แล้วดีเพียงแค่เรียกใช้reboot reboot
Lee Crocker

ประเพณีนี้ต้องการรากที่ต้องทำ นิสัยเก่าพังทลาย
Thorbjørn Ravn Andersen

6
@SvetlanaLinuxenko> ระบบการรีบูตโดยผู้ใช้ปกติไม่ได้เสียงที่สมเหตุสมผลผู้ใช้ที่นั่งอยู่ที่คอนโซลสามารถกดปุ่มเปิดปิดหรือดึงปลั๊กถ้าเราไม่ปล่อยให้รีบูตใหม่หมดจด
Kaz

การกระจายอื่น ๆ มากมายจะไม่ยอมให้คุณรีบูทถ้าคุณไม่รูท
immibis

คำตอบ:


114

บน Ubuntu 14.10 ขึ้นไปsudoจำเป็นต้องมี

การแนะนำของ Systemd ใน 15.04 เปลี่ยนวิธีที่ Ubuntu จัดการshutdownและreboot:

  1. เมื่อผู้ใช้คนเดียวเข้าสู่ระบบsudoไม่จำเป็น เมื่อมีผู้ใช้มากกว่าหนึ่งคนเข้าสู่ระบบsudoจำเป็นต้องมี

  2. การประยุกต์ใช้งานสามารถยับยั้งและshutdown คุณแทนที่ยับยั้งเหล่านี้ด้วยrebootsudo

  3. ผู้ใช้เพียงครั้งเดียวเข้าสู่ระบบผ่านทางยังคงต้องsshsudo


ฉันคิดว่านี่รวมถึงผู้ใช้คนเดียวที่เข้าสู่ระบบในเวลาที่ไม่แน่นอนเช่นกัน
mckenzm

6
ไม่มีส่วนเกี่ยวข้องกับจำนวนผู้ใช้ที่เชื่อมต่อ ความสามารถในการรีบูตโดยไม่ใช้sudoนั้นขึ้นอยู่กับการอยู่ที่คอนโซลของเครื่อง หากคุณ ssh เข้าไปในเครื่องคุณจะยังคงไม่สามารถที่จะเริ่มต้นใหม่ได้โดยไม่ต้องsudoแม้ว่าคุณจะเป็นผู้ใช้เพียงเข้าสู่ระบบ. ตรงกันข้ามถ้าคุณอยู่ที่คอนโซลคุณยังสามารถเริ่มต้นใหม่ได้โดยไม่ต้องsudoแม้ว่าผู้ใช้อื่น ๆ เชื่อมต่อจากระยะไกล
Dave Sherohman

1
@DaveSherohman: นั่นไม่จำเป็นต้องเป็นความจริง - systemd ยังคงใช้การดำเนินการ polkit แยกต่างหากโดยขึ้นอยู่กับว่าคุณเป็นคนเดียวที่เข้าสู่ระบบหรือมีหลายรายการ ความหมาย distro (หรือดูแลระบบ) สามารถทำให้พวกเขาประพฤติแตกต่างกันได้อย่างง่ายดายมาก
grawity

21

ในเครื่อง 14.04 ของฉันเมื่อฉัน (ในฐานะผู้ใช้ธรรมดา) rebootฉันจะได้รับ

reboot: Need to be root

นั่นคือความแตกต่าง

ในฐานะที่เป็นTerranceชี้ให้เห็นในความคิดเห็นที่แตกต่างกันมันทำงานบนระบบช้ากว่าเหมือง ดังนั้นคุณอาจเห็น writeup เก่าและ / หรือผู้ใช้ (เช่นฉัน) ที่เคยตัวพิมพ์sudo reboot!


ที่น่าสนใจ! สิ่งที่ฉันสงสัยตอนนี้คือถ้ามีบางสิ่งเปลี่ยนไประหว่าง 14.04 ถึง 17.10 เพื่อให้คุณไม่จำเป็นต้องรูrebootทหรือถ้ามีปัจจัยอื่น ๆ ที่ทำให้ระบบของฉันเปลี่ยนไป
Zeke Egherman

3
@ ZekeEgherman ฉันคิดว่าความแตกต่างที่เกิดขึ้นจริงเมื่อพวกเขาเปลี่ยนจาก Upstart เป็น Systemd สำหรับคำสั่ง /bin/systemctlเมื่อฉันมองไปที่คำสั่งรีบูตของฉันมันเป็นจุดเชื่อมโยงไปยัง ls -al $(which reboot)คุณสามารถตรวจสอบของคุณโดยการพิมพ์
Terrance

@terrance ฉันเห็นลิงก์ไป/bin/systemct1ยังคุณเป็นรุ่นอะไร
Zeke Egherman

นั่นน่าสนใจ! ฉันลองใช้เครื่องเสมือนจริง 18.04 ก่อนวางจำหน่ายและใช้งานได้ตามที่คุณพูด @ Terrance ฉันคิดว่าคุณควรเขียนคำตอบที่แท้จริง
หินอ่อนอินทรีย์

@ZekeEgherman 16.04 Ubuntu เปลี่ยนเป็น Systemd ที่ 15.04 ดังนั้น 14.04 จะยังคงพุ่งพรวดหรือ initd ถ้านั่นคือสิ่งที่คุณต้องการเรียก
Terrance

9

sudo rebootใช้ในการสอน / วิธีใช้ด้วยเหตุผลด้านความเข้ากัน

ในขณะที่reboot อาจทำงานได้

  • ถ้าคุณเป็นรูตหรือ
  • หากคุณอยู่ในโฮสต์ด้วยsystemd และ
  • หากไม่มีแอปพลิเคชันบล็อกการรีบูต

sudo rebootจะ " เสมอ " * ทำงานโดยไม่คำนึงถึง

  • ไม่ว่าคุณจะรูต
  • มีผู้ใช้อื่นเข้าสู่ระบบหรือไม่
  • มีแอปพลิเคชั่นที่บล็อกอยู่หรือไม่
  • ไม่ว่าจะเป็น init คือ systemd, System V, พุ่งพรวดอะไรก็ตาม

* มันจะพยายามอย่างแน่นอน - ขาดกระบวนการบางอย่างของเคอร์เนลที่บล็อค / ทำงานผิดปกติ


มันจะทำงาน * เสมอ ... หากติดตั้ง sudo
Ave

7

สำหรับตัวเองหลาย ๆ ครั้งถ้าฉันพิมพ์rebootมันจะไม่ให้ฉันเนื่องจากตัวยับยั้งจาก Chrome เมื่อดู YouTube และแท็บอื่น ๆ ที่เปิดอยู่ ดังนั้นฉันถูกบังคับให้ใช้sudo reboot- เป็นค้อนที่ใหญ่กว่า

สิ่งนี้ใน Ubuntu 16.04


4

ขอบคุณสำหรับการสนทนาฉันดีใจที่ได้เข้าใจในตอนนี้!

ตามที่Terranceพูดถึงในเวอร์ชัน 15.04 พวกเขาเปลี่ยนจาก Upstart เป็น Systemd สำหรับคำสั่ง การเปลี่ยนแปลงนี้หมายความว่าrebootไม่ต้องใช้สิทธิ์พิเศษอีกต่อไป

สำหรับสาเหตุที่ชุมชน * nix สั่งให้ sudo rebootมีเหตุผลที่เป็นไปได้สองสามประการ:

  • นิสัย - ผู้คนเคยชินกับการsudo rebootรีบูตพวกเขายังคงทำต่อไปแม้ว่ามันจะไม่จำเป็นก็ตาม
  • ผู้ใช้ที่ไม่ได้รับการอัปเดต - ผู้ที่สั่งให้sudo rebootอยู่ในเวอร์ชันของ Ubuntu ที่ต่ำกว่า 15.04 หรือผู้อื่นที่ใช้คำสั่งพุ่งพรวด

  • ความเข้ากันได้ - นี่คือสิ่งที่ดูเหมือนว่าเป็นไปได้มากที่สุดสำหรับฉัน: ผู้คนกำลังสั่งสอนsudo rebootเพราะมันรับประกันว่าจะรีบูตในระบบ * nix ทั้งหมดไม่ว่าจะเกิดอะไรขึ้น

หมายเหตุเพิ่มเติม: จาก คำตอบของuser535733 :

การแนะนำของ systemd ใน 15.04 เปลี่ยนวิธีที่ Ubuntu จัดการกับการปิดและรีบูต:

  1. เมื่อผู้ใช้คนเดียวเข้าสู่ระบบsudoไม่จำเป็น เมื่อมีผู้ใช้มากกว่าหนึ่งคนเข้าสู่ระบบsudoจำเป็นต้องมี

  2. แอปพลิเคชันสามารถยับยั้งการปิดและรีบูต sudoคุณแทนที่ยับยั้งเหล่านี้ด้วย

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