Score:19

ฉันจะป้องกันการเข้าถึงการปิดระบบแต่ไม่รีบูตได้อย่างไร

ธง in

ฉันมีพีซี Ubuntu ที่ทำงานเป็นเซิร์ฟเวอร์แบบเพล็กซ์ ฉันจะทำให้ไม่มีใครสามารถปิดคอมพิวเตอร์ได้ แต่อนุญาตให้ผู้ใช้รีบูตเครื่องเท่านั้น ฉันรู้ว่าเป็นไปได้ใน windows แต่ฉันแค่สงสัยว่าเป็นไปได้ใน Ubuntu หรือไม่

in flag
โปรดทราบว่าเพื่อให้ไม่มีใครสามารถปิดระบบได้ คุณต้องจำกัดการเข้าถึงเครื่องโดยสมบูรณ์ ใครก็ตามที่สามารถแตะต้องระบบได้เพียงแค่ดึงปลั๊กหรือปิดเครื่องอย่างหนักโดยเพียงแค่กดปุ่มเปิดปิดค้างไว้สองสามวินาที
TooTea avatar
cn flag
@AustinHemmelgarn การถอดปุ่มเปิด/ปิดเครื่องออกจากเมนบอร์ดจะใช้เวลา 1 นาที (ร่วมกับการตั้งค่าเครื่องให้เปิดหลังจากไฟฟ้าดับ) อย่างไรก็ตาม การทำให้ไม่สามารถดึงปลั๊กออกอาจทำได้ยากขึ้นและผิดกฎหมายในบางพื้นที่ (ด้วยเหตุผลด้านความปลอดภัยจากอัคคีภัย)
in flag
@TooTea การตัดการเชื่อมต่อปุ่มเปิดปิดภายในไม่ได้เป็นการขจัดข้อกำหนดด้านความปลอดภัยทางกายภาพ แม้ว่าคุณจะเพิกเฉยต่อปัญหาสายไฟก็ตาม คุณจะต้องป้องกันการเข้าถึงด้านในของเคส และสำหรับเรื่องนั้น หากคุณมีคอนโซลทางกายภาพ ใครก็ตามที่เข้าถึงได้สามารถปิดระบบได้เกือบทั้งหมด เว้นแต่ว่าคุณจะมีทั้ง bootloader และรหัสผ่านป้องกันโหมดฉุกเฉิน
TooTea avatar
cn flag
@AustinHemmelgarn ฉันจะถือว่าเครื่องใด ๆ ที่ผู้ใช้ที่ไม่น่าเชื่อถือสามารถเข้าถึงได้ทางกายภาพมีรหัสผ่าน BIOS และล็อคเคสอยู่แล้ว (ฉันเคยเห็นหมุดย้ำแทนสกรูเคส แต่การบำรุงรักษาค่อนข้างซับซ้อน)
Bryan Krause avatar
ke flag
@AustinHemmelgarn OP ส่วนใหญ่เกี่ยวข้องกับการเข้าถึงระยะไกลเป็นหลัก สันนิษฐานว่าพวกเขามีความไว้วางใจในระดับสูงต่อผู้ใช้ที่พวกเขาให้สิทธิ์ระดับนี้ แต่ต้องการหลีกเลี่ยงความไม่สะดวกของผู้ใช้โดยไม่ตั้งใจ (หรืออาจเป็นการเล่นตลกที่ไม่เป็นอันตรายอย่างอื่น) การปิดเครื่องจึงต้องมีคนเข้าถึงทางกายภาพ เครื่องเพื่อแก้ไขปัญหา
be flag
@TooTea ฉันจะถือว่าผู้ใช้ที่ไม่น่าเชื่อถือที่มีการเข้าถึงเครื่องจริงรู้วิธีเลี่ยงรหัสผ่าน BIOS และเลือกล็อค
wizzwizz4 avatar
de flag
@chepner ฉันจะถือว่าผู้ใช้ที่ไม่น่าเชื่อถือที่มีการเข้าถึงเครื่องรู้วิธีที่จะตีมันซ้ำ ๆ ด้วยเก้าอี้
be flag
@ wizzwizz4 นั่นคือประเด็น หากพวกเขาเข้าถึงได้ การเดิมพันทั้งหมดจะถูกปิด
in flag
@BryanKrause อันที่จริง ฉันยอมรับจากบริบทว่านั่นเป็นข้อสันนิษฐานที่สมเหตุสมผล ฉันแค่รู้สึกว่าจำเป็นต้องชี้ให้เห็นถึงแง่มุมความปลอดภัยทางกายภาพ เพราะมันเป็นสิ่งที่มักถูกมองข้ามหรือประเมินตามสมมติฐานที่ไม่ถูกต้องโดย ผู้ใช้ที่มีประสบการณ์น้อย
Score:26
ธง in

วิธีที่มีประสิทธิภาพที่สุดในการทำเช่นนี้คือการปกปิดเป้าหมายการปิดเครื่องดังนี้:

sudo systemctl มาสก์ poweroff.target

ตอนนี้คงเป็นไปไม่ได้ที่ใครก็ตามจะปิดเครื่องได้ เว้นแต่จะกดปุ่มเปิด/ปิดเครื่องค้างไว้หรือถอดเครื่องออกจากเครื่อง

การรีบูตไม่ได้รับผลกระทบจากมาสก์นี้


ในกรณีที่คุณจำเป็นต้องปิดเครื่องในอนาคตเพื่อการบำรุงรักษาหรือเปลี่ยนฮาร์ดแวร์ คุณสามารถทำได้ เปิดโปง เป้าหมาย:

sudo systemctl เปิดโปง poweroff.target
Peter Cordes avatar
fr flag
I doubt this would affect the magic SysRq key stuff, like alt+sysrq+o to power off (https://en.wikipedia.org/wiki/Magic_SysRq_key), so if you have remote console access that looks to Linux like a real physical keyboard (e.g. via KVM-over-IP), you'd also want to secure the more interesting of those with `/etc/sysctl.d/10-magic-sysrq.conf`, if Ubuntu's default mask doesn't already prevent that (and perhaps unsafe reboots).
in flag
@PeterCordes ⇢ This is an interesting case that I've yet to encounter. Will need to do some studying. Thanks for the tip
David Holland avatar
in flag
Bit late but I tried this and this is the one that worked.
Score:10
ธง bd

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

เดอะ ซูโดเออร์ ไฟล์อยู่ที่ /etc/sudoers, แต่คุณ ไม่ควร แก้ไขได้โดยตรง แต่คุณควรแก้ไขโดยใช้ visudo. คุณจะต้องรูทจึงจะแก้ไขได้ คุณจึงจะเรียกใช้ได้ ซูโด วิซูโด. เดอะ visudo คำสั่งจะตรวจสอบไวยากรณ์ของการแก้ไขของคุณ และคุณควรใช้สิ่งนี้เสมอเพื่อหลีกเลี่ยงไม่ให้การกำหนดค่าของคุณเสียหายและป้องกัน ตัวคุณเอง การเข้าถึงรูทในอนาคต

จากนั้นคุณสามารถเพิ่มสิ่งที่ต้องการในบรรทัดต่อไปนี้ ซูโดเออร์ ไฟล์:

ชื่อผู้ใช้ ALL=(root): /usr/sbin/reboot
ชื่อผู้ใช้ ALL=(root): /usr/bin/systemctl รีบูต

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

สำหรับข้อมูลเพิ่มเติม ตรวจสอบ ผู้ชาย, ผู้ชาย sudo, และ ผู้ชาย visudo.

โพสต์คำตอบ

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