Làm cách nào tôi có thể thiết lập đúng trình soạn thảo của sudo / visudo?


18

Tôi đang sử dụng Ubuntu 10.04 Server và đang cố gắng thiết lập sudoers để tôn trọng lựa chọn EDITOR của người dùng (trong giới hạn)

Trong sudoers của tôi, tôi có:

Defaults        editor=/usr/bin/nano:/usr/bin/vim
Defaults        env_reset

Và trong người dùng .bashrc:

export EDITOR=/usr/bin/vim

$ EDITOR được đặt:

$ echo $EDITOR
/usr/bin/vim

Theo man sudoersđiều này là đủ để $ EDITOR được đặt thành vim:

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.

Tuy nhiên nanovẫn đang được sử dụng cho người dùng này. Kiểm tra nhanh env:

$ sudo -- env | grep EDITOR

Trả về không có gì.

$ sudo -E -- env | grep EDITOR

Trả về EDITOR=/usr/bin/vim

Tôi biết rằng tôi có thể làm những điều sau đây để EDITOR hoạt động:

  • Set env_editor, env_keep+=EDITORhoặc bất kỳ lựa chọn nào khác mà giữ biến EDITOR trong sudoers: Tôi không muốn làm điều này vì nó có thể cho phép thực thi tùy ý bất cứ điều gì (ví dụ export EDITOR=~/bad_program_to_run_as_root)
  • Sử dụng sudo -Ehoặc thậm chí alias sudo='sudo -E': Đánh bại điểm có env_resetvà người dùng không có SETENV (không phải thứ tôi muốn đưa ra: xem điểm trước) nhậnsudo: sorry, you are not allowed to preserve the environment
  • Đặt editor=/usr/bin/vim: Nhưng có những người dùng khác không biết vim
  • Sử dụng sudo select-editor: Đóng, nhưng sudo visudovẫn mở trongnano
  • Chỉ cần sử dụng sudoedit hoặc VIM trực tiếp: Nhưng sau đó bạn mất sự an toàn của các công cụ như visudo, vipw, crontab -e.
  • Chỉ cần đối phó với nó: Có thể, nhưng nếu tôi thiếu một số hiểu biết, tôi rất muốn biết

Tôi cũng đã thử thiết lập các biến VISUALSUDO_EDITOR(trong tuyệt vọng)

Có điều gì tôi đã bỏ lỡ sẽ sudo visudomở trong trình soạn thảo người dùng lựa chọn, mà không thực hiện các thỏa hiệp ở trên không?

BIÊN TẬP:

Tôi nghĩ rằng tôi hiểu tại sao điều này không hoạt động như tôi mong đợi. Tôi sẽ đặt nó xuống đây trong trường hợp bất kỳ ai khác có cùng quan niệm sai lầm.

Trong tập tin sudoers

Defaults        editor=/usr/bin/nano:/usr/bin/vim
  • Chỉ đề cập đến danh sách các biên tập viên được phép khi chạy visudo(không phải bất kỳ chương trình nào khác)
  • editorkiểm tra $ EDITOR, nhưng nếu đang chạy sudo visudo, sudokhông đặt $ EDITOR, vì vậy khi visudochạy, nó sẽ trống
  • Do đó, trình soạn thảo đầu tiên được sử dụng, trong trường hợp này nano

Bất cứ ai có thể xác nhận rằng điều này là chính xác?

Do đó, tôi mong đợi rằng một giải pháp an toàn sẽ được thêm vào:

Defaults!/usr/sbin/visudo env_keep+=EDITOR

tức là giữ EDITOR khi và chỉ khi chạy visudo. Điều này sau đó sẽ được kiểm tra chống lại

Defaults                  editor=/usr/bin/nano:/usr/bin/vim

Và nếu nó không phù hợp thì sẽ sử dụng nano

Thật kỳ lạ, điều này dường như không phải là trường hợp:

$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged

/bin/echođược sử dụng làm trình soạn thảo. Bọ cánh cứng? Hay một quan niệm sai lầm khác?

Cảm ơn

Câu trả lời:


6

Bạn đúng khi đặt EDITORbiến sẽ thay đổi trình soạn thảo được sử dụng cho sudo. Tuy nhiên, có hai biến khác được ưu tiên hơn EDITOR: SUDO_EDITORVISUAL. Hãy chắc chắn rằng không ai trong số họ trỏ đến một số trình soạn thảo khác như nano.


Lý do tôi nêu lên là vì rất ít câu trả lời làm tham chiếu đến VISUALviệc được ưu tiên hơn EDITOR. Tôi nghĩ rằng EDITORbiến của tôi chỉ bị bỏ qua. Hóa ra, trong Centos7 cả hai EDITORVISUALdường như mặc định pico.
ba giờ

5

Có một giải pháp khác như được mô tả ở đây :

sudo update-alternatives --config editor

Nhưng nó không thân thiện lắm trên hệ thống nhiều người dùng vì nó chỉ cập nhật một liên kết tượng trưng trong /usr/bin/:

$ ls -l `which editor`
lrwxrwxrwx 1 root root 24 lip  4 19:37 /usr/bin/editor -> /etc/alternatives/editor

$ ls -l /etc/alternatives/editor
lrwxrwxrwx 1 root root 18 Jul  5 01:39 /etc/alternatives/editor -> /usr/bin/vim.basic

Điều gì đã xảy ra với select-editoranyway? Khi tôi chạy nó, nó tạo ra một tập tin:

$ ls -l .selected_editor 
-rw-r--r-- 1 rld rld 75 Jul  5 01:54 .selected_editor

$ cat .selected_editor 
# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/vim.basic"

Nhưng sudo visudotiếp tục sử dụng nano.


3

Trong Debian 7, cài đặt EDITOR trong môi trường không hoạt động.

Để sử dụng Nano, cuối cùng tôi đã thêm dòng sau vào /etc/sudoers

Defaults        editor="/usr/bin/nano"

LÀM VIỆC NHƯ MỘT CHAMP trên DigitalOcean Ubuntu 12.04. Cảm ơn.
Joe Codwell601770

Cảm ơn bạn. Điều này cũng hoạt động trên Oracle Linux. (Tôi thích nano / pico.)
MikeP

1

env_reset không ngăn người dùng thiết lập các biến trên dòng lệnh:

$ sudo EDITOR=vim -- env |grep EDIT
EDITOR=vim

Tôi thấy những phát hiện của bạn về editorlựa chọn gây sốc nhẹ nhưng thật không may, tôi không biết câu trả lời cho câu hỏi phụ của bạn. Mọi người sẽ nghĩ rằng trại Ubuntu sẽ có rất nhiều tài liệu và ví dụ cấu hình về vấn đề này, có lẽ chúng ta phải xem xét kỹ hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.