Kubernetes挂载Windows SMB共享后ls无内容但可正常访问内部文件
问题根因与解决方案
你遇到的ls无法枚举目录、但可正常访问已知路径文件的问题,是Windows SMB共享和CIFS挂载参数不匹配、以及权限配置遗漏导致的,按以下步骤修复即可:
步骤1:修正挂载参数
需要在mountOptions中追加两个核心配置:
vers参数:指定和Windows端匹配的SMB协议版本,Win10/Server2016及以上版本指定vers=3.0,Win7/Server2008R2指定vers=2.1,避免默认协议版本不兼容导致的目录枚举异常cache=none:禁用CIFS客户端默认的目录缓存策略,该策略和Windows SMB的目录元数据同步逻辑冲突,会导致目录列表返回为空
步骤2:修正YAML缩进错误
你提供的YAML存在字段缩进错误,会导致配置加载异常,修正后的完整配置如下:
apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - name: busybox image: busybox command: - sleep - "3600" imagePullPolicy: IfNotPresent volumeMounts: - name: test mountPath: /data volumes: - name: test flexVolume: driver: "fstab/cifs" fsType: "cifs" secretRef: name: "cifs-secret" options: networkPath: "//server/share" mountOptions: "dir_mode=0755,file_mode=0755,noperm,vers=3.0,cache=none"
步骤3:验证Windows共享权限
确认cifs-secret中存储的SMB账号,在Windows端的共享权限和NTFS权限中,都开启了列出文件夹内容权限,仅开启读取文件权限时,就会出现可访问已知路径文件但无法枚举目录列表的问题。
验证方式
重新应用修正后的YAML,进入Pod执行以下命令确认修复:
df -h /data确认共享挂载正常ls -la /data可正常列出所有共享文件和目录
内容的提问来源于stack exchange,提问作者Sai Raghuram Kaligotla
相关产品推荐
相关产品推荐

