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
사용자가 자신의 프로그램 버전을 실행하는 것을 쉽게 막을 수는 없지만 사용자가 악의적이지 않다고 가정하면 쉽습니다.
- 프로그램을 기록한 다음 실행하는 래퍼 스크립트를 만듭니다(원래 매개변수 사용).
- 래퍼가 사용자 경로의 원래 프로그램을 대체하는지 확인하십시오.
별칭을 사용하여 사용자가 래퍼를 사용하도록 하거나 원래 프로그램을 이동/이름을 바꾸고 래퍼를 원래 위치에 넣을 수 있습니다.
실행 중 일부만 기록하려면 래퍼 스크립트에서 정규 표현식을 사용하세요.
답변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