권한이 충분하지 않아 구성 파일을 읽을 수 없습니다


350

최근에 asp.net 사이트를 IIS로 호스팅하는 중 오류가 발생했습니다. 많은 사람들이 맹세하는 해결책을 찾았습니다.

해결책:

  1. 폴더의 파일에 대한 읽기 권한으로 IIS_IUSRS 추가
  2. IIS 인증 방법을 BasicAuthentication으로 변경
  3. 웹 사이트를 새로 고칩니다. 작동합니다

( http://vivekthangaswamy.blogspot.com/2009/07/aspnet-website-cannot-read.html )

그래도 web.config 파일에 무엇을 추가합니까? 전에 편집 한 적이 없습니다. 현재 내용은 다음과 같습니다.

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
   providerName="System.Data.SqlClient" />
 </connectionStrings>
 <system.web>
  <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>
</configuration>

내 오류는 :

구성 오류 : 권한이 부족하여 구성 파일을 읽을 수 없습니다.
구성 파일 : \? \ C : \ Users ***** \ Documents \ Visual Studio2010 \ WebSites \ PointsForTime \ web.config


9
설치 재 작성 모듈을 참조하십시오. 시간을 절약하십시오
regisbsb

내 해결책은 관리자 권한으로 열린 명령 줄에서 명령을 실행하는 것입니다. 이렇게하려면 명령 프롬프트를 찾아 마우스 오른쪽 단추로 클릭 한 다음 관리자 권한으로 실행을 클릭하십시오.
David Waddington 2016

다른 답변 외에도 EFS (파일 시스템 암호화)도 IIS를 방해 할 수 있습니다.
G-Wiz

나는이 작업 덕분에 지금까지 점점 한 가장 가까운이 광고는 이제 로컬 호스트가 암호를 요청하는 한
폴 원장에게

1
저에게는 IIS_IUSR이 없었으며 인증 된 사용자에 대해서도 동일하게 적용되었습니다.
Bhanu Chhabra

답변:


542

web.config에 문제없습니다 . 귀하의 웹 사이트는 프로세스에서 실행됩니다. iis에서 해당 프로세스의 ID를 정의 할 수 있습니다. 웹 사이트의 응용 프로그램 풀이 실행 하는 ID ( 네트워크 서비스, 로컬 시스템 등)에는 web.config 파일에 액세스하고 읽을 수있는 권한이 있어야합니다.

최신 정보:

이 업데이트 된 답변은 위와 동일하지만 조금 더 길고 간단하며 개선되었습니다.

우선 : 구성 파일에서 아무것도 변경할 필요가 없습니다. 괜찮습니다 . 문제는 Windows 파일 사용 권한에 있습니다.

응용 프로그램web.config 파일에 액세스 하고 읽을 수 없기 때문에이 문제가 발생 합니다.

IIS_IUSRS 그룹 이 파일에 액세스 할 수있게하십시오 . 그냥 바로의 Web.config을 클릭 클릭 속성을 아래에 보안 추가, 탭 IIS_IUSRS을 .

이 IIS_IUSRS는 무엇입니까?

귀하의 웹 사이트exe 파일 과 같습니다 . 다른 exe 파일과 마찬가지로 사용자시작 해야하며 해당 사용자에게 할당 된 권한에 따라 실행됩니다 .

귀하의 사이트가 시작되면 IIS , 응용 프로그램 풀 웹 사이트의은과 관련된 사용자 ( 네트워크 서비스, 로컬 시스템 등 ...) (와 IIS에서 변경 될 수 있습니다)

당신이 말할 때 그래서 IIS_IUSRS를 , 그것은 의미 모든 사용자 ( 네트워크 서비스, 로컬 시스템 사이트로 실행되고 있는지 등을 ...).

그리고 @Seph가 아래 주석 에서 언급 한 것처럼 : 컴퓨터가 도메인에있는 경우 IIS_IUSRS 그룹은 로컬 그룹 임을 기억하십시오 . 또한이 사용자를 찾으려고 할 때 회사 도메인이 아닌 로컬 컴퓨터로 설정해야하는 위치를 확인하십시오.


79
다른 사람들에게는 기본값이 일반적 IIS_IUSRS이며이 사용자를 찾으려고 할 때 위치를 회사 도메인이 아닌 로컬 컴퓨터로 설정 해야하는지 확인하는 것이 좋습니다.
Seph

3
좋은 대답이며 여기에 추가 팁이 있습니다-도메인의 Win7에서 IIS7을 실행하면 '이름 확인 ...'으로 찾으려면 로컬 그룹에서 IIS_IUSRS를 찾지 못할 수 있습니다. 걱정하지 마십시오. IIS_IUSRS를 완전히 입력하고 확인을 누르면 모든 것이 정상입니다.
8 비트 전문가

2
사이트 경로에 대한 공유 드라이브가있는 경우 어떻게합니까? 이것이 효과가 있습니까? 공유 드라이브에서이 작업을 어떻게 수행합니까?
Kevin

2
나는 IUSR을 위해 이것을해야했다. 어떤 이유로 IIS_IUSRS가 작동하지 않았습니다.
Todd

13
이 스레드에서 논의 된 오류를 수정 한 후에는 IIS 7에서 새 ASP.Net 웹 사이트를 처음부터 새로 설정하려고 시도하는 동안 다음 장애로 인해 "HTTP 오류 401.3-인증되지 않음"권한 오류가 발생할 수 있습니다. 익명 인증을 사용하도록 설정 한 경우 익명 사용자 ID를 "IUSR"(IIS에서 기본값으로 설정)에서 응용 프로그램 풀 ID로 변경하십시오. 이 설정에 대한 편집 창을 얻으려면 "인증"IIS 기능에 대한 IIS 기능보기의 작업 창에서 "편집"작업을 사용하십시오.
RBT

71

web.config파일 에 대해 동일한 권한 문제인 것으로 나타났습니다 .
그러나 URL 재 작성 규칙이 포함되어 있고 새 서버에 IIS URL 재 작성 모듈을 설치하지 않았기 때문에 IIS가 구성 파일을로드하지 못했기 때문에 문제가 발생했습니다.

해결 방법 : 다시 쓰기 모듈을 설치하십시오.
누군가 몇 시간을 절약 할 수 있기를 바랍니다.


예. 내가 이것을 사용했던 이전 서버는 IIS로부터의 큰 오류 메시지를 위해 ssl이 아닌 경로를 ssl ..로 다시 썼다. error::) +1 SSL이 필요하지 않기 때문에 https없이 링크 된 누군가가있는 경우 URL을 HTTPS로 다시 작성했습니다. 수수께끼
Piotr Kula

