Як я не дозволяю git вимагати sudo для кожної команди git


11

Я створив каталог /var/wwwдля зберігання клонів у своїх веб-додатках. Коли я спочатку клонував додаток від GitHub, це вимагало від мене використання судо, і кожен раз, коли я це роблю, git pullце вимагає судо. У мене виникають деякі проблеми через це. Наприклад, мої ключі ssh не відповідають. Тому коли я роблю своє git pull, мені доведеться використовувати HTTPS замість ssh і вручну вводити своє ім’я користувача та пароль щоразу, коли я хочу витягнути та оновити додаток. Як це налаштувати, щоб мені не довелося використовувати sudo кожен раз, коли я використовую git?

Відповіді:


13

Тут відбувається декілька речей:

  • Коли ви sudo git checkout ..., всі ці файли належать користувачу root та кореневій групі. За допомогою стандартних дозволів, тому для наступних змін цих файлів потрібно мати root.

  • /var/www/за замовчуванням належить www-dataгрупі. Щось ваш користувач за замовчуванням не є.

Найпростіший спосіб записатись /var/www/- це просто додати свого користувача до групи даних www . Звичайно, ви можете змінити каталог, що належить вашому користувачеві, але це може мати негативні наслідки, якщо ви їх не попередньо використовуєте.

Вам потрібно буде знову увійти після додавання користувача до групи даних www.

У вашому конкретному випадку вам потрібно буде виправити поточну безладність даних, що належать кореням. Ви можете видалити його як корінь (і повторно оформити замовлення), але якщо у вас збережена робота, буде просто чистіше, щоб перетягнути все назад на свого користувача. Наступний приклад надзвичайно ледачий і передбачає, що про що ми говоримо - це єдине, що в / var / www /:

sudo chown -R www-data: /var/www/

Гаразд, було б краще просто перейти sudo git checkoutв інший каталог, а потім розгорнути мою програму в каталозі / var / www? Я просто десь прочитав, що, як правило, не дуже гарна ідея запускати проекти в каталог var для початку. Одна людина рекомендувала перевірити проекти в домашній каталог
Скотт,

2
Було б найкраще, якби ви перестали виконувати git як root. Мета цього. Будь-який план, який залишає вас запустити його як root, вже не вдався. Що ви говорите про перевірити в ВебКаталог правильно - дати людям доступ до .gitкаталогу може дати їм доступ до речей , які ви не хочете , щоб дозволити людям доступ, але ви можете заборонити доступ до .git/директорії пом'якшувальний все питання.
Олі

Існують також інші прийнятні структури каталогів, де у вас є каталог із вмістом для вашого веб-сайту, куди заходять не розміщені файли (включаючи ваш. Етос збереження одного веб-сайту в / var / www / дуже архаїчний.
Олі

Чи маєте рекомендовану структуру каталогів? В основному, у мене є замовлення, і тоді я повинен зв'язати це в .tgz. І тоді я маю знімати це в додаток до вузла. Це, до речі, метеорний додаток. Я дещо плутаюся, де зберігати ці три окремі папки / файли
Скотт,

@Scott Я зіткнувся з цим самим питанням. Подальші підкоманди в репо (в моєму випадку) зателефонують git і спробують клонувати інші репости. Рішенням, щоб повторно вирівняти SSH ключі, як ви заявили, було запустити процес без використання sudo. Багато цього обговорення питань, запитань та потоків - це обробка, яка, ймовірно, призведе до того, що ви б’єте стіни вниз по дорозі.
Йордан Стефанеллі

0

Гм, змінити власника папки? Я перемістив папку www у / home / username, ви можете змінити її місцезнаходження в / etc / apache2 / включеному сайтах / за замовчуванням 000


Так це стосується каталогу, в якому я зберігаю свого клона?
Скотт

Так, саме. За замовчуванням /var/wwwнеможливо записати.
Joyfulgrind

0

Я трохи запізнююся з цією відповіддю, але я виявив, що щоб уникнути введення пароля щоразу, мені довелося змінювати репо з https на ssh.

З довідкового розділу Github.com:

Команда git remote set-url змінює існуючу URL-адресу віддаленого сховища.

Відкритий термінал.

Змініть поточний робочий каталог на свій локальний проект.

Перелічіть наявні пульти, щоб отримати ім’я віддаленого пристрою, який ви хочете змінити.

git remote -v
origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
origin  https://github.com/USERNAME/REPOSITORY.git (push)

Змініть URL-адресу вашого віддаленого з HTTPS на SSH за допомогою команди git remote set-url.

git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

Переконайтеся, що віддалений URL змінився.

git remote -v

# Підтвердити нову віддалену URL-адресу

origin  git@github.com:USERNAME/REPOSITORY.git (fetch)
origin  git@github.com:USERNAME/REPOSITORY.git (push)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.