私はUbuntu10.04サーバーを使用しており、ユーザーのEDITORの選択を尊重するようにsudoerを設定しようとしています(制限内)
私の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を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.
ただし、このユーザーにはまだ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
:しかし、vimを知らない他のユーザーがいますSudo select-editor
を使用:閉じますが、Sudo visudo
は引き続きnano
で開きます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
つまり、visudoを実行している場合に限り、EDITORを保持します。これは次にチェックされます
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
はエディターとして使用されます。バグ?または別の誤解?
ありがとう
EDITOR
変数を設定すると、Sudo
に使用されるエディターが変更されるはずです。ただし、EDITOR
よりも優先される他の2つの変数があります。Sudo_EDITOR
とVISUAL
です。それらのいずれもnano
のような他のエディターを指していないことを確認してください。
説明されているように別の解決策がありますここ:
Sudo update-alternatives --config editor
ただし、/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
とにかくselect-editor
はどうなりましたか?実行すると、ファイルが作成されます。
$ 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"
しかし、Sudo visudo
はnanoを使い続けています。
Debian 7では、環境でEDITORを設定することはできませんでした。
Nanoを使用するために、次の行を/etc/sudoers
に追加しました
Defaults editor="/usr/bin/nano"
env_resetは、ユーザーがコマンドラインで変数を設定することを妨げません。
$ Sudo EDITOR=vim -- env |grep EDIT
EDITOR=vim
editor
オプションに関するあなたの調査結果は少し衝撃的ですが、残念ながら私はあなたの二次的な質問に対する答えを知りません。 Ubuntuキャンプには、この問題に関する多くのドキュメントと設定例があるはずだと思う人もいるでしょう。