IIS-401.3-권한 없음


96

IIS 사용을 시작하려고합니다. IIS 관리자에서 새 사이트를 만들고 파일 시스템의 폴더에 매핑하고 index.html을 폴더에 추가했습니다. 이 사이트의 포트를 85로 설정했습니다. 에 액세스하려고 http://localhost:85/index.html하면 다음 오류 메시지가 표시됩니다.

401.3-미승인-웹 서버에서이 리소스에 대한 액세스 제어 목록 (ACL) 구성 또는 암호화 설정으로 인해이 디렉터리 또는 페이지를 볼 수있는 권한이 없습니다.

폴더의 모든 사람에게 읽기 권한을 부여하고 다시 시도했습니다. 그런 다음 페이지에 액세스 할 수 있습니다.

그런 다음 내 폴더의 속성을 wwwroot의 속성과 비교했습니다. 나는 wwwroot가 IIS_IUSRS에 대한 읽기 권한을 가지고 있음을 발견했습니다 ... 내 폴더에서 똑같이하고 다시 시도했을 때 위의 오류가 다시 발생했습니다. 익명 액세스가 기본적으로 활성화되어 있는지 확인했지만 여전히이 오류가 발생합니다.

왜 이런 일이 발생합니까? 문제를 해결하는 올바른 방법은 무엇입니까?

답변:


173

나는이 같은 문제로 며칠 동안 고생했다. 사이트가 매핑 된 파일 시스템 폴더의 보안 사용자 액세스 속성을 수정하여 해결할 수 있습니다. 그러나 IIS_IUSRS는 인증해야하는 유일한 계정은 아닙니다.

  • IIS 관리 콘솔에서 사이트 구성의 인증 부분에서 "익명 인증"줄을 수정하고 "특정 사용자"로 설정된 계정을 확인합니다 (내는 IUSR).
  • 특정 사용자로 나열된 계정에 사이트 폴더에 대한 읽기 및 실행 권한을 부여하십시오.

또는

  • IIS 관리 콘솔에서 사이트 구성의 인증 부분에서 "특정 사용자"대신 "응용 프로그램 풀의 ID"를 선택하여 "익명 인증"줄을 수정합니다.

6
"응용 프로그램 풀 ID"가있는 익명 인증이 작동하는 것을 찾았지만 어떤 이유로 IUSR과 함께 사용할 수 없습니다. 감사.
fortboise

5
기본 논리는 사이트가 익명 인증을 사용하고 IUSR이 익명 계정이라는 것입니다. 따라서 IIS는 IUSR 계정을 사용하여 항상 작동하지 않을 수있는 파일 시스템 (웹 사이트 물리적 경로)에 액세스합니다 (많은 파일 시스템이 IUSR을 허용하지 않기 때문에). 그것이 401.3의 원인입니다. 파일 시스템 액세스를 변경 (해당 계정에 파일에 대한 액세스 권한 부여)하거나 익명 계정을 풀 ID로 변경하면 (풀 ID는 일반적으로 파일에 대한 액세스 권한이있는 IIS_IUSRS에 있음) IIS는 파일에 액세스 할 수있는 충분한 권한을 가져야합니다.
Lex Li

60

여기에 저에게 효과적이었습니다.

  1. 폴더에 대한 권한을 할당 할 수있는 계정으로 앱 풀 ID를 설정합니다.
  2. 소스 디렉터리 및 모든 관련 파일에 앱 풀 ID 속성에 할당 된 계정의 파일에 대한 읽기 권한이 부여되었는지 확인합니다.
  3. IIS의 서버 루트 노드에서 익명 사용자를 앱 풀 ID에서 상속하도록 설정합니다. (내가 힘들었던 부분)

앱 풀 ID에서 상속하도록 서버를 익명으로 설정하려면 다음을 수행하십시오.

  • IIS 관리자 (inetmgr)를 엽니 다.
  • 왼쪽 창에서 루트 노드 (서버 호스트 이름)를 선택합니다.
  • 중간 창에서 '인증'애플릿을 엽니 다.
  • '익명 인증'강조
  • 오른쪽 창에서 '편집 ...'을 선택합니다 (대화 상자가 열립니다).
  • '응용 프로그램 풀 ID'를 선택하십시오.

