ฉันใช้ Ubuntu 10.04 Server และพยายามตั้งค่า sudoers เพื่อเคารพตัวเลือกของผู้ใช้ (ภายในขีด จำกัด )
ใน sudoers ของฉันฉันมี:
Defaults        editor=/usr/bin/nano:/usr/bin/vim
Defaults        env_reset
และในผู้ใช้. bashrc:
export EDITOR=/usr/bin/vim
มีการตั้งค่า $ EDITOR:
$ echo $EDITOR
/usr/bin/vim
ตามman sudoersนี้ควรจะเพียงพอสำหรับ $ EDITOR ที่จะตั้งค่าเป็นกลุ่ม:
editor  A colon (':') separated list of editors allowed to be used with visudo.
        visudo will choose the editor that matches the user's EDITOR environment
        variable if possible, or the first editor in the list that exists and is
        executable. The default is the path to vi on your system.
อย่างไรก็ตามnanoยังคงมีการใช้งานสำหรับผู้ใช้รายนี้ ตรวจสอบอย่างรวดเร็วของ env:
$ sudo -- env | grep EDITOR
ไม่ส่งคืนอะไรเลย
$ sudo -E -- env | grep EDITOR
ผลตอบแทน EDITOR=/usr/bin/vim
ฉันทราบว่าฉันสามารถทำสิ่งต่อไปนี้เพื่อให้ EDITOR ทำงานได้:
- ตั้งค่า
env_editor,env_keep+=EDITORหรือตัวเลือกอื่น ๆ ที่ช่วยให้ตัวแปร EDITOR ใน sudoers: ฉันไม่ต้องการที่จะทำเช่นนี้มันจะช่วยให้การดำเนินการโดยพลการของอะไร (เช่นexport EDITOR=~/bad_program_to_run_as_root) - ใช้งาน
sudo -Eหรือแม้กระทั่งalias sudo='sudo -E': เอาชนะจุดที่มีenv_resetและผู้ใช้ที่ไม่มี SETENV (ไม่ใช่สิ่งที่ฉันต้องการให้ออก: ดูจุดก่อนหน้า)sudo: sorry, you are not allowed to preserve the environment - ชุด
editor=/usr/bin/vim: แต่มีผู้ใช้รายอื่นที่ไม่ทราบว่าเป็นกลุ่ม - ใช้
sudo select-editor: ปิด แต่sudo visudoยังคงเปิดอยู่nano - เพียงแค่ใช้ sudoedit หรือเป็นกลุ่มโดยตรง แต่แล้วคุณจะสูญเสียความปลอดภัยของเครื่องมือต่างๆเช่น
visudo, ,vipwcrontab -e - แค่จัดการกับมันอาจเป็นไปได้ แต่ถ้าฉันไม่มีข้อมูลเชิงลึกฉันก็อยากจะรู้
 
ฉันได้ลองตั้งค่าVISUALและSUDO_EDITORตัวแปร (ในความสิ้นคิด)
มีบางอย่างที่ฉันพลาดที่จะsudo visudoเปิดขึ้นในตัวเลือกผู้ใช้ที่เลือกโดยไม่ต้องประนีประนอมด้านบน?
แก้ไข:
ฉันคิดว่าฉันเข้าใจว่าทำไมสิ่งนี้ถึงไม่ทำงานอย่างที่ฉันคาดไว้ ฉันวางมันลงที่นี่ในกรณีที่คนอื่นมีความเข้าใจผิดเหมือนกัน
ในไฟล์ sudoers
Defaults        editor=/usr/bin/nano:/usr/bin/vim
- อ้างถึงรายการของโปรแกรมแก้ไขที่ได้รับอนุญาตเมื่อทำงานเท่านั้น
visudo(ไม่ใช่โปรแกรมอื่น ๆ ) editorตรวจสอบ $ EDITOR แต่ถ้าทำงานsudo visudo,sudoไม่ได้กำหนด $ EDITOR ดังนั้นเมื่อvisudoทำงานก็จะเป็นที่ว่างเปล่า- ดังนั้นจึงใช้ตัวแก้ไขแรกในกรณีนี้ 
nano 
มีใครยืนยันได้ไหมว่าสิ่งนี้ถูกต้อง?
ฉันคาดหวังว่าโซลูชันที่ปลอดภัยจะต้องเพิ่ม:
Defaults!/usr/sbin/visudo env_keep+=EDITOR
คือเก็บ EDITOR ถ้าเพียงและถ้าทำงาน visudo นี้จะถูกตรวจสอบกับ
Defaults                  editor=/usr/bin/nano:/usr/bin/vim
และถ้ามันไม่ตรงกันก็จะใช้ nano
แม้ว่าจะแปลก แต่ก็ไม่ได้เป็นเช่นนั้น:
$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged
/bin/echoใช้เป็นเครื่องมือแก้ไข ข้อผิดพลาด? หรือความเข้าใจผิดอื่น
ขอบคุณ
VISUALEDITORฉันคิดว่าEDITORตัวแปรของฉันเพิ่งถูกเพิกเฉย ปรากฎใน Centos7 ทั้งสองEDITORและดูเหมือนจะเริ่มต้นกับVISUALpico