Saya baru saja pindah dari IIS6 di Win2003 ke IIS8 di Win2012 untuk hosting aplikasi ASP.NET.
Dalam satu folder tertentu di aplikasi saya, saya perlu Membuat & Menghapus file. Setelah menyalin file ke server baru, saya terus melihat kesalahan berikut ketika saya mencoba menghapus file:
Akses ke jalur 'D: \ WebSites \ myapp.co.uk \ companydata \ filename.pdf' ditolak.
Ketika saya memeriksa IIS, saya melihat bahwa aplikasi berjalan di bawah akun DefaultAppPool, namun, saya tidak pernah mengatur izin Windows pada folder ini untuk memasukkan IIS AppPool \ DefaultAppPool
Sebagai gantinya, untuk berhenti menjerit pelanggan saya memberikan izin berikut pada folder:
IUSR
- Baca & Jalankan
- Daftar Isi Folder
- Baca
- Menulis
IIS_IUSRS
- Memodifikasi
- Baca & Jalankan
- Daftar Isi Folder
- Baca
- Menulis
Ini tampaknya berhasil, tetapi saya khawatir terlalu banyak hak istimewa telah ditetapkan. Saya telah membaca informasi yang saling bertentangan daring tentang apakah IUSR benar-benar diperlukan di sini. Adakah yang bisa menjelaskan pengguna / izin mana yang cukup untuk Membuat dan Menghapus dokumen pada folder ini? Juga, apakah IUSR bagian dari grup IIS_IUSRS?
Pembaruan & Solusi
Silakan lihat jawaban saya di bawah ini . Saya harus melakukan ini dengan sedih karena beberapa saran baru-baru ini tidak dipikirkan dengan baik, atau bahkan aman (IMO).
Jawaban:
Saya benci memposting jawaban saya sendiri, tetapi beberapa jawaban baru-baru ini mengabaikan solusi yang saya posting di pertanyaan saya sendiri, menyarankan pendekatan yang tidak kekurangan bodoh.
Singkatnya - Anda tidak perlu mengedit hak istimewa akun pengguna Windows sama sekali . Melakukan hal itu hanya menimbulkan risiko. Proses ini sepenuhnya dikelola di IIS menggunakan hak istimewa yang diwarisi.
Menerapkan Ubah / Tulis Izin ke Akun Pengguna yang Benar
Klik kanan domain ketika muncul di bawah daftar Situs, dan pilih Edit Izin
Di bawah tab Keamanan , Anda akan melihat
MACHINE_NAME\IIS_IUSRS
terdaftar. Ini berarti bahwa IIS secara otomatis memiliki izin hanya baca pada direktori (misalnya untuk menjalankan ASP.Net di situs). Anda tidak perlu mengedit entri ini .Klik tombol Edit , lalu Tambah ...
Dalam kotak teks, ketik
IIS AppPool\MyApplicationPoolName
, gantikanMyApplicationPoolName
dengan nama domain Anda atau kumpulan aplikasi apa pun yang mengakses situs Anda, misIIS AppPool\mydomain.com
Tekan tombol Periksa Nama . Teks yang Anda ketikkan akan berubah (perhatikan garis bawah):
Tekan OK untuk menambahkan pengguna
Dengan pengguna baru (domain Anda) dipilih, sekarang Anda dapat dengan aman memberikan izin Modifikasi atau Tulis
sumber
IUSR
karya. MenambahkanIIS AppPool\Cache
(nama kumpulan aplikasi saya) menghasilkanHTTP Error 401.3 - Unauthorized
MyComputerName\IIS_IUSRS
danIUSR
dengan izin hanya Baca agar berfungsi lagi. Ini hanya untuk Direktori Virtual (bukan .net Apps), tetapi seseorang mungkin menganggapnya berguna.IIS AppPool\[APPLICATION POOL NAME]
. Kosong dalam nama Application Pool diterima. Harap perhatikan juga bahwa pengguna ini hanya akan ditemukan, jika "Prinsip keamanan bawaan" dicentang sebagai jenis objek untuk pencarian nama (bidang teratas dalam dialog "Pilih Pengguna atau Grup").IUSR adalah bagian dari IIS_IUSER group.so saya kira Anda dapat menghapus izin untuk IUSR tanpa khawatir. Bacaan lebih lanjut
Namun, masalah muncul seiring waktu karena semakin banyak layanan sistem Windows mulai berjalan sebagai NETWORKSERVICE. Ini karena layanan yang berjalan sebagai NETWORKSERVICE dapat merusak layanan lain yang berjalan dengan identitas yang sama. Karena proses pekerja IIS menjalankan kode pihak ketiga secara default (Classic ASP, ASP.NET, kode PHP), sudah waktunya untuk mengisolasi proses pekerja IIS dari layanan sistem Windows lainnya dan menjalankan proses pekerja IIS di bawah identitas unik. Sistem operasi Windows menyediakan fitur yang disebut "Akun Virtual" yang memungkinkan IIS untuk membuat identitas unik untuk masing-masing Kelompok Aplikasi. DefaultAppPool adalah kumpulan standar yang ditetapkan untuk semua Kelompok Aplikasi yang Anda buat.
Untuk membuatnya lebih aman, Anda dapat mengubah IIS DefaultAppPool Identity menjadi ApplicationPoolIdentity.
Mengenai izin, Buat dan Hapus merangkum semua hak yang dapat diberikan. Jadi, apa pun yang Anda tetapkan untuk grup IIS_USERS adalah yang mereka perlukan. Tidak lebih, tidak kurang.
semoga ini membantu.
sumber
Ketika saya menambahkan izin IIS_IUSRS ke folder situs - sumber daya, seperti js dan css, masih tidak dapat diakses (kesalahan 401, dilarang). Namun, ketika saya menambahkan IUSR - itu menjadi ok. Jadi pasti "Anda TIDAK BISA menghapus izin untuk IUSR tanpa khawatir", @Travis G @ sayang
sumber
IIS AppPool\MyApplicationPoolName
sesuai jawaban saya yang diperbarui. Anda tidak perlu dipusingkan dengan IUSR (S) lagi!@EvilDr Anda dapat membuat akun IUSR_ [identifier] dalam lingkungan AD Anda dan membiarkan kumpulan aplikasi tertentu berjalan di bawah akun IUSR_ [identifier]:
"Kumpulan aplikasi"> "Pengaturan Lanjut"> "Identitas"> "Akun khusus"
Tetapkan situs web Anda ke "Pengguna Applicaton (otentikasi pass-through)" dan bukan "Pengguna spesifik", di Pengaturan Lanjutan.
Sekarang berikan IUSR_ [identifier] izin NTFS yang sesuai pada file dan folder, misalnya: ubah pada data perusahaan.
sumber
Grup IIS_IUSRS memiliki keunggulan hanya jika Anda menggunakan ApplicationPool Identity. Meskipun Anda memiliki grup ini tampak kosong pada saat dijalankan IIS menambahkan ke grup ini untuk menjalankan proses pekerja sesuai dengan literatur microsoft.
sumber
Saya akan menggunakan pengguna tertentu (dan BUKAN pengguna Aplikasi). Maka saya akan mengaktifkan peniruan dalam aplikasi. Setelah Anda melakukan itu, akun apa pun yang ditetapkan sebagai pengguna spesifik, kredensial tersebut akan digunakan untuk mengakses sumber daya lokal di server itu (Bukan untuk sumber daya eksternal).
Pengaturan Pengguna khusus secara khusus dimaksudkan untuk mengakses sumber daya lokal.
sumber