sudoedit: ทำไมใช้มันมากกว่า sudo vi


7

ให้เป็นไปตาม หน้าคน :

sudoedit /etc/file

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

แต่ทว่า

sudo vi /etc/file

เปิดไฟล์ในฐานะรูท

man page ระบุว่า sudoedit นั้นแตกต่างจาก sudo เพราะ:

ตัวแก้ไขถูกเรียกใช้โดยไม่มีการแก้ไขสภาวะแวดล้อมของผู้ใช้

วิธีแรกปลอดภัยกว่าไหมถ้าอย่างนั้นทำไม? มีเหตุผลอื่นอีกไหมในการใช้ sudoedit แทนที่จะเป็น sudo vi


มันมีข้อบกพร่องบางอย่าง ตัวอย่างเช่น, บางครั้งการเน้นไวยากรณ์หายไป .
Franklin Yu

คำตอบ:


13

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

$ sudo vim /etc/farts.conf 

จะเรียกใช้ vim ในฐานะ root เพื่อให้สามารถอ่านไฟล์ได้ ข้อเสียคือตอนนี้ตัวแก้ไขยังทำงานเหมือนรูทและสามารถทำอะไรก็ได้ หากคุณเพียงต้องการอนุญาตให้ผู้ใช้แก้ไขไฟล์กำหนดค่าและไม่มีอะไรเลวร้ายเกินไปคุณเพียงแค่ให้พวกเขา ราก ในทั้งระบบ ไม่มีอะไรป้องกันฉันจากการวางไข่กระสุนจากเสียงเรียกเข้าด้วย :sh หรือ :!commandและเนื่องจากเป็นกระบวนการย่อยพวกเขาจะทำงานเหมือนรูท

ในทางกลับกัน:

$ sudoedit /etc/farts.conf

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

เมื่อคุณออกจากตัวแก้ไขมันจะทำการเปรียบเทียบไฟล์ชั่วคราวและไฟล์ต้นฉบับและจะแทนที่ไฟล์เดิมด้วยการแก้ไขของคุณอย่างปลอดภัยหากมีการเปลี่ยนแปลง

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

นั่นคือความแตกต่างที่แท้จริงส่วนที่เหลือที่ได้รับการกล่าวถึงเป็นผลข้างเคียงที่เรียบร้อย


10

ก่อนอื่น sudo vim กล่าวถึงตัวแก้ไขเริ่มต้นของคุณอย่างชัดเจนแล้วซึ่งไม่จำเป็นถ้าคุณได้กำหนดไว้ $EDITOR. sudoedit สำรองคุณจากการกำหนดตัวแก้ไขทุกครั้งที่คุณต้องการแก้ไขบางสิ่ง - และในระบบผู้ใช้หลายคนจะช่วยให้ทุกคนใช้ตัวแก้ไขที่พวกเขาชอบ

งั้นเหรอ พิจารณาระบบที่ผู้ใช้ปกติเท่านั้นจะได้รับ sudo สิทธิพิเศษสำหรับการแก้ไขไฟล์บางอย่าง พวกเขาถูก จำกัด ให้ทำงาน sudo กับสิ่งอื่นแม้ว่า คุณจะต้องยอมให้พวกเขา sudo vi และ sudo vim และ sudo nano และ sudo emacs และ sudo pico (และอื่น ๆ ) แทนที่จะต้องทำอย่างนั้นคุณสามารถยอมให้พวกเขาทำ sudoedit ไฟล์พร้อมตัวเลือกการตั้งค่า $EDITOR เพื่อสิ่งที่พวกเขาชอบ (ลองนึกภาพคุณจะบังคับให้คนรัก Emacs ใช้ Vim …)

อีกประเด็นคือถ้าคุณ $EDITOR ถูกตั้งค่าเป็น vimและคุณมีการตั้งค่าแบบกำหนดเองสำหรับผู้ใช้ของคุณ .vimrcการตั้งค่าเหล่านั้นจะไม่ถูกใช้หากคุณใช้ sudo vim หรือ sudo $EDITOR. sudoedit อย่างไรก็ตามรักษาสภาพแวดล้อมการโทรของผู้ใช้และดังนั้นการตั้งค่าของคุณ

ดูสิ่งนี้ด้วย: มีอะไรที่ยอดเยี่ยมเกี่ยวกับ sudoedit?


นอกจากนี้ผู้ใช้ควรใช้ visudo แทน sudoedit.
Evan Darwin

2
@EvanDarwin ไม่นั่นไม่เกี่ยวข้อง visudo ใช้เพื่อแก้ไข /etc/sudoers ไฟล์อย่างปลอดภัย (เพื่อป้องกันไม่ให้คุณล็อคตัวเองออก) sudoedit เป็นคำสั่งให้แก้ไข ใด ไฟล์.
slhck

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