CH-J Server Managerupravljanje strežnikov prek SSH
Meni
Vsi vodiči in članki →

Oddaljena datoteka se je med urejanjem spremenila: kako preprečiti prepis

Kako zaznati, da je nekdo drug med vašim urejanjem spremenil datoteko na strežniku, primerjati različice in shraniti brez izgube katere koli spremembe.

Kako nastane težava

Odprete datoteko in med urejanjem svoje kopije v izvirnik zapiše nekdo ali nekaj drugega: drug skrbnik, orodje za upravljanje nastavitev, nadgradnja paketa ali sama aplikacija. Če jo nato shranite, druga sprememba izgine brez napake. Lokalno urejanje in nalaganje prek SFTP sta še posebej izpostavljena, saj med branjem in pisanjem mine veliko časa, navadno nalaganje pa ničesar ne primerja.

Pred začetkom zabeležite stanje

Ob prenosu datoteke s strežnika zabeležite kontrolno vsoto in čas zadnje spremembe. Preverite ju znova tik pred nalaganjem. Drugačna kontrolna vsota pomeni, da se je datoteka spremenila in je ne smete prepisati, ne da bi jo pregledali.

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

Primerjajte in združite spremembe

Urejeno kopijo ohranite pod novim imenom, pridobite trenutno različico in jo primerjajte z različico, iz katere ste izhajali, ter s svojo. Nato svojo spremembo vnesite v trenutno različico, namesto da bi jo prepisali. Ukaz diff3 lahko skupaj prikaže vse tri različice.

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

Ugotovite, kaj spreminja datoteko

Če se datoteka kar naprej spreminja, pred ponovnim urejanjem poiščite vzrok. Preverite, kdo jo ima odprto, ter preglejte journal in zgodovino paketov. Če datoteko upravlja orodje za upravljanje nastavitev, spremenite predlogo v njem, sicer bo naslednji zagon zamenjal vašo spremembo.

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

Opozorilo ni zaklep

Urejevalniki, kot sta vim in nano, opozorijo, ko se datoteka od odprtja spremeni, vendar drugemu procesu ne preprečijo pisanja vanjo. Enako velja za primerjanje kontrolnih vsot: preverjanje tik pred shranjevanjem zelo skrajša časovno okno, vendar ga ne odpravi. Na strežnikih, kjer dela več ljudi, vas vir nastavitev pod nadzorom različic zaščiti bolje kot kateri koli urejevalnik.

Zaščita pri shranjevanju v CH-J Server Manager

Urejevalnik v File Manager ob shranjevanju znova preveri datoteko. Če so se spremenili vsebina, dovoljenja ali cilj povezave, se shranjevanje ustavi in izvirnik ostane tak, kot je. Nato lahko naložite trenutno različico s strežnika, s čimer zavržete svoje neshranjene spremembe, zato besedilo najprej kopirajte na drugo mesto. Urejevalnik ne združuje različic namesto vas. Pri prenosih aplikacija vpraša pred zamenjavo cilja, ki se je spremenil ali že obstaja, in vas pozove, da začnete znova, če se je med prenosom spremenil vir.

Podrobna dokumentacija

man: stat →

man: diff →

Biometrično odklenjevanje in varnost →