CH-J Server Managerszerverkezelés SSH felett
Menü
Minden útmutató és cikk →

A távoli fájl szerkesztés közben megváltozott: hogyan kerülheti el a felülírását

Hogyan észlelheti, hogy szerkesztés közben valaki más módosította a szerver fájlját, hogyan hasonlíthatja össze a verziókat, és hogyan menthet mindkét módosítás megőrzésével.

Hogyan keletkezik a probléma

Megnyit egy fájlt, és miközben a saját másolatát szerkeszti, valami más írja az eredetit: egy másik rendszergazda, egy konfigurációkezelési futás, egy csomagfrissítés vagy maga az alkalmazás. Ha ezután ment, a másik módosítás hibaüzenet nélkül eltűnik. A helyi szerkesztés és az SFTP-n keresztüli feltöltés különösen veszélyeztetett, mert az olvasás és az írás között hosszú idő telik el, és egy egyszerű feltöltés semmit sem hasonlít össze.

Kezdés előtt rögzítse az állapotot

A fájl letöltésekor jegyezze fel az ellenőrzőösszeget és az utolsó módosítás idejét. Közvetlenül feltöltés előtt ellenőrizze őket újra. Az eltérő ellenőrzőösszeg azt jelenti, hogy a fájl megváltozott, és átnézés nélkül nem szabad felülírni.

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

Hasonlítsa össze és egyesítse a módosításokat

Őrizze meg a szerkesztett másolatát új néven, töltse le az aktuális verziót, és hasonlítsa össze a kiinduló verzióval és a sajátjával. Ezután az aktuális verzióra vezesse át a módosítását ahelyett, hogy felülírná. A diff3 parancs mindhárom verziót együtt tudja megjeleníteni.

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

Derítse ki, mi módosítja a fájlt

Ha a fájl folyton változik, újabb szerkesztés előtt keresse meg a változtatások forrását. Ellenőrizze, ki tartja nyitva, és nézze meg a naplót, valamint a csomagelőzményeket. Ha a fájlt konfigurációkezelő kezeli, ott módosítsa a sablont, különben a következő futás felülírja a szerkesztését.

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

A figyelmeztetés nem zárolás

Az olyan szerkesztők, mint a vim és a nano, figyelmeztetnek, ha a fájl a megnyitása óta megváltozott, de nem akadályozzák meg, hogy egy másik folyamat írjon bele. Ugyanez igaz az ellenőrzőösszegek összehasonlítására: a közvetlenül mentés előtti ellenőrzés nagyon rövidre csökkenti a kockázatos időablakot, de nem szünteti meg. Olyan szervereken, ahol többen dolgoznak, egy verziókezelt konfigurációforrás bármely szerkesztőnél jobb védelmet nyújt.

Mentésvédelem a CH-J Server Manager alkalmazásban

A File Manager szerkesztője mentéskor újra ellenőrzi a fájlt. Ha a tartalma, jogosultságai vagy a hivatkozás célja megváltozott, a mentés leáll, és az eredeti fájl érintetlen marad. Ekkor betöltheti az aktuális verziót a szerverről, de ez elveti a nem mentett módosításokat, ezért előbb másolja félre a szövegét. A szerkesztő nem egyesíti Ön helyett a verziókat. Átvitelkor az alkalmazás rákérdez a már létező vagy megváltozott cél felülírására, és újrakezdést kér, ha a forrás az átvitel során megváltozott.

Részletes dokumentáció

man: stat →

man: diff →

Biometrikus feloldás és biztonság →