Назад | Перейти на главную страницу

Git clone - сбрасывает репо с пользователем / группой как 0 0

Это следует из мой предыдущий вопрос но отличается, поскольку это касается конкретно Git.

Когда я клонирую репозиторий Git на моем сервере, он успешно сбрасывает репо, но с CHMOD 0755 и, что особенно важно, со статусом владельца / группы «0/0».

(В моем предыдущем вопросе я предполагал, что это делает сервер. Когда я создавал папку вручную, т.е. mkdir ..., Я получил тот же результат, но пришел ответ, что это потому, что я делал это как пользователь root. Изменение на пользователя, которому принадлежит рассматриваемая учетная запись CPanel, решило проблему.)

Однако проблема для Git сохраняется, хотя я выполняю операцию клонирования как пользователь CPanel, а не root. Так:

sudo -u dev -i
echo $USER //<-- "dev"
git clone https://github.com/etc...

Странно то, что я не получить эту проблему, если я создам папку через FileZilla, даже если FZ подключен как тот же пользователь, то есть dev.

Любая помощь приветствуется.

Я попробовал вашу точную последовательность команд на сервере Linux (начиная с root пользователь sudo -i -u dev, и git clone) и папка была создана, как и ожидалось, как пользователь dev. Возможно, папка уже существовала с вашей предыдущей попытки как root?

В любом слючае, chown -R dev:dev /path/to/git/repo должен уметь это исправить.

РЕДАКТИРОВАТЬ: если эта проблема влияет только на git (и нет touch XYZ), может проверить Шаблоны Git чтобы увидеть, действуют ли какие-либо специальные крючки. Владение группой может зависеть от бит setgid (например, chmod g+s ...), но я не думаю, что есть эквивалент владения пользователем.

Вы можете столкнуться с синтаксической проблемой. Вы можете попробовать это:

sudo -i <<-"eoSudoCmd"
    echo $USER
    cd /TargetDir
    git clone https://github.com/etc...
eoSudoCmd

Этого будет достаточно, если ваша цель - получить root как владелец (0 0), Но оттуда (не понимаю, почему -u dev в вашем запросе) вы можете просто добавить -u dev к sudo команда или даже:

sudo -i <<-"eoSudoCmd"
    su - dev <<-"eoDevCmd"
         echo $USER
         cd /TargetDir
         git clone https://github.com/etc...
eoDevCmd
eoSudoCmd

(обозначение для удобочитаемости, eoDevCmd может быть с отступом, но Вкладка только! Без пробелов!)

Пытаться:

git config core.filemode false

А потом снова клонировать репо.

https://git-scm.com/docs/git-config#Documentation/git-config.txt-corefileMode https://medium.com/@tahteche/how-git-treats-changes-in-file-permissions-f71874ca239d