CH-J Server Managermanagementul serverului peste SSH
Meniu
Toate ghidurile și articolele →

Un fișier de pe server s-a schimbat în timp ce îl editai: cum eviți suprascrierea

Cum detectezi că altcineva a modificat un fișier pe server în timpul editării tale, compari versiunile și salvezi fără să pierzi vreuna dintre modificări.

Cum apare problema

Deschizi un fișier și, în timp ce îți editezi copia, altceva scrie în original: un alt administrator, o execuție a sistemului de gestionare a configurației, o actualizare de pachet sau chiar aplicația. Dacă apoi salvezi, cealaltă modificare dispare fără vreo eroare. Editarea locală urmată de încărcarea prin SFTP este deosebit de expusă, deoarece intervalul dintre citire și scriere este lung, iar o simplă încărcare nu compară nimic.

Înregistrează starea înainte să începi

Notează suma de control și ora ultimei modificări atunci când descarci fișierul. Verifică-le din nou chiar înainte de încărcare. O sumă de control diferită înseamnă că fișierul s-a schimbat și nu ar trebui să îl suprascrii fără să îl examinezi.

sha256sum /etc/example.conf
stat -c '%y %U %G %a' /etc/example.conf

Compară și îmbină modificările

Păstrează copia editată sub un nume nou, descarcă versiunea curentă și compar-o cu versiunea de la care ai pornit și cu a ta. Apoi aplică modificarea ta versiunii curente în loc să o suprascrii. Comanda diff3 poate afișa toate cele trei versiuni împreună.

diff -u example.conf.orig example.conf.current
diff -u example.conf.orig example.conf.mine
diff3 example.conf.mine example.conf.orig example.conf.current

Află ce modifică fișierul

Dacă fișierul se schimbă în continuu, identifică sursa înainte să îl editezi din nou. Verifică cine îl are deschis și consultă jurnalul și istoricul pachetelor. Dacă fișierul este controlat de un sistem de gestionare a configurației, modifică șablonul acolo; altfel, următoarea execuție îți va înlocui modificarea.

sudo lsof /etc/example.conf
sudo journalctl --since "1 hour ago" --no-pager | grep example.conf
grep example.conf /var/log/dpkg.log

Un avertisment nu este o blocare

Editoare precum vim și nano te avertizează când un fișier s-a schimbat de la deschidere, dar nu împiedică un alt proces să scrie în el. Același lucru este valabil pentru comparațiile sumelor de control: o verificare chiar înainte de salvare scurtează mult intervalul de risc, dar nu îl reduce la zero. Pe serverele unde lucrează mai multe persoane, o sursă a configurației aflată sub controlul versiunilor te protejează mai bine decât orice editor.

Protecția la salvare în CH-J Server Manager

Editorul File Manager verifică din nou fișierul la salvare. Dacă s-au schimbat conținutul, permisiunile sau ținta legăturii, salvarea se oprește, iar originalul rămâne așa cum este. Poți apoi încărca versiunea curentă de pe server, dar astfel se elimină modificările nesalvate, așa că mai întâi copiază textul tău în altă parte. Editorul nu îmbină versiunile în locul tău. La transferuri, aplicația cere confirmare înainte de a înlocui o destinație care s-a schimbat sau există deja și îți spune să reiei de la început dacă sursa s-a schimbat în timpul transferului.

Documentație detaliată

man: stat →

man: diff →

Deblocare biometrică și securitate →