감사합니다!!! 몇 시간 동안 권한으로 괴롭힘을 당했으며 결국에는 이것으로 끝났습니다!
Carl Woodhouse

IIS URL 재 작성 모듈을 설치하는 방법은 무엇입니까?
B. Clay Shannon

2
이것은 나의 문제이기도합니다. 감사합니다! 다시 쓰기 모듈을 설치하려면 다음 페이지에서 다운로드하십시오. iis.net/downloads/microsoft/url-rewrite IIS를 닫고 설치 한 후 IIS를 다시 시작하십시오 (안전을 위해).
Tyler Forsythe

2
@ B.ClayShannon은 웹 플랫폼 설치 프로그램을 사용하여 IIS Rewrite를 검색하십시오
enorl76

64

편집자 주 :이 답변의 말을하는 것은 위험합니다 ! LocalSystem 계정은 ...

관리자 계정보다 완전히 신뢰할 수있는 계정. 단일 계정에는이 계정으로 할 수없는 것이 없으며 네트워크로 컴퓨터에 액세스 할 수있는 권한이 있습니다 (Active Directory가 필요하며 컴퓨터 계정에 권한 부여).


Identity를 ApplicationPoolIdentity 에서 LocalSystem으로 변경하면 작업이 완료되었습니다.).

IIS 7.5에서 win7 64를 사용하고 있습니다.

