Docker vieux/sshfs权限被拒绝。

5
  1. 我使用vieux/sshfs创建了一个卷
docker plugin install --grant-all-permissions vieux/sshfs
docker volume create  -d vieux/sshfs   -o sshcmd=usfo@192.168.1.1:/swarm-study/web/data  -o password='123' sshvolume
  1. 我在容器中创建了一个用户 :usfo

    Dockerfile:
FROM debian
COPY sources.list /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y apache2
RUN apt-get install -y php7.0 php7.0-mysql
COPY apache2.conf /etc/apache2/apache2.conf

RUN groupadd -g 1000 usfo
RUN useradd  -u 1000 -g 1000 usfo

COPY index.php /var/www/html/index.php
RUN mkdir /autorun
COPY autorun.sh /autorun/autorun.sh
RUN chmod 755 /autorun/autorun.sh
RUN mkdir /html-data
CMD ./autorun/autorun.sh
  1. 并且使用usfo用户运行apache

    apache2.conf:
User usfo
Group usfo
  1. 使用此命令运行容器
docker run -itd -p 80:80 --mount type=volume,source=sshvolume,destination=/swarm-data debian2
  1. 但是我遇到了麻烦,只有root用户可以访问,usfo用户无法访问
root@e3ca660f3a8d:/# su root
root@e3ca660f3a8d:/# ls -l /swarm-data
total 8
-rw-r--r-- 1 usfo usfo 1136 Dec 26 02:37 Desktop.rar
-rw-r--r-- 1 usfo usfo    7 Dec 26 02:18 a.txt
root@e3ca660f3a8d:/# ls -l / | grep swarm-data drwxr-x--- 1 usfo usfo 4096 Dec 26 02:37 swarm-data
root@e3ca660f3a8d:/# su usfo
$ ls -l / |grep swarm-data
ls: cannot access '/swarm-data': Permission denied
d?????????   ? ?    ?       ?            ? swarm-data
  1. 尝试不使用vieux/sshfs,它可以工作!但是我必须使用vieux/sshfs!!
使用docker运行一个名为debian2的容器,并将容器内的80端口映射到主机的80端口,同时将主机的/swarm-study/web/data目录挂载到容器内的/swarm-data目录。在容器内切换到usfo用户并查看/swarm-data目录的权限和所有者信息。

docker版本:17.09.1-ce

Debian 9

1个回答

3

引用:https://github.com/vieux/docker-volume-sshfs/issues/17
感谢 @koenlek

事实证明,您需要使用 sshfs 的 -o allow_other 选项。

docker volume create  -d vieux/sshfs   -o sshcmd=usfo@192.168.1.1:/swarm-study/web/data  -o allow_other -o password='123' sshvolume
root@f5132a8f4b84:/# su usfo
$ ls -l / | grep swarm-data
drwxr-x---   1 usfo usfo 4096 Dec 26 10:54 swarm-data

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接