NTFS Taşı / Kopyala tasarım kusuru nasıl giderilir?


31

Dosya sunucusu izinleriyle ilgilenen herkesin bildiği gibi, NTFS'nin Taşı / Kopyala sorunu olarak bilinen ilginç bir tasarım özelliği / kusuru vardır.

Bu MS KB makalesinde açıklandığı gibi , bir klasör veya dosyanın izinleri, klasör taşındığında ve kaynak ve hedef aynı NTFS birimindeyse otomatik olarak üst öğeden devralmaz. Klasör kopyalanırsa veya kaynak ve hedef farklı birimlerdeyse izinler devralınır.

İşte hızlı bir örnek:

"Teknisyenler" ve "Yöneticiler" adlı aynı NTFS biriminde iki paylaşılan klasörünüz var. Teknisyenler grubunun Teknisyenler klasörüne RW erişimi ve Yöneticiler grubunun "Yöneticiler" klasörüne RW erişimi vardır. Birinin her ikisine de erişimi varsa ve bir alt klasörü "Yöneticiler" klasöründen "Teknisyenler" klasörüne taşırsa, taşınan klasöre yalnızca "Yöneticiler" grubundaki kullanıcılar tarafından erişilebilir. "Teknisyenler" grubu, "Teknisyenler" klasörü altında olmasına rağmen alt klasöre erişemez ve üstünden izin devralması gerekir.

Tahmin edebileceğiniz gibi, bu, kullanıcılar sık ​​sık farklı güvenli klasörler / alanlar arasında klasörleri taşırken, son kullanıcılar ile ilişkili olan izinler sıçanları yuvalarına değinmek yerine, bu son kullanıcı sorunlarını çözme konusunda destek çağrılarına, biletlere ve boşa harcanan çevrimlere neden olur. Aynı hacim.

Sorular:

Bu NTFS tasarım kusurunu gidermenin en iyi yolu nedir ve bunu ortamınızda nasıl kullanıyorsunuz?

Bağlantılı KB makalesinin Windows Gezgini'nin varsayılan davranışını değiştirmek için bazı kayıt defteri anahtarları hakkında konuştuğunu biliyorum, ancak bunlar istemci tarafındadır ve kullanıcıların, çoğu ortamda düşündüğüm izinleri değiştirme yeteneğine sahip olmalarını gerektirir. dosya sunucusu izinleriniz (ve bir sysadmin olarak akıl sağlığınız) üzerinde kontrol sahibi olmak istiyorum.


2
Yöneticiler / Teknisyenler örneğinin sadece kusuru göstermek olduğunu biliyorum, ancak bazı durumlarda istediğiniz davranış budur: eğer birisi yanlışlıkla klasörü Yöneticilerden Teknisyenler'e taşırsa, muhtemelen Teknisyenlerin erişmesini istemezsiniz. o.
Ward - Monica'yı yeniden yerleştir

2
Bu gerçekten bir kusur değil, Dosya izinlerinin çalışma şekli budur. NTFS'nin yayımlanmasından bu yana belgelenmiştir. Bazı kişilerin dosya izinlerinin kullanılmamasını ve yalnızca erişimi denetlemek için paylaşım izninin kullanılmasını önerdiğine inanamıyorum. Bu, bir Microsoft Dosya sunucusu için temel güvenlik kurallarına aykırıdır. Bir klasörü / dosyayı aynı birimde taşımanın nedeni devralmadığı için, klasör / dosyanın diskte taşınmaması, yalnızca gördüğümüz işaretçinin değişmesidir.
Michael Brown

Yanıtlar:


12

Benim yaklaşımım dosya / dizin düzeyinde dosya izinlerini kullanmamak; dosya paylaşımı düzeyindeki izinleri kullanın ve tüm sunucu dosya sistemi veri sürücüsünü Everyone Full Control (çok çeker) olarak ayarlayın.

Yıllar geçtikçe (10+), NTFS izinlerinin daha karmaşık olduğunu ve daha fazla hataya yol açtığını buldum. İzinler yanlış ayarlanırsa veya miras bozulursa, verileri ve onu bulmak ve görmek zordur. Ayrıca, dediğiniz gibi taşıma / kopyalama sorununa maruz kalıyorsunuz.

Dizin / dosya düzeyinde ACL'leri kullanmanız gereken yerler; Bir şeyi düzenli olarak kontrol etmenin sağlıktan başka bir çözümü olmadığını biliyorum.


10

Aslında bu bir kusur değil. Dosyaları taşırken izinlerin ele alınmasıyla ilgili bu kural, NT3.1'in en az 2 beta sürümünden beri kullanılmasına rağmen (açıkça yalnızca Windows 2000 ile eklenmiş olduğu gibi miras). Windows'un herhangi bir özelliği olabileceği kadar iyi bilinmektedir. Görüşünüz için size çok fazla sempati duyuyorum, çünkü bununla bir aşamada yakılmayan birkaç kişi olabilir. Fakat bu, sysadmin'in çabucak öğrendiği bir şey.

