Bagaimana cara mengatasinya dengan cacat desain Pindahkan / Salin NTFS?

31

Sebagaimana diketahui oleh siapa pun yang mengetahui izin server file, NTFS memiliki fitur / cacat desain menarik yang dikenal sebagai masalah Pindahkan / Salin.

Sebagaimana dijelaskan dalam artikel MS KB ini , izin untuk folder atau file tidak secara otomatis mewarisi dari induk jika folder dipindahkan dan sumber dan tujuan berada pada volume NTFS yang sama. Izin diwarisi jika folder disalin atau jika sumber dan tujuan berada pada volume yang berbeda.

Ini adalah contoh cepat:

Anda memiliki dua folder bersama pada volume NTFS yang sama yang disebut "Teknisi" dan "Manajer". Grup Teknisi memiliki akses RW ke folder Teknisi dan grup Manajer memiliki akses RW ke folder "Manajer". Jika seseorang memiliki akses ke keduanya dan mereka memindahkan subfolder dari folder "Manajer" ke folder "Teknisi", folder yang dipindahkan masih hanya dapat diakses oleh pengguna di grup "Manajer". Grup "Teknisi" tidak dapat mengakses subfolder meskipun berada di bawah folder "Teknisi" dan harus mewarisi izin dari atas.

Seperti yang dapat Anda bayangkan, ini menyebabkan panggilan dukungan, tiket, dan siklus yang terbuang untuk menyelesaikan masalah pengguna akhir ini, belum lagi sarang tikus izin yang dapat Anda dapatkan jika pengguna sering memindahkan folder di antara folder / area aman yang berbeda di volume yang sama.

Pertanyaannya adalah:

Apa cara terbaik untuk mengatasi cacat desain NTFS ini dan bagaimana Anda menanganinya di lingkungan Anda?

Saya tahu artikel KB yang ditautkan berbicara tentang beberapa kunci registri untuk mengubah perilaku default Windows Explorer tetapi mereka adalah sisi klien dan mengharuskan pengguna untuk memiliki kemampuan untuk mengubah izin yang saya pikir di sebagian besar lingkungan adalah non-starter jika Anda ingin tetap mengontrol izin server file Anda (dan kewarasan Anda sebagai sysadmin).

David Archer
sumber
2
Saya tahu contoh Manajer / Teknisi hanya untuk mengilustrasikan cacat, tetapi dalam beberapa kasus itulah perilaku yang Anda inginkan: jika seseorang secara tidak sengaja memindahkan folder dari Manajer ke Teknisi, Anda mungkin tidak ingin Teknisi dapat mengakses saya t.
Ward - Reinstate Monica
2
Ini benar-benar bukan cacat, ini adalah cara izin File bekerja. Sudah didokumentasikan sejak rilis NTFS. Saya tidak percaya bahwa beberapa orang merekomendasikan untuk tidak menggunakan izin file dan hanya menggunakan izin berbagi untuk mengontrol akses. Ini bertentangan dengan dasar-dasar keamanan untuk server File Microsoft. Alasan mengapa memindahkan folder / file pada volume yang sama tidak diwariskan adalah bahwa folder / file tidak benar-benar bergerak pada disk, hanya pointer yang kita lihat berubah.
Michael Brown

Jawaban:

12

Pendekatan saya adalah tidak menggunakan izin file tingkat direktori / file; menggunakan izin tingkat berbagi file, dan mengatur seluruh drive data sistem file server untuk Semua Orang Kontrol Penuh (yang menjadi diperdebatkan).

Selama bertahun-tahun (10+), saya telah menemukan bahwa izin NTFS lebih kompleks dan mengarah ke lebih banyak kesalahan. Jika izin ditetapkan salah, atau warisan rusak, Anda mengekspos data dan sulit untuk menemukan dan melihatnya. Plus, Anda terkena masalah pindah / salin seperti yang Anda katakan.

Tempat di mana Anda harus menggunakan tingkat direktori / file ACL; Saya tahu tidak ada solusi lain selain pemeriksaan kesehatan secara teratur.

James Risto
sumber
10

Yah itu tidak benar-benar cacat. Aturan ini untuk menangani izin ketika memindahkan file telah ada sejak setidaknya beta 2 dari NT3.1 (meskipun jelas bukan warisan karena itu hanya ditambahkan dengan Windows 2000). Ini hampir sama terkenalnya dengan semua fitur Windows. Saya memiliki banyak simpati untuk pandangan Anda, karena mungkin ada beberapa dari kita yang belum terbakar oleh ini pada satu tahap. Tapi itu sesuatu yang sysadmin cepat pelajari.

JR

