Pull to refresh

Comments 20

Какая же дичь. Ну серьёзно.

Когда мы запускаем git pull с помощью PHP, команда выполняется не из root пользователя. Поэтому Bitbucket не распознает наш SSH-ключ. Из-за этого возникает ошибка доступа, если репозиторий закрытый.

Какая прелесть.

Это не дичь, это действительно так. Попробуйте запулить из под PHP ключом рута.

Я полагаю, что автор комментария назвал "дичью" то, что вы работает с git под рутом (иначе откуда эти ожидания, что подтянется ssh ключ именно его).

Ну пусть будет не рут, а другой пользователь. От этого суть не меняется.

Вы реально не понимаете в чем суть?
PHP Запускается от того пользователя которым вы запускаете. Поэтому совершенно ОЧЕВИДНО, что ssh ключ нужно настраивать для того пользователя, под которым вы работаете. Ни рут ни что-то еще в этом контексте не должен упоминаться в принципе. Если вы не можете контролировать свои действия и понимать под каким юзером вы запускаете программы, это как бы и есть дичь. К этому и претензия.


Ваша же фраза выглядит как
я вот сижу под пользователем USER, но когда запускаю php "myscript", оно выполняется не от рута.
Дичь же?

Суть не меняется, но проект под рутом дичью быть не перестает. Прямо каким-то ЛОР-ом из дремучих нулевых повеяло.

А почему бы для сайта не сделать отдельного пользователя? Настроить чтоб nginx от него работал, и git тоже. И не надо будет так веселиться с правами.

Да, тоже можно. Но разве это не займет больше времени, чем мой вариант?

Ну у меня нет, у меня все так изначально настроено, у каждого сайта свой пользователь, даже если он один на ВПС. Так проще обновлять, зашел на сервер по ключам под этим пользователем, перешел в нужную папку и набрал git pull (ну или заходить под рутом и переключаться на нужного юзера если несколько сайтов и лень всем делать ключи и настраивать Патти). Ну и деплой по вэбхуку мне бы точно было проще настроить, только реализовать метод контроллера с нужными действиями.

Ну он и делает примерно то же самое.
Ну точнее он выясняет, под каким пользователем работает php-fpm, и дальше создает ключ для этого пользователя. В целом, система немного гибче получается. У интерактивного пользователя свой ключ, у какого-нибудь www-data — свой.

А в чем гибкость? Придется извращаться с правами на файлы чтоб обновлять. И как я помню у www-data нет домашней директории, куда он ключи сохраняет и git конфиг? Как по мне лучше отдельный пользователь, не надо так веселится с правами и конфигами. Всё настраивается под него, и удобно работать, сайт создаёт файлы под тем же пользователем (загрузка, генерация, и т.п.). Удобно редактировать кронтаб для этого пользователя и запускать консольные скрипты находясь в нужной директории нужным пользователем.

Ну почему нет домашней директории. Для www-data ключ создается в /var/www, там и можно конфиг файл гита создать.

Когда несколько сайтов как по мне безопасней когда каждый под своим пользователем, если какой-то взломают, то хоть до других по файловой системе не доберуться. Ну и еще мелочь: на www-data нельзя переключиться sudo -u www-data -i. Особенно если много нужно сделать в файлах мне например неудобно каждый раз писать sudo -u www-data mcedit .... Но это на любителя. У меня в хозяйстве один такой сайт, так админ заказчика настоял. Радует что ковыряться на том сервере приходится раз в год.

Кстати, есть решение, чтобы переключаться на пользователя, для которого не предусмотрен логин.

Вот да. Тем более, что делается это элементарно (о чем я узнал только на старости лет): www-data добавляется в группу пользователя и домашней папочке ставится 750. Учитывая что fpm и так под юзером, получается полное разграничение.

Для это существует bitbucket pipelines, а не велосипеды через хуки

Писать скрипт который будет обновлять по хттп запросу. Играть с секурностью. Дебажить...

Или написать несколько строк пайплайна в том же битбаккете

Sign up to leave a comment.

Articles