当我尝试使用以下命令进行挂载时:
mount -v -t cifs //<storageaccount>.file.core.windows.net/<sharename> <localfolder> -o username=<myuser>,password=<storageaccountkey>,dir_mode=0777,file_mode=0777,vers=3.0
如果我使用等效的命令从Azure Ubuntu VM或Windows机器运行它,它将很好地工作。
试图在我的Linux机器上运行相同的命令我得到以下错误:
挂载错误(13):权限被拒绝
而这从dmesg :
[9421.865985]状态码返回0xc0000022 STATUS_ACCESS_DENIED
[9421.865994] CIFS VFS:在SessSetup = -13中发送错误
[9421.866098] CIFS VFS:cifs_mount失败,返回码= -13
我拥有与VM相同版本的CIFS :6.4。
我在我的内核(4.4.21-gentoo)中启用了SMB2-SMB3-SMB3.1.1(实验)。
我也安装了samba (也不适用于smbclient),但我的理解是不相关的。
不幸的是,你还不能。 如果安装在Azure数据中心之外,则仅支持Windows 8,10和Windows Server 2012(R2)。
Linux SMB客户端尚不支持encryption,因此从Linux安装文件共享仍然要求客户端与文件共享位于相同的Azure区域。 但是,对Linux的encryption支持是负责SMBfunction的Linux开发人员的路线图。 未来支持encryption的Linux发行版也将能够从任何地方安装Azure文件共享。
更多信息:
https://azure.microsoft.com/en-us/documentation/articles/storage-how-to-use-files-linux/#overview
我肯定会推荐你产生一个基于Windows的虚拟机来完成这项工作。 当我在Windows上需要可靠的NFS服务器/客户端时,我在Windows上做了一个不同的故事。
它是否适合你的smbclient?
这适用于我,而“mount -t cifs -overs = 3.0”…不。
smbclient //foo.file.core.windows.net/test -mSMB3 -e -Ufoo%longkeyhere==
根据你的描述,我再次testing一下。 不幸的是,我们无法在Azure虚拟机之外安装文件共享。 您可以使用命令检查已安装的软件包和操作系统的内核。
即使虚拟机的软件包和操作系统的内核相同,我们也无法在本地虚拟机上安装Azure文件共享。 实际上,在Azure VM中托pipe的Linux服务器将会工作,因为如果客户端与文件共享处于相同的Azure区域,则Azure文件存储将接受SMB2.1连接。
但是,当您尝试从本地安装时,Azure文件存储请求使用从客户端强制encryption的SMB 3.0,但是SMB 3.0encryption是Linux不支持的内容,因此即使您指定的SMB 3.0在你的命令。
这是我的情况….
当我尝试使用SMB 3.0(我的虚拟机在Azure上,我的存储帐户也在同一地区)与SMB 3.0,我一直在获取安装错误。 但是,当我将SMB版本更改为2.1时,它取得了成功。 参见下面的例子
例如:
sudo mount -t cifs //storageaccountname.file.core.windows.net/shared /mnt/mount -o vers=3.0,username=xxxxxxx,password=xxxxxxxx,dir_mode=0777,file_mode=0777
结果:
挂载错误(11):资源暂时不可用请参考mount.cifs(8)手册页(例如man mount.cifs)
sudo mount -t cifs //storageaccountname.file.core.windows.net/shared /mnt/mount -o vers=2.1,username=xxxxxxx,password=xxxxxxxx,dir_mode=0777,file_mode=0777
结果:
它成功挂载