IIS_IUSRS dan izin IUSR di IIS8

147

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).

EvilDr
sumber
Untuk membuat WordPress bekerja di IIS 8 pada mesin virtual Azure (Windows Server 2012 Datacenter) saya perlu memberikan izin yang Anda daftarkan untuk IIS_IUSRS ke IUSR untuk direktori blog di inetpub / wwwroot
dumbledad
Bagi mereka yang datang ke utas ini karena mereka mencoba menjalankan Joomla di bawah IIS dan mengalami masalah dengan pengaturan keamanan file, saya telah menulis artikel blog dengan apa yang saya pikir merupakan solusi yang tepat. Mungkin juga berlaku untuk WordPress atau program server web berbasis PHP lainnya. renniestechblog.com/index.php/information/…
RenniePet
Kemungkinan duplikat dari IIS AppPoolIdentity dan izin akses tulis sistem file
KyleMit
Bekerja dengan baik setelah menambahkan izin penuh untuk folder untuk grup pengguna IIS_IUSRS.
Thulasiram
@Thulasiram tetapi kemudian Anda telah memberikan hak penuh kepada semua Pengguna IIS. Pikirkan hal itu dari sudut pandang peretas. Satu situs yang lemah dan mereka mendapatkan kontrol total dari yang lainnya
EvilDr

Jawaban:

146

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

  1. Klik kanan domain ketika muncul di bawah daftar Situs, dan pilih Edit Izin

    masukkan deskripsi gambar di sini

    Di bawah tab Keamanan , Anda akan melihat MACHINE_NAME\IIS_IUSRSterdaftar. 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 .

    masukkan deskripsi gambar di sini

  2. Klik tombol Edit , lalu Tambah ...

  3. Dalam kotak teks, ketik IIS AppPool\MyApplicationPoolName, gantikan MyApplicationPoolNamedengan nama domain Anda atau kumpulan aplikasi apa pun yang mengakses situs Anda, misIIS AppPool\mydomain.com

    masukkan deskripsi gambar di sini

  4. Tekan tombol Periksa Nama . Teks yang Anda ketikkan akan berubah (perhatikan garis bawah):

    masukkan deskripsi gambar di sini

  5. Tekan OK untuk menambahkan pengguna

  6. Dengan pengguna baru (domain Anda) dipilih, sekarang Anda dapat dengan aman memberikan izin Modifikasi atau Tulis

    masukkan deskripsi gambar di sini

EvilDr
sumber
2
Ini tidak berfungsi pada server IIS 8.5 saya. Menambahkan IUSRkarya. Menambahkan IIS AppPool\Cache(nama kumpulan aplikasi saya) menghasilkanHTTP Error 401.3 - Unauthorized
Charles Burns
14
@CharlesBurns Saya memiliki masalah yang sama, saya menemukan ini menjadi penyebab utama saya: techras.wordpress.com/2016/03/09/... (auth anonim diatur untuk menggunakan IUSR daripada Application Pool Identity)
Jon
2
Saya memiliki folder yang hanya digunakan sebagai Direktori Virtual dan berfungsi dengan baik sampai saya membaginya (folder windows itu menunjuk ke) dengan akun domain lain, sehingga bisa melihat file melalui intranet kami. Ketika saya melakukan ini, file-file di Direktori Virtual tiba-tiba menjadi tidak dapat dijangkau. Saya akhirnya harus menambahkan keduanya MyComputerName\IIS_IUSRSdan IUSRdengan izin hanya Baca agar berfungsi lagi. Ini hanya untuk Direktori Virtual (bukan .net Apps), tetapi seseorang mungkin menganggapnya berguna.
MikeTeeVee
13
Sekadar catatan: Saat Anda mencari pengguna dan komputer adalah anggota domain, IIS AppPool \ MyApplicationPoolName mungkin tidak ditemukan. Dalam kasus saya, saya perlu mengklik tombol Lokasi dan mengubah lokasi ke komputer lokal.
statler
3
Dalam pengujian saya, nama pengguna khusus untuk digunakan di sini tidak ada hubungannya dengan nama domain. Ini adalah nama dari Application Pool yang ditugaskan ke situs di IIS. Kumpulan Aplikasi ini mungkin atau mungkin tidak memiliki nama yang cocok dengan domain situs web Anda. Jadi pola: 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").
Jpsy
50

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.

