ทำไมคุณไม่ควรแก้ไขไฟล์ / etc / shadow โดยตรง


10

ในคำตอบอื่นที่นี่ใน UNIX และ Linux แลกเปลี่ยนแลกเปลี่ยนMichael D Parker เขียนในการตอบสนองต่อคนที่บอกว่าทำเช่นนั้น "ปลอดภัย" ที่:

โดยปกติคุณไม่ควรแก้ไขไฟล์ / etc / shadow โดยตรง

ดังนั้น:

ทำไมคุณไม่ควรแก้ไข/etc/shadowไฟล์โดยตรง?


เพราะมันมีรหัสผ่านของคุณเข้ารหัส
Milind Dumbare

7
เพราะคุณจะทำลายมัน อาจไม่ใช่วันนี้อาจไม่ใช่พรุ่งนี้ แต่ในไม่ช้า
ctrl-alt-delor

1
อัปเดตคำถามของคุณ (โดยแก้ไข) ด้วยลิงก์ไปยังสาเหตุที่คุณคิดว่าเป็นกรณีนี้ ฉันได้รับการแก้ไข/etc/shadowมานานกว่า 20 ปีโดยไม่มีปัญหาเลยทีเดียว และโปรดสุภาพมากในการอ่านสองนาทีในการช่วยเหลือ→ทัวร์โดยเฉพาะอย่างยิ่ง "ไม่มีการรบกวน", "ไม่มีการพูดคุยกัน" นี่เป็นครั้งแรกที่ฉันต้องอ่านคำถามที่ไม่เกี่ยวข้องกับการสนทนามากกว่าการอ่านผ่าน "รายละเอียด" ที่เกี่ยวข้องกับคำถาม
Anthon

"โดยปกติแล้วคุณไม่ควร" ไม่เหมือนกับ "ไม่เคย"
roaima

2
@Captcha Nonsense มีเหตุผลที่ดีที่จะไม่ทำเช่นนั้น เพียงเพราะคุณไม่สามารถนึกถึงสิ่งใด ๆ ไม่ได้ทำให้คุณโทรไปหาคนอื่นที่ไม่รู้ กรุณาจะดี
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


15

มีเหตุผลหลายประการที่จะไม่แก้ไขมี/etc/passwd, /etc/shadow, /etc/group, /etc/gshadowหรือ/etc/sudoersโดยตรง แต่ใช้vipw, vigrหรือvisudo:

  • หากคุณสร้างข้อผิดพลาดทางไวยากรณ์คุณอาจไม่สามารถเข้าสู่ระบบหรือกลายเป็นรูตได้อีกต่อไป การใช้เครื่องมือ viXXX ช่วยลดความเสี่ยงนี้เนื่องจากเครื่องมือทำการตรวจสอบสติก่อนที่จะแก้ไขไฟล์
  • หากไฟล์ถูกแก้ไขพร้อมกันใครก็ตามที่บันทึกล่าสุดจะแทนที่การเปลี่ยนแปลงที่ทำโดยการแก้ไขก่อนหน้า นี้รวมทั้งผู้ดูแลระบบแก้ไขไฟล์และแฟ้มถูกแก้ไขได้เนื่องจากผู้ใช้ที่เรียกว่าpasswd, chshหรือchfnมีการเปลี่ยนแปลงบางสิ่งบางอย่างเกี่ยวกับบัญชีของพวกเขา หากคุณใช้เครื่องมือที่เหมาะสมมันจะป้องกันการแก้ไขพร้อมกัน นี่เป็นข้อกังวลส่วนใหญ่เกี่ยวกับระบบที่มีผู้ใช้หลายคนน้อยกว่าดังนั้นหากคุณเป็นผู้ใช้คนเดียว
  • ในบางระบบ (ส่วนใหญ่หรือเพียง * BSD) vipwอัปเดตหลายไฟล์ (เช่น/etc/passwdและ/etc/master.passwd) สิ่งนี้ไม่ได้ใช้กับ Linux
  • vipwสร้างการสำรองข้อมูลโดยอัตโนมัติ ( passwd-,, shadow-... ) ซึ่งมีประโยชน์หากคุณทราบว่าคุณลบบรรทัดโดยไม่ตั้งใจ มันจะมีประโยชน์ก็ต่อเมื่อคุณทราบก่อนการแก้ไขครั้งต่อไปดังนั้นจึงไม่ได้แทนที่การควบคุมเวอร์ชันและการสำรองข้อมูล แต่อาจดีมากถ้าคุณเข้าใจผิดพลาดเร็วพอ visudoไม่ทำสิ่งนี้

คุณสามารถแก้ไขไฟล์ได้โดยตรง คุณเพียงแค่รับความเสี่ยงเพิ่มเติมโดยไม่มีข้อได้เปรียบที่แท้จริง


