web-dev-qa-db-ja.com

sudoで呼び出されるcrontab-eのデフォルトエディタを設定します

DebianSqueezeでBashを使用しています。私はちょうどこのトピックを読みました: crontabのデフォルトのテキストエディタをvimに変更します

変数VISUALEDITORの両方を通常のユーザーとrootのvimにエクスポートしました。そしてこれは機能します–通常のユーザーまたはrootとしてcrontab -eと入力すると、crontabは編集のためにvimを実行します。

しかし、Sudo crontab -eを実行するとnanoが開きます。

Sudo echo $EDITOR(または$VISUAL)を実行すると、vimint出力が得られました。

4
Coolmax

デフォルトおよびセキュリティ上の理由から、Sudoはユーザー環境を保持しません。

これに対処する方法は複数あります。特定のケースでは、VISUAL=/usr/bin/vim(および間違ったプログラムを使用するプログラムの場合はEDITOR=/usr/bin/vim)を/etc/environmentに追加することをお勧めします。

2番目の選択肢は、許容的なSudo構成がある場合(おそらくそれがあなただけであるか、すべてのsudoerが実際のルートアクセス権を持っているため)、visudoを実行してDefaults env_keep="VISUAL EDITOR"を追加し、すべてのsudoerが独自のSudoを指定できるようにすることです。 (つまり、その環境変数を保持します)。

既存のsudoersファイルには、すでに1つ以上の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を読んで自分で理解し、関連する問題が何であるかを理解する必要があります。)

6
Gabe