Travis G
sumber
3
Saya baru saja menginstal IIS 8 di bawah Server Essentials 2012 R2. Mesin ini juga merupakan pengontrol domain. Di Pengguna AD dan Komputer, grup IIS_IUSRS kosong - tidak berisi pengguna IUSR. Saya kira saya bisa menambahkannya ke grup, tetapi untuk situs anonim, saya hanya akan memberikan izin kepada pengguna IUSR.
Mark Berry
7
Ketika saya memberikan izin untuk IUSR itu berhasil. Ketika saya memberikan izin kepada IIS_IUSER itu tidak berfungsi.
ihebiheb
Iusr bukan anggota IIS_Iusrs. (atau windows memiliki bug) Secara umum, Windows menggunakan IIS_Iusrs. (mengeksekusi halaman dinamis atau mengakses halaman statis) tetapi ada beberapa kasus ketika windows menggunakan Iusr, bukan IIS_Iusrs. mengunggah file menggunakan PHP adalah salah satunya. (dan jika Anda hanya memberikan iis_iusr, Anda akan memenuhi pengecualian hak istimewa) Saya pikir M $ harus memberikan "Praktik terbaik" untuk memberikan izin Iusr dan IIS_Iusrs ...
finejustice
Saya pikir sekarang diubah menjadi Application pool group yaitu (IWGP). Saya memberi izin ke IWGP dan itu berhasil.
Rohit Arora
6
IUSR adalah bagian dari IIS_IUSER. TIDAK, BUKAN! IUSR adalah pengguna anonim, IIS_IUSER adalah grup untuk pengguna
apppool
6

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

Alexander
sumber
7
Jangan lupa bahwa (jika Anda memiliki IIS7 +) solusi yang tepat adalah dengan menggunakan IIS AppPool\MyApplicationPoolNamesesuai jawaban saya yang diperbarui. Anda tidak perlu dipusingkan dengan IUSR (S) lagi!
EvilDr
2
Saya sudah mencoba saran Anda, tetapi tidak berhasil. Saya telah menghapus IUSR (S) dari izin dan tetap hanya poolname, aplikasi berjalan di bawah. Sumber daya menjadi tidak dapat diakses. IIS 8.5. Ketika saya menambahkan IUSR - mulai berfungsi.
Alexander
Anda perlu memposting pertanyaan Anda sendiri dengan sebanyak mungkin informasi tentang situasi Anda.
EvilDr
4

@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.

Jan Reilink
sumber
Terima kasih tapi saya tidak menggunakan AD. Juga menurut dokumentasi MS terbaru, IIS 7 & 8 sudah dikonfigurasi untuk berfungsi seperti yang Anda jelaskan. Pertanyaannya sebenarnya adalah apakah salah satu akun yang ditentukan benar-benar diperlukan atau tidak, dan yang mana yang menjalankan bisnis?
EvilDr
@ EvilDr Terima kasih telah menjelaskan Anda tidak menggunakan iklan. Yah, IIS_IUSRS bukan pengguna, ini grup. Seperti IIS_WPG di IIS 6.0. Anda dapat membaca tentang IIS_IUSRS dan IUSR di sini: tautan . Anda dapat mengatur izin modifikasi pada data perusahaan * untuk akun IUSR dan Anda dapat menambahkan pengguna ini ke grup IIS_IUSRS dan menggunakan akun pengguna itu untuk menjalankan kumpulan aplikasi Anda. Anda hanya perlu memberikan izin besar untuk IIS_IUSRS pada folder bersama (misalnya TMP), jika Anda memiliki beberapa IUSR_accounts.
Jan Reilink
Jan, saya selalu berpikir bahwa IUSR adalah bagian dari grup IIS_IUSRS secara default? Bagaimana Anda bisa mengecek apakah ini benar, karena akun IUSR adalah akun bawaan. Apakah Anda mengatakan bahwa saya harus menghapus centang Ubah untuk IIS_USRS dan periksa untuk IUSR? Dengan persyaratan aplikasi tunggal, saya pikir itu tidak akan membuat perbedaan, kan?
EvilDr
3

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.

Ashburn RK
sumber
0

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.

developer747
sumber