2016-05-12 19 views
5
acemi soru için

üzgünüm. Vim'in sadece bir salt okunur dosya yazmayı nasıl başardığını bilmek isterim. Bir metin dosyasında 555 izin var. Ama ben buna & yazma şey açıp zaman yapar: w! , dosyaya yaptığım değişiklikler kaydedilir. Vim'in bunu arka planda nasıl yaptığını merak ediyorum! İzinleri geçici olarak 755'e değiştirmek ve ona yazmak ve izinleri geri almak gibi mi? Lütfen aydınlatın.vim bir salt okunur dosya yazıyor nasıl etkiliyor?

cevap

7

DÜZENLEME: Başlangıçta doğru ile cevap ancak UNIX izinleri nasıl çalıştığı hakkında sonuçta ilgisiz bilgiler: o Vim ne yaptığını değildi. Nitekim

, haklısın: Geri sıfırlamak sonradan

/* When using ":w!" and the file was read-only: make it writable */ 
if (forceit && perm >= 0 && !(perm & 0200) && st_old.st_uid == getuid() 
       && vim_strchr(p_cpo, CPO_FWRITE) == NULL) 
{ 
    perm |= 0200; 
    (void)mch_setperm(fname, perm); 
    made_writable = TRUE; 
} 

ve: Eğer :w! sorunu ve UNIX halindeyken o gerekiyorsa, Vim yazma izni katacak

Not: T

if (made_writable) 
    perm &= ~0200;  /* reset 'w' bit for security reasons */ 

Ayrıca yardımcı yansıtılır Onun
dosya ve sonu (sembolik) bağlantıları iznini ve sahipliğini değiştirebilir. 'Cpoptions' Bunu önlemek için 'W' bayrağı ekleyin.

İlgili konular