명령에서 쉘 스크립트 실행

명령에서 쉘 스크립트 실행

date -s <string>명령을 사용할 때 쉘 스크립트를 실행하고 싶습니다 . 예를 들어 쉘 스크립트에서 다음 명령을 실행하여 /tmp/user.log 파일에 명령을 기록하고 싶습니다.

logger -p user.notice "date -s command executed" -f /tmp/user.log

date -s <string>쉘에서 실행될 때 쉘 스크립트를 어떻게 실행할 수 있습니까 ?

좀 더 일반화하기 위해 다른 사람이 내 시스템에서 특정 Linux 명령을 실행할 때 쉘 스크립트를 실행하고 싶습니다. 어떻게 해야 하나요?

답변1

질문을 바꿔서 누군가가 시스템 시간을 설정하려고 시도하는 시점을 알고 싶습니다. 이것이 바로 audit하위 시스템의 목적입니다. 특정 시스템 호출의 실행을 감사할 수 있습니다. 이 경우 시스템 시간을 변경할 수 있는 다양한 시스템 호출을 누군가 호출할 때마다 알고 싶습니다. 하위 시스템 을 사용하면 누군가 전화를 걸 거나 로컬에서 빌드한 명령 버전 audit에 관계없이 작동하는 솔루션을 갖게 됩니다 ./bin/date

auditd(8)규칙 구문에 대한 전체 설명 과 시간 변경 작업 감사의 예를 보려면 audit.rules(7)예제 파일에서 "time-change"를 찾아보세요 nispom.rules. 로컬 시스템에서 찾을 수도 있고 여기에서 찾을 수도 있습니다.

하위 시스템 에 대한 자세한 내용은 다음을 audit참조하세요(문서화는 약간 어렵습니다).

답변2

사용자가 자신의 프로그램 버전을 실행하는 것을 쉽게 막을 수는 없지만 사용자가 악의적이지 않다고 가정하면 쉽습니다.

  1. 프로그램을 기록한 다음 실행하는 래퍼 스크립트를 만듭니다(원래 매개변수 사용).
  2. 래퍼가 사용자 경로의 원래 프로그램을 대체하는지 확인하십시오.

별칭을 사용하여 사용자가 래퍼를 사용하도록 하거나 원래 프로그램을 이동/이름을 바꾸고 래퍼를 원래 위치에 넣을 수 있습니다.

실행 중 일부만 기록하려면 래퍼 스크립트에서 정규 표현식을 사용하세요.

답변3

serverfault답변해 주신 친구들에게 정말 감사드립니다 .

나는 당신의 모든 도움으로 내 질문에 대한 답을 찾았다고 생각합니다. 하지만 관련된 오류가 있거나 개선해야 할 사항이 있으면 여러분 모두 저를 도와주실 수 있나요? 내가 간다.

이것이 내가 한 일들입니다.

나). datewrapper.sh다음 코드를 사용하여 /etc에 스크립트를 생성했습니다.

#! /bin/bash

# wrapper script for the date command.
# whenever the date -s command is issued, it will be logged.

# executing the date command first with parameter list if any
date $@

# check whether the date command executed successfully
if [ "$?" == "0" ] ; then
   for param in $@ ; do
      # if "-s" option is used, log it
      if [ "$param" == "-s" ] ; then
         # user.notice logs the message to /tmp/log/user.log
         # as per the commands in /etc/syslog-ng/syslog-ng.conf
         logger -p user.notice "New date set"
         break
      fi
   done
fi

exit 0

ii). chmod a+x /etc/datewrapper.sh ; 별칭 날짜='/etc/datewrapper.sh'

iii). 날짜

2010년 12월 21일 화요일 21:51:01 UTC

iv). 날짜 -s "21:53:05"

2010년 12월 21일 화요일 21:53:05 UTC

V). /tmp/log/user.log를 확인했습니다. 메시지를 보여줍니다

12월 21일 21:53:05 localhost 루트: 새 날짜 설정

따라서 결과는 사용자가 date명령을 내릴 때마다 내 스크립트가 실행되고 -s옵션과 함께 명령을 실행할 때마다 로그인됩니다./tmp/log/user.log

관련 정보