
이것은 얼마 전 내가 던진 질문과 관련이 있다.
Linux에서 특정 서비스를 다시 시작한 사람에 대한 세부 정보를 기록하고 싶습니다.
예를 들어:
사용자 X가 Apache를 다시 시작하면 사용자 이름, 시간, 서비스(예: Apache) 및 상태(성공/실패)가 기록됩니다.
이 작업을 수행하려면 작은 스크립트를 작성하고 이를 서비스 시작 스크립트에 수동으로 추가하면 됩니다.
하지만 수천 개의 서버와 수십 개의 서비스가 있기 때문에 이것은 불가능합니다.
서비스 시작 스크립트를 조작하지 않고 이를 수행할 수 있는 다른 방법이 있습니까?
답변1
시스템을 잠그는 것이 좋습니다. 사용자에게 를 사용하도록 요구하고 sudo
, 를 사용하여 특정 명령만 실행되도록 허용하고 , 및 sudo
같은 명령을 금지하여 임의 명령 실행을 허용하지 않습니다 .sudo su
sudo bash
sudo
물론 서비스 다시 시작을 포함하여 이를 통해 실행된 모든 명령을 기록합니다. 내 컴퓨터에서는 에 로그인하는데 /var/log/secure
, 이는 에서만 읽을 수 있습니다 root
.
그러나 그것은 당신이 원했던 마지막 것, 즉 성공이나 실패를 제공하지 않습니다. 그러나 서비스를 직접 시작하는 대신 사용자가 사용하도록 요구할 수 있는 래퍼 스크립트를 사용하여 추가 로깅을 쉽게 구현할 수 있습니다. 래퍼 스크립트를 안전하게 만드는 데 주의하세요!
따라서 사용자는 다음을 입력합니다.
sudo wrapper_script start service
또는 그런 것.
sudo 로그에 유의하세요.둘 다원래 사용자와 sudo 중인 사용자(기본적으로 루트).