ตราบใดที่คุณทำงานอย่างถูกต้องมันเป็นเรื่องของการตั้งค่าของคุณ
นอกเหนือจากคุณสมบัติที่แตกต่างแล้วตัวแก้ไขข้อความที่คุณใช้คือความพึงพอใจของคุณ นี้เป็นจริงแม้เมื่อแก้ไขข้อความของคุณเป็นโปรแกรมกราฟิกเช่นGedit นี่ไม่ได้เป็นการบอกว่าไม่มีเหตุผลที่ดีnano
และvim
มักจะแนะนำ แก้ไขข้อความตามเทอร์มิชอบvim
(หรืออย่างน้อยvi
คำสั่ง) และnano
มีอยู่แม้เมื่อไม่มี GUI และแม้กระทั่งในระบบมากที่สุดและน้อยที่สุดเสีย ; พวกเขามีประเพณีบางอย่างอยู่เบื้องหลังพวกเขา (ถ้าคุณเป็นส่วนหนึ่งของสิ่งนั้น); สามารถรันในเทอร์มินัลเดียวกันกับที่ดำเนินการงานอื่น พวกเขารวมเข้ากับเวิร์กโฟลว์ของผู้ใช้มัลติเทอร์มินัลโดยอัตโนมัติ และพวกเขามีแนวโน้มที่จะพร้อมใช้งานมากกว่าคนอื่น ๆตัวแก้ไขข้อความกราฟิกโดยเฉพาะแม้แต่ Gedit แม้แต่ใน Ubuntu (ซึ่งมีหลายรสชาติ )
นั่นไม่ใช่ทั้งหมด. หากคุณกำลังจะแก้ไขไฟล์ระบบหนึ่งในวิธีคือการเรียกใช้โปรแกรมแก้ไขของคุณเป็นรูท นี่ไม่ใช่วิธีการเดียวและมีข้อโต้แย้งบางอย่างกับมัน (ดูด้านล่าง) แต่มันเป็นเรื่องธรรมดา หากคุณใช้วิธีการนี้และใช้โปรแกรมกราฟิกเป็นตัวแก้ไขของคุณคุณจะต้องระมัดระวังในการเรียกใช้ในลักษณะที่$HOME
เป็นโฮมไดเร็กตอรี่ของรูทแทนที่จะเป็นของคุณเอง , และนี่เป็นการเพิ่มความยุ่งยากและความซับซ้อนอีกชั้นหนึ่ง แต่คุณกำลังทำอย่างนั้น; คุณกำลังใช้งานsudo -H gedit
ซึ่งเป็นหนึ่งในวิธีการที่เหมาะสม แต่ถึงกระนั้นความซับซ้อนนั้นก็เป็นอีกเหตุผลหนึ่งที่ผู้คนมักจะแนะนำบรรณาธิการที่ไม่ใช่กราฟิก
โปรแกรมกราฟิกมักจะซับซ้อนกว่าโปรแกรมที่ไม่ใช่กราฟิก การมีสิ่งต่าง ๆ มากขึ้นเนื่องจากรูทไม่ดีโดยทั่วไปมีหลายสิ่งที่อาจผิดพลาดได้รวมถึงข้อผิดพลาดที่อาจเกิดขึ้นรวมถึงอุบัติเหตุ (โปรแกรมแก้ไขข้อความที่ไม่ใช่กราฟิกเช่นvim
ค่อนข้างซับซ้อนเช่นกันและมักได้รับการกำหนดค่าให้เรียกใช้โปรแกรมภายนอกจำนวนมากเพื่อทำงานต่าง ๆ )
นอกเหนือจากการรันโปรแกรมแก้ไขในฐานะรูทวิธีการทั่วไปอีกวิธีหนึ่งคือการแก้ไขไฟล์ที่เอดิเตอร์สามารถแก้ไขได้แม้ในขณะที่ทำงานในฐานะผู้ใช้ (ไม่ใช่ผู้ใช้รูท) ของคุณเช่นการเปลี่ยนแปลงไฟล์จะแพร่กระจายไปยังไฟล์ที่คุณต้องการ เพื่อเปลี่ยน. ฟังดูเป็นนามธรรมเพราะข้อมูลจำเพาะแตกต่างกันไปมาก แนวทางคอนกรีตสองแนวทางปฏิบัติดังนี้
sudoedit
วิธีการหนึ่งที่ใช้เวลานานพอสมควรในการทำเช่นนี้คือsudoedit
(จัดทำเป็นเอกสารไว้ในหน้าคู่มือเดียวกันกับsudo
) โดยค่าเริ่มต้นsudoedit
ใช้ตัวแก้ไขข้อความเริ่มต้นซึ่งมักจะไม่ใช่ - และไม่ควรเป็น - โปรแกรมกราฟิก แต่คุณสามารถบอกให้ใช้โปรแกรมแก้ไขใด ๆ ผ่านทางSUDO_EDITOR
, VISUAL
หรือEDITOR
ตัวแปรสภาพแวดล้อมซึ่งให้คำปรึกษาในลำดับที่ ดังนั้นคุณสามารถเรียกใช้:
VISUAL=gedit sudoedit filename
แทนที่filename
ด้วยพา ธ สัมพัทธ์หรือพา ธ สัมบูรณ์ไปยังไฟล์ของคุณ
นี่เป็นสำเนาชั่วคราวของไฟล์ที่คุณต้องการแก้ไข คุณเป็นเจ้าของสำเนาไม่ใช่โดยรูท (หรือใครก็ตามที่เป็นเจ้าของดั้งเดิม) มันเปิดตัวแก้ไขข้อความและคุณสามารถแก้ไขสำเนาชั่วคราว เมื่อคุณปิดเท็กซ์เอดิเตอร์ให้sudoedit
ตรวจสอบว่าคุณทำการเปลี่ยนแปลงจริงหรือไม่ หากคุณทำเช่นนั้นจะเป็นการคัดลอกสำเนาชั่วคราวที่แก้ไขแล้วกลับไปเป็นต้นฉบับ
ในขณะที่sudoedit
ทำงานกับเครื่องมือแก้ไขกราฟิก แต่ก็มีประโยชน์สำหรับเครื่องมือแก้ไขที่ใช้เทอร์มินัล ในทั้งสองกรณีแก้ไขข้อความวิ่งกับคุณดังนั้นจึงมีการกำหนดค่าของคุณและการกระทำอื่น ๆ ที่คุณดำเนินการในมันอื่น ๆกว่าการปรับเปลี่ยนที่เกิดขึ้นกับไฟล์ที่ดำเนินการโดยคุณซึ่งกำบังบิตของการป้องกันบางชนิดของความผิดพลาด
คุณสามารถตั้งค่าหนึ่งในตัวแปรสภาพแวดล้อมเหล่านั้นอย่างต่อเนื่องหากคุณต้องการ SUDO_EDITOR
อาจจะดีที่สุดเพราะใช้สำหรับสิ่งอื่น ๆ น้อยลง แต่ถ้าคุณตั้งค่าให้gedit
เก็บไว้ในใจว่าคำสั่งเช่นจะไม่ทำงานเมื่อไม่มี GUI สามารถใช้ได้เป็นมักจะเป็น (แม้จะไม่ได้เสมอ ) ในกรณีที่คอนโซลเสมือนหรือผ่านทางSSHsudoedit filename
แบ็กเอนด์ผู้ดูแลระบบ GVFS
อีกวิธีที่ใหม่กว่าในการทำเช่นนี้คือการเปิดไฟล์ผ่านadmin://
เส้นทางGVFS แทนเส้นทางแบบ Unix ดั้งเดิม ขอบคุณ pomsky ที่สอนฉันเกี่ยวกับเรื่องนี้ เช่นเดียวกับที่มีเส้นทาง GVFS สำหรับแก้ไขไฟล์ที่อยู่ในสถานที่อื่น ๆ ไม่ได้อยู่ในสถานที่ที่สะดวกในการแก้ไข - ตัวอย่างเช่นเนื่องจากอยู่ในเครื่องระยะไกลที่คุณเชื่อมต่อผ่าน SSH - GVFS รองรับadmin://
เส้นทางสำหรับแก้ไขไฟล์ คุณไม่ได้เป็นเจ้าของ
นี่คือแนวคิดที่คล้ายกับsudoedit
ที่คุณเรียกใช้ตัวแก้ไขของคุณในขณะที่ตัวคุณเองและไฟล์ที่ตัวแก้ไขเห็นเป็นสิ่งที่ได้รับอนุญาตให้แก้ไข การพยายามเปิดไฟล์คุณจะต้องพิสูจน์ตัวตน นี่ไม่ใช่วิธีที่วิเศษในการหลีกเลี่ยงข้อ จำกัด ด้านความปลอดภัยตามปกติ
gedit admin:///path/to/filename
ที่นั่นจะต้องเป็นเส้นทางที่แน่นอนไปยังไฟล์ที่เริ่มต้นด้วย/path/to/filename
/
ดังนั้นมีสามตัวละครหลัง/
admin:
การเข้ารหัสและสิ่งอื่น ๆได้รับผลกระทบทางทฤษฎีจากการกำหนดค่าของตัวแก้ไข
การเข้ารหัสไฟล์นั้นไม่ได้รับผลกระทบจริง ๆ ไม่ว่าตัวแก้ไขที่คุณใช้จะเป็นกราฟิกหรือไม่ บรรณาธิการบางคนvim
อาจใช้งานแบบกราฟิก ( gvim
คำสั่ง) หรือไม่ใช่แบบกราฟิก ( vim
คำสั่ง) คำตอบที่ง่ายสำหรับคำถามของคุณเกี่ยวกับการเข้ารหัสคือคุณไม่ต้องกังวลเกี่ยวกับสิ่งนั้น ใกล้เคียงกับความจริงที่คุณไม่ต้องอ่านคำตอบที่เหลือ
ในปัจจุบัน (และที่ผ่านมา) รุ่นอูบุนตูคำสั่งเช่นsudo nano
และsudo vim
ทำงานบรรณาธิการผู้ที่เป็นราก แต่$HOME
ยังคงตั้งค่าให้คุณไดเรกทอรีบ้าน ซึ่งหมายความว่าโดยค่าเริ่มต้นบรรณาธิการจะใช้การกำหนดค่าของคุณมากกว่าการกำหนดค่าของรูท หากมีบางสิ่งในการกำหนดค่าของผู้แก้ไขเหล่านั้น (หรือในโปรแกรมที่พวกเขาทำงานเพื่อทำงานบางอย่างเช่นgit
) เกี่ยวกับการเข้ารหัสหรือการสิ้นสุดบรรทัดมันจะถูกติดตาม ด้วยที่จะไม่เกิดขึ้นsudo -H editor
บางคนใช้ตัวเปล่าsudo
(เช่นไม่มี-i
หรือ-H
) ให้กับบรรณาธิการเพราะพวกเขาต้องการสิ่งนั้น แต่จริงๆคุณควรคิดสองครั้งเกี่ยวกับเรื่องนี้ ไม่เพียง แต่คุณจะสามารถบรรลุเป้าหมายนั้นได้อย่างชัดเจนยิ่งขึ้นด้วยวิธีการเช่นเดียวกับsudoedit
ข้อเสียอื่น ๆ ของคำสั่งเช่นsudo nano
และsudo vim
:
หากการกำหนดค่าโปรแกรมแก้ไขของคุณทำให้บางสิ่งบางอย่างถูกเรียกใช้สิ่งนั้นจะถูกเรียกใช้ในฐานะรูท สำหรับบรรณาธิการที่มีความซับซ้อนเช่นvim
นี้อาจทำให้โค้ดที่ไม่น่าสนใจให้ทำงานในระดับราก ดังที่ได้กล่าวมาแล้วการรันโค้ดน้อยลงเนื่องจากรูทนั้นดีโดยทั่วไปและนี่เป็นหนึ่งในข้อโต้แย้งต่อการรันเอดิเตอร์กราฟิกในฐานะรูท
หากvim
การกำหนดค่าต่าง ๆ นานามีปลั๊กอิน - ตัวอย่างเช่นการดำเนินการวิเคราะห์แบบคงที่ในรหัสที่มาขณะที่คุณพิมพ์มัน - และรากไม่น้อยกว่าสิ่งที่วิ่งเป็นรากที่มีมากกว่า (แม้จะทำงานน้อยลงตามรูท แต่ปลั๊กอินของคุณยังคงใช้งานได้!) สิ่งนี้แยกจากว่าตัวแก้ไขของคุณเป็นแบบกราฟิกหรือไม่sudo -H vim filename
sudo vim filename
VISUAL=vim sudoedit filename
หากการกำหนดค่าตัวแก้ไขของคุณใช้งานไม่ได้และป้องกันไม่ให้คุณแก้ไขไฟล์ได้อย่างง่ายดายการแก้ไขที่อาจทำให้เกิดความยุ่งยากมากขึ้น นี่เป็นเพียงความยุ่งยากไม่ใช่ปัญหายากที่จะแก้ไข
คำสั่งเช่นsudo vim
มีบิตของปัญหาเช่นเดียวกับ (ทะลึ่ง!) sudo gedit
คำสั่ง หากคุณเรียกใช้โปรแกรมแก้ไขเช่นเดียวvim
กับรูท แต่ไม่มีการรีเซ็ต$HOME
( sudo -H
และsudo -i
จะทำ) และมันจะสร้างไฟล์การกำหนดค่าสำหรับตัวเองไฟล์การกำหนดค่าเหล่านั้นจะอยู่ในโฮมไดเร็กตอรี่ของคุณ แต่พวกเขาจะเป็นเจ้าของโดยรูท เมื่อคุณเรียกใช้ตัวแก้ไขในภายหลังด้วยตนเอง
แน่นอนว่ามันฟังดูเหมือนปัญหามาก! เหตุผลที่น้อยกว่าเรื่องของแอปพลิเคชั่นแบบกราฟิกก็คือโดยปกติแล้วตัวแก้ไขจะเริ่มทำงานข้อความแสดงข้อผิดพลาดมักจะเข้าใจง่ายกว่าปกติคุณสามารถเข้าใจได้ว่าไฟล์ใดบ้างที่ได้รับผลกระทบได้ง่ายกว่ามาก ว่าหนึ่งโปรแกรม (โปรแกรมกราฟิกใช้ไฟล์การกำหนดค่าในสถานที่มากขึ้น) นอกจากนี้ผู้ใช้ที่ใช้ตัวแก้ไขข้อความแบบสบาย ๆและไม่ตั้งใจเปลี่ยนการตั้งค่าอย่างตั้งใจไม่น่าจะประสบปัญหานี้
อีกครั้งคุณสามารถใช้การกำหนดค่าตัวแก้ไขบัญชีผู้ใช้ของคุณเองในขณะที่หลีกเลี่ยงปัญหาการอนุญาตด้วยการใช้sudoedit
หรือจากเดสก์ท็อปเริ่มตัวแก้ไขตามปกติ แต่การเข้าถึงไฟล์ผ่านadmin://
เส้นทาง
สุดท้ายทราบว่าพฤติกรรมดังกล่าวข้างต้นsudo
เมื่อ-H
หรือ-i
ถูกส่งผ่านไปมีการวางแผนที่จริงการเปลี่ยนแปลงในรุ่นอนาคตของอูบุนตู (มันมีอยู่แล้วปีที่ผ่านมาใน Unix เหมือนระบบปฏิบัติการการใช้งานมากที่สุดที่sudo
) พฤติกรรมดังกล่าวได้เปลี่ยนไปแล้วใน Ubuntu 19.10ซึ่งเป็นรุ่นที่มีการพัฒนาในขณะที่เขียนนี้
-H
ส่วนหนึ่งเป็นสิ่งสำคัญไม่ได้ใช้sudo
เพื่อการใช้งานเปิดตัว GUI โดยไม่ได้