因git主要用于版本管理,代码同步方面,因临时调试等原因,需要使用ftp上传文件。
但因为git的账户为ubuntu,ftp是虚拟账户overlord, www-data是apache的用户
导致文件权限不同,出现的问题主要有:
1.ftp无法覆盖已有的文件
2.git无法更新ftp上传的文件
解决方案:
- 应该先创建一个目录,用于放置代码的。需要对这个目录进行一些初始化操作,
usermod -aG overlord ubuntu # 把用户ubuntu 添加到overlord用户组 mkdir testcode chown overlord.overlord testcode/ chmod 775 testcode/ chmod g+s testcode/ # 文件夹下新文件夹继承上级用户组
修改vsftpd的账户的配置
local_umask=002
查看 umask,确保是0002--如果不是,使用 umask 002 查看ubuntu用户的umask
$ umask $ 0002
- 首先,第一次代码上传建议使用git克隆clone一份到服务器,这样的好处是开发人员可以预先整理一次代码,筛选需要版本管理的代码
git clone https://git.dxgz.work/zhuangdx/timer_deleter.git ubuntu@ubuntu:./timer_deleter$ ll total 44 drwxrwsr-x 5 ubuntu overlord 4096 Mar 21 17:44 ./ drwxrwsr-x 3 overlord overlord 4096 Mar 21 17:44 ../ -rw-rw-r-- 1 ubuntu overlord 636 Mar 21 17:44 add_cron_td_job.sh drwxrwsr-x 2 ubuntu overlord 4096 Mar 21 17:44 conf/ drwxrwsr-x 8 ubuntu overlord 4096 Mar 21 17:44 .git/ -rw-rw-r-- 1 ubuntu overlord 5 Mar 21 17:44 .gitignore -rw-rw-r-- 1 ubuntu overlord 4393 Mar 21 17:44 handle.py -rw-rw-r-- 1 ubuntu overlord 1065 Mar 21 17:44 LICENSE -rw-rw-r-- 1 ubuntu overlord 1651 Mar 21 17:44 README.md -rw-rw-r-- 1 ubuntu overlord 0 Mar 21 17:44 run.log drwxrwsr-x 2 ubuntu overlord 4096 Mar 21 17:44 utils/
上面可以看出来,用户组和所有者的权限一致。这样在 overlord组的用户都可以进行文件读写操作
- ftp属于overlord,这样git与ftp进行文件操作,都不会因权限问题而无法操作。
以上