cron 예약 작업을 실행하기 위해 루트를 사용하는 것에서 벗어나려고 합니다. 따라서 실행해야 하는 모든 cron 작업을 실행하기 위해 로그인 없는 시스템 계정(/dev/null home, /sbin/nologin shell)을 만드는 것이 생각 과정입니다. . 일반적으로 루트로 제한되는 일반 파일 및 폴더의 소유권을 변경하지 않고 필요한 곳에서 실행할 수 있도록 이러한 계정에 적절한 권한을 부여하는 방법이 궁금합니다.
예를 들어, 이 시스템 계정이 수행 중인 작업에 대한 로그 파일을 /var/log에 출력하기를 원하지만 /var/log/는 루트가 소유하고 755로 설정되어 있다고 가정합니다. 이 프로세스는 루트로 실행하지 않으면 로깅 파일을 생성할 수 없습니다. 그렇죠?
Linux 커널 기능을 사용하는 것이 이를 달성하는 가장 좋은 방법이라고 가정하는 것이 맞습니까?
답변1
이를 달성하는 한 가지 방법은 로그를 아래 하위 폴더에 넣은 /var/log
다음 하위 폴더에 대한 권한을 설정하는 것입니다.
또 다른 이유는 시스템 로그에 로그인 logger
하고 필터를 사용하여 로그를 특정 파일로 리디렉션하는 것입니다.
예를 들어
# /etc/rsyslog.d/10-myrules.conf
if $programname == ["script1", "script2"]
then {
action(type="omfile" file="/var/log/myscripts/sys.log")
stop
}
이 작업을 수행할 때 logrotate 규칙도 설정해야 할 수도 있습니다.