ฉันใช้ 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
, ,vipw
crontab -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
ใช้เป็นเครื่องมือแก้ไข ข้อผิดพลาด? หรือความเข้าใจผิดอื่น
ขอบคุณ
VISUAL
EDITOR
ฉันคิดว่าEDITOR
ตัวแปรของฉันเพิ่งถูกเพิกเฉย ปรากฎใน Centos7 ทั้งสองEDITOR
และดูเหมือนจะเริ่มต้นกับVISUAL
pico