Как исправить разрешение, запрещенное для каталога .git/при выполнении git push?

Я установил репозиторий git на моем сервере. Создал нового пользователя git. Мои репозитории находятся в /srv/git/example.git. Я смог git remote add origin [email protected]/srv/git/example.git, затем добавил и внес свои изменения.

Однако, когда я попробовал git push origin master, это не удалось:

fatal: невозможно создать временный файл: разрешено denied 'и' fatal: ошибка записи файла sha1: недопустимый аргумент '

На сервере я побежал:

sudo chown -R git:git /srv/git/`

Это фиксировало мою проблему, но мне интересно, правильно ли это делать?

Ответы

Ответ 1

На сервере я запустил sudo chown -R git: git/srv/git/- это исправило мою проблему, но мне интересно, правильно ли это делать?

Совершенно верно. Ранее проблема заключалась в том, что пользователь git, который вы входите в систему через SSH, не смог записать в репозиторий.

В зависимости от ваших потребностей вы можете рассмотреть различные комбинации пользователей и SSH-ключей или одну из многих дополнительных программ (гитолит и т.д.), которые могут использоваться для более точного контроля доступа.

Ответ 2

Во-первых, исправьте разрешения файлов в удаленном каталоге .git, например.

sudo chmod -R ug+w /var/www/.git
sudo chown -R git:git /var/www/.git

или root:root, если вы хотите назначить членов группы root для push-доступа.

Затем репозиторий git на целевом хосте должен быть установлен как общий, поэтому необходимо выполнить следующую команду на удаленном компьютере:

git config core.sharedRepository group