เหตุใด sudoedit จึงเขียนลงในไดเรกทอรีชั่วคราว


10

ฉันเคยsudoeditสร้างไฟล์:

 $ sudoedit /etc/systemd/system/apache2.service

แต่เมื่อฉันไปบันทึกไฟล์มันเขียนไว้ในไดเรกทอรีชั่วคราว (/ var / temp / blahblah) เกิดอะไรขึ้น? เหตุใดจึงไม่บันทึกลงในไดเรกทอรีระบบ

คำตอบ:


22

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


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

1
@NicHartley: มันเป็นเรื่องยากที่จะทำเช่นนั้นในกรณีทั่วไปเพราะมีหลายวิธีที่แตกต่างกันในการสร้างคอมพิวเตอร์ของคุณ มันมีแนวโน้มที่จะเป็นเฉพาะของโปรแกรมเช่นด้วยสำหรับvisudo /etc/sudoers
เควิน

@ Kevin โอ้ขออภัยฉันคิดว่าฉันสับสนสำหรับvisudo sudoeditฉันรู้ว่าvisudoมันทำอย่างแน่นอน ขอบคุณที่ล้างข้อมูล!
คดีฟ้องร้องกองทุนโมนิก้า

1

นี่คือคำอธิบายอย่างในmanpage คำอธิบายของ(ซึ่งเทียบเท่ากับ) พูดว่า:sudo-esudoedit

-e

-e(แก้ไข) ตัวเลือกที่แสดงให้เห็นว่าแทนการใช้คำสั่งที่ผู้ใช้ต้องการที่จะแก้ไขอย่างใดอย่างหนึ่งหรือไฟล์อื่น ๆ อีกมากมาย แทนที่คำสั่งสตริง " sudoedit" จะใช้เมื่อปรึกษานโยบายความปลอดภัย หากผู้ใช้ได้รับอนุญาตจากนโยบายจะมีการดำเนินการตามขั้นตอนต่อไปนี้:

  1. สำเนาชั่วคราวทำจากไฟล์ที่จะแก้ไขโดยเจ้าของถูกตั้งค่าเป็นผู้ใช้ที่เรียกใช้
  2. ตัวแก้ไขที่ระบุโดยนโยบายจะถูกเรียกใช้เพื่อแก้ไขไฟล์ชั่วคราว sudoersนโยบายการใช้SUDO_EDITOR, VISUALและEDITORตัวแปรสภาพแวดล้อม (ตามลำดับ) ถ้าไม่มีSUDO_EDITOR, VISUALหรือEDITORมีการตั้งค่าโปรแกรมแรกที่ระบุไว้ในการแก้ไขsudoers(5)ตัวเลือกที่ถูกนำมาใช้
  3. หากมีการแก้ไขไฟล์ชั่วคราวจะถูกคัดลอกกลับไปยังตำแหน่งเดิมและเวอร์ชันชั่วคราวจะถูกลบออก

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

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

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