1月 29, 2022

Linuxでユーザーが何をしているかを確認する方法

Linuxサーバーを管理している場合、ユーザーのアクティビティを確認するために使用できるいくつかのコマンドを用意することをお勧めします–ユーザーがいつログインしているのか、どのくらいの頻度で、どのグループに属しているのか、どのくらいのディスクスペースを消費しているのか、どのコマンドを実行しているのか、どのくらいのディスクスペースを占有しているのか、メールを読んでいるのかなど。

この記事では、あなたのユーザーが誰であり、どのように動作するかを理解するのに役立ついくつかのコマンドを見ていきます。

finger

ユーザープロファイルを取得するための便利なコマンドの1つはfingerです。 誰がログインしているかを確認したり、最後のログイン、ログイン元、アイドル状態になっている時間(コマンドを実行してからの時間)などを表示する このコマンドでは、ユーザー nemoを見ています。

$ finger nemoLogin: nemo Name: Nemo DemoDirectory: /home/nemo Shell: /bin/bashOn since Fri Jun 19 12:58 (EDT) on pts/1 from 192.168.0.6 7 minutes 47 seconds idleNew mail received Wed Jun 17 18:31 2020 (EDT) Unread since Sat Jun 13 18:03 2020 (EDT)No Plan.

nemoのフルネーム、ホームディレクトリ、シェルを見ることができます。 また、nemoの最新のログインと電子メールの活動を見ることができます。 オフィス、オフィスの電話番号、および自宅の電話番号は、/etc/passwdファイルのフルネームフィールドで定義されている場合にのみ含まれます。 例えば:

nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).

上記の出力はまた、nemoに”計画”がないことを示していますが、これは彼がaを作成していないことを意味します。ファイルを計画し、それにいくつかのテキストを入れて、これは全く珍しいことではありません。

引数を指定しないと、fingerは現在のログインのリストを以下の形式で表示します。 ログインしたとき、ログインしたIPアドレス、使用中の擬似端末(pts/1など)、およびアイドル状態の期間を確認できます。

$ fingerLogin Name Tty Idle Login Time Office Office Phonenemo Nemo Demo pts/1 1:24 Jun 19 12:58 (192.168.0.6)shs Sandra Henry-Stocker pts/0 Jun 19 12:57 (192.168.0.60

w

wコマンドは、アイドル時間と最近実行したコマンドを含む、現在アクティブなユーザーの適切な形式のリストも提供します。 また、システムの稼働時間が一番上の行に表示され、システムの稼働時間を示す負荷平均が表示されます。 この場合(最後の1、5、および15分間は0.00)、システムは大部分アイドル状態です。

$ w 14:23:19 up 1 day, 20:24, 2 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATshs pts/0 192.168.0.6 12:57 0.00s 0.14s 0.01s wnemo pts/1 192.168.0.6 12:58 1:24m 0.03s 0.03s -bash

id

idコマンドを使用すると、ユーザーの数値IDとグループIDと、ユーザーがメンバーであるグループを表示できます。 この情報は、/etc/passwdおよび/etc/groupファイルから取得されます。 引数なしで、idはあなたのアカウントの情報を報告します。

$ iduid=1000(shs) gid=1000(shs) groups=1000(shs),4(adm),11(admin),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),500(devops)$ id nemouid=1001(nemo) gid=1001(nemo) groups=1001(nemo),16(fish)

ログ

/var/log/authから情報をヤンクできます。grepのようなコマンドを含むログファイル。 Authを使用して最新のログインアクティビティを表示します。データをログに記録すると、次のようなコマンドを実行できます:

$ grep "New session" /var/log/auth.log | awk '{print ,,,}' | tail -5Jun 17 17:22:38 shs.Jun 17 17:58:43 gdm.Jun 17 18:09:58 shs.Jun 19 12:57:36 shs.Jun 19 12:58:44 nemo.

last

最後のコマンドは、おそらくすべてのユーザーまたは一人の個人の最近のログインを見るのに最適です。 これはほとんどの管理者が最も興味を持っている情報であるため、最後には最新のアクティビティが最初に表示されることを覚えておいてくださ

$ last | head -5nemo pts/1 192.168.0.6 Fri Jun 19 12:58 still logged inshs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)reboot system boot 5.4.0-37-generic Wed Jun 17 17:58 still runningshs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)$ last nemo | head -5
nemo pts/1 192.168.0.6 Fri Jun 19 12:58 - 16:21 (03:22)
nemo pts/2 192.168.0.6 Sat Jun 13 17:49 - 19:05 (01:16)
nemo pts/1 192.168.0.6 Thu Jun 4 17:33 - 17:44 (00:10)
nemo pts/1 192.168.0.19 Mon May 11 19:04 - 19:57 (00:52)
nemo pts/1 192.168.0.19 Tue May 5 12:46 - 17:49 (05:02)

du

duコマンドは、/home内の各ディレクトリに対して次のように実行すると、各ユーザーのホームディレクトリが使用しているスペースの量を報告します:

$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole

既定では、サイズは1024バイト単位で報告されます。

ps and history

現在ログインしているユーザーの場合、ps-ef|grep^nemoのようなコマンドを使用して、ユーザーが現在実行しているコマンドとプロセスを確認できます。 以前に実行されたコマンドを表示するには、ユーザーの履歴ファイルを調べてみることができます(例えば、.ただし、ユーザーは特定のコマンドが履歴ファイルに取り込まれないようにアカウントを設定でき、選択した場合はこれらのファイルも編集できます。

ログイン数のカウント

/var/log/wtmpファイルが最後にロールオーバーされてから、各ユーザーがログインした回数を確認したい場合は、次のようなコマンドを使:

$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done

出力は次のようになります:

dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0

詳細が必要な場合は、ログインの詳細や書式設定などの追加情報を追加できる、より複雑なスクリプトを一緒に置くことができます。

#!/bin/bashsepline="===================="for USER in `ls /home`do len=`echo $USER | awk '{print length()}'` # get length of username echo $USER sep="${sepline:1:$len}" # set separator echo $sep # print separator cnt=`last $USER | grep ^$USER | wc -l` # count logins echo logins: $cnt # show login count last $USER | grep ^$USER | head -5 # show most recent logins echodone

上記のスクリプトは、最新の五つのログインに表示されるデータを制限していますが、必要に応じて簡単に変更することができます。 あるユーザーのデータの書式設定方法は次のとおりです:

shs===logins: 105shs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)shs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)shs pts/0 192.168.0.25 Wed Jun 17 17:20 - 17:57 (00:36)shs pts/1 192.168.0.6 Wed Jun 17 15:19 - 17:57 (02:38)

この権限を持つように設定されていないユーザーがsudoを使用しようとしているかどうかを確認したい場合は、次のようなコマンドを実行できます:

$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo

あなたがあなたの特権を昇格することが許可されていない状況でsudoを使用しようとしたことがあり、システムがあなたに”username is not in the sudoers file. この事件は報告されます、”このログエントリがそのレポートの本質であることを知ることを楽しむかもしれません。 管理者がsudoの違反を探す努力をしない限り、彼らは気付かれません。

ラップアップ

Linuxシステムには、ユーザーのアクティビティを確認するのに役立つ多くのコマンドがあります。 私はこの記事で提示されたもののいくつかが有用であることを願っています。

bmonコマンドの使用方法:2分間のLinuxのヒント

コメントを残す

メールアドレスが公開されることはありません。