9
# 3) FIXED MY ISSUE : IIS의 서버 루트 노드에서 익명 사용자를 앱 풀 ID에서 상속하도록 설정합니다. (이것은 내가 힘들었던 부분이었습니다.)
Ravi Ram

"감사합니다"라는 글을 쓰면 안된다는 건 알지만, 감사를 표해야 할 것 같아요. 내가 이것을 알아낼 방법이 없습니다.
Jonny Cook

@RaviRam : 수행 한 단계를 설명해주세요. 초보자로서 단계적으로. "IIS가 서버 루트 노드에서 앱 풀 ID에서 상속하도록 익명 사용자를 설정합니다."는 무슨 뜻입니까? 도와주세요.
Unbreakable

@RaviRam- "inetmgr.exe"명령을 실행하면 IIS 관리 화면이 나타납니다. 이것에서 내 대답에 설명 된 단계를 따르십시오. 관리자 권한으로 명령을 실행해야 할 수 있습니다. msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker

다른 답변에서 언급 한 바와 같이, 나는 당신이 루트 수준에서 익명의 인증 설정을 변경할 필요가 없습니다 것을 발견 - 당신이 너무 사이트 또는 가상 디렉터리 수준에서 해당 설정을 변경할 수 있습니다
jaycer

17

TL; DR;

대부분의 경우 다음 계정 (하나 | 둘 다)에 대한 액세스 권한을 부여 하면 충분합니다.

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

액세스 권한 :

  1. 읽기 및 실행
  2. 폴더 내용 나열
  3. 읽다

그게 다야!

자세한 설명은 계속 읽으십시오 ...


  1. IIS를 열고 응용 프로그램을 선택합니다 .
  2. 오른쪽에서 인증을 클릭합니다 .
  3. 여기에서 " 익명 인증 "을 선택 하십시오.
  4. 다음 대화 상자가 나타납니다.

여기에 이미지 설명 입력

위의 그림에서 선택한 항목에 따라 웹 응용 프로그램 폴더의 ACL에 대한 액세스 권한을 부여합니다.

  • 특정 사용자 : 둘 다에 대한 액세스 권한 부여IUSR(제 경우) +IIS AppPool\DefaultAppPool
  • 응용 프로그램 풀 ID : 액세스 권한IIS AppPool\DefaultAppPool만부여

IIS AppPool\DefaultAppPool account는 새 IIS 웹 응용 프로그램의 기본 AppPool 계정입니다. 사용자 지정 계정을 설정 한 경우 사용자 지정 계정을 사용하십시오.


계정에 다음 권한을 부여하십시오.

  1. Read & Execute
  2. List folder contents
  3. Read

여기에 이미지 설명 입력


13

정적 콘텐츠를 다루기 때문에 ...

웹 사이트의 루트 역할을하는 폴더에서> 속성> 보안을 마우스 오른쪽 버튼으로 클릭하면 목록에 "사용자"가 표시됩니까? "추가 ..."를 클릭하지 않고 입력 한 경우 완료되면 반드시 "적용"을 클릭하십시오.



1

다른 사람이이 문제에 부딪 힐 경우를 대비하여. 이 모든 단계의 문제를 해결했는데 MAC에서 일부 파일의 압축을 풀었 기 때문에, Microsoft는 알림없이 자동으로 파일을 암호화했습니다. 몇 시간 동안 폴더 권한을 설정하려고 시도한 후 파일 이름이 녹색으로 표시되어 파일이 암호화되었으며 폴더 권한이 올바른 경우에도 IIS에서 동일한 오류가 발생하는 것을 확인했습니다.


