Linux: ทำให้การปิดระบบไม่สามารถดำเนินการได้เพื่อความปลอดภัย


9

วันนี้ฉันได้ปิดเครื่องผลิตโดยไม่ได้ตั้งใจเพราะฉันคิดว่าฉันอยู่ในเครื่องท้องถิ่นของฉัน ฉันรู้ผิดสามเณร :-(

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

นั่นเป็นความคิดที่ดีหรือไม่? คุณเห็นผลข้างเคียงที่ไม่พึงประสงค์จากการทำเช่นนั้นหรือไม่?

ไชโยแดน


1
sysadmins ส่วนใหญ่ทำอะไรแบบนี้ในบางจุด (หน้าต่างไหนเป็นอีกแล้วเหรอ ... )
Bart Silverstrim

3
จะดีใจที่มันเป็นเพียงการปิด คนอื่น ๆ เรียนรู้บทเรียนนั้นด้วยเครื่องมือ dd (AKA: disk destroyer);)
pehrs

1
หน้าที่และเครื่องมือส่วนใหญ่สามารถร้ายแรงและถึงตายได้ พลังอันยิ่งใหญ่มาพร้อมกับความรับผิดชอบที่ยิ่งใหญ่ คุณอาจ chmod 000 คำสั่งปิดระบบของคุณ แต่ครั้งต่อไปที่คุณอาจยุ่งกับ rm, dd, fsck, mv หรือเครื่องมือที่อาจเป็นอันตรายอื่น ๆ เราทุกคนจะทำผิดพลาดไม่ช้าก็เร็ว สิ่งที่ดีที่สุดที่คุณสามารถทำได้คือเตรียมตัวให้พร้อมสำหรับสิ่งที่เลวร้ายที่สุดและตรวจสอบให้แน่ใจว่าคุณมีข้อมูลสำรอง ฯลฯ :-)
Janne Pikkarainen

คำตอบ:


21

อีกวิธีหนึ่งที่สมบูรณ์วิธีการเตือนว่าคุณทำงานบนเครื่องผลิตคือการทำเครื่องหมายขั้ว ตัวอย่างเช่น user@machine:~#ข้อความอาจเป็นสีแดงที่เครื่องผลิตสีเขียวที่กำลังพัฒนาเป็นต้นนี่คือแบบฝึกหัดที่ดีเกี่ยวกับวิธีการทำเช่นนี้: Color Bash Prompt


+1 ฉันรหัสสีเครื่องทั้งหมดของฉัน: ข้อความสีขาวบนพื้นหลังสี, สีส้ม = โครงสร้างพื้นฐาน; สีน้ำเงิน = การผลิต; สีม่วง = การทดสอบ / Dev เวิร์กสเตชันปกติเก็บพื้นหลังสีดำมาตรฐานไว้
Chris S

อีกวิธีการให้เกือบทุกเปลือก: understudy.net/custom.html
คริส S

+1 สำหรับเคล็ดลับที่ยอดเยี่ยมฉันไม่เคยคิดมาก่อนเลยว่า
Kenny Rasschaert

7

คำแนะนำที่ดีที่สุดที่ฉันสามารถให้คุณได้คืออย่าเข้าสู่ระบบในฐานะรูทเว้นแต่คุณจะต้องเข้าถึงรูทและตรวจสอบให้แน่ใจว่าคุณมีรหัสผ่านรูท / sudo ที่แตกต่างกันในแต่ละเครื่อง

การปิดระบบไม่สามารถเข้าถึงได้เป็นตัวเลือกหนึ่ง แต่ก็ไม่ดี ทั้งนามแฝงshutdownไปshutdown -aและtouch /etc/shutdown.allowหรือchmod a-x /sbin/shutdown

นอกจากนี้มันจะจบที่ไหน? คุณจะไม่อนุญาตให้หยุดรีบูตและเริ่มต้นด้วยหรือไม่


4
มันไม่เคยจบลง. มีบางสิ่งที่มากขึ้นเรื่อย ๆ ซ้ำแล้วซ้ำอีกเรื่อย ๆ มันไม่หยุด <เรียบหัวบนกำแพงซ้ำ ๆ ... >
Bart Silverstrim

อย่าลืม "ฆ่า" ท้ายที่สุด "kill -9 1" เป็นวิธีที่ค่อนข้างมีประสิทธิภาพ (หรืออย่างที่เคยเป็นเมื่อก่อน) ในการปิดกล่องยูนิกซ์
Vatine

-aการปิดบางส่วนไม่ได้ บวกกับการใช้นามแฝงแบบนั้นเหมือนกับการพึ่งพาalias rm='rm -i'- สักวันมันจะไม่เกิดขึ้นเมื่อคุณต้องการมันจริงๆ นอกจากนี้shutdown -aมีประโยชน์ จำกัด อยู่แล้วเท่านั้น
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

3

บางจุดที่ต้องพิจารณา:

  1. คุณทำอะไรในฐานะรูทบนระบบการผลิตในช่วงเวลาการผลิต? กำหนดค่าระบบของคุณเพื่อที่คุณจะได้ไม่ต้องรูทเครื่องเพื่อการทำงานประจำวัน คุณไม่ควรรูทบนระบบการผลิตโดยไม่มีเหตุผลที่ดีมาก
  2. เรียนรู้บทเรียนที่สำคัญ เมื่อคุณรูทคุณจะต้องตรวจสอบสองครั้งก่อนที่คุณจะกด Enter SUDO ไม่มีการป้องกันถ้าคุณเพียงแค่เขียนรหัสผ่านเพื่อดำเนินการต่อโดยไม่คิด การระบายสีอย่างรวดเร็วดังที่ mkudlacek กล่าวไว้เป็นเครื่องมือที่มีประโยชน์มากที่จะช่วยให้แน่ใจว่าคุณไม่ได้อยู่ในระบบที่ผิด
  3. อย่ายุ่งกับเครื่องมือในตัว มีแนวโน้มที่จะทำลายการอัปเดตและจะทำให้การจ้างงานใหม่บ้า หากคุณต้องการเปลี่ยนบางสิ่งให้ใช้ไฟล์นามแฝงของคุณเอง

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

