VM重新启动时还原Azure文件共享所有者/组权限

时间:2019-05-22 23:11:24

标签: azure ubuntu elasticsearch smb mount-point

我正在Ubuntu 16.04 LTS虚拟机上将Azure文件共享装载到/elasticdata/azshare。我使用以下脚本安装驱动器:

sudo mkdir /elasticdata/fileshare
if [ ! -d "/etc/smbcredentials" ]; then
sudo mkdir /etc/smbcredentials
fi
if [ ! -f "/etc/smbcredentials/fileshare.cred" ]; then
sudo bash -c 'echo "username=fileshare" >> /etc/smbcredentials/fileshare.cred'
sudo bash -c 'echo "password=password" >> /etc/smbcredentials/fileshare.cred'
fi
sudo chmod 600 /etc/smbcredentials/fileshare.cred

sudo bash -c 'echo "//fileshare.file.core.windows.net/analysis /elasticdata/fileshare cifs nofail,vers=3.0,credentials=/etc/smbcredentials/fileshare.cred,dir_mode=0777,file_mode=0777,serverino" >> /etc/fstab'
sudo mount -t cifs //fileshare.file.core.windows.net/analysis /elasticdata/fileshare -o vers=3.0,credentials=/etc/smbcredentials/fileshare.cred,dir_mode=0777,file_mode=0777,serverino,uid=$(id -u elasticsearch),gid=$(id -g elasticsearch)

在最后一行中,我将所有者和安装位置的组设置为用户elasticsearch的所有者。安装驱动器后,我可以验证这是真的。

然后我像这样建立一个符号链接:

ln -s /elasticdata/fileshare/analysis /etc/elasticsearch

/etc/elasticsearch/analysis中,我可以看到所有者和组是elasticsearch用户的所有者和组。

重新启动VM时,我设置的所有者和组权限恢复为root用户的权限,由于以下错误,我的Elasticsearch集群无法启动:

[HTTP/1.1 500 Internal Server Error]{"error":{"root_cause":[{"type":"access_control_exception","reason":"access denied (\"java.io.FilePermission\" \"/etc/elasticsearch/analysis/charmapping.txt\" \"read\")"}],"type":"access_control_exception","reason":"access denied (\"java.io.FilePermission\" \"/etc/elasticsearch/analysis/charmapping.txt\" \"read\")"},"status":500}`.

如何防止恢复权限?或者,如何让Elasticsearch以不同的方式访问文件?

1 个答案:

答案 0 :(得分:1)

尝试在启动时使用/ etc / fstab挂载cifs文件系统。

基本的/ etc / fstab看起来像这样

/dev/hda2   /              ext2 defaults             1 1
/dev/hdb1   /home          ext2 defaults             1 2
/dev/cdrom  /media/cdrom   auto ro,noauto,user,exec  0 0
/dev/fd0    /media/floppy  auto rw,noauto,user,sync  0 0
proc        /proc          proc defaults             0 0
/dev/hda1   swap           swap pri=42               0 0

我的猜测是您要在cifs文件系统的文件中添加一行。它应该看起来像这样。

//fileshare.file.core.windows.net/analysis /elasticdata/fileshare cifs defaults,uid=<user id you want>,gid=<group id you want> 0 0