우리의 애플리케이션 서버(glassfish 4)는 사용자 glassfish에서 실행됩니다. 우리의 solr 5 서버는 사용자 solr로 실행됩니다. glassfish와 solr은 모두 동일한 물리적 서버에서 실행됩니다.
glassfish에서 실행되는 애플리케이션은 solr 코어를 생성할 수 있어야 합니다. 이를 위해 1) 애플리케이션은 사전 정의된 solr 구성을 /var/solr/data
디렉토리에 복사합니다. 2) REST API를 통해 solr 명령을 실행하여 solr 코어를 생성합니다.
그러나 폴더는 권한 0755를 가진 glassfish가 소유하고 있습니다. 이러한 권한으로 인해 solr 사용자는 데이터 디렉터리를 생성하고 코어를 올바르게 생성할 수 없습니다.
0777에 업로드된 폴더를 수동으로 설정하고 코어를 생성하면 코어가 성공적으로 생성됩니다.
이 문제를 해결하는 가장 적절한 방법은 무엇입니까?
Solr가 이 상황을 처리할 수 있는 메커니즘이 있었으면 좋겠지만 아무것도 찾을 수 없는 것 같습니다.
답변1
/var/solr/data
사용자 solr을 디렉토리에 할당된 그룹 에 추가하거나 solr 및 glassfish 사용자가 포함된 자체 그룹을 생성하고 디렉토리에 할당된 그룹을 이 새 그룹으로 변경할 수 있습니다. 이렇게 하면 디렉터리에 775 권한만 설정하면 됩니다.
또는 파일 액세스 목록을 사용하여 추가 사용자 또는 그룹 수준 권한을 부여할 수 있습니다. 먼저 명령을 사용하여 FACL이 활성화되었는지 확인합니다 sudo tune2fs -l /dev/[fs identifier] | grep -i "default mount options"
. acl
오른쪽에 옵션이 없으면 FACL을 활성화 한 sudo tune2fs -o acl /dev/[fs identifier]
다음 파일 시스템을 재부팅하거나 다시 마운트해야 합니다. FACL이 활성화되면 이 setfacl
명령을 사용하여 추가 권한을 부여할 수 있습니다. 따라서 다른 사용자를 추가하는 경우 setfacl -m "u:[username]:[permissions]" [file/directory]
[permission]은 rwx의 조합이고 [file/directory]는 절대 또는 상대 경로가 될 수 있습니다. 예를 들어 setfacl -m "u:solr:rwx" /var/solr/data
solr 사용자에게는 폴더에 대한 모든 권한이 부여됩니다.
그리고 완료 +
하려면 ls -l
. getfacl
명령 -x
의 플래그는 setfacl
FACL 목록에서 항목을 제거하는 데 사용됩니다.