IIS 7.5 및 7 승리의 응용 프로그램 풀 ID에 대한 자세한 내용

여기에 이미지 설명을 입력하십시오


IIS 6에도 유용한 답변입니다. Microsoft 웹 사이트에서 응용 프로그램 풀 ID를 변경하는 방법에 대한 자세한 내용은 여기 ( microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/)를
Manuel Alvarez

22
이 변화를 만들기 때문에이 서비스를 부여하는 액세스의 보안 위험 : msdn.microsoft.com/en-us/library/windows/desktop/...은
WhiteKnight

이것은 여기에서 내 문제였으며 App Pool Identity를 LocalSystem으로 변경하면 설명대로 작동했습니다!
Vasily Hall

21
서버에 남겨져있는 보안 허점으로 인해 다운 투표. 로컬 시스템 계정으로 IIS와 같은 공개 서비스를 절대로 실행해서는 안됩니다! 당신은 기본적으로 서버를 해킹 할 수있는 사람을 위해 열쇠를 왕국에 넘겨줍니다. 이것을하지 마십시오.
Dimesio

5
OMG이 답변은 보안 상 매우 부정확합니다. 중재 개입이 필요합니다. 이것은 나쁜 생각입니다. querystring ... boom ...에 지정된 파일 액세스를 누구나 상상해보십시오. 누구나 web.config를 읽을 수 있고 IIS가이를 전세계에 행복하게 제공 할 것입니다. 이 답변을 사용하지 마십시오.
enorl76

47

사이트 루트 폴더를 다른 사용자와 공유하려고 할 때도 같은 문제가있었습니다. 일부 폴더가 권한을 잃어 버렸습니다. Afshin Gh가 제안한대로 IIS_IUSRS 그룹 에 권한을 추가하는 단계를 수행했습니다 . 문제는이 그룹을 사용할 수 없다는 것입니다. Windows 7을 사용하고 있습니다.

내가 한 일은 방금 몇 단계를 변경했습니다.

  1. 권한을 잃은 부모 폴더를 마우스 오른쪽 버튼으로 클릭하고
  2. 속성 => 보안 => "그룹 또는 사용자 이름 :"에서
  3. 편집 ...을 클릭하십시오.
  4. "폴더에 대한 권한"창이 열립니다.
  5. "그룹 또는 사용자 이름 :"에서 ADD ...를 누릅니다. btn,
  6. 유형 Authen 를 눌러 이름 확인,
  7. 완전한 그룹 이름 " 인증 된 사용자 "가 표시됩니다
  8. 확인 => 적용을 누르십시오.
  9. 권한을 다시 활성화해야합니다.

그것은 나를 위해 일했다.


2
이것은 나를 위해 일했습니다. 이것이 정답입니다. 다른 방법을 시도했지만 작동하지 않습니다.
GunWanderer

1
다른 모든 솔루션을 시험해보십시오.
jenna_3108

1
좋아, 이것이 효과 가 있는지에 대한 설명이 있다고 생각 합니다. 일부 개발자는 코드를 C:\ ie C:\Dev또는 C:\Code등으로 호스팅합니다 . 보안 그룹 Authenticated Users은에 부여 C:\ 되어 하위 폴더로 전파됩니다. 그러나 C:\Users폴더에서이 전파가 중지됩니다. 따라서 홈 폴더 내에 코드를 호스팅하는 나와 같은 개발자 Authenticated Users는 IIS가 작동하려면 해당 IIS 루트 폴더에 대한 액세스 권한을 부여 해야합니다.
Colin

이름 확인을 클릭하면 자격 증명을 묻습니다. 어떤 사용자 자격 증명이 여기에 있는지 잘 모르겠습니다.
RSB

18

web.config에서 아무것도 변경할 필요가 없습니다.

