すべてのセッション/画面/byobu端末で現在のユーザーが実行しているすべてのコマンドを表示するには?

すべてのセッション/画面/byobu端末で現在のユーザーが実行しているすべてのコマンドを表示するには?

Debian ボックスがある場合、一部のユーザーは root アカウントにアクセスでき、一部のユーザーは SSH 接続を開いてコマンドの実行を開始し、一部は画面を開くか、byobu などのツールを使用してコマンドを実行します。

"history"コマンドは、実行されたコマンドの完全なリストを取得できないようです。

実行されたすべてのコマンドを取得する最良の方法は何ですか?

ベストアンサー1

ハッキングですが、少なくとも動作します。rootそのサーバーには以下が必要です。

出力を見ると、ps auxユーザーのフォークが表示されますsshd。たとえば、この場合、userは次のようになりますmst

$ ps aux | grep ssh
mst      19325  0.0  0.0  76268  1920 ?        S    21:20   0:00 sshd: mst@pts/6

したがって、次のようにこのプロセスのファイル記述子を確認します。

$ sudo ls -lha /proc/19325/fd
total 0
dr-x------ 2 root root   0 Aug 30 21:26 .
dr-xr-xr-x 7 mst  users  0 Aug 30 21:25 ..
lrwx------ 1 root root  64 Aug 30 21:26 0 -> /dev/null
lrwx------ 1 root root  64 Aug 30 21:26 1 -> /dev/null
lrwx------ 1 root root  64 Aug 30 21:26 11 -> /dev/ptmx
lrwx------ 1 root root  64 Aug 30 21:26 12 -> /dev/ptmx
lrwx------ 1 root root  64 Aug 30 21:26 2 -> /dev/null
lrwx------ 1 root root  64 Aug 30 21:26 3 -> socket:[138972]
lrwx------ 1 root root  64 Aug 30 21:26 4 -> socket:[138198]
lrwx------ 1 root root  64 Aug 30 21:26 5 -> socket:[138200]
lrwx------ 1 root root  64 Aug 30 21:26 6 -> socket:[138207]
lr-x------ 1 root root  64 Aug 30 21:26 7 -> pipe:[138212]
l-wx------ 1 root root  64 Aug 30 21:26 8 -> pipe:[138212]
lrwx------ 1 root root  64 Aug 30 21:26 9 -> /dev/ptmx

3 つのリンクは、 、/dev/ptmxとを指します。ユーザーのシェルは彼が入力したすべてのコマンドとそのコマンドの出力を印刷するので、私はfd番号のシステムコールを使用してフィルタリングして彼のコマンドを観察します(2番目のリンクも同じです)。stdinstdoutstderrstdoutstraceread1111/dev/ptmx

sudo strace -e read -s 256 -p 19325 2>&1 | grep 'read(11'

ユーザーが次のコマンドを入力したことを確認できますls

read(11, "l", 16384)                    = 1
read(11, "s", 16384)                    = 1

さて、出力は良くありませんが…動作します

おすすめ記事