>  기사  >  운영 및 유지보수  >  리눅스 쉘 히스토리 명령 기록 기능을 사용하는 방법

리눅스 쉘 히스토리 명령 기록 기능을 사용하는 방법

WBOY
WBOY앞으로
2023-05-12 13:19:181713검색

Linux에서는 History 명령을 사용하여 사용자의 모든 기록 작업을 볼 수 있습니다. 동시에 쉘 명령 작업 기록은 기본적으로 사용자 디렉터리의 .bash_history 파일에 저장됩니다. 이 파일을 통해 운영 및 유지 관리 담당자가 시스템 감사 및 문제 해결을 수행하는 데 도움이 되는 셸 명령의 실행 내역을 쿼리할 수 있습니다. 동시에 서버가 해커의 공격을 받은 후 해커의 명령 작업 내역도 쿼리할 수 있습니다. 서버에 로그인합니다. 그러나 해커는 침입한 후 흔적을 지우기 위해 .bash_history 파일을 삭제합니다. 이를 위해서는 이 파일에 대한 합리적인 백업이 필요합니다.

기본 히스토리 명령은 사용자의 과거 작업 기록만 볼 수 있으며, 각 사용자가 명령을 수행한 시간을 구분할 수는 없습니다. 이는 문제 해결에 매우 불편합니다. 해결책은 /etc/bashrc 파일에 다음 네 줄을 추가하여 기록 명령이 모든 셸 명령의 실행 시간을 자동으로 기록하도록 하는 것입니다.

코드 복사 코드는 다음과 같습니다:

histfilesize=4000
histsize =4000
histtimeformat='%f %t'
export histtimeformat

histfilesize는 .bash_history 파일에 저장된 총 레코드 수를 나타냅니다. 기본값은 1000입니다. histsize는 History 명령으로 출력되는 총 레코드 수를 정의합니다. histtimeformat은 date 명령과 동일한 시간 표시 형식을 정의합니다. "+"%f %t""는 값을 기록 시간 변수로 명령에 전달합니다.

고급 팁

위의 방법은 시간을 기록할 수 있지만 감사 목적으로 사용할 수 없으며 해커에 의해 쉽게 변조되거나 분실될 수 있습니다. 다음 방법은 시스템에 로그인한 사용자, IP 주소, 쉘 명령 및 자세한 작업 시간을 자세히 기록합니다. 그리고 시스템 감사 및 문제 해결을 위해 이 정보를 파일 형식으로 안전한 장소에 저장하십시오.

위 기능을 구현하려면 /etc/profile 파일에 다음 코드를 입력하세요.

코드 복사 코드는 다음과 같습니다.

#기록 내역 작업
user_ip=`who -u am i 2>/dev/null |awk '{print $nf}' |sed -e 's/[( )]/ /g'`
logname=`who -u am i |awk '{print $1}'`
histdir=/user/share/.history
if [ -z $user_ip]
then
user_ip=`호스트 이름 `
fi

if [ ! -d $histdir]
then
mkdir -p $histdir
chmod 777 $histdir
fi

if [ ! -d $histdir/${logname}]
then
mkdir -p $ histdir/$ {logname}
  chmod 300 $histdir/${logname}
fi

export histsize=4000

dt=`date +"%y%m%d_%h%m%s"`
export histfile= "$histdir /${logname}/${user_ip}.history.$dt"
export histtimeformat="[%y.%m.%d %h:%m:%s]"
chmod 600 $histdir/$ {로그 이름} /*.history* 2>/dev/null

위 내용은 리눅스 쉘 히스토리 명령 기록 기능을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제