문제는 파일 시스템 권한입니다. 파일 권한으로 인해 IIS_IUSRS 사용자는 web.config (또는 파일 중 하나)에 액세스 할 수 없습니다. IIS_IUSRS 계정이 액세스 할 수 있도록 창에서 파일 권한을 변경하십시오.


1
나는 비슷한 문제가 있었다. 누구든지 IIS_IUSRS 사용자를 찾을 수 없으면 위치를 확인하십시오. 내 회사는 기본적으로 회사 도메인으로 설정되어 있었으므로 어디를보고 있는지 확인하는 것을 잊었 기 때문에 바로 찾지 못했습니다.
jgreep

@ Mystere Man 나는 같은 문제가 있습니다. 권한을 변경 한 후 시도했습니다. 여전히 같은 오류가 발생합니다. :(
Rauf

"(또는 파일 중 하나)"가 작동하여 web.config에 대한 IIS_IUSRS 계정 액세스가 충분하지 않으므로 사이트 도움말의 모든 파일에 액세스 할 수 있어야합니다.
Tuyen Nguyen

2
나는 IUSR을 위해 이것을해야했다. IIS_IUSRS가 작동하지 않았습니다.
Todd

감사. 웹 응용 프로그램 폴더에 대한 모든 권한을 가진 'Everyone'을 부여했으며 작동합니다.
Minh Nguyen

16

IIS_IUSRS 그룹 이 파일에 액세스 할 수있게하십시오 . web.config를 마우스 오른쪽 단추로 클릭하고 특성을 펼친 후 보안 탭에서 IIS_IUSRS를 추가하십시오. 그룹에게 읽기 / 쓰기 권한을 부여하십시오.

그룹이있을 때 NOT 사용할 수에 의해 IIS_IUSRS을 대체 컴퓨터 이름 \ IIS_IUSRS


좋은 팁 +1. 허용되는 대답은 좋지만 'IIS_IUSRS'앞에 컴퓨터 이름을 추가해야 할 수도 있습니다.
Ralph Lavelle

이것 ( "그룹을 사용할 수 없을 때")에 희망이 있었지만 컴퓨터 이름 앞에 "(IBM-TAMMYFAYEBAKER.platypus.local \ IIS_IUSRS")를 붙여도 여전히 같은 오류가 발생합니다. 나는 전체 컴퓨터 이름도 시도했지만 유효한 사용자로 받아 들일 수도 없습니다.
B. Clay Shannon

15

상위 폴더로 이동하여 마우스 오른쪽 단추를 클릭하고 특성을 선택하십시오 . 보안 탭을 선택하고 권한을 편집 한 후 추가를 클릭하십시오 . 고급지금 찾기를 클릭하십시오 . IIS_IUSRS를 선택 하고 확인클릭 한 후 다시 확인클릭 하십시오. 쓰기를 체크하십시오 . 클릭 확인 하고 확인을 다시.

작업 완료!


19
읽기가 필요한 모든 경우 쓰기 액세스를 권장하는 것은 무엇입니까? / downvoted
TristanK

2
내가 가진 유일한 IIS *는 IIS_WPG
B. Clay Shannon

1
@ B.ClayShannon 나도. IIS_WPG 만 있습니다
Fortune

13

IIS_IUSRS에 권한을 부여하면 웹 응용 프로그램 의 IIS / 인증 섹션에서 익명 인증 자격 증명이 IUSR이 아닌 응용 프로그램 풀 ID를 사용 하는지 확인해야합니다 .

여기에 이미지 설명을 입력하십시오


이 인터페이스는 어디서 구할 수 있습니까?

웹 응용 프로그램의 기능보기 탭에서 : 인증
Carlos

이 답변은이 답변이없는 승인 된 답변 원인의 일부 여야합니다. 또한 웹 사이트 폴더의 액세스 목록
Laurent S.

7

어떤 이유로 web.config가 읽기 전용으로 설정되어 있습니다. web.config 파일의 읽기 전용 옵션을 선택 취소하십시오.


