友人と私はそれぞれ、システム全体の特定のタスクを担当するかなりの数の仮想マシンを管理しています。コンピュータにログインする唯一の時間は管理タスクを実行する必要があるときだけであるため、通常はコンピュータを管理する必要があるときに root としてログインします。私たちが実行するすべてのコマンドは通常sudoコマンドなので、sudoを使用しません。
別の.bash_historyを提供し、他のコンピュータが最後にログインした時間などを確認するために、これらのコンピュータ上のアカウントを別々に保持しようとしています。これには、完全なroot権限を持つ2つのアカウントが必要です。
1つの方法は、一般ユーザーアカウントをUID = 0 GID = 0に変更することです。つまり、ルートと同じですが、この質問でこのソリューションを使用しないことをお勧めします。ユーザーにUID = 0 GID = 0を提供してユーザーにroot権限を付与するのに問題がありますか?
[この質問はこれまでと同じです。]
この問題に対する答えはsudoを使用することですが、前述したように、sudoは私たちのユースケースでは非常に不便です。これらのVMで実行されるほとんどすべてのコマンドはsudoコマンドであるため(すべての| sudo tee >\dev\null
出力リダイレクトについて気になります!)、sudoは別の履歴を持つよりも便利ではなく、他のアカウントのログ記録は1つの利点です。
それから私のフォローアップの質問は次のようになります。 sudoに加えて、複数のユーザーアカウントがrootの役割を引き受ける安定した方法はありますか?それともsudoをより便利にする方法がありますか(sudo -i
目的に反する以外は)。
答え1
sudo -s
更新されていないものを使用している場合は、$HOME
シェル履歴が自分のアカウントに保存されます。
vim
(ルートなしで修正でき、時にはchown -R myusername "$HOME"
問題を解決するためにこのようなタスクを実行する必要がある「興味深い」状況を生成することによって生成されたものなど、他の構成/記録ファイルを念頭に置いてください)。
答え2
前のタスクでこの問題を処理した方法は次のとおりです。
まず、管理者がターゲットシステムへのすべてのルートアクセス権を持つためにログインするセキュリティバスホストがあります。ホストは、keymaster
ターゲットホストのルートに対応する秘密鍵を保持する特別なアカウントで構成されます。 (新しいホストを自動的に登録できるシステムもありますが、これはこの記事の範囲外です。)
管理者はユーザーレベルのアカウントを使用してこのBaschenホストにログインし、ターゲットシステムに接続します。
要塞ホスト自体へのルートアクセス権を持つ少数を除いて、実際にキーに直接アクセスできる管理者はありません。代わりに、sudoで実行されるコマンドを使用して接続しますconnect
(ルートではありません)。keymaster
connectコマンドは、環境変数をREMOTE_ADMIN
接続するユーザーの名前に設定し、ターゲットシステムにrootとして接続します。
それから、リモートシステムはAcceptEnv=REMOTE_ADMIN
inに設定され、sshd_config
.bashrcファイルはBASH_HISTORY
に設定されます~/.bash_history-$REMOTE_ADMIN
。
この設定を使用すると、異なるファイルがセキュリティ履歴では.bash_history
なく、少なくとも発生した状況を悪意のないように確認できるほど十分に異なります。セキュリティ履歴は、誰がいつ接続したかを示す要塞ホストにあります。 (私たちはコマンドにも2FAを使用しますsudo connect
。)
また、ホストを破壊することに加えて、指定されたシステム外のルートアクセス(悪意があるか単に「利便性」でも)を心配する必要はありません。鍵を破棄できますが、誰かのアクセスレベルが変更されたため、破棄する必要はありません。
.bash_history-$SUDO_USER
実際に達成したい目標に応じて、ソリューションの全部または一部を使用するだけで十分です。