JR


6
Bu konuda blogunda Raymond Chen ile tartışmıştım. Microsoft, "NTFS" izni "miras" olarak satar ve zırhtaki bu belirli belirti ortaya çıktığında geri adım atır. NTFS, dosya oluşturma sırasında açık ACE'leri oluşturulduklarında dosyalara yerleştirerek izin devralmalarına sahiptir. Belgelendirme ve pazarlama literatürünün miras sistemi hakkında konuştuğu sürece, belgeler ya da kodlar gerçek zamanlıymış gibi, kendi miras sistemleri hakkında konuştuklarını iddia ediyorum. Birini seçip düzeltmeliler.
Evan Anderson

1
Bu bir takas. Kalıtım gerçek zamanlı olsaydı, derin bir ağacın dibinde bir dosya açtığınızda, işletim sisteminin etkili izinlerin ne olduğunu bulmak için ağacı çalıştırması gerekirdi. Tabii ki tradeoff, eğer derin bir ağacın tepesindeki izinleri değiştirirseniz, bir loooong beklemeniz olacak! Active Directory aynı modeli kullanmıyor mu?
John Rennie

AD nesneleri, kapsayıcılar arasında taşındığında yeni ebeveynin izinlerini doğru bir şekilde devralır ve NTFS'de dosya / klasörleri taşırken bunun beklenen "doğru" davranış olduğunu iddia edeceğim.
David Archer

3
@ renniej: AD, gerçek zamanlı gerçek mirası kullanır. Netware dosya sistemi yıllar önce yaptı. Microsoft uygulamış olsaydı, NTFS de yapabilirdi. "Alınmamış yol". Beni rahatsız eden şey şu Microsoft belgelerinin tekrarı: NTFS ve Explorer miras gibi "oynuyor" gerçek zamanlı (yani yalan söylüyor). Bize bunun gibi olduğunu söyleyin veya belgelerle dalga geçme davranışını düzeltin!
Evan Anderson

@renniej Evan Anderson'un dediği gibi Netware bunu 1990'da kral olduklarında yaptı. Sorun, 'görünürlük listesini' izleyen başka bir dosya sistemi dizini oluşturarak çözülebilir. Microsoft bunu yapmamayı seçti, ancak gelecekteki bir Windows Server sürümü için düşünülebilir.
sysadmin1138

6

NT 3.51'den beri NTFS kullanıyoruz ve bu "sorunu" görmüş olsak da (hemen hemen herkesin olduğu gibi) bize fazla sorun yaratmadı:

  • İnsanlara her zaman paylaşılan bir dizinden diğerine taşımaları gerektiğinde dosyaları kopyalamasını söyleriz. "Sürüklerken CTRL tuşunu basılı tutun ve küçük + işaretinin gösterildiğinden emin olun", ortak bir cümledir.
  • Paylaşılan klasörlerimiz oldukça basit bir yapıya sahiptir ve oluşturduğumuz paylaşılan klasörler gruplar arasında çok sık geçiş yapmaz, bu nedenle insanların dosyaları ilk etapta kopyalamak istemeleri daha muhtemeldir.
  • Sorunu çoğunlukla "ortak" alanımızda görüyoruz - herkesin okuyabileceği / yazabileceği klasörler, ancak bu dizinler çoğunlukla kısa ömürlüdür, bu yüzden sorun temizlendiğinde ortadan kalkar.

4

Düşünebileceğim geçici çözümler:

  • Farklı izinlere sahip klasörleri farklı NTFS birimleri üzerinde yapmanın bir yolunu bulmak
  • Klasörlerden geçen ve tüm izinleri en üst seviyedekilerle aynı olacak şekilde sıfırlayan zamanlanmış bir görev yapın (destek isteklerinin sıklığına bağlı olarak günde bir kez veya günde bir kez). Bu, idealden daha az, daha çok, eğer klasörlerin içinde çok sayıda dosya varsa, ancak sunucu tarafı kayıt defteri düzeltmesi gibi iyi bir çözüm yoksa, sorunu sabit tutacak bir şeydir. Bakmak isteyeceğiniz komut, daha sonra bir toplu iş dosyasına ekleyebileceğiniz 'cacls' olarak adlandırılır.

Feragatname - Bir unix arkaplanından geliyorum (ve farklı izin kusurlarını düzeltmek için sonuncuyu uyguladım - bu çok zorlu ama iş yapıyor);


+1 - Mark'ın verdiği ilk cevap en iyi seçimdir. Bu bir acı, ama NTFS 5'te bu aptal tasarım kararını almanın en iyi yoludur.
Evan Anderson