귀하의 권한이 전체 액세스 권한인데도 여전히 오류가 발생하면 정답입니다 (y).
Vasil Valchev


4

subst를 사용하여 팀의 다른 개발자와 동일한 설정을 유지하기 위해 D :에서 C : 로의 맵핑을 작성했습니다. 이것은 또한 설명 된 것과 같은 오류를 주었다. 이것을 제거하면 나를 위해 고쳐졌습니다.


3

수용 된 솔루션은 나를 위해하지 않았습니다. Git 저장소를 사용하고 다음 폴더에 복제했습니다.

c:\users\myusername\source\repos\myWebSite

새로운 IIS 웹 사이트를 만들고 경로를 가리 켰습니다. 허용 된 솔루션에서 제안 된 iis_iusrs 권한이 없었습니다. 권한을 추가해도 여전히 작동하지 않습니다.

'Users'그룹에 다음 권한을 부여하고 상속이 web.config에 대한 권한을 계단식으로 만들 때만 작동했습니다. 아마도 공격 영역을 줄이기 위해 web.config에만 적용했을 것입니다.

사용자 권한


정확히 같은 상황이 있었다. 도움이되었습니다.
Roemer

2

우리는 apppool에서 특정 아이디로 실행되는 웹 사이트를 가지고 있었으며, 사용자에게 web.config가 들어있는 폴더에 대한 읽기 권한을 부여한 후에 만 ​​작동합니다. 우리는 '모든 사용자'에게 읽기를 추가 한 후 이것을 추적하고 모든 것이 잘 작동했습니다.


2

나에게 로컬 컴퓨터에서 디버깅하는 동안 오류가 발생하고 웹 사이트를 컴파일 할 때 .NET Framework에서 시작하는 기본 web.config와 관련이있는 것으로 나타났습니다. 내 C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config 파일에 인식 할 수없는 요소 (folderLevelBuildProviders)가 있습니다. 이 문제를 해결하면 500.19 오류가 해결되었습니다.

이 참조 : IIS 관리자 수없는 구성 .NET 컴파일에 .NET 4 응용 프로그램을


2

프로세스 모델 ID를 LocalSystem으로 변경하면이 문제가 해결되었습니다. 응용 프로그램 풀을 마우스 오른쪽 버튼으로 클릭하고 "고급 설정"을 선택한 경우이 설정을 찾을 수 있습니다. IIS 7.5를 실행하고 있습니다.


2

Web.Config => 탭 보안 => 버튼 편집 => 버튼 추가 => 버튼 고급 => 버튼 지금 찾기 => 검색 결과에서 그룹을 선택하십시오 (이 경우 "IIS_IUSRS") => Ok => Ok => 확인


2

IIS 응용 프로그램 에 백 슬래시 대신 슬래시가 포함 된 실제 경로 가있는 가상 디렉터리 가있는 경우이 문제가 발생했습니다 . 이는 지속적인 제공 과정에서 IIS 용 powershell 관리 API를 사용하여 실수로 수행되었습니다./\

잘못된 구성 예- applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite/MyService" />
</application>

반드시 확인 physicalPath속성은 앞으로 슬래시가 포함되어 있지 않습니다 /만 백 슬래시를\

수정 된 구성 예- applicationHost.config

<application path="/MySite/MyService" applicationPool="MyAppPool" enabledProtocols="http">
    <virtualDirectory path="/" physicalPath="C:\inetpub\MySite\MyService" />
</application>

1
내 경우에는 물리적 경로에 이중 백 슬래시가 C:\inetpub\MySite\\MyService있습니다. 단일 백 슬래시로 변경
Ben Anderson

2

응용 프로그램 풀 사용자 (WIN SERVER 2008 R2)의 폴더에 읽기 권한을 추가하여이 문제를 해결했습니다. C : \ Windows \ System32 \ inetsrv \ config

약간의 배경 : 우리 서버는 앱 사용자에게 더 많은 권한 (로컬 관리자)이있는 고전적인 오류를 사용하여 해킹되었습니다.

