การปิด / รีบูตจำเป็นต้องมีสิทธิ์พิเศษภายใต้ Linux หรือไม่ [ปิด]


6

ทำไมฉันต้องรูทเพื่อปิด / รีบูตเครื่องคอมพิวเตอร์จากเครื่อง การทำเช่นนั้นผ่านเมนู GUI ไม่จำเป็นต้องมีสิทธิ์รูท


ขึ้นอยู่กับการตั้งค่าในคอมพิวเตอร์ของคุณ เหตุใดคุณต้องการปิดระบบจากเทอร์มินัลแทนที่จะใช้ GUI

เทอร์มินัลอะไรที่คุณกำลังพูดถึง? คุณมีเทอร์มินัล "หน้าจอสีเขียว" ในสาย RS-323 หรือไม่? ไม่มี "เทอร์มินัล"
Kaz

คำตอบ:


10

โดยปกติแล้วระบบปฏิบัติการจะเปิดตัวเมื่อเริ่มต้นบริการที่ทำงานในฐานะรูทและนำเสนอความเป็นไปได้บางประการเกี่ยวกับคอมพิวเตอร์ โดยปกติจะเป็น ConsoleKit หรือ systemd-logind

ตัวอย่างเช่นใน KDE คุณสามารถปิดคอมพิวเตอร์จากบรรทัดคำสั่งเป็น ปกติ ผู้ใช้ที่มีสิ่งที่ชอบ:

qdbus org.kde.ksmserver /KSMServer logout 0 0 0

สิ่งนี้เป็นไปได้เนื่องจากตัวจัดการเซสชัน KDE จะติดต่อบริการ DBus ที่ทำงานเป็นรูทและเมื่อถูกเรียกจะเรียกใช้ shutdown คำสั่งด้วยสิทธิ์รูต

บนระบบที่ใช้ ConsoleKit คุณสามารถใช้:

gdbus call -y -d org.freedesktop.ConsoleKit \
              -o /org/freedesktop/ConsoleKit/Manager \
              -m org.freedesktop.ConsoleKit.Manager.Stop

ในระบบที่ใช้ systemd-logind , shutdown ยูทิลิตี้ใช้แล้ว DBus และไม่ต้องการสิทธิ์

เพื่อสรุปคุณสามารถปิดคอมพิวเตอร์ของคุณในฐานะผู้ใช้ปกติได้เนื่องจาก Desktop Environment จะเรียกใช้บริการที่เสนอความเป็นไปได้ในการเรียกใช้คำสั่งปิดระบบ [1] ในฐานะรูท

[1] ที่จริงแล้วบริการทำสิ่งอื่น ๆ เพื่อให้แน่ใจว่า Desktop Environment ปิดตัวลงอย่างถูกต้อง


1
ตัวจัดการเซสชั่นไม่เคยทำงานเป็นราก มันติดต่อ ConsoleKit หรือ systemd-logind
grawity

1
คำตอบของฉันไม่สมบูรณ์หรือแน่นอนฉันแนะนำให้คุณแก้ไข
StreakyCobra

@StreakyCobra หมายถึง [1] หมายถึงการใช้คำสั่ง 'shutdown' ในเทอร์มินัลไม่แนะนำให้ใช้เมื่อ Desktop Environment กำลังทำงานอยู่?
boh

มันขึ้นอยู่กับ DE แต่ก็ปลอดภัยกว่าที่จะหลีกเลี่ยง DE บางคนจะบันทึกเซสชันของคุณก่อนที่จะปิด (แอปพลิเคชั่นที่เปิด, การกำหนดค่าพื้นที่ทำงาน, ... ) หรือใบอนุญาตไปยังแอปพลิเคชันที่มีงานที่ไม่ได้บันทึกไว้ ที่นี่ )
StreakyCobra

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

1

ลองนึกภาพคอมพิวเตอร์ของคุณเป็นเซิร์ฟเวอร์เว็บโฮสติ้งที่แชร์ซึ่งผู้ใช้ทุกคนจะได้รับสิทธิ์การเข้าถึง SSH มีผู้ใช้ประมาณ 500 คนต่อหนึ่งเซิร์ฟเวอร์ในการตั้งค่าดังกล่าว

ทุกคนควรได้รับอนุญาตให้รีบูตเซิร์ฟเวอร์ทั้งหมดทำลายการดาวน์โหลด HTTP หยุดเซสชัน SSH ฯลฯ หรือไม่


นั่นไม่ใช่คำถาม
grawity

