Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
W strukturze katalogów Unix/Linux katalog /etc to miejsce, w którym znajdują się specyficzne dla hosta pliki konfiguracyjne i katalogi systemowe; jest to centralna lokalizacja dla wszystkich plików konfiguracyjnych dla całego systemu.
Plik konfiguracyjny to plik lokalny używany do kontrolowania działania programu — musi być statyczny i nie może być wykonywalnym plikiem binarnym.
Aby śledzić zmiany w plikach konfiguracyjnych systemu, administratorzy systemu zwykle tworzą kopie (lub kopie zapasowe) plików konfiguracyjnych przed ich modyfikacją. W ten sposób, jeśli bezpośrednio zmodyfikowali oryginalny plik i popełnili błąd, mogą powrócić do zapisanej kopii.
etckeeper pozwala śledzić modyfikacje katalogu /etc za pomocą repozytorium Git, Mercurial, Bazaar lub Darcs, tak jak w przypadku projektu programistycznego.
W Debian 11 Edu jest to już zainstalowane i wstępnie skonfigurowane na automatycznie zatwierdzanie zmian codziennie cron.
Jeśli chcemy to zmienić i sami kotrolować zatwierdzania zmian to opcja #AVOID_DAILY_AUTOCOMMITS=1 musi zostać aktywowana.
# The cron job is enabled by default; to disable it, uncomment this next line.
AVOID_DAILY_AUTOCOMMITS=1
plik konfiguracyjny etckeeper.conf
cat /etc/etckeeper/etckeeper.conf # The VCS to use. #VCS="hg" VCS="git" #VCS="bzr" #VCS="darcs" # Options passed to git commit when run by etckeeper. GIT_COMMIT_OPTIONS="" # Options passed to hg commit when run by etckeeper. HG_COMMIT_OPTIONS="" # Options passed to bzr commit when run by etckeeper. BZR_COMMIT_OPTIONS="" # Options passed to darcs record when run by etckeeper. DARCS_COMMIT_OPTIONS="-a" # Etckeeper includes both a cron job and a systemd timer, which each # can commit exiting changes to /etc automatically once per day. # To enable the systemd timer, run: systemctl enable etckeeper.timer # The cron job is enabled by default; to disable it, uncomment this next line. AVOID_DAILY_AUTOCOMMITS=1 #Domyślnie etckeeper codziennie wprowadza niezatwierdzone zmiany wprowadzone do /etc. uwaga #Można to wyłączyć za pomocą opcji konfiguracyjnej AVOID_DAILY_AUTOCOMMITS=1. uwaga # Uncomment the following to avoid special file warning # (the option is enabled automatically for daily autocommits regardless). #AVOID_SPECIAL_FILE_WARNING=1 # Uncomment to avoid etckeeper committing existing changes to # /etc before installation. It will cancel the installation, # so you can commit the changes by hand. #AVOID_COMMIT_BEFORE_INSTALL=1 # The high-level package manager that's being used. # (apt, pacman, pacman-g2, yum, dnf, zypper, apk etc) HIGHLEVEL_PACKAGE_MANAGER=apt # The low-level package manager that's being used. # (dpkg, rpm, pacman, pacmatic, pacman-g2, apk etc) LOWLEVEL_PACKAGE_MANAGER=dpkg # To push each commit to a remote, put the name of the remote here. # (eg, "origin" for git). Space-separated lists of multiple remotes # also work (eg, "origin gitlab github" for git). PUSH_REMOTE=""
Instalacja etckeeper dla Debian 11 jeśli chcemy kontrolować nasz katalog /etc
apt install etckeeper cd /etc etckeeper init etckeeper vcs status Na gałęzi master nic do złożenia, drzewo robocze czyste
Ok. już namieszałem jeszcze raz
Czyścimy git'a i etckeeper'a z katalogu /etc.
ls {.git*,.etckeep*} .etckeeper .gitignore .git: branches config description HEAD hooks index info objects refs
/
rm -r {.git*,.etckeep*} ls {.git*,.etckeep*} ls: nie ma dostępu do '.git*': Nie ma takiego pliku ani katalogu ls: nie ma dostępu do '.etckeep*': Nie ma takiego pliku ani katalogu
Ponowna inicjacja i zapis obechych ustawień.
etckeeper init podpowiedź: Użycie „master” jako nawy początkowej gałęzi. Ta domyślna nazwa gałęzi podpowiedź: może się zmienić. Aby ustawić nazwę początkowej gałęzi do użycia we podpowiedź: wszystkich nowych repozytoriach, co uciszy ten komunikat, wykonaj: podpowiedź: podpowiedź: git config --global init.defaultBranch <nazwa> podpowiedź: podpowiedź: Tradycyjnie było „master”, a inne popularne to „main”, „trunk” podpowiedź: i „development”. Nazwę właśnie utworzonej gałęzi można zmienić tym poleceniem: podpowiedź: podpowiedź: git branch -m <nazwa> Zainicjowano puste repozytorium Gita w /etc/.git/
etckeeper vcs status
Komenda etckeeper commit jest ważna zrobi kopie naszej obecnej konfiguracji kat. /etc do której będzie można wrócić.
etckeeper commit -a first-commit-my-etc
"Uwaga :
.git musi być chroniony w systemie lokalnym (stąd uprawnienia do odczytu, zapisu i wykonywania tylko dla administratora); ponieważ
systemy kontroli wersji nie śledzą same uprawnień do plików, etckeeper zapewnia w zamian tę funkcję.
Katalog .git zawiera kilka plików konfiguracyjnych i opisowych oraz innych podkatalogów przeznaczonych do korzystania z samego Git.
Plik .gitignore, który określa jawnie nieśledzone pliki, które git powinien zignorować, ma być w całości zarządzany przez etckeepera.
Nie zaleca się ręcznej edycji, z jednym wyjątkiem.
Jeśli istnieją pewne pliki, których nie chcesz śledzić za pomocą kontroli wersji, możesz ręcznie dodać je do pliku .gitignore.
Aby zatrzymać śledzenie pliku."
Teraz zmienimy nasz plik konfiguracji DNS i zobaczmy jak zareaguje etckeeper?
echo "#Nowy wpis" >> /etc/resolv.conf etckeeper vcs status Na gałęzi master Zmiany nie przygotowane do złożenia: (użyj „git add <plik>...”, żeby zmienić, co zostanie złożone) (użyj „git restore <plik>...”, aby odrzucić zmiany w katalogu roboczym) zmieniono: resolv.conf brak zmian dodanych do zapisu (użyj „git add” i/lub „git commit -a”)
Zatwierdzamy zniany opcja -a wszystkie autowatycznie "zmiana dns" - identyfikator i komentarz każdego zatwierdzenia.
#etckeeper commit "zmiana dns" etckeeper commit -a "zmiana dns" [master 531eb32] -a zmiana dns Author: user <fg.list.na@gmail.com> 1 file changed, 1 insertion(+)
Nasz plik DNS
cat resolv.conf #Generated by NetworkManager search intern nameserver 10.0.2.2 #zmiana dns
Aby wyświetlić dziennik wszystkich zatwierdzeń zmian polecenie etckeeper vcs log.
etckeeper vcs log commit 531eb329dd9fa927991938658a1c7e4ab0114dc6 (HEAD -> master) Author: user <fg.list.na@gmail.com> Date: Wed Aug 3 11:11:31 2022 +0200 -a zmiana dns commit ca9eed4a3ba499de568bd88acd4a21d6097e1a01 Author: user <fg.list.na@gmail.com> Date: Wed Aug 3 10:49:12 2022 +0200 -a first-commit-my-etc
To polecenie pokazuje zmiany jakie zostały dokonane.
etckeeper vcs show 531e commit 531eb329dd9fa927991938658a1c7e4ab0114dc6 (HEAD -> master) Author: user <fg.list.na@gmail.com> Date: Wed Aug 3 11:11:31 2022 +0200 -a zmiana dns diff --git a/resolv.conf b/resolv.conf index cad3c74..94357d0 100644 --- a/resolv.conf +++ b/resolv.conf @@ -1,3 +1,4 @@ # Generated by NetworkManager search intern nameserver 10.0.2.2 +#Nowy wpis
Teraz jeśli chcemy przywrócić poprzednią wersje pliku DNS
etckeeper vcs checkout ca9e /etc/resolv.conf Zaktualizowano 1 ścieżkę z 02e5d6f
cat resolv.conf # Generated by NetworkManager search intern nameserver 10.0.2.2
Ok.
Ostatnio edytowany przez floriangreg (2022-08-04 06:44:56)
Offline