In Linux/Unix, il /etc
directory è la posizione in cui si trovano i file e le directory di configurazione a livello di sistema specifici dell'host; è una posizione centrale per tutti i file di configurazione a livello di sistema. Un file di configurazione è un file locale utilizzato per controllare il funzionamento di un programma:deve essere statico e non può essere un binario eseguibile.
Per tenere traccia delle modifiche ai file di configurazione del sistema, gli amministratori di sistema normalmente eseguono copie (o backup) dei file di configurazione prima di modificarli. In questo modo, se hanno modificato direttamente il file originale e hanno commesso un errore, possono ripristinare la copia salvata.
In questa guida impareremo come installare e configurare etckeeper in Opensuse Leap 15.
Installazione di etckeeper
Assicurati che il tuo sistema sia aggiornato
sudo zypper refresh
sudo zypper update -y
Etckeeper è disponibile nei repository OpenSUSE predefiniti. Per installare, utilizzare il comando seguente. Questo installerà anche le dipendenze:
sudo zypper install etckeeper
Digitare y quando viene richiesto di accettare l'installazione e attendere il completamento.
Conferma il pacchetto installato con questo comando
~> 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
Configurazione di etckeeper
Una volta installato etckeeper, dobbiamo configurarlo. Il file di configurazione etckeeper si trova in questo percorso /etc/etckeeper/etckeeper.conf.
Aprilo usando il tuo editor di testo preferito, sto usando vim.
sudo vim /etc/etckeeper/etckeeper.conf
Le configurazioni nel file hanno descrizioni piccole e chiare. Le opzioni ti consentono di impostare il sistema di controllo della versione da utilizzare, passare le opzioni a VSC; per abilitare o disabilitare il timer, abilitare o disabilitare gli avvisi di file speciali, abilitare o disabilitare etckeeper dal commit delle modifiche esistenti a /etc
prima dell'installazione.
Inoltre, puoi impostare il gestore di pacchetti front-end o di livello superiore (come apt, yum, dnf ecc.) e il gestore di pacchetti sottostante o di basso livello (dpkg, rpm ecc.) in modo che funzionino con etckeeper .
Se hai apportato modifiche al file, salvalo e chiudi il file.
Inizializzazione del repository git
Successivamente inizializzeremo un repository git per tenere traccia delle modifiche nel nostro /etc. Etckeeper dovrà essere eseguito con root o come utente con il comando sudo. Passiamo alla directory /etc e inizializziamola .
cd /etc
sudo etckeeper init
Questo è l'output sul mio server
~> 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/
Quindi, passa per etckeeper per poter lavorare automaticamente, devi eseguire il primo commit per iniziare a tenere traccia delle modifiche in /etc
, come segue.
sudo etckeeper commit "initial commit with original etc configs"
Apportare modifiche e impegnarsi
Dopo aver eseguito il tuo primo commit, etckeeper tramite git sta ora monitorando eventuali modifiche in /etc
directory. Ora prova ad apportare modifiche in uno qualsiasi dei file di configurazione.
Quindi esegui il comando seguente per mostrare i file che sono cambiati dall'ultimo commit; questo comando mostra essenzialmente le modifiche in /etc
non predisposto per il commit, dove VCS significa git e "stato ” è un sottocomando git.
sudo etckeeper vcs status
Dovresti vedere un output simile a questo con i file che sono cambiati:
/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")
Quindi salva le modifiche recenti come segue.
sudo etckeeper commit "updated hosts file and disallowed root ssh login"
Dovresti vedere un output simile a questo
/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(-)
Visualizza registri dei commit
Per visualizzare un registro di tutti i commit (l'id e il commento di ogni commit), puoi eseguire il comando seguente.
sudo etckeeper vcs log
Uscita
/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
Puoi anche mostrare i dettagli di un commit, specificando semplicemente l'ID commit (i primi caratteri possono funzionare) come mostrato:
sudo etckeeper vcs show 9984ce498ba68d15c8e1ac84dbec7b3cb6e3202f
Inoltre, puoi visualizzare la differenza tra due commit come mostrato. Ciò è particolarmente utile se si desidera revocare le modifiche come mostrato nella sezione successiva. Puoi utilizzare i tasti freccia per scorrere su e giù o sinistra e destra e uscire premendo q
.
sudo etckeeper vcs show 9984ce 179ae
Come revocare le modifiche
L'essenza di etckeeper serve per aiutarti a tenere traccia delle modifiche al tuo /etc
directory e annullare le modifiche ove necessario. Supponendo che ti rendi conto di aver commesso degli errori in /etc/ssh/sshd_config quando l'hai modificato l'ultima volta e il servizio sshd non può essere riavviato a causa di errori nella struttura di configurazione, puoi ripristinare la copia salvata in un commit specifico (ad es. 9984ce ) dove ritieni che la configurazione fosse corretta come segue.
sudo etckeeper vcs checkout 9984ce /etc/ssh/sshd_config
In alternativa, puoi annullare tutte le modifiche e ripristinare le versioni di tutti i file in /etc
(e le sue sottodirectory) memorizzate in un commit specifico.
sudo etckeeper vcs checkout 9984ce
Abilita l'applicazione automatica delle modifiche
Eccentrico viene fornito anche con un servizio e unità timer per Systemd , compreso nella confezione. Per avviare "Autocommit ” di modifiche nel /etc
directory, avvia semplicemente etckeeper.timer
unità per ora e verificare se è attiva e funzionante, come segue.
sudo systemctl start etckeeper.timer
Conferma lo stato
/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.
E abilitalo per l'avvio automatico all'avvio del sistema come mostrato.
sudo systemctl enable etckeeper.timer
Conclusione
In questa guida abbiamo imparato come installare e usare etckeeper per gestire le modifiche nella directory /etc usando un sistema di gestione delle versioni come git.