ใช่นี่เป็นการตีความที่สมเหตุสมผลของคำถาม SSH เป็นตัวอย่างของเทอร์มินัลและไม่ได้ให้วิธีการปิดระบบให้กับผู้ใช้ที่ยังไม่ได้รับการรับรองความถูกต้องหรือไม่ได้รับการรับรองความถูกต้องเป็น root คอนโซลข้อความ Linux จัดเตรียมวิธีการรีบูตแก่ผู้ใช้ที่ไม่ได้เข้าสู่ระบบเช่นเดียวกับหน้าจอเข้าสู่ระบบแบบกราฟิก
Kaz

1

เหตุผลบางอย่างจากส่วนบนของหัวของฉัน

  • ตัวแปรบรรทัดคำสั่งสามารถเป็นได้ สคริปต์ ดังนั้นสคริปต์ที่เป็นอันตรายสามารถถูกฉีดและทำให้เกิดสิ่งที่น่ารังเกียจมาก (การโจมตี DoS เป็นต้น)
  • เมนู GUI นั้นปลอดภัย: ไม่อนุญาตให้สิ่งที่น่ารังเกียจเกิดขึ้น (เช่นบังคับให้รีบูต - โยนทุกอย่างไปในอากาศ)
  • เมนู GUI นั้นง่าย: ไม่สับสนผู้ใช้ที่มีตัวเลือกผู้ดูแลระบบที่มีประสิทธิภาพเช่นการบันทึก verbose, ข้อความเพิ่มเติมที่ส่งไปยังผู้ใช้ที่ถูกบันทึกทั้งหมด, การปิดระบบล่าช้า, ความแตกต่างระหว่างหยุดการทำงาน
  • เมนู GUI เป็นแบบลีนและค่าเฉลี่ย: ไม่ทำงาน "แตกต่าง" ตามระบบ runlevels (0, 6 และอื่น ๆ ) ที่ใช้งานสคริปต์ที่แตกต่างกัน (เช่น. / sbin / ปิดระบบ) และ / หรือตามสวิตช์ / ตัวเลือกต่างๆ เส้น

HTH


X11 นั้นใช้สคริปต์ได้เช่นกัน
grawity

1

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

ผู้ใช้เซสชัน TTY โดยพลการไม่สามารถสันนิษฐานได้ว่ามีการเข้าถึงแบบฟิสิคัล มันเป็นรูปแบบของการเข้าถึงระยะไกล ไม่มีวิธีที่จะส่งสัญญาณการปิดระบบผ่านเซสชัน TTY ที่กำหนดเองไม่ว่าจะเป็น xterm โลคัลเทอร์มินัลจริงบนบรรทัดอนุกรมหรือเซสชัน ssh คุณต้องพิสูจน์ว่าคุณมีสิทธิ์เทียบเท่ากับการเข้าถึงทางกายภาพโดยการรูท

หากผู้ใช้ที่ไม่ได้รับอนุญาตหรือไม่ได้รับอนุญาตสามารถรีบูตระบบจากระยะไกลได้นั่นจะเป็นปัญหาด้านความปลอดภัย

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

ตัวจำลองเทอร์มินัลกราฟิกเช่น xterm ไม่ใช่รีโมท แต่ระบบปฏิบัติการไม่ทราบ แอปพลิเคชันถูกนำไปใช้โดยใช้ หลอก TTY . นี่เป็นอุปกรณ์ TTY เสมือนจริงซึ่งระบบปฏิบัติการ (ส่วนใหญ่) ไม่ได้แยกความแตกต่างจาก tty จริง ถ้าคุณพิมพ์ stty ในเซสชัน xterm หรือ ssh คุณจะทราบว่าคุณมีอัตรารับส่งข้อมูลเช่น 9600 หรือ 38400 และสามารถสลับการควบคุมการไหลของ xon / xoff หรือแม้แต่ cts / rts หลอก TTY ได้ ในทางทฤษฎีมีโปรโตคอลการส่งสัญญาณรีบูตพิเศษระหว่างต้นแบบและทาสที่ไม่สามารถใช้ได้ใน TTY ปกติ แต่ก็ไม่มี (อันที่จริงแล้ว xterm อาจเป็นรีโมทเนื่องจากเป็นแอปพลิเคชันไคลเอนต์ X ที่สามารถเปลี่ยนเส้นทางเพื่อสร้างหน้าต่างของตนบนเซิร์ฟเวอร์ X ระยะไกล)

(ไม่แน่ใจว่าหมายถึงอะไร "terminal" ในคำถามนั้นไม่มีใน Linux)


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