John Rennie
sumber
6
Saya berdebat dengan Raymond Chen di blognya tentang ini. Microsoft "menjual" NTFS sebagai memiliki izin "warisan", kemudian mundur ketika celah khusus dalam zirah ini diangkat. NTFS memiliki izin warisan pada saat pembuatan file dengan menempatkan ACE eksplisit ke file ketika mereka dibuat. Saya berpendapat bahwa, selama dokumentasi dan literatur pemasaran berbicara tentang sistem warisan mereka seolah-olah itu real-time baik dokumentasi atau kode tersebut bermasalah. Mereka harus memilih satu dan memperbaikinya.
Evan Anderson
1
Yah itu trade-off. Jika warisan adalah waktu nyata maka setiap kali Anda membuka file di bawah pohon yang dalam OS harus menjalankan pohon untuk mencari tahu apa izin yang efektif. Tentu saja pengorbanannya adalah jika Anda mengubah izin di atas pohon yang dalam, Anda harus menunggu lama! Tidak Active Directory menggunakan model yang sama?
John Rennie
Objek AD dengan benar mewarisi izin orang tua baru ketika dipindahkan di antara wadah dan saya berpendapat bahwa ini adalah perilaku "benar" yang diharapkan ketika memindahkan file / folder di NTFS.
David Archer
3
@renniej: AD memang menggunakan pewarisan real-time sejati. Sistem file Netware melakukannya sejak lama. NTFS bisa melakukannya juga, jika Microsoft telah mengimplementasikannya. Itu adalah "jalan yang tidak diambil". Apa yang mengganggu saya adalah bahwa dokumentasi Microsoft re: NTFS dan Explorer "memainkan" seperti warisan adalah waktu nyata (yaitu kebohongan). Beri tahu kami apa adanya, atau perbaiki perilaku yang sesuai dengan dokumentasi!
Evan Anderson
@renniej Seperti yang dikatakan Evan Anderson, Netware melakukan ini pada tahun 1990 ketika mereka menjadi raja. Masalahnya dapat diperbaiki dengan membuat indeks sistem file lain yang melacak 'daftar visibilitas'. Microsoft memilih untuk tidak melakukan itu, tetapi mungkin bisa mengubah satu untuk rilis Windows Server masa depan.
sysadmin1138
6

Kami telah menggunakan NTFS sejak NT 3.51 dan meskipun kami telah melihat "masalah" ini (seperti halnya hampir semua orang), ia tidak menyebabkan banyak masalah bagi kami:

  • Kami selalu memberi tahu orang-orang untuk menyalin file jika mereka perlu memindahkannya dari satu direktori bersama ke yang lain. "Tekan dan tahan tombol CTRL saat menyeret dan pastikan tanda + kecil ditampilkan," adalah frasa yang umum.
  • Folder bersama kami memiliki struktur yang cukup sederhana, dan folder bersama yang kami buat tidak terlalu sering lintas grup, sehingga orang lebih cenderung ingin menyalin file di tempat pertama.
  • Kami melihat masalah sebagian besar di ruang "umum" - folder tempat semua orang dapat membaca / menulis, tetapi direktori tersebut sebagian besar berumur pendek sehingga masalahnya hilang ketika dihapus.
Ward - Reinstate Monica
sumber
4

Solusi yang dapat saya pikirkan:

  • temukan beberapa cara untuk membuat folder dengan izin berbeda pada volume NTFS yang berbeda
  • Buat tugas terjadwal (sekali jam atau sekali sehari tergantung pada frekuensi permintaan dukungan) yang berjalan melalui folder dan mengatur ulang semua izin untuk menjadi sama dengan yang dari tingkat atas. Ini kurang dari ideal, apalagi jika folder memiliki banyak file di dalamnya, tetapi adalah sesuatu yang akan menjaga masalah tetap ada jika tidak ada solusi yang baik seperti memperbaiki registri sisi server. Perintah yang ingin Anda lihat disebut 'cacls' yang kemudian dapat Anda tambahkan ke file batch.

Penafian - Saya berasal dari latar belakang unix (dan telah menerapkan yang terakhir untuk memperbaiki cacat izin yang berbeda - rasanya menjijikkan, tetapi melakukan pekerjaan), jadi mungkin ada perbaikan yang jauh lebih baik.

Menandai
sumber
+1 - Jawaban pertama yang diberikan Mark adalah pilihan terbaik. Ini sakit, tapi itu cara terbaik untuk berkeliling keputusan desain ini bodoh di NTFS 5.
Evan Anderson
Untuk memperluas: Ini adalah tempat di mana teman-teman saya yang menggunakan SharePoint akan mengatakan "gunakan SharePoint"! Demikian juga, teman-teman saya yang menggunakan kontrol-versi dan teman-teman-menggunakan-sistem-kontrol-dokumen akan menunjuk ke Subversion, Documentum, dll, dan berkata "gunakan itu." Pilihan desain ini di NTFS adalah kutil yang sangat besar, dan hampir membuat Anda bertanya-tanya apakah Microsoft benar-benar MENGGUNAKAN perangkat lunak mereka sendiri ketika Anda harus bertarung dengannya di jaringan Anda sendiri. (Ini menjerit kepada saya bahwa Microsoft tidak menggunakan perangkat lunak mereka dengan cara yang sama seperti yang kami lakukan dengan pengguna kami, sebenarnya. Pasti menyenangkan memiliki perusahaan yang diisi dengan "pekerja berpengetahuan".)
Evan Anderson
1
Saya setuju bahwa idealnya kita dapat memisahkan semua folder bersama ke volume mereka sendiri, dalam praktiknya ini tidak bisa dijalankan untuk lingkungan yang besar (ribuan folder bersama). Juga, tanpa titik persimpangan funky atau symlink voodoo, ini berarti kehilangan kemampuan untuk membuat subfolder bersarang dengan izin yang berbeda pada mereka.
David Archer
1
@ David: Memindahkan data ke seluruh bagian akan menghasilkan salinan dan menghapus. Memindahkan data dalam satu bagian akan menghasilkan langkah. Jika Anda membuat setiap folder bersama sebagai root dari hierarki izin tanpa subfolder yang memiliki izin lebih ketat, Anda akan mengatasi masalahnya. Tapi tetap saja jelek. (Saya punya server W2K3 w / 2200 + folder bersama individu di atasnya dan aku tidak melihat masalah kinerja ...)
Evan Anderson
3

Ketika pindah sebagai admin saya menggunakan xcopy / s / e / c / h / r / k / y - semuanya selain dari kepemilikan file dan ACL, yang berarti bahwa warisan ACL otomatis masuk. Tidak pernah benar-benar harus berurusan dengan situasi di mana pengguna memindahkan barang.

Maximus Minimus
sumber
2
Apakah pengguna Anda hidup?
Evan Anderson
4
Kadang-kadang saya bertanya-tanya ...
Maximus Minimus
@Even: Mungkin tidak ada dari mereka dalam dua kelompok!
SamB
+1 untuk mengarahkan orang ke alat yang memecahkan masalah ini saat memelihara file (bersama dengan banyak lainnya); namun, XCOPY telah didepresiasi: ROBOCOPY.EXE adalah penerusnya yang sangat cakap.
jnaab
2
Maaf untuk nitpicking, tetapi tidak menyalin file _copy_ (bukan _moving_ file?) - Sepertinya penulis tidak memiliki masalah dengan menyalin, ia hanya memiliki masalah dengan _moving_. Saya mungkin salah tentang ini karena kurangnya pengalaman, jadi tolong perbaiki saya jika saya salah (yaitu, apakah Anda menggunakan perintah 'del' setelah menggunakan 'xcopy', jadi file-file tersebut sebenarnya 'disalin dan dihapus'! = pindah?)
colemik
3

Saya menggunakan kebijakan grup / kebijakan keamanan / sistem file untuk melacak izin yang rumit. (JANGAN PERNAH menggunakan "ganti izin" dalam kebijakan).

Jadwalkan CACLS untuk mengatur ulang semua izin pada malam hari diikuti oleh gpupdate / force untuk menerapkan kembali izin dari kebijakan. Bekerja seperti pesona.

Alexandru Nica
sumber
Mungkin ini hanya untuk server Windows? Karena Kebijakan Grup harus diterapkan ke objek domain, ini tidak dapat diterapkan pada penyimpanan non-Windows yang saya bayangkan?
Rich M
2

Sejak Windows 7 (atau mungkin Windows Vista), izin untuk folder atau file DO mewarisi dari orangtua jika folder dipindahkan dan sumber dan tujuan berada pada volume NTFS yang sama - jika file atau folder sedang disalin melalui Explorer. Dalam OS sebelumnya, Anda dapat menggunakan Far manager - memungkinkan untuk memungkinkan izin warisan dari tujuan (bersama dengan banyak fitur lainnya). Meskipun Far mungkin tampak tidak ramah untuk pengguna umum.

GCRaistlin
sumber
0

Solusi yang sangat sederhana adalah dengan hanya zip file dan membuka kompresi ke direktori tujuan.

Bob
sumber
Saya baru saja mencoba ini dan sayangnya itu tidak berhasil. Izin pada arsip zip berbeda bahkan sebelum saya melakukan sesuatu dengannya. Izin yang diwariskan tetap tetapi yang eksplisit tidak dibuat.
Rich M