Ubuntu 10.04 Serverを使用しており、ユーザーのEDITORの選択を尊重するように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を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を機能させるために次のことができることを認識しています。
- Set
env_editor
、env_keep+=EDITOR
またはsudoersでEDITOR変数を保持する他のオプション:任意の実行を許可する可能性があるため(たとえば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
- Set
editor=/usr/bin/vim
:しかし、vimを知らない他のユーザーがいます - 使用
sudo select-editor
:閉じるが、sudo visudo
それでも開くnano
- ただ、sudoeditを使用するか、直接VIM:しかし、その後、あなたはのようなツールの安全性を失い
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
エディターとして使用されます。バグ?または別の誤解?
ありがとう
VISUAL
が優先することに言及するからEDITOR
です。私のEDITOR
変数はただ無視されていると思った。結局、Centos7の両方でEDITOR
、VISUAL
デフォルトはのようですpico
。