Point # 2 เป็นข้อกังวลของระบบใด ๆที่ผู้ใช้สามารถเปลี่ยนรหัสผ่านของตนเองเชลล์และอะไรก็ได้ ผู้ดูแลระบบหลายคนไม่ใช่ข้อกำหนดเบื้องต้น ☺
JdeBP

3
และปัญหาที่สำคัญของ BSD นี้คือมัน/etc/shadowไม่มีอยู่และ/etc/passwdเป็นไฟล์ที่ไม่ถูกต้องที่จะแก้ไขเพราะมันเป็นไฟล์ที่สร้างขึ้นไม่ใช่ไฟล์ต้นฉบับ ☺
JdeBP

@JdeBP ยกเว้นมันไม่ใช่ปัญหาเลยและร้าน BSD ใน master.passwd
Rob

6

โดยทั่วไปมีสองวิธีในการดูนี้:

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

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

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

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

เมื่อฉันทำเช่นนั้นและตรวจสอบว่าฉันอยู่ในสถานะที่ใช้การได้ฉันตัดสินใจที่จะทำมันอีกครั้งอย่างตั้งใจ และอีกครั้ง ทั้งหมดนี้เป็นเพียงไม่กี่เดือนที่ผ่านมา แต่วันนี้ผมยังคงเชื่อมั่นว่าผมสามารถวินิจฉัยที่มาของการที่loginปัญหา w / ครั้งหนึ่งในช่วงของ logfile เดียวในระบบและที่อยู่ของมันของฉันกับบรรณาธิการพื้นฐานใด ๆ(และให้บางทีอย่างรวดเร็ว หรือสองที่man 5 problem_file)ให้การเข้าถึงพื้นฐานไปยังรูต fs ที่ได้รับผลกระทบเท่านั้น มันไม่ได้รับอย่างถูก - ใช้เวลาเกือบทั้งวัน - และไฟล์ปรับแต่งที่เกี่ยวข้องนั้นกระจายไปทั่วสารบบ(และแม้แต่บางอย่าง - เช่น Linux PAM /var/run/no_login- บนอุปกรณ์อื่น ๆ ) - แต่มันก็คุ้มค่าที่จะทำ และอาจมีราคาถูกลงด้วยการคิดล่วงหน้าเล็กน้อย

คุณธรรมของเรื่องนี้ก็คือว่ามันอาจจะไม่ได้เป็นสิ่งที่ดีที่รูปแบบของการกำหนดค่าภารกิจสำคัญเช่นshadow, passwd, groups, shellsควรให้ทึบแสงให้เราเห็นว่าเราจะต้องจ้างแก้ไขเครื่องมือพิเศษที่อาจจะหรืออาจจะไม่แก้ไขการทำงานของเราในรูปแบบและ ด้วยเหตุผลที่เราไม่เข้าใจเพียงเพื่อให้เกิดการเปลี่ยนแปลงอย่างง่าย อย่างน้อยฉันก็คิดว่ามันคุ้มค่าที่เราจะเข้าใจว่าพวกเขาจะทำอะไรที่แตกต่างไปจากที่เราคิด

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


3

ตัวนับจุด - หากคุณต้องการคัดลอกชุดการเข้าสู่ระบบของผู้ใช้จากเซิร์ฟเวอร์หนึ่งไปยังอีกเครื่องหนึ่งโดยไม่ทราบรหัสผ่านปัจจุบันหรือกำหนดรหัสผ่านใหม่จากนั้นคุณต้องแก้ไข / etc / shadow โดยตรงเพื่อแทรกฟิลด์รหัสผ่านที่แฮช vipw ไม่อนุญาตให้คุณสัมผัสฟิลด์นั้นเป็นเพียง "*"

ปรับปรุง: หรือในกรณีนี้ให้ใช้ chpasswd -e "รหัสผ่านที่ถูกแฮช" แต่สามารถทำได้บนคอมพิวเตอร์โดยตรงเท่านั้น หากคุณกำลังทำงานกับชุดของไฟล์ที่ยังไม่ได้นำไปใช้กับเครื่อง (เช่น Virtual Machine) การแก้ไขโดยตรงอาจเป็นทางออกเดียวของคุณ

ie มักจะมีเครื่องมือสำหรับทำสิ่งที่คุณต้องการโดยไม่ต้องแก้ไข / etc / shadow โดยตรงคุณเพียงแค่ต้องรู้ว่ามันคืออะไร ...


หรือคุณสามารถตั้งค่าเซิร์ฟเวอร์ LDAP
Kusalananda

0

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

ไม่เคยพูดไม่เคย ... เว้นแต่คุณจะหมายถึงมัน

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