私はCentOS 5.9システムで作業しており、入力したいだけです。
sudo vi 一部のファイル
そして信頼できるvimにフレーズを強調するようにしましょう。これは簡単に見えますが、何度も試してもまだ機能しません。
root@localhost> which vi
alias vi='vim'
/usr/bin/vim
root@localhost> sudo which vi
/bin/vi
root@localhost> sudo -i which vi
/bin/vi
root@localhost> sudo -E which vi
/bin/vi
vimがデフォルトで呼び出されることを確認するためにrootとしてログインしましたvi somefile
。それをしました。また、環境を保存するために-Eを使用し、ログインスクリプトを実行するために-iを試しました。それは無駄です。私の.profileと/etc/environmentでエディタをvimにエクスポートし、viをvimのエイリアスに設定しました。
また、/etc/sudoersのenv_reset行をコメントアウトしました。
また何を試すべきですか? viをvimに変えるのはこれほど難しいとは思わなかったし、ここで何が起こっているのか本当に知りたいです。
答え1
これがこのコマンドsudoedit
の目的です。環境で編集できるように一時コピーを作成します。適切なバイナリを見つけるためにSUDO_EDITOR
、VISUAL
および変数を検索します。EDITOR
編集後、コピーは元のファイルを上書きします。
答え2
vim
代わりに常に使用したい場合は、次のことがvi
できます。
$ sudo ln -s /usr/bin/vim /usr/local/bin/vi
(これはあなたが持っていると仮定します/usr/local/bin
今後 /bin
あなたのPATH
。 )
もちろん、これは(システムローカル)ハッキングですが、非常にシンプルで効果的です。
答え3
私は、観察された動作の原因をPATH変数で見つけることができると思います。一般ログインユーザーとして、セグメントは/usr/bin
以前に存在する可能性/bin
がありますが、根、セグメントが/bin
前にあります/usr/bin
。
その場合、違いは次のソースのいずれかまたは両方で追跡できます。使用時にPATH値が異なる場合Sudo、これは以下を指す。安全な道構成パラメータは通常、/etc/sudoers
ファイルまたはファイルのいずれかに設定されます/etc/sudoers.d/*
。ただし、ログイン時にPATH値が異なる場合根(一次ログインか、それともSudoの-i
/スイッチ)--login
などの起動ファイルを指します。/etc/{profile,profile.d/*}
/etc/{bashrc,bash_*}
CentOS 5はインストールされていませんが、Alma 8サーバーは次の情報を提供します。
## As a regular logged-in user
$ echo $PATH
/home/me/.local/bin:/home/me/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
## Sudoing as root (notice the reverse order)
$ sudo bash -c 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin
## Sudoing as myself (same value)
$ sudo -u me bash -c 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin
## Indeed...
$ sudo grep secure_path /etc/sudoers
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
すばやく見ることができますSudo~の環境を維持パラメータを追加し、VISUALとEDITORがまだ存在しない場合は、予約変数リストに追加しますが、前述の後環境リセットオフにすると大きな変化はありません。