apt 저장소를 사용하여 우분투 12.04에 logstash를 설치했습니다. 그러나 Logstash는 어떤 문서도 읽지 않았습니다. Logstash 로그에는 다음 내용이 있습니다.
{:timestamp=>"2014-08-01T22:06:09.722000+0000", :message=>"failed to open /var/log/kannel/smsbox.log: Permission denied - /var/log/kannel/smsbox.log", :level=>:warn}
파일의 권한을 확인했습니다.
$ ls -lh /var/log/kannel/smsbox.log
-rw-r----- 1 kannel adm 42M Aug 2 00:14 /var/log/kannel/smsbox.log
그래서 logstash 사용자를 adm 그룹에 추가했지만 usermod -a -G root logstash
도움이 되지 않았습니다. 루트에 추가했지만 여전히 작동하지 않습니다. 나는 어찌할 바를 모르고 있다.
답변1
커널에 관한 한 프로세스는 사용자와 하나 이상의 그룹으로 실행됩니다. 프로세스가 시작되면 더 이상 그룹을 얻을 수 없습니다. 프로세스는 자신을 호출한 프로세스로부터 사용자와 그룹을 상속받습니다.
그룹에 속한 사용자의 개념은 사용자 관리 도구에 의해 관리되며 로그인 프로그램은 시작되는 프로세스에 그룹 멤버십을 부여합니다. 따라서 그룹에 사용자를 추가하면 이미 진행 중인 세션이 아닌 후속 로그인 세션에만 적용됩니다.
데몬은 대화형 로그인 프로세스를 거치지 않으며 일반적으로 특정 사용자 및 그룹으로 시작됩니다. 그룹은 계정 데이터베이스에서도 읽히지 않고 데몬 시작 스크립트의 사용자 이름 옆에 하드코딩되는 경우가 많습니다. 따라서 logstash
사용자를 adm
그룹에 추가해도 도움이 되지 않습니다. adm
추가 그룹으로 logstash를 실행하도록 logstash 시작 스크립트를 변경하면 됩니다. 이를 수행하는 방법은 시작 스크립트 작성 방법에 따라 다릅니다. 그럼에도 불구하고, 이를 위해서는 logstash 서비스를 다시 시작해야 합니다.
또는 로그 파일의 액세스 제어 목록을 변경하여 Logstash 프로세스에서 이를 사용할 수 있도록 할 수 있습니다. 예를 들어 사용자가 logstash
채널 로그 파일을 읽을 수 있도록 허용하려면 다음을 수행하세요 .
setfacl -m u:logstash:r /var/log/kannel/smsbox.log
어쩌면 있을 수도 있지
setfacl -m u:logstash:rx /var/log/kannel
로그를 교체하면 권한이 다시 초기화될 수 있으므로 이는 임시 해결책일 수 있습니다. 이 접근 방식의 경우 로그 파일을 (재)생성하는 프로그램의 구성을 변경해야 할 수도 있습니다.
¹두 명의 사용자(실제 및 유효한)이지만 실제 UID는 이 답변과 관련이 없습니다.