누가 프로그램을 호출했는지 어떻게 알 수 있나요?

누가 프로그램을 호출했는지 어떻게 알 수 있나요?

일광 절약 시간제를 다루다가 흥미로운 것을 발견했습니다.

현재 시간이 오후 2시라고 가정하면 일광 절약 시간은 오후 3시에 시작되며 +1시간 오프셋됩니다.

오후 3시 이후에는 hwlock이 1시간 증가된 시간 정보를 표시합니다.

내 생각엔 일부 프로그램이 hwclock을 호출하고 시간 정보를 변경했음이 틀림없다는 것입니다.

어떤 프로그램이 이를 실행했는지 어떻게 알 수 있나요? Linux 셸은 통화 기록 기록을 표시하는 일부 명령을 지원합니까?

좋다

# log hwclock
# program_xxx invoke it at p.m. 3:00

답변1

일반적으로 명령의 출력은 hwclock현지 시간대에 있으며 시간대 정의에는 일광 절약 시간 변환이 포함됩니다.

Linux 커널의 내부 시계(대부분의 Unix 계열 시스템과 마찬가지로)는 항상 내부적으로 UTC 시간으로 실행됩니다. 현지 시간이 필요할 때마다 시간대 정의를 사용하여 내부 UTC 표현을 현지 시간으로 변환합니다. DST 변환이 발생하면 "현지 시간"을 의미합니다.뛰어내릴 것 같다원하는대로 앞으로 또는 뒤로. 동시에 현지 시간 값과 함께 보고되는 시간대 오프셋도 변경됩니다. 일반적으로 DST 접두사가 추가되거나 제거되거나 시간대가 UTC 시간의 +/- 오프셋으로 표현되는 경우 오프셋 값은 일광 절약 시간제 전환 중에도 변경되었습니다.

hwclock출력이 UTC 시간대(예:)로 표시되도록 요청하면 TZ=UTC hwclock시간이 평소대로 앞으로 가는 것을 볼 수 있으며 DST로 변환할 때 특별한 일이 발생하지 않습니다.

따라서 실제 설명은 다음과 같습니다. 특수 명령이 실행되지 않았지만 /etc/localtime만료에 지정된 이전 UTC 오프셋 값과 새 기간에 대해 정의된 새 오프셋이 적용되었습니다. zdump -v /etc/localtime원하는 경우 과거 및 미래의 DST 전환 시간을 모두 볼 수 있습니다. 현지 시간대 기록에 일광 절약 시간이 아닌 다른 변경 사항이 있는 경우 해당 내용도 포함되어야 합니다.

그러나 실제 질문에 대해 특정 명령을 실행한 사람을 찾는 신뢰할 수 있는 유일한 방법은 하위 시스템( auditd및 관련 도구)을 감사하는 것입니다. 하위 시스템은 /var/log/audit구성 시 로그(또는 필요한 경우 사용자 지정 디렉터리)를 생성합니다. 그러나 부팅 시부터 내용만 기록합니다. 적절한 로깅이 아직 구성되지 않은 경우 과거 이벤트에는 도움이 되지 않습니다.

관련 정보