서버에 있는 모든 사용자의 bash 기록을 검색할 수 있나요?

서버에 있는 모든 사용자의 bash 기록을 검색할 수 있나요?

여러 사용자 계정에 걸쳐 Linux 서버에서 실행되는 모든 bash 명령을 보고 싶습니다. 내가 사용하는 특정 배포판은 CentOS 5.7입니다. 서버에서 .bash_history 파일을 전체적으로 검색하는 방법이 있습니까, 아니면 좀 더 지역화된 프로세스입니까 locate | cat | grep? (이것을 타이핑하는 것만으로도 떨리고 있습니다).

답변1

홈 디렉토리를 열거하는 데 사용됩니다 getent.

getent passwd |
cut -d : -f 6 |
sed 's:$:/.bash_history:' |
xargs -d '\n' grep -s -H -e "$pattern" 

홈 디렉토리가 잘 알려진 위치에 있는 경우 다음과 같이 간단할 수 있습니다.

grep -e "$pattern" /home/*/.bash_history

물론, 이는 사용자가 다른 쉘을 사용하는지 또는 다른 값을 사용하는지에 대해 HISTFILE많은 것을 말해주지는 않습니다 . 이는 또한 셸을 통해 실행되지 않은 명령이나 사용자의 $PATH. 회계 또는 일부 고급 감사 시스템을 참조하세요.내 컴퓨터의 활동을 모니터링합니다.,프로세스가 완료된 후 실행하는 데 걸린 시간을 확인하는 방법은 무엇입니까?.

답변2

find /home -name .bash_history | xargs grep <string>

또는:

grep string $(find /home -name .bash_history)

여기에는 기본 위치의 홈 디렉터리가 포함됩니다. 구문 분석 /etc/passwd하거나 호출 getent하고 출력을 구문 분석하는 것이 더 좋습니다.

for i in $(getent passwd | cut -d: -f6 ); do grep string ${i}/.bash_history; done

답변3

넌 할 수있어

find /home | grep bash_history | xargs grep "whatever"

하지만 나는 그것이 당신의 생각보다 더 낫다고 생각하지 않습니다.

관련 정보