Azure 文件权限
Permissions on Azure File
我正在使用 azure 文件作为 kubernetes 的卷,但我遇到了问题。
我可以设置整个共享的权限,但我无法更改特定 file/directory 的权限。
如果我将默认权限设置为整个共享(例如 644 (rw/r/r))并尝试更改特定文件(例如 Chmod 0644 文件)的此权限,chmod 不会产生任何影响它总是默认权限。
即使我没有提到默认权限也需要 0777,但我无法在共享中更改 file/directory 的权限。
我做了一些研究,我发现这个功能还没有实现来源是 2016 年我希望现在启用这个功能?
不然还有什么解决方案可以提出吗?
此致,
更新
非常感谢@Charles Xu的建议非常有用。我使用了你的介词,但让我稍微解释一下我的用例:
- 我需要对同一目录具有不同的文件权限,因为该目录用于 SSH。我可以更改文件夹 .ssh 的权限,因此其中的所有文件都有 0644 但如您所知,我必须将私钥的权限更改为 0600
必须更改私钥的权限,否则SSH将无法使用。
-rw-r--r-- 1 userx userx 182 Oct 8 15:13 配置
-rw-r--r-- 1 userx userx 1675 Oct 8 15:13 id_rsa
-rw-r--r-- 1 userx userx 409 10 月 8 15:13 id_rsa.pub
首先,只有将整个Azure文件共享作为持久卷挂载到pods上,才能控制整个Azure文件共享的权限。不支持更改共享内特殊文件的权限。
我推荐的是可以将文件过滤到不同目录下,同一目录下的文件权限相同。然后您可以将 Azure 文件共享的目录作为不同的持久卷挂载到 pods 并根据需要为持久卷设置不同的权限。
比如你需要一个权限为0644的目录,里面的文件权限为0664,那么你可以这样创建一个持久卷:
apiVersion: v1
kind: PersistentVolume
metadata:
name: azurefile
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
storageClassName: azurefile
azureFile:
secretName: azure-secret
shareName: aksshare/subfolder1
readOnly: false
mountOptions:
- dir_mode=0644
- file_mode=0664
- uid=1000
- gid=1000
- mfsymlinks
- nobrl
并创建一个 PersistentVolumeClaim,它将使用您在上面创建的 PersistentVolume:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azurefile
spec:
accessModes:
- ReadWriteMany
storageClassName: azurefile
resources:
requests:
storage: 5Gi
最后,使用带有 volumes
的 PersistentVolumeClaim 创建 pod,如下所示:
...
volumes:
- name: azure
persistentVolumeClaim:
claimName: azurefile
当一切正常时,您可以看到如下设置的内容:
我正在使用 azure 文件作为 kubernetes 的卷,但我遇到了问题。
我可以设置整个共享的权限,但我无法更改特定 file/directory 的权限。
如果我将默认权限设置为整个共享(例如 644 (rw/r/r))并尝试更改特定文件(例如 Chmod 0644 文件)的此权限,chmod 不会产生任何影响它总是默认权限。
即使我没有提到默认权限也需要 0777,但我无法在共享中更改 file/directory 的权限。
我做了一些研究,我发现这个功能还没有实现来源是 2016 年我希望现在启用这个功能?
不然还有什么解决方案可以提出吗?
此致,
更新
非常感谢@Charles Xu的建议非常有用。我使用了你的介词,但让我稍微解释一下我的用例:
- 我需要对同一目录具有不同的文件权限,因为该目录用于 SSH。我可以更改文件夹 .ssh 的权限,因此其中的所有文件都有 0644 但如您所知,我必须将私钥的权限更改为 0600
必须更改私钥的权限,否则SSH将无法使用。
-rw-r--r-- 1 userx userx 182 Oct 8 15:13 配置
-rw-r--r-- 1 userx userx 1675 Oct 8 15:13 id_rsa
-rw-r--r-- 1 userx userx 409 10 月 8 15:13 id_rsa.pub
首先,只有将整个Azure文件共享作为持久卷挂载到pods上,才能控制整个Azure文件共享的权限。不支持更改共享内特殊文件的权限。
我推荐的是可以将文件过滤到不同目录下,同一目录下的文件权限相同。然后您可以将 Azure 文件共享的目录作为不同的持久卷挂载到 pods 并根据需要为持久卷设置不同的权限。
比如你需要一个权限为0644的目录,里面的文件权限为0664,那么你可以这样创建一个持久卷:
apiVersion: v1
kind: PersistentVolume
metadata:
name: azurefile
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
storageClassName: azurefile
azureFile:
secretName: azure-secret
shareName: aksshare/subfolder1
readOnly: false
mountOptions:
- dir_mode=0644
- file_mode=0664
- uid=1000
- gid=1000
- mfsymlinks
- nobrl
并创建一个 PersistentVolumeClaim,它将使用您在上面创建的 PersistentVolume:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: azurefile
spec:
accessModes:
- ReadWriteMany
storageClassName: azurefile
resources:
requests:
storage: 5Gi
最后,使用带有 volumes
的 PersistentVolumeClaim 创建 pod,如下所示:
...
volumes:
- name: azure
persistentVolumeClaim:
claimName: azurefile
当一切正常时,您可以看到如下设置的内容: