我遇到类似的问题,因为用户无法访问他们拥有的目录的内容。 快速search显示了不less其他类似的问题,但问题总是似乎是没有在目录上设置执行位。 也许我已经错过了这么长时间盯着这个东西,但这似乎不是我的问题。
与其他问题一样,可能更容易显示:
me@docker-host:~$ docker exec -it sp-rsync-1 bash root@sp-rsync-syn-send:/# su --login sync_user sync_user@sp-rsync-syn-send:~$ ls -al total 24 drwxr-xr-x 6 sync_user sync_user 4096 Feb 9 20:24 . drwxr-xr-x 6 root root 4096 Feb 9 20:24 .. -rw-r--r-- 1 sync_user sync_user 220 Apr 9 2014 .bash_logout -rw-r--r-- 1 sync_user sync_user 3637 Apr 9 2014 .bashrc -rw-r--r-- 1 sync_user sync_user 675 Apr 9 2014 .profile drwx------ 2 sync_user sync_user 4096 Feb 9 20:24 .ssh
如您所见,.ssh目录由拥有0700权限的sync_user拥有。 然而:
sync_user@sp-rsync-syn-send:~$ ls -al .ssh/ ls: cannot open directory .ssh/: Permission denied
但是看起来用户拥有这个目录:
sync_user@sp-rsync-syn-send:~$ chmod 0777 .ssh sync_user@sp-rsync-syn-send:~$ ls -al total 28 drwxr-xr-x 7 sync_user sync_user 4096 Feb 9 21:23 . drwxr-xr-x 7 root root 4096 Feb 9 21:05 .. -rw------- 1 sync_user sync_user 58 Feb 9 21:05 .bash_history -rw-r--r-- 1 sync_user sync_user 220 Apr 9 2014 .bash_logout -rw-r--r-- 1 sync_user sync_user 3637 Apr 9 2014 .bashrc -rw-r--r-- 1 sync_user sync_user 675 Apr 9 2014 .profile drwxrwxrwx 2 sync_user sync_user 4096 Feb 9 20:24 .ssh
这不是有帮助:
sync_user@sp-rsync-syn-send:~$ ls -al .ssh/ ls: cannot open directory .ssh/: Permission denied
多一点信息:
sync_user@sp-rsync-syn-send:~$ ls -ain total 24 885 drwxr-xr-x 6 1200 1200 4096 Feb 9 20:24 . 852 drwxr-xr-x 6 0 0 4096 Feb 9 20:24 .. 905 -rw-r--r-- 1 1200 1200 220 Apr 9 2014 .bash_logout 890 -rw-r--r-- 1 1200 1200 3637 Apr 9 2014 .bashrc 889 -rw-r--r-- 1 1200 1200 675 Apr 9 2014 .profile 904 drwx------ 2 1200 1200 4096 Feb 9 20:24 .ssh sync_user@sp-rsync-syn-send:~$ id sync_user uid=1200(sync_user) gid=1200(sync_user) groups=1200(sync_user)
退回到根目录并列出目录权限:
root@sp-rsync-syn-send:/# ls -ail /home/sync_user/.ssh/ total 16 904 drwx------ 2 sync_user sync_user 4096 Feb 9 20:24 . 885 drwxr-xr-x 6 sync_user sync_user 4096 Feb 9 21:05 .. 917 -rw------- 1 sync_user sync_user 394 Feb 9 18:51 authorized_keys 916 -rw------- 1 sync_user sync_user 1679 Feb 9 18:51 id_rsa
此外, /home和/的权限为0755,作为所有者和组的根。
root@sp-rsync-syn-send:/# ls -al /home total 12 drwxr-xr-x 7 root root 4096 Feb 9 21:05 . drwxr-xr-x 88 root root 4096 Feb 9 21:17 ..
作为构build过程的一部分,用户已经在Docker容器中创build了,因此我的怀疑是,这或者是由于我要这个用户(因此明确使用su --login ,或者这可能是AUFS文件系统的问题。
更新
只是为了certificate我是在正确的地方:
sync_user@sp-rsync-syn-send:~$ pwd /home/sync_user
2016年2月19日更新
我不认为这是一个解决scheme,因为我侧面提出了原来的问题,所以我不打算发表是一个答案。 对我而言,我停止使用mkdir注释明确创build.ssh目录,而是通过将.ssh放置在/ etc / skel中来创build.ssh。
Richard在下面的评论中指出,AUFS文件系统存在Docker错误,我认为这是造成这个问题的原因。 不幸的是,我没有时间进一步将其视为真正的原因或是否有解决scheme。
潜在的一些相关的事实,其他人都在这个问题上磕磕绊绊:Docker版本:1.9.1