Genişletmek için: Burası SharePoint kullanan arkadaşlarımın "SharePoint kullan" diyeceği bir yer! Aynı şekilde, sürüm-kontrol-kullanma-arkadaşları ve belge-kontrol-sistem-kullanma-arkadaşlarımı Subversion, Documentum, vb. İşaret edecek ve "bunu kullan" diyecekti. NTFS'deki bu tasarım seçimi büyük bir siğildir ve Microsoft, kendi ağınızla mücadele etmeniz gerektiğinde Microsoft'un gerçekten kendi yazılımlarını kullanıp kullanmadığını merak etmenizi sağlar. (Microsoft'un yazılımlarını aslında bizim kullanıcılarımızla yaptığımız gibi kullanmadığını bana haykırıyor. Bir şirketin "bilgi işçileri" ile dolu olması güzel olmalı.)
Evan Anderson

1
İdeal olarak, tüm paylaşılan klasörleri kendi hacimlerine ayırabileceğimizi kabul ediyorum, pratikte bu büyük bir ortam için kullanılamaz (binlerce paylaşılan klasör). Ayrıca, bazı korkak bir bağlantı noktası veya sembolik bağlantı vudu olmadan, bu, üzerinde farklı izinlere sahip iç içe alt klasörlere sahip olma özelliğini kaybetme anlamına gelir.
David Archer

1
@David: Verileri paylaşımlar arasında taşımak bir kopyalama ve silme işlemine neden olur. Verileri bir paylaşım içinde taşımak, bir harekete neden olur. Her paylaşılan klasörü, daha kısıtlayıcı izne sahip alt klasörleri olmayan bir izin hiyerarşisinin kökü yaparsanız, sorunu hafifletirsiniz. Yine de çirkin. (W2K3 sunucum w / 2200+ tek tek paylaşılan klasörüm var ve performans sorunları göremiyorum ...)
Evan Anderson

3

Yönetici olarak taşınırken xcopy / s / e / c / h / r / k / y - dosya mülkiyeti ve ACL dışında kalan her şeyi kullanırım, yani ACL devralmanın otomatik olarak devreye girdiği anlamına gelir. olsa taşınmış şeyler.


2
Kullanıcılarınız yaşıyor mu?
Evan Anderson

4
Bazen merak ediyorum ...
Maximus Minimus

@Even: Belki hiçbiri iki grupta değildir!
SamB

Dosyaları korurken bu sorunu çözen araca liderler için +1 (diğerleri ile birlikte); Ancak, XCOPY amortismana tabi tutulmuştur: ROBOCOPY.EXE onun çok yetenekli halefidir.
jnaab

2
Nitpicking için üzgünüm, ancak xcopy _copy_ dosyaları (dosyaları _moving_ yerine?) - yazar kopyalama ile ilgili herhangi bir sorun yok gibi görünüyor, o sadece _moving_ ile ilgili sorunlar var Tecrübe eksikliğimin bu bc'sinde yanılmış olabilirim, bu yüzden lütfen hatalıysam beni düzeltin (yani, 'xcopy' kullandıktan sonra 'del' komutunu kullanıyor musunuz, bu yüzden dosyalar aslında 'kopyalandı ve silindi!' = taşındı?)
colemik

3

Karmaşık izinleri takip etmek için grup politikası / güvenlik ilkeleri / dosya sistemi kullanıyorum. (Politikada "izinleri değiştir" seçeneğini ASLA kullanmayın).

Gece boyunca tüm izinleri sıfırlamak ve ardından politikanın iznini yeniden uygulamak için bir gpupdate / force tarafından bir CACLS programlayın. ÇALIŞIYOR bir cazibe gibi.


Muhtemelen bu sadece Windows sunucuları için mi? Grup İlkesi'nin etki alanı nesnelerine uygulanması gerektiğinden, bu hayal ettiğim Windows olmayan depolama paylaşımlarına uygulanamaz mıydı?
Rich M

2

Windows 7'den (veya belki de Windows Vista'dan beri), bir klasör veya dosyanın izinleri DO, klasör taşınırsa ve kaynak ve hedef aynı NTFS birimindeyken üst öğeden devralır - bir dosya veya klasör Gezgin aracılığıyla kopyalanıyorsa. Daha önceki bir işletim sisteminde Uzak yönetici kullanabilirsiniz - hedeften izin devralmayı sağlar (diğer birçok özellik ile birlikte). Uzak bir genel kullanıcı için kolay görünmese de.


0

Çok basit bir geçici çözüm sadece dosyaları sıkıştırmak ve hedef dizine açmaktır.


Bunu yeni denedim ve maalesef işe yaramadı. Zip arşivindeki izinler onunla bir şey bile yapmadan önce farklı. Miras alınan izinler kalır, ancak kesin olanlar oluşturulmaz.
Rich M
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.