UNIXでは、どのユーザーが特定のファイルにアクセスしたかを知るために使用できるコマンドを誰かから教えてもらえますか?私は歴史コマンドが以前に発射されたコマンドをリストしているのを知っていますが、それを「誰が」発射したのか、何時に発射したのかはわかりません。UNIXで何時に特定のファイルにアクセスしたユーザーを調べるか
答えて
stat
を使用すると、ファイルに最後にアクセスした日時を知ることができます。これは、ファイルシステムにatime
のiノードが格納されている場合にのみ可能です。しかし、これは誰がファイルにアクセスしたかは分かりません。
lsof
を使用すると、現在のファイルを使用しているプロセスを一覧表示できます。しかし、ユーザーの権限が不十分な場合(rootの場合はすべてのプロセスが表示されます)、他のユーザーのプロセスが表示されないことがあります。
通常、実行ユーザーの履歴ファイルからhistory
の出力が生成されます。だから、history
によって印刷されたコマンドがすべて同じユーザによって実行されたと仮定することができます。いくつかのシェルでは、コマンドと共に実行時間を保存するためのオプションを設定できます。その後、history
でこの時間を取得することもできます。これは、使用しているシェルによって異なる場合があります。
あなたはstat
、lsof
、bash
またはzsh
のmanページ読むことができます(または多分ksh
を?)このについての詳細を学ぶために。
これらの行を~/.bashrc
に追加すると、history
コマンド が[<user> 2016-05-11 14:04:33] <command>
形式のコマンドを記録するようになります。以下のコマンドは、開いているすべての対話型端末に適用されます。
export HISTFILESIZE=100000000
export HISTSIZE=100000000
# First two are optional, they need to be changed only if the default 500
# lines history logging needs to be changed
export HISTTIMEFORMAT="[$USER %F %T] "
HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"
オリジナルanswer変更が
http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html
例
レッツは、私は(ファイルを持っていると言う、特定のファイルに対して$USER
これは '/ etc/bash.bashrc'に置くことができるので、すべてのユーザに適用されます。 –
使用のLinux auditd
を保存するために行われてそれをにする)、私はすべてのアクセスを見たいと思っています。まず、そのための監査ルール設定:
$ sudo auditctl -w $PWD/an_important_file.txt -p warx -k watch_an_important_file
を監査ログを確認:
$ sudo ausearch -k watch_an_important_file
----
time->Thu May 12 10:54:16 2016
type=CONFIG_CHANGE msg=audit(1463039656.913:278): auid=500 ses=1 subj=unconfined_u:unconfined_r:auditctl_t:s0-s0:c0.c1023 op="add rule" key="watch_an_important_file" list=4 res=1
その後、私はタッチ($ touch $HOME/an_important_file.txt
)でファイルを修正しました。
$ sudo ausearch -k watch_an_important_file
----
time->Thu May 12 10:54:16 2016
type=CONFIG_CHANGE msg=audit(1463039656.913:278): auid=500 ses=1 subj=unconfined_u:unconfined_r:auditctl_t:s0-s0:c0.c1023 op="add rule" key="watch_an_important_file" list=4 res=1
----
time->Thu May 12 10:56:42 2016
type=PATH msg=audit(1463039802.788:291): item=1 name=(null) inode=535849 dev=fd:02 mode=0100664 ouid=500 ogid=500 rdev=00:00 obj=unconfined_u:object_r:user_home_t:s0 nametype=NORMAL
type=PATH msg=audit(1463039802.788:291): item=0 name="/home/Sergey.Kurenkov/" inode=524289 dev=fd:02 mode=040700 ouid=500 ogid=500 rdev=00:00 obj=unconfined_u:object_r:user_home_dir_t:s0 nametype=PARENT
type=CWD msg=audit(1463039802.788:291): cwd="/usr"
type=SYSCALL msg=audit(1463039802.788:291): arch=c000003e syscall=2 success=yes exit=3 a0=7fff6d986060 a1=941 a2=1b6 a3=3149b8f14c items=2 ppid=4852 pid=10022 auid=500 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts1 ses=1 comm="touch" exe="/bin/touch" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="watch_an_important_file"
[この回答](http://stackoverflow.com/a/37157226/171318)より明らかに好ましい – hek2mgl
- 1. c#特定の単語がtxtファイル内で何時に発生するかを調べる
- 2. Unix特定の時間内にファイルを検索する
- 3. ファイルからすべてのunixコマンドを特定する
- 4. Exchange Powershell - 特定のメールボックスデータベースにユーザーがいるかどうかを調べる
- 5. Unix - 修正年によるファイル数を調べる
- 6. inotify - どのユーザーがファイルを変更したかを調べるには?
- 7. ユーザーがアプリの特定のセクションにアクセスしたときに知る最良の方法は何ですか?
- 8. 特定のユーザーのCloud Firestoreファイルにアクセスできません
- 9. unixのファイルから特定の行を削除するには?
- 10. ファイルがgitブランチに表示された日時を調べる
- 11. Chokidarを使って特定のファイル拡張子を調べる
- 12. 特定のポートを調べるWindowsコマンド
- 13. UNIXマシン上で特定の日時に実行するSQLファイルをスケジュールするためのJavaコード
- 14. 特定のユーザーの特定のファイルへのアクセスを拒否する
- 15. Unixの特定のファイル名にプレフィックスを付ける
- 16. 特定のユーザーがオンラインでphpセッション変数を使用しているかどうかを調べる
- 17. 特定のユーザーIDを特定し、C++用の.txtファイルから特定する
- 18. 特定の時間にユーザーがキーを何回押したかをカウントする方法
- 19. OSX UNIXファイルを特定のユーザに追加する
- 20. 特定のユーザーが何かランダムに入力した場合、ボットの種類を何かにしますか?
- 21. CLIで特定のファイルにアクセスするためのショートカット
- 22. 春のセキュリティで特定のユーザーの特定のURLにアクセスする
- 23. Joomlaユーザーがログインしている時間を調べる方法
- 24. 特定のリビジョンでどのファイルが変更されたかを調べるための配管コマンド
- 25. 調査を行ったユーザーを特定する - Limesurvey
- 26. ファイル内の特定の位置にあるunix grep nバイト
- 27. 特定のユーザーのみがアクセスできるようにする
- 28. 特定のユーザーにファイルをアップロード
- 29. C-実行中に特定のメモリアドレスを調べる
- 30. 特定のファイルのみにec2 AWSユーザーへのアクセスを許可する
「HISTTIMEFORMAT」環境変数を使用して履歴時間をログに記録することができます。 'man history'を参照してください。 http://unix.stackexchange.com/questions/144845/how-would-you-get-all-users-historyも参照してください。 –
@RuslanOsmanov 'history'のmanページはありますか?私はアーチLinuxにいると私はしていない。私にとっては、それは 'bash'または' zsh'の組み込みです。 – Lucas
@Lucas、 'man history'は私のために' BASH_BUILTINS(1) 'manページを開きます。 –