首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何授予非root用户对kubernetes SBM flexvolume挂载的写权限?

如何授予非root用户对kubernetes SBM flexvolume挂载的写权限?
EN

Stack Overflow用户
提问于 2021-10-24 16:12:09
回答 1查看 314关注 0票数 2

请帮帮我!我已经为此挣扎了几天了.

我试图以非root用户的身份写入Kubernetes pod中的挂载,但被拒绝访问。

在Kubernetes清单中,我挂载了一个windows共享文件夹,如下所示:

代码语言:javascript
复制
kind: Deployment
apiVersion: apps/v1
metadata:
  name: centos-deployment
spec:
  template:
    spec:
      volumes:
        - name: windows-mount
          flexVolume:
            driver: microsoft.com/smb
            secretRef:
              name: centos-credentials
            options:
              mountOptions: 'cifs,dir_mode=0777,file_mode=0777'
              source: //100.200.300.400/windows-share
      containers:
        - name: centos-pod
          image: 'centos:latest'
          command:
            - sh
            - '-c'
            - sleep 1000000        
          volumeMounts:
            - name: windows-mount
              mountPath: /var/windows-share

在Dockerfile中,我更改为应用程序用户,如下所示:

代码语言:javascript
复制
# Drop from 'root' user to 'nobody' (user with no privileges).
USER nobody:nobody

但是现在,挂载的所有者是"root“。"root“用户可以写入该路径,但用户"nobody”不能。

我尝试初始化容器以在文件夹上运行chmod -R 775,但看起来根用户无法更改装载的权限或所有权。(umask命令返回022)

如果我exec进入pod,我可以看到挂载被设置为755权限,而不是777 "file_mode=0755,dir_mode=0755“

代码语言:javascript
复制
[root@centos-deployment-5d46bd8b89-tzghs /]# mount | grep windows-share
//100.200.300.400/windows-share on /var/windows-share type cifs (rw,relatime,vers=default,cache=strict,username=*******,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=100.200.300.400,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1)

您知道如何挂载Windows共享以使其可由非root用户写入吗?

谢谢!如有任何帮助,将不胜感激

EN

回答 1

Stack Overflow用户

发布于 2021-10-24 17:27:49

完整参考:https://linux.die.net/man/8/mount.cifs

试试玩mountOptions吧。例如:

uid=arg -当服务器不提供所有权信息时,设置将拥有已装载文件系统上所有文件或目录的uid。它可以指定为用户名或数字uid。如果未指定,则默认值为uid 0。mount.cifs帮助器的版本必须为1.10或更高版本,才能支持以非数字形式指定uid。有关详细信息,请参阅下面关于文件和目录所有权和权限的部分。

代码语言:javascript
复制
      volumes:
        - name: windows-mount
              ...
            options:
              mountOptions: 'cifs,uid=<YOUR_USERNAME>,dir_mode=0777,file_mode=0777'

如果这不起作用,您还可以尝试添加noperm挂载选项。

noperm -客户端不执行权限检查。这可以公开此装载上的文件,以供本地客户端系统上的其他用户访问。通常仅当服务器支持CIFS Unix扩展,但客户端和服务器系统上的UID/GID不完全匹配,无法允许执行装载的用户进行访问时,才需要它。请注意,这不会影响由服务器软件在目标计算机上执行的正常ACL检查(服务器ACL对装载时提供的用户名的检查)。

代码语言:javascript
复制
      volumes:
        - name: windows-mount
              ...
            options:
              mountOptions: 'cifs,dir_mode=0777,file_mode=0777,noperm'

关于在通用文件系统上使用chmod/chown

核心通用directories文件系统协议

不提供文件和目录的unix所有权信息或模式。因此,无论设置uid=或gid=选项的值是什么,文件和目录通常看起来都归它们所有,并将权限设置为装载的默认file_mode和dir_mode。尝试通过chmod/chown更改这些值将返回成功,但没有效果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69698588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档