2016-03-01 39 views
1

我使用Ansible設置Ubuntu Vagrant環境(使用VirtualBox提供程序)。我正在使用guest/Vagrant機器同步主機/本地機器上的目錄。與Vagrant和Ansible同步文件夾時由root擁有的用戶主目錄

are issues與同步的文件夾的權限,所以我指定我Vagrantfile的同步文件夾是這樣的:

config.vm.synced_folder "./path/to/local/dir", 
    "/home/deploy/webapps/myapp", 
    owner: 5000, group: 5000, mount_options: ['dmode=775', 'fmode=664'] 

然後在Ansible任務,當我創建了deploy用戶和組,我請將uidgid指定爲5000。這似乎是做事情的可接受方式之一。

然而,這導致deploy用戶的主目錄被root擁有的,而不是有其文件的全套:

[email protected]:~$ ls -al /home 
total 20 
drwxr-xr-x 5 root root 4096 Mar 1 17:20 . 
drwxr-xr-x 23 root root 4096 Mar 1 17:20 .. 
drwxr-xr-x 5 root root 4096 Mar 1 17:23 deploy 
drwxr-xr-x 3 ubuntu ubuntu 4096 Mar 1 17:19 ubuntu 
drwxr-xr-x 5 vagrant vagrant 4096 Mar 1 17:20 vagrant 

[email protected]:~$ ls -al /home/deploy 
total 24 
drwxr-xr-x 5 root root 4096 Mar 1 17:23 . 
drwxr-xr-x 5 root root 4096 Mar 1 17:20 .. 
-rw-r--r-- 1 root root 213 Mar 1 17:23 .bashrc 
drwxr-xr-x 12 deploy deploy 4096 Mar 1 17:26 .pyenv 
drwx------ 2 deploy deploy 4096 Mar 1 17:20 .ssh 
drwxr-xr-x 3 root root 4096 Mar 1 17:20 webapps 

[email protected]:~$ ls -al /home/deploy/webapps 
total 8 
drwxr-xr-x 3 root root 4096 Mar 1 17:20 . 
drwxr-xr-x 5 root root 4096 Mar 1 17:23 .. 
drwxrwxr-x 1 deploy deploy 850 Mar 1 14:53 myapp 

相反,如果我不同步文件夾中的Vagrantfile,再有顯著差異:

[email protected]:~$ ls -al /home 
total 20 
drwxr-xr-x 5 root root 4096 Mar 1 17:30 . 
drwxr-xr-x 23 root root 4096 Mar 1 17:30 .. 
drwxr-xr-x 5 deploy deploy 4096 Mar 1 17:37 deploy 
drwxr-xr-x 3 ubuntu ubuntu 4096 Mar 1 17:30 ubuntu 
drwxr-xr-x 5 vagrant vagrant 4096 Mar 1 17:30 vagrant 

[email protected]:~$ ls -al /home/deploy/ 
total 32 
drwxr-xr-x 5 deploy deploy 4096 Mar 1 17:37 . 
drwxr-xr-x 5 root root 4096 Mar 1 17:30 .. 
-rw-r--r-- 1 deploy deploy 220 Apr 9 2014 .bash_logout 
-rw-r--r-- 1 deploy deploy 3850 Mar 1 17:33 .bashrc 
drwx------ 2 deploy deploy 4096 Mar 1 17:37 .cache 
-rw-r--r-- 1 deploy deploy 675 Apr 9 2014 .profile 
drwxr-xr-x 12 deploy deploy 4096 Mar 1 17:37 .pyenv 
drwx------ 2 deploy deploy 4096 Mar 1 17:30 .ssh 

所以,同步該目錄時,爲什麼/home/deploy通過root擁有?爲什麼deploy用戶不能獲得.profile.bash_logout等文件?而且,最重要的是,我該如何糾正這一點?

+0

我想知道爲什麼這是從serverfault移動。我幾乎把它貼在了stackoverflow上 - 因爲我的大部分問題都在這裏被問到 - 但認爲它更像是一個服務器錯誤的東西,所以問它,作爲我的第一個問題,在那裏!不是問題,我只是好奇。 –

回答

1

我不知道有足夠的瞭解的Ubuntu等100%肯定這是發生了什麼事情,但它似乎是合理的......

我認爲,在/home/deploy/webapps/myapp創建同步文件夾時,流浪是可以理解,創建/home/deploy目錄及其內容。其所有者:組是root:root

所以,後來,當我Ansible劇本創建deploy用戶,它認爲它已經有一個主目錄,並且不與創建它的.bashrc等麻煩,或者重新設置其用戶:組的權限。

因此,爲了避免這種情況,我已經同步/webapps/myapp的文件夾,並將我的Ansible操作手冊更改爲期望該位置。似乎工作。

相關問題