V Linuxu/Unixu /etc
adresář je místo, kde jsou umístěny systémové konfigurační soubory a adresáře specifické pro hostitele; je to centrální umístění pro všechny systémové konfigurační soubory. Konfigurační soubor je místní soubor používaný k řízení fungování programu – musí být statický a nesmí to být spustitelný binární soubor.
Aby bylo možné sledovat změny v konfiguračních souborech systému, správci systému obvykle vytvářejí kopie (nebo zálohy) konfiguračních souborů před jejich úpravou. Tímto způsobem, pokud přímo upravili původní soubor a udělali chybu, mohou se vrátit k uložené kopii.
V této příručce se naučíme, jak nainstalovat a nakonfigurovat etckeeper v Opensuse Leap 15.
Instalace etckeeper
Ujistěte se, že váš systém je aktuální
sudo zypper refresh
sudo zypper update -y
Etckeeper je k dispozici ve výchozích repozitářích OpenSUSE. K instalaci použijte následující příkaz. Tím se také nainstalují závislosti:
sudo zypper install etckeeper
Po zobrazení výzvy k přijetí instalace zadejte y a počkejte na její dokončení.
Potvrďte nainstalovaný balíček tímto příkazem
~> rpm -qi etckeeper
Name : etckeeper
Version : 1.18.7
Release : bp153.1.17
Architecture: x86_64
Install Date: Thu Mar 3 17:44:56 2022
Group : System/Management
Size : 113726
License : GPL-2.0+
Signature : RSA/SHA256, Sat Mar 13 02:04:56 2021, Key ID 9c214d4065176565
Source RPM : etckeeper-1.18.7-bp153.1.17.src.rpm
Build Date : Sat Mar 13 02:04:32 2021
Build Host : lamb54
Relocations : (not relocatable)
Packager : https://bugs.opensuse.org
Vendor : openSUSE
URL : http://etckeeper.branchable.com/
Summary : Store /etc under Version Control
Description :
The etckeeper program is a tool to let /etc be stored in a git,
mercurial, bzr or darcs repository. It hooks into yum to automatically
commit changes made to /etc during package upgrades. It tracks file
metadata that version control systems do not normally support, but that
is important for /etc, such as the permissions of /etc/shadow. It is
quite modular and configurable, while also being simple to use if you
understand the basics of working with version control.
Distribution: SUSE Linux Enterprise 15 SP3
Konfigurace etckeeper
Jakmile je etckeeper nainstalován, musíme jej nakonfigurovat. Konfigurační soubor etckeeper se nachází v této cestě /etc/etckeeper/etckeeper.conf.
Otevřete jej pomocí svého oblíbeného textového editoru, já používám vim.
sudo vim /etc/etckeeper/etckeeper.conf
Konfigurace v souboru mají malé, jasné popisy. Možnosti vám umožňují nastavit systém správy verzí, který se má používat, předat možnosti VSC; povolit nebo zakázat časovač, povolit nebo zakázat upozornění na speciální soubory, povolit nebo zakázat etckeeper odevzdávat existující změny /etc
před instalací.
Můžete také nastavit správce front-end nebo správce balíčků na vyšší úrovni (jako je apt, yum, dnf atd.) a základního nebo nízkoúrovňového správce balíčků (dpkg, rpm atd.), aby spolupracovali s etckeeper .
Pokud jste v souboru provedli nějaké změny, uložte je a zavřete soubor.
Inicializace úložiště git
Dále inicializujeme úložiště git, abychom mohli sledovat změny v našem /etc. Etckeeper bude muset být spuštěn s rootem nebo jako uživatel s příkazem sudo. Přepněte se do adresáře /etc a inicializujte jej .
cd /etc
sudo etckeeper init
Toto je výstup na mém serveru
~> cd /etc
/etc> sudo etckeeper init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /etc/.git/
Dále krok pro etckeeper abyste mohli pracovat automaticky, musíte spustit první potvrzení a začít sledovat změny v /etc
, následovně.
sudo etckeeper commit "initial commit with original etc configs"
Provádění změn a potvrzení
Po spuštění prvního odevzdání etckeeper přes git nyní sleduje všechny změny v /etc
adresář. Nyní zkuste provést změny v libovolném konfiguračním souboru.
Poté spusťte následující příkaz pro zobrazení souborů, které se od posledního odevzdání změnily; tento příkaz v podstatě zobrazuje změny v /etc
není připraveno pro potvrzení, kde VCS znamená git a „stav ” je dílčí příkaz git.
sudo etckeeper vcs status
Měli byste vidět výstup podobný tomuto se změněnými soubory:
/etc> sudo etckeeper vcs status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: hosts
modified: ssh/sshd_config
no changes added to commit (use "git add" and/or "git commit -a")
Poté potvrďte poslední změny následujícím způsobem.
sudo etckeeper commit "updated hosts file and disallowed root ssh login"
Měli byste vidět výstup podobný tomuto
/etc> sudo etckeeper commit "updated hosts file and disallowed root ssh login"
[master 9984ce4] updated hosts file and disallowed root ssh login
Author: ec2-user <[email protected]>
2 files changed, 3 insertions(+), 3 deletions(-)
Zobrazit protokoly závazků
Chcete-li zobrazit protokol všech odevzdání (ID a komentář každého odevzdání), můžete spustit následující příkaz.
sudo etckeeper vcs log
Výstup
/etc> sudo etckeeper vcs log
commit 9984ce498ba68d15c8e1ac84dbec7b3cb6e3202f (HEAD -> master)
Author: ec2-user <[email protected]>
Date: Thu Mar 3 18:02:25 2022 +0000
updated hosts file and disallowed root ssh login
commit 179ae7654496e9190c700c1ea4584d0ff05d3418
Author: ec2-user <[email protected]>
Date: Thu Mar 3 17:59:00 2022 +0000
initial commit with original etc configs
Můžete také zobrazit podrobnosti o potvrzení, jednoduše zadejte ID potvrzení (prvních několik znaků může fungovat), jak je znázorněno:
sudo etckeeper vcs show 9984ce498ba68d15c8e1ac84dbec7b3cb6e3202f
Kromě toho můžete vidět rozdíl mezi dvěma potvrzeními, jak je znázorněno. To je zvláště užitečné, pokud chcete zrušit změny, jak je uvedeno v další části. Pomocí kláves se šipkami se můžete posouvat nahoru a dolů nebo doleva a doprava a ukončit stisknutím q
.
sudo etckeeper vcs show 9984ce 179ae
Jak odvolat změny
Podstata etckeeper je pomoci vám sledovat změny v /etc
adresář a v případě potřeby zvrátit změny. Za předpokladu, že si uvědomujete, že jste udělali nějaké chyby v /etc/ssh/sshd_config když jste ji naposledy upravili a službu sshd nelze restartovat kvůli chybám ve struktuře konfigurace, můžete se vrátit k uložené kopii v konkrétním potvrzení (např. 9984ce ), kde si myslíte, že konfigurace byla správná následovně.
sudo etckeeper vcs checkout 9984ce /etc/ssh/sshd_config
Případně můžete zrušit všechny změny a vrátit se k verzím všech souborů pod /etc
(a jeho podadresáře) uloženy v konkrétním potvrzení.
sudo etckeeper vcs checkout 9984ce
Povolit automatické potvrzení změn
Etckeeper dodává se také se službou a jednotkami časovače pro Systemd , součástí balení. Chcete-li spustit „Autocommit ” změn v /etc
adresáře, jednoduše spusťte etckeeper.timer
jednotku a zkontrolujte, zda je v provozu, následovně.
sudo systemctl start etckeeper.timer
Potvrďte stav
/etc> sudo systemctl status etckeeper.timer
● etckeeper.timer - Daily autocommit of changes in /etc directory
Loaded: loaded (/usr/lib/systemd/system/etckeeper.timer; disabled; vendor preset: disabled)
Active: active (waiting) since Thu 2022-03-03 18:08:39 UTC; 4s ago
Trigger: Fri 2022-03-04 18:08:39 UTC; 23h left
Triggers: ● etckeeper.service
Docs: man:etckeeper(8)
Mar 03 18:08:39 opensusesrv systemd[1]: Started Daily autocommit of changes in /etc directory.
A povolte jeho automatické spouštění při spouštění systému, jak je znázorněno.
sudo systemctl enable etckeeper.timer
Závěr
V této příručce jsme se naučili, jak nainstalovat a používat etckeeper ke správě změn v adresáři /etc pomocí systému správy verzí, jako je git.