Jak Git zatwierdzić jako root na Linuksie?


0

Czasami muszę zmodyfikować pliki konfiguracyjne, takie jak /etc repozytorium utworzone przez etckeeper. Robię to:

sudo git commit -am "Modified this setting"

Niestety zostanie zatwierdzony przy użyciu poświadczeń roota. Jedna brudna alternatywa to

sudo git commit -am "Modified this setting" --author "John Doe <jdoe@doe.com>"

Czy jest inne rozwiązanie?

Innym przykładem jest mój /var/www pliki ustawione za pomocą 0640 i root:www-data. Jeśli chcę tam zmodyfikować pliki, muszę to zrobić z root kontekst. Jak mogę to zrobić za pomocą własnego konta użytkownika?

Odpowiedzi:


2

Ten krótki skrypt może być użyty do osiągnięcia tego, co chcesz, pod warunkiem, że masz poprawnie skonfigurowany git jako zwykłego użytkownika. Akceptuje wszelkie argumenty git commit robi z wyjątkiem --author (które automatycznie generuje) i automatycznie monituje o hasło, więc nie musisz go uruchamiać sudo:

#!/bin/bash

name=`git config --get user.name`
email=`git config --get user.email`

author="${name} <${email}>"

sudo git commit --author "$author" $@

Wyciąga twoje imię i e-mail z konfiguracji git użytkownika, tworzy z tego informacje o autorze, a następnie wywołuje git, aby utworzyć zatwierdzenie. Możesz zastąpić commit dla każdego innego polecenia podrzędnego git, które generuje commits i akceptuje --author argument.

Alternatywnie sklonuj repozytorium jako zwykłego użytkownika (za pomocą klonu SSH, więc dla twojego /var/www przykład, byłoby git clone root@localhost:/var/www ), dokonaj swoich zmian jako zwykły użytkownik, a następnie popchnij je do głównego repozytorium. Daje to nieco większą swobodę w zarządzaniu kopią, jak chcesz, ale wymaga, aby ludzie mogli zalogować się jako root przez ssh na interfejsie loopback.

Pamiętaj jednak, że chcesz być ostrożny z bezpośrednim używaniem git etckeeper, jeśli dodasz lub usuniesz pliki /etc/.etckeeper musi być poprawnie zaktualizowany. Dzieje się tak automatycznie, jeśli to zrobisz etckeeper commit (który niestety nie obsługuje arbitralnego zatwierdzania zatwierdzeń), ale nie, jeśli to zrobisz git commit.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.