我们的应用程序服务器 (glassfish 4) 在用户 glassfish 下运行。我们的 solr 5 服务器在用户 solr 下运行。 glassfish 和 solr 都运行在同一台物理服务器上。
在 glassfish 中运行的应用程序需要能够创建 solr 核心。为此,1) 应用程序将预定义的 solr 配置复制到/var/solr/data
目录中。 2) 通过 REST API 发出 solr 命令来创建 solr 核心。
但是,该文件夹由 glassfish 拥有,权限为 0755。由于这些权限,solr 用户无法创建数据目录并正确创建核心。
如果我手动设置上传到0777的文件夹并创建core,则core创建成功。
解决这个问题最合适的方法是什么?
我希望 solr 有一种机制来处理这种情况,但我似乎找不到任何东西。
答案1
您可以将用户 solr 添加到分配给/var/solr/data
目录的组,或者创建您自己的组,其中包含 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]
,[权限] 是 rwx 的任意组合,[文件/目录] 可以是绝对路径或相对路径。例如,setfacl -m "u:solr:rwx" /var/solr/data
将授予 solr 用户对该文件夹的完全权限。
并且,为了完成,您可以知道哪些文件具有由 FACL 设置的 FACL,+
当您执行ls -l
.然后您可以getfacl
对该文件使用该命令来查看它具有的附加权限。命令-x
上的标志用于setfacl
删除 FACL 列表中的条目。