2016-05-11 8 views
3

UNIXでは、どのユーザーが特定のファイルにアクセスしたかを知るために使用できるコマンドを誰かから教えてもらえますか?私は歴史コマンドが以前に発射されたコマンドをリストしているのを知っていますが、それを「誰が」発射したのか、何時に発射したのかはわかりません。UNIXで何時に特定のファイルにアクセスしたユーザーを調べるか

+0

「HISTTIMEFORMAT」環境変数を使用して履歴時間をログに記録することができます。 'man history'を参照してください。 http://unix.stackexchange.com/questions/144845/how-would-you-get-all-users-historyも参照してください。 –

+0

@RuslanOsmanov 'history'のmanページはありますか?私はアーチLinuxにいると私はしていない。私にとっては、それは 'bash'または' zsh'の組み込みです。 – Lucas

+0

@Lucas、 'man history'は私のために' BASH_BUILTINS(1) 'manページを開きます。 –

答えて

0

statを使用すると、ファイルに最後にアクセスした日時を知ることができます。これは、ファイルシステムにatimeのiノードが格納されている場合にのみ可能です。しかし、これは誰がファイルにアクセスしたかは分かりません。

lsofを使用すると、現在ファイルを使用しているプロセスを一覧表示できます。しかし、ユーザーの権限が不十分な場合(rootの場合はすべてのプロセスが表示されます)、他のユーザーのプロセスが表示されないことがあります。

通常、実行ユーザーの履歴ファイルからhistoryの出力が生成されます。だから、historyによって印刷されたコマンドがすべて同じユーザによって実行されたと仮定することができます。いくつかのシェルでは、コマンドと共に実行時間を保存するためのオプションを設定できます。その後、historyでこの時間を取得することもできます。これは、使用しているシェルによって異なる場合があります。

あなたはstatlsofbashまたはzshのmanページ読むことができます(または多分kshを?)このについての詳細を学ぶために。

1

これらの行を~/.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

+1

これは '/ etc/bash.bashrc'に置くことができるので、すべてのユーザに適用されます。 –

2

使用の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" 
+0

[この回答](http://stackoverflow.com/a/37157226/171318)より明らかに好ましい – hek2mgl

関連する問題