Varför kan ett monterat filsystem skapa filer men neka namnbyten?

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

Ett monterat filsystem kan tillåta att filer skapas men ändå neka namnbyten, eftersom namnbyte kräver separata krav på kataloger, ägarskap, gränser, flaggor och öppna filhandtag.

En lyckad montering visar bara att filsystemet är anslutet, och en lyckad filskrivning visar att klienten kan skapa eller ändra åtminstone ett objekt. Ett namnbyte är en katalogpoståtgärd som kan kräva behörighet i både käll- och målkatalogen, rätt att ta bort, en sökväg inom samma filsystem, ett giltigt målnamn samt att inga motstridiga SMB-delningsegenskaper eller skyddade filflaggor förekommer. Samla in det exakta felet och jämför skapa, byt namn, flytta och ta bort separat innan du bedömer att filsystemet är skadat.

Samla in det exakta namnbytesfelet innan du ändrar behörigheter

Upprepa ett namnbyte från värden och från den berörda klienten. Anteckna källsökväg, målsökväg, användaridentitet, filsystem, monteringspunkt, felkod och om målnamnet redan finns.

Linux fel från systemanropet rename skiljer mellan behörighetsfel, upptagna monteringspunkter, flyttar mellan olika enheter, skrivskyddade filsystem, icke-tomma mål och andra tillstånd som kan se identiska ut i en grafisk filhanterare.

Om det går att skapa en ny fil men inte att byta namn på den, bevara den skillnaden. Det begränsar problemet till ersättning av katalogposter, behörighet att ta bort, namnregler, lås eller en sökvägsgräns snarare än vanlig skrivåtkomst.

Kontrollera behörigheterna i båda överordnade katalogerna

Kontrollera ägarskap, rättighetsbitar, ACL:er och effektiv identitet i katalogen som innehåller det gamla namnet och katalogen som ska innehålla det nya namnet. Behörigheten för namnbyte avgörs främst av katalogerna, inte av filens skrivbit.

Red Hat förklarar att sticky bit begränsar namnbyte och borttagning i delade skrivbara kataloger till filägaren, katalogägaren eller en privilegierad användare, även när flera användare kan skapa filer där.

Testa med samma NAS-användare som får felet. Att det fungerar för en administratör bevisar inte att det vanliga kontot har rätt att ta bort eller byta namn på båda katalogposterna.

Kontrollera flaggor för oföränderlighet, borttagningsskydd och tillägg

Kontrollera filsystemets flaggor på filen och dess överordnade kataloger utöver vanliga behörigheter och ACL:er. Återställningar, säkerhetsverktyg eller lagringsflöden kan bevara flaggor som inte syns i en enkel behörighetslista.

FreeBSDs säkerhetshandbok beskriver hur en flagga för oföränderlighet förhindrar ändringar eller borttagning, medan flaggor för endast tillägg och förhindrad borttagning också kan blockera de katalogändringar som krävs för namnbyte.

Ta bort en skyddsflagga först efter att du har fastställt vilken policy eller applikation som satte den. Att rensa flaggor globalt kan kringgå kontroller för lagring, säkerhetskopiering eller skydd mot utpressningstrojaner.

Uteslut en flytt mellan olika filsystem som döljer sig bakom samma mappträd

Översätt käll- och målkatalogerna till enhets-ID:n, monteringspunkter, bindmonteringar, datamängder och containersökvägar. Två mappar under samma delning kan fortfarande tillhöra olika monterade filsystem.

GNU C Library definierar EXDEV som ett fel vid namnbyte mellan olika enheter. Ett flyttverktyg på högre nivå kan återhämta sig genom att kopiera och ta bort, medan en applikation som förväntar sig ett atomiskt namnbyte helt enkelt kan misslyckas.

Om en lokal flytt bara lyckas genom att kopiera hela filen var åtgärden inte ett atomiskt namnbyte. Korrigera applikationens tillfälliga sökväg och slutliga sökväg, eller håll båda stegen i samma filsystem.

Kontrollera öppna filhandtag och SMB-delning för borttagning

Lista öppna filer och SMB-sessioner för käll- och målkatalogerna. Stäng förhandsvisare, miniatyrbildsgeneratorer, redigerare, medieskannrar, antivirusverktyg och säkerhetskopieringsklienter en i taget.

Microsoft dokumenterar ett fall med en nätverksmapp där ett öppet handtag till miniatyrbildscachen blockerar namnbyte, vilket visar varför möjligheten att läsa eller skapa andra filer inte undanröjer en delningskonflikt för det specifika objektet.

Starta inte om hela NAS-enheten innan du har sparat informationen om öppna handtag. En omstart kan frigöra låset men dölja vilken klient eller tjänst som skapade det igen.

Jämför SMB:s namnbytesregler med klientens filnamn

Testa ett enkelt namn med små ASCII-bokstäver i samma katalog. Jämför sedan ändringar som bara skiljer mellan stora och små bokstäver, reserverade tecken, avslutande punkter eller blanksteg, Unicode-normalisering och ett befintligt målnamn.

Sambas modul för macOS-kompatibilitet tillhandahåller ett kompatibilitetsalternativ för POSIX-namnbyten, vilket visar att klientens och serverns namnsemantik kan påverka om ett katalognamnbyte godkänns.

Om bara ett visst filnamnsmönster misslyckas ska du bevara den ursprungliga namnkopplingen innan du normaliserar den. Massnamnbyten utan en lista för återställning kan skada mediebibliotek, synkroniseringsjobb, genvägar och säkerhetskopior.

Åtgärda det verifierade lagret och kontrollera varje åtgärd

Korrigera endast den fastställda orsaken: behörighet i den överordnade katalogen, ägarskap som påverkas av sticky bit, en skyddsflagga, en sökväg inom samma filsystem, ett öppet handtag eller ett inkompatibelt filnamn. Upprepa testet med den ursprungliga användaren och applikationen.

ZimaSpace-artikeln om filnamnskollisioner som endast skiljer mellan stora och små bokstäver behandlar det smalare plattformsöverskridande fallet där två namn blir likvärdiga på målet.

Problemet är löst när skapa, stänga, byta namn, flytta, ta bort och återskapa alla fungerar i den avsedda sökvägen efter återanslutning och omstart. Stoppa skrivningar om filsystemet blir skrivskyddat eller rapporterar korruption eller maskinvarurelaterade I/O-fel.

Vanliga frågor

Varför kan jag skapa en fil men inte byta namn på den?

Att skapa en fil kräver behörighet att lägga till en katalogpost, medan namnbyte även kan kräva rätt att ta bort den gamla posten, skriv- och körbehörighet i båda överordnade katalogerna, kompatibla namnregler samt att inga skyddsflaggor eller motstridiga handtag finns.

Betyder ett EXDEV-fel vid namnbyte att filsystemet är skadat?

Nej. Det betyder vanligtvis att källan och målet finns i olika filsystem, så kärnan kan inte slutföra ett enda atomiskt namnbyte. En flytt genom kopiering och borttagning kan fortfarande fungera.

Kan en öppen fil byta namn?

Många lokala POSIX-filsystem tillåter det, men SMB-klienter och applikationer kan öppna filer utan delning för borttagning, vilket får servern att neka namnbytet tills handtaget stängs.

Support och tips

Mer att läsa

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.