CH-J Server Managerserverhåndtering over SSH
Menu
Alle vejledninger og artikler →

En fjernfil blev ændret, mens du redigerede den: sådan undgår du at overskrive den

Sådan opdager du, at andre har ændret en serverfil under din redigering, sammenligner versioner og gemmer uden at miste nogen af ændringerne.

Sådan opstår problemet

Du åbner en fil, og mens du redigerer din egen kopi, skriver noget andet til originalen: en anden administrator, en kørsel af konfigurationsstyringen, en pakkeopgradering eller selve applikationen. Hvis du derefter gemmer, forsvinder den anden ændring uden en fejlmeddelelse. Lokal redigering med upload via SFTP er særligt udsat, fordi der går lang tid mellem læsning og skrivning, og en almindelig upload ikke sammenligner noget.

Registrér tilstanden, før du begynder

Notér kontrolsummen og tidspunktet for seneste ændring, når du downloader filen. Kontrollér dem igen umiddelbart før upload. En anden kontrolsum betyder, at filen er ændret, og at du ikke bør overskrive den uden at gennemgå ændringerne.

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

Sammenlign og flet ændringerne

Behold din redigerede kopi under et nyt navn, hent den aktuelle version, og sammenlign den med både den version, du begyndte med, og din egen. Indarbejd derefter din ændring i den aktuelle version i stedet for at overskrive den. Kommandoen diff3 kan vise alle tre versioner sammen.

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

Find ud af, hvad der ændrer filen

Hvis filen bliver ved med at ændre sig, skal du finde årsagen, før du redigerer igen. Kontrollér, hvem der har den åben, og se i journalen og pakkehistorikken. Hvis filen styres af konfigurationsstyringen, skal du ændre skabelonen dér, ellers erstatter næste kørsel din redigering.

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

En advarsel er ikke en lås

Editorer som vim og nano advarer, når en fil er ændret siden åbningen, men de forhindrer ikke andre processer i at skrive til den. Det samme gælder sammenligning af kontrolsummer: En kontrol lige før lagring gør tidsvinduet meget kort, men fjerner det ikke. På servere med flere brugere giver en versionsstyret konfigurationskilde bedre beskyttelse end nogen editor.

Beskyttelse ved lagring i CH-J Server Manager

Editoren i File Manager kontrollerer filen igen, når du gemmer. Hvis indhold, rettigheder eller linkmål er ændret, stoppes lagringen, og originalen forbliver urørt. Du kan derefter indlæse den aktuelle version fra serveren, hvilket kasserer dine ikke-gemte ændringer, så kopiér først din tekst et andet sted hen. Editoren fletter ikke versionerne for dig. Ved overførsler spørger appen, før den erstatter et mål, der er ændret eller allerede findes, og beder dig starte forfra, hvis kilden blev ændret under overførslen.

Detaljeret dokumentation

man: stat →

man: diff →

Biometrisk oplåsning og sikkerhed →