web-dev-qa-db-ja.com

Linuxサーバー上の他のユーザーからコマンド履歴を隠す

Linux(Ubuntu)サーバーでssh経由でログインすると、サーバー上の他のユーザーが実行したすべてのbashコマンドがコマンド履歴に保存されていることに気付きました。コマンドラインに入力したコマンドをサーバー上の他のユーザーから隠すことができる方法はありますか?

3
rmb

コマンド履歴を非表示にする方法はたくさんありますが、履歴を完全にオフにすることは非常に便利なのでお勧めできません。一時的にオフにする3つの良い方法があります。

  1. 最速の解決策:タイプunset HISTFILE

    これにより、現在のログインセッションで実行されているすべてのコマンドが、ログアウト時に.bash_historyファイルに保存されなくなります。次回ログインしたときにHISTFILEがリセットされるため、履歴は通常どおり保存されることに注意してください。また、これにより、allコマンドがセッションから削除されることに注意してください。これには、unset HISTFILEを入力する前に実行されたコマンドも含まれますが、これは希望どおりではない可能性があります。もう1つの欠点は、bashを使用すると上矢印を使用して前のコマンドを表示できるため、ログアウトするまで正しく実行したかどうかを確認できないことです。

  2. 最善の解決策:コマンドの前にスペースを入力してください

    それを試してから、矢印を押して、履歴に追加されたかどうかを確認してください。一部のサイトでは、そのようなコマンドが保存されないようにすでに設定されています。それが機能しない場合は、行export HISTCONTROL=ignorebothを.bashrcファイルに追加します。後でログインすると、スペースで始まるコマンドはすぐに忘れられます。

  3. 覚えやすい:タイプsh

    これにより、元のBourneShellでサブシェルが開始されます。そこに書かれたコマンドは(exitまで)履歴に保存されません。あなたの履歴ファイルを見ている人は誰でもあなたがshを実行したことを見ることができます(これは疑わしいです)が、その後あなたが何を実行したかはわかりません。

これを行うには他にも多くの方法があります。どのコマンドを決して覚えてはいけないかをbashに伝えることもできます(HISTIGNORE)。 bash(1)のマニュアルページを参照し、HISTを検索して、多くの可能性を確認してください。

4
hackerb9

bashシェルセッションのコマンドライン履歴は、~/.bash_historyファイルに保存されます。このファイルが存在しない場合は、他のユーザーの読み取り権限なしで作成されます。

bash環境変数を設定することにより、HISTFILESIZEがこのファイルに保存するコマンドの数を変更できます。ゼロに設定すると、履歴ファイルがゼロサイズに切り捨てられます。デフォルトは500です。HISTFILEunset HISTFILE)変数の設定を解除すると、履歴ファイルにコマンドを保存できなくなります。

ただし、(コメントで)説明しているサーバーの現在の設定は単に間違っています。

複数のユーザーがログインして、rootアカウントでインタラクティブシェルを使用できるようにする理由はありません。代わりに、複数のプライベートユーザーアカウントでSudoを使用することを検討してください。

rootのコマンド履歴は、インタラクティブセッションの場合でも、Sudoを使用する場合でも、非常に貴重です。特にシステムにrootアクセス権を持つ複数のユーザーがいる場合。

チームは、正確にrootユーザーが何をしているかを知りたいと思うでしょう。なぜなら、このユーザーによって実行された設定ミスやその他の事故は、調査して修正する必要があるからです。コマンドライン履歴を使用すると、問題が発生した理由を簡単に見つけることができます。 Sudoユーティリティは、この理由から、タイムスタンプと完全なコマンドライン、およびSudoを実行しているユーザーのユーザー名を使用して、syslog機能へのすべての呼び出しを追加でログに記録します。

[〜#〜] edit [〜#〜]:最近、稼働中のLinuxマシンのクラスター上のファイバーネットワークで問題が発生し始めました。 Sudoアクセス権を持つ愚かなユーザーが不注意なパッケージアップグレードを行ったときに、一部のドライバーまたはその他のドライバーが間違ったバージョンに置き換えられたことが判明しました。これは、システムログとその中のSudoタイムスタンプを調べることで見つけることができました。 「愚かなユーザー」は私以外の誰でもないことが判明しました!

3
Kusalananda

ログイン後に次のコマンドを発行します。

HISTFILE=

これにより、後続のコマンドが履歴ファイルに記録されなくなります。

1
mik