私はそれをUbuntuで動作させることができないようです、それは簡単な答えでなければなりません、誰かが私を助けるかもしれません。私がやろうとしているのは、独自の履歴ファイルを使用するようにsudoersを取得することですが、rootで.bashrc
にhistory varを設定すると:
HISTFILE="/root/.bash_history.$Sudo_USER"
何も起こらないようです。
上記のエントリで/root/.bashrc
と/etc/skel/.bashrc
を変更しようとしました。なし。以前にCentOSで動作するようにしたことがあります( sudoersが独自の履歴ファイルを使用する を参照)。
エントリをファイルの先頭に移動しました。特定のポイントの後に無視される可能性があると述べたいくつかの提案が見つかりましたが、位置に関係なく、履歴ファイルは作成されていません。矢印キーを使用しても、履歴エントリはそこにあります...それらがどこから来たのか、私にはもう手がかりがありません、それはある種の魔法のようです、Voodooのようです。
任意の助けをいただければ幸いです。
いくつかの実験を伴って、あなたが説明したものに従った
~$ Sudo -s
~# ls -l $HISTFILE
-rw------- 1 g g 44174 Jan 4 16:26 /home/g/.bash_history
~$ Sudo -i
~# ls -l $HISTFILE
-rw------- 1 root root 2356 Jan 4 16:23 /root/.bash_history
~$ Sudo ls -l $HISTFILE
-rw------- 1 g g 44174 Jan 4 16:26 /home/g/.bash_history
したがって、標準のSudo
コマンドを実行しているときまたはSudo -s
を使用してルートシェルを取得するとき、既に独自の履歴ファイルを使用しています。
適切なログインシェルを取得するためにSudo -i
を呼び出す場合にのみ、元のルート履歴が使用されます。
今、私はあなたのリードに従い、/root/.bashrc
を編集して、
HISTFILE="/root/.bash_history.$Sudo_USER"
最初の行として。
Sudo -s
とSudo ls -l $HISTFILE
を使用して上記の実験を繰り返すと、以前と同じ結果が得られました(予想どおり)。しかし、Sudo -i
は、履歴のないシェルを提供しました(履歴ファイルもありません)。
実行後
~$ Sudo -i
~# ls -l .bash_history*
-rw------- 1 root root 2412 Jan 4 17:16 .bash_history
~# echo $HISTFILE
/root/.bash_history.g
~# ls -l $HISTFILE
ls: cannot access '/root/.bash_history.g': No such file or directory
ログアウト
~$ Sudo -i
~# ls -l .bash_history*
-rw------- 1 root root 2412 Jan 4 17:16 .bash_history
-rw------- 1 root root 52 Jan 4 17:25 .bash_history.g
予想される結果が得られます(矢印キーを使用した「私の」履歴へのアクセスを含む)。
/root/.bashrc
の内容は実行済み対話型の非ログインシェル(Sudo -s
など)、ログインシェル(Sudo -i
など)のみであることに注意してください/root/.bashrc
はsourced =、および/root/.profile
に次のようなものが含まれる場合のみ
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi