pengembangan-web-mp.com

Menggunakan ICACLS untuk mengatur izin pada direktori pengguna

Saya mencoba mengatur ulang izin pada direktori pengguna dan mengalami sedikit masalah dengan langkah terakhir skrip saya. Skrip saya pada dasarnya mengambil kepemilikan dari seluruh direktori pengguna, mengatur ulang izin pada semua file dan folder untuk direktori, secara eksplisit memberikan izin yang saya butuhkan, menghentikan semua warisan izin dari folder induk, menetapkan pemilik yang sah (pengguna tertentu) untuk semua file dan folder, dan kemudian menghapus izin yang saya berikan kepada diri saya sendiri sehingga saya bisa beroperasi pada file. Saya perlu langkah terakhir ini untuk menghapus diri saya dari SEMUA file dan subfolder, tetapi saat ini hanya menghapus saya dari% userDir% dan meninggalkan semua izin yang diwarisi di bawah ini. Ini merupakan kekurangan yang jelas dalam ICACLS. Adakah yang tahu cara lain untuk mencapai ini?

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /inheritance:r
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%"
16
pk.

Pengamatan pertama: Setiap kali Anda memblokir warisan Anda memotong diri Anda dari fleksibilitas masa depan. Saya menghindari pemblokiran warisan di semua biaya.

Jika Anda memerlukan pengguna untuk dapat membuat daftar isi folder "E:\Home Directories" tingkat atas, misalnya, pertimbangkan izin berikut:

  • SISTEM - Kontrol Penuh - Diterapkan ke folder ini, sub-folder, dan file
  • BUILTIN\Administrator - Kontrol Penuh - Diterapkan ke folder ini, sub-folder, dan file
  • BUILTIN\Pengguna yang Diotentikasi - Baca dan Jalankan - Hanya berlaku untuk folder ini

Izin terakhir tidak diwariskan ke dalam subfolder. Di setiap subfolder, warisan tetap diaktifkan dan Anda cukup menentukan pengguna dengan hak "Modifikasi" atau "Kontrol Penuh" (tergantung pada bagaimana perasaan Anda tentang pengguna yang dapat mengatur izin di dalam direktori home mereka). (Biasanya saya menetapkan izin terakhir dengan menambahkan "Pengguna yang Diotentikasi" di lembar properti Keamanan non-"Advanced", hapus centang pada kotak centang "Baca" dan "Baca dan Jalankan". Saya kemudian melanjutkan ke dialog "Lanjutan" dan mengubah Pengaturan "Terapkan ke" untuk ACE itu untuk "Hanya folder ini". Itu tentang cara termudah, dalam hal jumlah klik, untuk mengaturnya.)

Kemudian, skrip Anda menjadi:

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T

Saya sangat curiga bahwa penambahan izin "Pengguna yang Diotentikasi" yang telah saya jelaskan di atas dengan warisan yang disetel ke "Hanya folder ini" akan memberi Anda apa yang Anda cari dalam fungsionalitas dan akan memberi Anda fleksibilitas di masa mendatang jika Anda mengetahuinya. Anda harus menetapkan izin yang mungkin perlu diwariskan ke semua direktori home pengguna di masa mendatang.

Ini adalah folder saya SOP untuk direktori home user, diarahkan kembali ke "My Documents", "Desktop", folder dll, dan untuk roaming direktori profil pengguna. Ini berfungsi dengan baik.

Edit

re: komentar Anda tentang akses BUILTIN\Administrator

Saya memiliki berbagai argumen dengan orang-orang tentang pendapat saya tentang pemberian BUILTIN\Administrator akses selama bertahun-tahun, dan pendapat saya adalah ini:

  • Lebih mudah untuk memecahkan masalah kelas pengguna tertentu jika Anda dapat membuka file mereka. Sungguh menyakitkan untuk "mengambil kepemilikan" dan bisa sangat lambat jika ada banyak file juga.

  • Seperti yang Anda lihat dengan ICACLS, BUILTIN\Administrator dapat "menetapkan" kepemilikan (selain "mengambilnya") sehingga tidak ada "keamanan" yang ditambahkan dengan tidak memiliki file yang dapat diakses oleh BUILTIN\Administrator.

  • Kecuali jika Anda menggunakan audit (dan memilah-milah entri palsu-positif yang berpotensi besar), tidak akan ada jejak audit ketika pengguna BUILTIN\Administrator mengambil kepemilikan file yang seharusnya tidak dapat diakses, menyalinnya, lalu mengembalikan file kembali ke pemilik dan izin "semestinya".

  • Di dunia Microsoft, Encrypting filesystem (EFS) dimaksudkan untuk menyelesaikan masalah menjaga akses BUILTIN\Administrator yang tidak sah terjadi. ACL NTFS tidak memecahkan masalah itu. (Jelas, EFS bukan satu-satunya acara di kota. Enkripsi adalah jawaban nyata untuk memecahkan masalah "batasi akses administrator jaringan" tidak peduli bagaimana Anda mengirisnya.)

Menurut saya, tidak menentukan BUILTIN\Administrator dengan akses ke direktori home user (dan, pada kenyataannya, folder apa pun) berarti bahwa Anda meningkatkan kompleksitas dan waktu yang diperlukan untuk menyelesaikan masalah sambil memberikan kurang dari tidak ada keamanan nyata ("kurang dari tidak sama sekali "Karena menanamkan rasa aman palsu di mana tidak ada).

Saya sudah menyerah untuk memenangkan pertengkaran dengan orang-orang melalui logika. Tampaknya menjadi masalah emosional dengan beberapa orang. Ini seperti ACE konyol "Tolak/Terima Sebagai" yang ditempatkan di akar organisasi Exchange untuk mencegah kelompok istimewa tertentu dari membuka kotak pesan pengguna. Ia tidak menawarkan keamanan nyata (karena tanpa audit seseorang dapat menghapus/menerapkan kembali ACE seperlunya), rasa aman yang salah, dan menghalangi ketika memecahkan masalah nyata.

Bahkan jika Anda tidak menyukai argumen saya tentang BUILTIN\Administrator memiliki akses Anda ingin untuk menjaga hierarki warisan tetap utuh dengan menggunakan pewarisan "Folder ini saja" jika diperlukan. Memblokir warisan dalam hierarki izin adalah tanda pasti bahwa sesuatu tentang desain "rusak" (terbalik, dll.).

18
Evan Anderson

Pertama, terima kasih untuk kutipan skrip Anda. Saya telah mengerjakan hal yang sama tetapi terjebak di tempat yang berbeda. Pada kotak SBS 2008 saya, kode di bawah ini berfungsi untuk saya (tentu saja dengan asumsi menjalankannya meningkat). Saya melakukan icacls% userdir%/t dari folder pengguna baru (default) yang dibuat oleh OS, dan membandingkannya dengan icacls% userdir%/t dari folder setelah menjalankan skrip ini dan sepertinya semua "O's dan "Itu benar. Semoga itu akan bekerja untuk Anda juga.

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(oi)(ci)f
ICACLS "E:\Home Directories\%userDir%\*.*" /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%\*.*" /inheritance:r
ICACLS "E:\Home Directories\%userDir%\*.*" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%" /t

Salam Hormat,

 -d
1
user16680