이 똑같은 문제에 너무 많은 시간을 보냈습니다. 간단히 여기에 찬사를 보냅니다. 나는 여기서 IIS와 EFS에 대한 액세스를 검색했지만 귀하의 대답은 Mac에서 확장 된 zip 파일 인 내 문제의 근본 원인에 대한 단서였습니다. 내 특정 시나리오는 IIS에서 프로세스에서 호스팅되는 ASP.NET Core가 시작되지 않는 문제였습니다. 이벤트 로그 메시지, stdout 로그 등이 없습니다. localhost를 통해 액세스하면 web.config가 유효하지 않지만 소스가 없다는 오류 메시지가 표시됩니다. 분명히 파일에 액세스 할 수 있지만 내용을 읽을 수 없습니다.
Aaron

1
  1. 새 사이트를 만들고 사이트 폴더를 마우스 오른쪽 버튼으로 클릭 한 다음 사이트 추가를 클릭합니다.
  2. 사이트 이름을 입력하십시오.
  3. 물리적 경로 선택
  4. IP 주소 선택
  5. 포트 변경
  6. 확인 클릭
  7. 응용 프로그램 풀로 이동
  8. 사이트 풀 선택
  9. 고급 설정을 마우스 오른쪽 버튼으로 클릭하십시오.
  10. .Net CLR 버전을 "No Manage Code"로 변경합니다.
  11. ID를 "ApplicationPoolIdentity"로 변경합니다.
  12. 사이트 홈 페이지로 이동 한 다음 "인증"을 클릭합니다.
  13. AnonymousAuthentication을 마우스 오른쪽 단추로 클릭 한 다음 "편집"을 클릭합니다.
  14. 응용 프로그램 풀 ID 선택
  15. 확인을 클릭
  16. 팔!

경로의 경우 web.config를 추가하십시오.

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="React Routes" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

0

무단 수신과 관련하여 발생할 수있는 또 다른 문제는 IIS의 인증 설정에 사용되는 공급자와 관련이 있습니다. 제 경우에는 Windows 인증 공급자를 "협상"으로 설정하면 그 문제가 발생했습니다. "NTLM"옵션을 선택한 후 액세스 권한이 부여되었습니다.

인증 공급자에 대한 추가 정보

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/providers/



0

IUSR 대신에 응용 프로그램 풀 인증으로 작업하는 경우 Jean Sun 의이 검사 목록 이 IIS에서 401 오류를 처리하는 데 찾을 수있는 최선의 방법입니다.


IIS 관리자를 열고 사이트가 배포 된 웹 사이트 또는 응용 프로그램 폴더로 이동합니다.

  1. 고급 설정을 엽니 다 (오른쪽 작업 창에 있음).
  2. 응용 프로그램 풀 이름을 기록한 다음이 창을 닫습니다.
  3. 인증 아이콘을 두 번 클릭하여 인증 설정을 엽니 다.
  4. Windows 인증 비활성화
  5. 익명 인증을 마우스 오른쪽 단추로 클릭하고 편집을 클릭하십시오.
  6. 응용 프로그램 풀 ID 라디오 단추를 선택하고 확인을 클릭합니다.
  7. 왼쪽의 IIS 관리자 트리에서 응용 프로그램 풀 노드를 선택하고 3 단계에서 기록해 둔 응용 프로그램 풀 이름을 선택합니다.
  8. 마우스 오른쪽 버튼을 클릭하고 고급 설정을 선택하십시오.
  9. 프로세스 모델 설정을 확장하고 "기본 제공 계정"드롭 다운 목록에서 ApplicationPoolIdentity를 선택한 다음 확인을 클릭합니다.
  10. 확인을 다시 클릭하여 응용 프로그램 풀 고급 설정 페이지를 저장하고 닫습니다.
  11. 관리자 명령 줄을 엽니 다 (CMD 아이콘을 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택합니다. 시작 메뉴의 어딘가에, 아마도 보조 프로그램 아래에있을 것입니다).
  12. 다음 명령을 실행하십시오.

    icacls <path_to_site> /grant "IIS APPPOOL\<app_pool_name>"(CI)(OI)(M)
    

    예를 들면 :

    icacls C:\inetpub\wwwroot\mysite\ /grant "IIS APPPOOL\DEFAULTAPPPOOL":(CI)(OI)(M)
    

특히 5 단계와 6 단계는 종종 간과되며 웹에서 거의 언급되지 않습니다.

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