GitLab备份与还原过程中的权限问题

转载请注明原作者,如果觉得有用,不用请我喝咖啡:D

在对GitLab进行备份(Backup)与还原(Restore)时,分别遇到了权限相关的问题。
备份时,执行

1
gitlab-rake gitlab:backup:create

得到错误提示

1
Errno::EACCES: Permission denied @ dir_s_mkdir - /var/opt/gitlab/backups

没有执行mkdir的权限。

而在Restore时,执行

1
gitlab-rake gitlab:backup:restore BACKUP=1393513186

其中1393513186为backup的时间戳编号,会在gitlab_backup.tar文件的文件名体现。

又遇到大量的mkdir、找不到文件/文件夹错误。

而我是用root用户登录的,联想可能是相关的文件夹权限有问题。
backups是我使用mkdir命令创建的,并没有特别分配权限,于是使用 ls -al 命令查看backups文件夹的权限。
发现值为

1
drwxr-xr-x. 2 root root 4096 216 10:08 backups

判断是执行实际操作的gitlab相关用户:git,没有得到足够的权限。依次执行命令:

1
2
3
4
5
root@myserver:~# mkdir /var/opt/gitlab/backups

root@myserver:~# chown git /var/opt/gitlab/backups

root@myserver:~# chmod 700 /var/opt/gitlab/backups

笔者之前使用了 rm -rf backups 命令移除整个backups文件夹,所以需要再次mkdir。如果该文件夹已经存在,就不需要mkdir了。

以上命令执行完成后,再次 ls -al
发现backups的权限已经发生改变了:

1
drwx------. 2 git root 4096 216 10:18 backups

再次执行backup或者restore,已经可以正常运行,问题解决。

Reference:issue644 - Permissions issue when creating backups