이 문제를 해결하기 위해 최소한 필요한 권한으로 응용 프로그램 폴더에 대한 권한 만 가진 새 도메인 사용자를 만들고 응용 프로그램 풀 사용자로 할당했습니다. 우리가 문제에 부딪힌 것보다 이것이 문제에 대한 해결책이었습니다.


2

C : 다른 드라이브로 프로젝트를 이동하십시오. 동일한 오류가 발생했습니다.


2

애플리케이션이 가상 디렉토리에 있고 파일 경로가 맵핑 된 드라이브 인 경우 발생할 수 있습니다.

파일 경로를 로컬 드라이브로 변경하면 문제가있는 경우이를 해결합니다.


2

주어진 모든 답변은 유효하며 다른 상황에서 작동합니다.

나를 위해 Visual Studio를 다시 시작했습니다.


1

위의 답변은 도움이되었지만 이것이 누군가에게 도움이되는 경우-이 정확한 문제가 있었고 사이트가 호스팅 된 루트 폴더를 공유하는 (Windows 네트워킹) 것으로 나타났습니다. 공유를 종료하고 사용자에게 읽기 / 실행 권한을 추가했으며 다시 정상적으로 작동했습니다.

나는 그 몫이 엉망인 것 같다.


0

"권한이 충분하지 않아 구성 파일을 읽을 수 없습니다"라는 메시지가 나타납니다. ASP.NET 4.0 32 비트 및 64 비트에 대한 IIS의 ISAPI 및 CGI 제한이 거부로 설정되었습니다. 허용됨으로 모두 표시하면 문제가 해결되었습니다.


0

가상 응용 프로그램에서이 문제가 발생했습니다. 모든 권한이 설정되었습니다. IIS_IUSRS, AppPoolIdentity 및 모든 사람에게 모든 권한을 부여했습니다. 아무것도 효과가 없었습니다. apppool, site 및 IIS를 다시 시작했지만 이동하지 않았습니다.

가상 애플리케이션을 삭제하고 처음부터 다시 추가 한 후 작동하기 시작했습니다.

무엇을 해결했는지 알고 싶습니다.


0

파일이 읽기 전용 으로 표시되어 있지 않은지 확인하십시오 . IIS_IUSRS 권한에도 불구하고 동일한 메시지가 표시됩니다.


0

로컬 드라이브가 아닌 실제 드라이브가 네트워크 드라이브에 있기 때문에이 오류 메시지가 나타납니다. 기본적으로 이러한 드라이브에 대한 권한은 다를 수 있습니다. 예를 들어, 로컬 드라이브 위치가 로컬 컴퓨터 사용자에게 권한을 부여했지만 네트워크 위치는 그렇지 않았습니다.

또한 허용되는 답변은 그러한 경우에는 효과가 없습니다. 로컬 사용자 또는 IIS 사용자는 권한을 할당 할 수 없었습니다. 해결책은 실제 폴더를 로컬 드라이브로 옮기는 것이 었습니다.


0

나는 같은 문제가 있었고 여기에 쓰여진 모든 것을 답변으로 한 후에도 여전히 재현되었습니다. 이 문제의 후반부에서는 "Windows 기능 켜기 또는 끄기"에서 .NET이 꺼졌다는 사실이 밝혀졌습니다


0

때로는 새 서버 인 경우 web.config 파일을 읽을 수 있으려면 IIS에서 ASP.NET 기능을 구성하거나 설치해야합니다.

제 경우에는 이것이 이유였습니다.


0

필자의 경우 매핑 된 드라이브 (서브)에서 페이지를 호스팅하려고했습니다. 문제는 서브 스트가 내 계정으로 실행되었고 IIS 사용자가 동일한 드라이브를 볼 수 없다는 것입니다


0

권한을 부여하고 ICACLS.exe를 사용했지만 작동하지 않았습니다. 그런 다음 물리적 경로를 변경하고 성공적으로 작동했습니다.

(IIS 8.5 윈도우 2012 R2)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.