Saya memiliki pengguna di domain yang memiliki akses ke beberapa subfolder di beberapa folder. Hak-haknya didefinisikan dengan sangat terperinci. Sekarang dia meninggalkan perusahaan tetapi akan terus bekerja untuk sebuah perusahaan sebagai sumber daya yang dikontrak.
Saya perlu menemukan semua folder yang dapat diaksesnya dan mencabut izinnya, lalu mengaturnya dengan serangkaian izin akses yang berbeda.
Apakah ada alat (freeware, lebih disukai) yang mencantumkan semua izin NTFS untuk pengguna tertentu? Saya sudah mencoba dengan AccessEnum dari Sysinternals, tetapi daftar tidak dapat disaring oleh nama pengguna dan tidak berguna bagi saya. Saya telah melihat CACLS juga, tapi sejauh yang saya tahu itu menampilkan izin yang dipesan oleh file, bukan oleh pengguna.
Ada ide?
sumber
Jawaban:
Ini tampaknya melakukan trik (dengan kemungkinan peringatan), untuk menemukan semua folder yang dapat diakses oleh pengguna "someuser", dalam contoh ini di drive C, menggunakan perintah icacls Windows bawaan:
/ T diperlukan untuk memerintahkannya untuk mengembalikan direktori. / C diperlukan untuk memerintahkannya agar tetap berjalan meskipun menemui kesalahan. / L membuatnya bekerja dengan tautan simbolik (jika ada). (Yang terakhir adalah huruf L, dan bendera ini bisa huruf besar atau kecil.)
Itu
*.
akan dikenali oleh DOS old-timer sebagai cara untuk mengatakan "mencari direktori, bukan file". Tentu saja, jika Anda TIDAK ingin menemukan file dan bukan folder, ubah ke*.*
, dan tentu saja Anda dapat mengarahkannya ke drive apa pun, atau menjalankannya dari folder apa saja dan meninggalkan jalur drive / folder dan membiarkannya mencari relatif terhadap itu folder saja.Saya mencari jawaban yang sama dengan OP, dan menemukan entri ini, tetapi kecewa melihat hanya tawaran berdasarkan alat yang dapat diunduh. Seperti yang lain, saya lebih suka menggunakan sesuatu yang built-in, dan saya menemukannya, di alat icacls ini.
Dan saya telah mengkonfirmasi itu berfungsi pada Windows Server 2012, 2008, dan Windows 7, jadi saya curiga ini akan berfungsi juga di Server 2003, Windows 8, dan seterusnya.
Daftar yang dihasilkan akan berupa folder yang ditunjukkan baris demi baris, seperti:
SID Ditemukan: c: \ somedir \ somesubdir.
Perhatikan bahwa jika Anda menjalankan ini sebagai pengguna yang tidak sendiri memiliki izin untuk beberapa direktori yang dilalui, Anda akan mendapatkan kesalahan yang disisipkan dalam hasil seperti:
c: \ Informasi Volume Sistem: Akses ditolak.
Dan jika Anda mencari seluruh drive, itu bisa mengakibatkan ratusan kesalahan seperti itu, sehingga sulit untuk menemukan hasilnya.
Beberapa orang mungkin berpikir jawabannya adalah menjalankan baris perintah sebagai administrator, tetapi itu hanya akan menyebabkan lebih banyak kesalahan seperti itu muncul, karena Anda sekarang akan melintasi folder yang sebelumnya disembunyikan.
Sekarang, jika Anda tertarik untuk menyembunyikan kesalahan-kesalahan itu, Anda tidak akan dapat menggunakan perintah find untuk mem-pipe hanya hasil yang DO berhasil (yang DO merujuk ke "SID found"), karena kesalahan TIDAK akan disaring oleh pipa ke perintah find. Sebaliknya, jika Anda ingin menghapus semua kesalahan, Anda perlu menggunakan trik yang agak tidak jelas untuk mengarahkan aliran kesalahan (stderr) ke "bit bucket" dengan menggunakan
2>nul:
. Jadi contoh di atas akan menjadi:Berhati-hatilah bahwa beberapa folder yang menghasilkan kesalahan seperti itu, yang kesalahannya sekarang disembunyikan, mungkin folder yang diberi nama "someuser" TIDAK memiliki akses tetapi yang ANDA tidak lakukan. Jadi, Anda mungkin ingin berpikir dua kali tentang mengabaikan kesalahan-kesalahan ini. tetapi jika Anda ingin, itulah cara Anda dapat melakukannya.
Kemungkinan itu memang berpotensi membatasi nilai jawaban ini, saya sadar. Jika ada orang yang lebih terbiasa dengan hal-hal yang ingin memperluas atau memperbaiki jawaban saya, saya akan menyambutnya.
sumber
Anda dapat menggunakan PowerShell tanpa perlu mengunduh apa pun. Ini akan bekerja dengan v2.0 dan yang lebih baru:
Ini tidak sebersih apa yang tersedia dengan PowerShell v3 dan aktif, tetapi akan berfungsi. Ini akan menampilkan daftar direktori yang ditemukan dalam format string.
Anda dapat dengan mudah menampilkannya sebagai objek dan terus bekerja dengan mereka (ekspor ke file CSV, hapus entri saat Anda menemukannya, perbarui tiket dengan informasi ... dll) dengan memanipulasi objek input dari Tulis- Panggilan keluaran.
sumber
if ($ACL.IdentityReference -like $ReferenceAccountName -and !$ACL.IsInherited){
Saya menemukan solusi untuk pertanyaan saya sendiri. Saya percaya, ini sangat sederhana dan bersih. Anda hanya perlu menginstal subinacl dan menjalankan satu baris dari command prompt.
Anda dapat mengunduh subinacl di sini . Meskipun secara resmi didukung hanya pada Windows 2000, Windows XP, dan Windows Server 2003, itu harus bekerja pada Windows Vista, Windows Server 2008 dan Windows 7 juga.
Selanjutnya, Anda menjalankan yang berikut dari command prompt:
Di mana X: adalah drive yang Anda pindai dan nama pengguna adalah pengguna yang izinnya ingin Anda daftarkan. Pemindaian dapat memakan waktu dan Anda mendapatkan hasilnya di TEXTFILENAME.TXT.
Jika Anda menggunakan sakelar / tutup, Anda mendapatkan daftar ringkas izin akses - pada dasarnya Anda melihat direktori mana yang dapat diakses oleh pengguna (dengan masker akses dan beberapa hal lain yang kadang-kadang berguna).
Saya menggunakan OpenOffice Calc untuk mengimpor daftar dan kemudian menerapkan Custom Filter dan memfilter hanya untuk baris-baris yang dimulai dengan + FILE . Baris-baris ini berisi direktori yang dapat diakses pengguna. Beginilah cara menggunakan alat sederhana yang hanya menghasilkan informasi yang relevan.
Karena pewarisan sering diaktifkan pada direktori induk, jumlah direktori aktual yang mungkin perlu Anda kunjungi untuk menyesuaikan izin biasanya jauh lebih rendah daripada daftar itu sendiri.
sumber