CH-J Server Managerserverhantering över SSH
Menyn
Alla guider och artiklar →

En fjärrfil ändrades medan du redigerade den: så undviker du att skriva över den

Så upptäcker du att någon annan har ändrat en serverfil under din redigering, jämför versioner och sparar utan att förlora någon av ändringarna.

Så uppstår problemet

Du öppnar en fil, och medan du redigerar din egen kopia skriver något annat till originalet: en annan administratör, en körning av konfigurationshanteringen, en paketuppgradering eller själva applikationen. Om du sedan sparar försvinner den andra ändringen utan något felmeddelande. Lokal redigering med uppladdning via SFTP är särskilt utsatt, eftersom tiden mellan läsning och skrivning är lång och en vanlig uppladdning inte jämför något.

Notera tillståndet innan du börjar

Notera kontrollsumman och tiden för senaste ändring när du hämtar filen. Kontrollera dem igen omedelbart före uppladdningen. En annan kontrollsumma innebär att filen har ändrats och att du inte bör skriva över den utan att granska den.

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

Jämför och slå samman ändringarna

Behåll din redigerade kopia under ett nytt namn, hämta den aktuella versionen och jämför den med versionen du utgick från och med din egen. För sedan in din ändring i den aktuella versionen i stället för att skriva över den. Kommandot diff3 kan visa alla tre versionerna tillsammans.

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

Ta reda på vad som ändrar filen

Om filen fortsätter att ändras ska du hitta orsaken innan du redigerar igen. Kontrollera vem som har den öppen och granska journalen och pakethistoriken. Om filen hanteras av konfigurationshanteringen ska du ändra mallen där, annars ersätter nästa körning 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 varning är inget lås

Redigerare som vim och nano varnar när en fil har ändrats sedan den öppnades, men hindrar inte en annan process från att skriva till den. Detsamma gäller jämförelser av kontrollsummor: en kontroll precis före sparandet gör tidsfönstret mycket kort, men eliminerar det inte. På servrar där flera personer arbetar skyddar en versionshanterad konfigurationskälla bättre än någon redigerare.

Skydd vid sparande i CH-J Server Manager

Redigeraren i File Manager kontrollerar filen igen när du sparar. Om innehållet, behörigheterna eller länkens mål har ändrats avbryts sparandet och originalet lämnas som det är. Du kan sedan läsa in den aktuella versionen från servern, vilket kastar dina osparade ändringar, så kopiera först undan din text. Redigeraren slår inte samman versionerna åt dig. Vid överföringar frågar appen innan den ersätter ett mål som har ändrats eller redan finns, och uppmanar dig att börja om ifall källan ändrades under överföringen.

Detaljerad dokumentation

man: stat →

man: diff →

Biometrisk upplåsning och säkerhet →