ตั้งค่าตัวแก้ไขเริ่มต้นสำหรับ crontab -e ที่เรียกใช้ด้วย sudo


3

ฉันใช้ Bash กับ Debian Squeeze ฉันเพิ่งอ่านหัวข้อนี้: เปลี่ยนโปรแกรมแก้ไขข้อความเริ่มต้นสำหรับ crontab เป็นกลุ่ม

ฉันได้ส่งออกทั้งตัวแปรVISUALและEDITORเป็นกลุ่มสำหรับผู้ใช้ปกติและสำหรับรูต และใช้งานได้ - เมื่อฉันพิมพ์crontab -eในฐานะผู้ใช้หรือรูทปกติ crontab จะเรียกใช้กลุ่มสำหรับการแก้ไข

แต่การวิ่งsudo crontab -eเปิดขึ้นนาโน

การรันsudo echo $EDITOR(หรือ$VISUAL) ให้vimเอาต์พุตแบบ int


3
คุณจะพบคำอธิบายว่าทำไมsudo echo $EDITORไม่ทำสิ่งที่คุณคิดว่ามันไม่ได้ที่นี่ (และสิ่งที่จะต้องพยายามที่จะทำให้การทำงานของ crontab ของคุณ)
จ้า

1
@mat: ความคิดเห็นของคุณอาจเป็นคำตอบปกติ
Heptite

คุณรัน 'update-alternatives --config editor' ในขณะที่คุณรูทหรือไม่?
tumiki

@tumiki: ฉันเพิ่งตรวจสอบมันใช้งานได้ แต่ฉันกำลังค้นหาวิธีแก้ปัญหาสำหรับ distros อื่น ๆ (ไม่ใช่เดเบียน) ด้วย
Coolmax

คำตอบ:


5

โดยค่าเริ่มต้นและเพื่อความปลอดภัยsudoจะไม่รักษาสภาพแวดล้อมของผู้ใช้

มีหลายวิธีในการจัดการกับสิ่งนี้; สำหรับกรณีเฉพาะของคุณผมขอแนะนำให้เพิ่มVISUAL=/usr/bin/vim(และEDITOR=/usr/bin/vimสำหรับโปรแกรมที่ใช้ผิดหนึ่ง) /etc/environmentเพื่อ

ตัวเลือกที่สองถ้าคุณมีการกำหนดค่า sudo ที่อนุญาต (อาจเป็นเพราะคุณหรือ sudoers ทั้งหมดมีการเข้าถึงรูทจริงอยู่แล้ว) คือการเรียกใช้visudoและเพิ่มDefaults env_keep="VISUAL EDITOR"เพื่ออนุญาตให้ sudoers ทั้งหมดระบุตนเอง (เช่นรักษาตัวแปรสภาพแวดล้อมนั้น)

ไฟล์ sudoers ที่มีอยู่ของคุณอาจมี (หรือรวม) คำสั่ง env_keep หนึ่งรายการหรือมากกว่านั้นเช่นนี้ (จากตัวอย่าง Pastebin):

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

บรรทัดแรกของenv_keepบรรทัดเหล่านั้นจะเขียนทับสิ่งที่คุณแก้ไขด้านบน (การมอบหมาย) บรรทัดอื่น ๆ จะขยายรายการ ( +=) เพื่อให้ทุกอย่างทำงานอย่างที่คุณคุ้นเคยและหากคุณไม่มีเหตุผลในการเปลี่ยนชุดฉันขอแนะนำให้เพิ่มบรรทัดต่อจากนั้น:

Defaults    env_keep += "VISUAL EDITOR"

(มีตัวเลือกอื่นให้ใช้โปรแกรมแก้ไขที่คุณต้องการ แต่มันซับซ้อนไม่จำเป็นหรืออนุญาตมากเกินไปและเป็นอันตรายดังนั้นคุณต้องอ่านman sudoersคิดออกเองและเข้าใจว่าปัญหาที่เกี่ยวข้องอาจเป็นอย่างไร)


รักสิ่งนี้ ... ยกเว้นว่า visudo จะเปิดตัว vi ... สิ่งที่เราพยายามหลีกเลี่ยงเหมือนโรคระบาด sudo env EDITOR = nano visudo เป็นวิธีที่จะไป หรืออาจจะเป็นแมวซึ่งอันตรายกว่านิดหน่อย นอกจากนี้ยังDefaults env_keep="VISUAL EDITOR"ทำงานได้หลังจากรีเซ็ต env ดังนั้นการวางไว้ที่ด้านบนจะไม่ทำงาน ... ด้านล่างปลอดภัยที่สุด
เรย์ฟอสส์

ฉันรู้สึกงุนงงว่าทำไมการวาง env_keep = "VISUAL EDITOR" ภายใต้ env_reset ไม่ทำงาน ... ฉันได้ลองด้านบนภายใต้ env_reset และที่ด้านล่าง ทำงานที่ด้านล่างเท่านั้น
เรย์ฟอสส์

หากไม่มีข้อมูลอื่น ๆ ฉันจะเดาได้เลยว่ามีการตั้งค่าบรรทัด env_keep ในไฟล์อยู่ที่ใดที่หนึ่งซึ่งจะแทนที่สิ่งที่คุณใส่ไว้ด้านบนและที่คุณแทนที่ด้วยการย้ายคำสั่งไปยังจุดสิ้นสุด หากคุณวางไฟล์ sudoers ของคุณไปที่ pastebin.com หรืออะไรและเพิ่มลิงค์ที่นี่ฉันสามารถแยกข้อมูลที่เกี่ยวข้องลงในคำตอบ
Gabe

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