1
ในกรณีนี้คุณไม่มีข้อกำหนดระดับการให้บริการที่หนักมากบนเครื่อง การติดตั้งซอฟต์แวร์การแก้ไขการข้ามฉุกเฉิน ACL และการเปลี่ยนแปลงการกำหนดค่าเครือข่ายเป็นสิ่งเดียวที่คุณต้องการรูท ไม่ควรทำกิจกรรมเหล่านี้บ่อยครั้งบนเครื่องจักรในการผลิต ... และทุกอย่างอื่นควรทำจากบัญชี superuser ถ้าคุณใช้รูทแทนที่จะเป็น superusers ในระบบการผลิตของคุณคุณมักจะมีปัญหา ...
pehrs

3

ฉันไม่คิดว่าจะยุ่งกับสิทธิ์ที่ได้รับshutdownเป็นวิธีจัดการกับสถานการณ์ โดยทั่วไปคุณเพิ่งเรียนรู้บทเรียน สู้ ๆ.

ฉันได้ทำสิ่งเดียวกัน - รับโซ่ยาวจากเอสเอสเอสแล้วยุ่งกับเส้นทางบนหนึ่งในเครื่องที่ฉันเคยผ่านมาแล้วตัดตัวเองออก ฉันได้ทำคำขอ rsync เรียบร้อยแล้วซึ่งนำไปสู่การทำลายระบบในอีกด้านหนึ่งของโลก ฉันทำงานrm -rf / pathบนเซิร์ฟเวอร์ที่ใช้งานจริง (ครั้งนั้นฉันต้องเรียนรู้วิธีการคืนค่า)

ดังนั้นยิ่งมีอายุมากขึ้นและหวังว่าฉันจะฉลาดขึ้นเล็กน้อยตอนนี้ฉันมีกฎเกณฑ์ที่เข้มงวดซึ่งฉันใช้บังคับกับตัวเอง

  • พร้อมต์รูททั้งหมดลงท้ายด้วย # ไม่ว่าจะมีข้อมูลอื่นใดอยู่ก็ตาม
  • เมื่อใดก็ตามที่ฉันพร้อม # ฉันจะนั่งบนมือก่อนกดปุ่ม Enter
  • หากมีข้อสงสัยเกี่ยวกับสิ่งที่ฉันกำลังจะทำหรือว่าฉันอยู่ที่ไหนหรือไปถึงที่นั่นจริง ๆ ฉันจะยกเลิกมันและสร้างใหม่อีกครั้งจากสภาพเริ่มต้นที่เป็นที่รู้จัก
  • เมื่อฉันทำผิดพลาด (และฉันยังคงทำให้พวกเขาแม้ว่าพวกเขาจะได้รับบ่อยน้อยลงและคลุมเครือมากขึ้นเมื่อเวลาผ่านไป) คิดในสิ่งที่ฉันได้ทำทันทีที่ฉันได้รับผลกระทบและไปสารภาพบาปของพวกเขากับพวกเขา . จากนั้นปล่อยทุกอย่างอื่นแล้วเลิกทำดาเมจอย่างรวดเร็วและดีที่สุดเท่าที่จะทำได้

ธรรมชาติของงานของฉันทำให้ฉันต้องใช้เวลามากกับการหยั่งรากที่หลากหลาย แต่ด้วยความผิดพลาดของฉันในอดีตฉันยังคงมีความตระหนักในสถานการณ์ที่ดีกว่าตอนที่ฉันเริ่ม



1

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

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


1

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


0

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

แน่นอนว่านอกเหนือจากการดูพรอมต์ '#' สีแดง


0

ใช่การลบ execute bit บนคำสั่ง shutdown เป็นวิธีที่ง่ายและปลอดภัยที่สุดในการป้องกันการปิดเครื่องโดยไม่ตั้งใจโดยเฉพาะอย่างยิ่งถ้าคุณมีสภาพแวดล้อมเดสก์ทอปเช่น KDE บนเครื่องและคุณต้องการป้องกันการปิดเครื่องโดยไม่ตั้งใจเมื่อออกจากระบบ

สำหรับคนใหม่ที่กำลังสับสนฉันคิดว่าสิ่งแรกที่พวกเขาจะทำคือls -l /sbin/shutdownค้นหาว่าทำไมมันถึงไม่ทำงาน (โดยเฉพาะอย่างยิ่งถ้าพวกเขามีนิสัยที่ดีในการใช้ชื่อที่สามารถใช้งานได้กับแท็บ) เห็นได้ชัดว่าคุณควรบอกพวกเขาเกี่ยวกับการเปลี่ยนแปลงใด ๆ ที่คุณทำ

เพื่อความปลอดภัยเป็นพิเศษคุณสามารถเพิ่มบรรทัดหนึ่ง/etc/rc.localเพื่อลบบิตเรียกใช้งานออกจากคำสั่งปิดเครื่องดังนั้นคุณจะไม่ลืมรีเซ็ตหลังจากรีบูต


0

คุณสามารถลบ / sbin / ออกจากเส้นทางของรูทได้ วิธีนี้คุณต้องพิมพ์เส้นทางแบบเต็มเพื่อเรียกใช้งานและมักจะแก้ไขอุบัติเหตุ

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