IIS8의 IIS_IUSRS 및 IUSR 권한


146

ASP.NET 응용 프로그램을 호스팅하기 위해 Win2003의 IIS6에서 Win2012의 IIS8로 이동했습니다.

내 응용 프로그램의 특정 폴더 내에서 파일을 만들고 삭제해야합니다. 파일을 새 서버에 복사 한 후 파일을 삭제하려고 할 때 다음 오류가 계속 발생했습니다.

'D : \ WebSites \ myapp.co.uk \ companydata \ filename.pdf'경로에 대한 액세스가 거부되었습니다.

IIS를 확인할 때 응용 프로그램이 DefaultAppPool 계정으로 실행되고 있음을 확인했지만 IIS AppPool \ DefaultAppPool 을 포함하도록이 폴더에 대한 Windows 권한을 설정하지 않았습니다.

대신 고객의 비명을 막기 위해 폴더에 대해 다음 권한을 부여했습니다.

IUSR

  • 읽기 및 실행
  • 폴더 내용 나열
  • 읽다
  • 쓰다

IIS_IUSRS

  • 수정
  • 읽기 및 실행
  • 폴더 내용 나열
  • 읽다
  • 쓰다

이것은 효과가있는 것 같지만 너무 많은 권한이 설정되어 있는지 걱정됩니다. IUSR 이 실제로 필요한지 여부에 대한 온라인 상충되는 정보를 읽었습니다 . 누구든지이 폴더에서 문서를 작성하고 삭제하기에 충분한 사용자 / 권한을 명확히 할 수 있습니까? 또한 IUSR은 IIS_IUSRS 그룹의 일부입니까?

업데이트 및 솔루션

아래 내 답변을 참조하십시오 . 최근의 제안이 잘 생각되지 않았거나 심지어 안전하지 않기 때문에 슬프게도해야했습니다 (IMO).


워드 프레스는 당신이 / wwwroot에을 Inetpub의 블로그 디렉토리 IUSR에 IIS_IUSRS에 대한 나열했습니다 권한을 부여 할 필요가 (윈도우 서버 2012 데이터 센터) 푸른 가상 머신에 IIS (8) 작업을하려면
dumbledad

IIS에서 Joomla를 실행하려고 시도하고 파일 보안 설정에 문제가 있기 때문에이 스레드에 온 사람들을 위해 적절한 해결책이라고 생각하는 블로그 기사를 작성했습니다. WordPress 또는 다른 PHP 기반 웹 서버 프로그램에도 적용 할 수 있습니다. renniestechblog.com/index.php/information/…
RenniePet


사용자 그룹 IIS_IUSRS의 폴더에 대한 전체 권한을 추가 한 후 정상적으로 작동합니다.
Thulasiram '

@Thulasiram 그러나 모든 IIS 사용자에게 모든 권한을 부여했습니다. 해커의 관점에서 생각해보십시오. 한 약한 사이트는 그들은 모든 나머지의 총 통제 얻을
EvilDr

답변:


146

나는 내 자신의 답변을 게시하는 것을 싫어하지만 최근 일부 답변은 내 자신의 질문에 게시 한 솔루션을 무시하여 어리석은 접근 방식을 제안합니다.

즉, Windows 사용자 계정 권한을 전혀 편집 할 필요가 없습니다 . 그렇게하는 것은 위험을 초래할뿐입니다. 프로세스는 상속 된 권한을 사용하여 IIS에서 완전히 관리됩니다.

올바른 사용자 계정에 수정 / 쓰기 권한 적용

  1. 도메인이 사이트 목록에 표시되면 마우스 오른쪽 버튼을 클릭하고 권한 편집을 선택합니다.

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

    보안 탭 아래에 MACHINE_NAME\IIS_IUSRS표시됩니다. 이는 IIS가 디렉토리에 대한 읽기 전용 권한을 자동으로 갖음을 의미합니다 (예 : 사이트에서 ASP.Net을 실행하는 경우). 이 항목을 편집 할 필요는 없습니다 .

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

  2. 편집 버튼을 클릭 한 다음 추가 ... 를 클릭 하십시오.

  3. 텍스트 상자에을 입력 IIS AppPool\MyApplicationPoolName하고 MyApplicationPoolName도메인 이름 또는 사이트에 액세스하는 응용 프로그램 풀로 대체 하십시오. 예 :IIS AppPool\mydomain.com

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

  4. 를 눌러 이름 확인 버튼을 누릅니다. 입력 한 텍스트가 변형됩니다 (밑줄에 유의).

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

  5. 확인 을 눌러 사용자를 추가하십시오

  6. 새 사용자 (도메인)를 선택하면 수정 또는 쓰기 권한을 안전하게 제공 할 수 있습니다.

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


2
내 IIS 8.5 서버에서 작동하지 않았습니다. IUSR작품 추가 . 추가 IIS AppPool\Cache(내 응용 프로그램 풀의 이름은) 산출HTTP Error 401.3 - Unauthorized
찰스 번스

14
@CharlesBurns 같은 문제가 있었는데 이것이 근본 원인 인 것으로 나타났습니다 : techras.wordpress.com/2016/03/09/… (익명 인증 자는 Application Pool Identity 대신 IUSR을 사용하도록 설정되었습니다)
Jon

2
폴더는 가상 디렉터리로만 사용되었으며 다른 도메인 계정과 공유 할 때까지 제대로 작동하여 인트라넷을 통해 파일을 볼 수있었습니다. 이렇게하면 가상 디렉터리의 파일에 갑자기 연결할 수 없게됩니다. 나는 모두를 추가 할 필요 결국 MyComputerName\IIS_IUSRS하고 IUSR다시 작동하려면 읽기 전용 권한으로. 이것은 .net Apps가 아닌 가상 디렉터리를위한 것이지만 누군가 유용하다고 생각할 수 있습니다.
MikeTeeVee

13
참고 사항 : 사용자를 검색하고 컴퓨터가 도메인의 구성원 인 경우 IIS AppPool \ MyApplicationPoolName을 찾지 못할 수 있습니다. 필자의 경우 위치 버튼을 클릭하고 위치를 로컬 컴퓨터로 변경해야했습니다.
statler

3
내 테스트에서 여기에 사용할 특수 사용자의 이름은 도메인 이름과 관련이 없습니다. IIS의 사이트에 할당 된 응용 프로그램 풀의 이름입니다. 이 응용 프로그램 풀에는 웹 사이트의 도메인과 일치하는 이름이 있거나 없을 수 있습니다. 따라서 패턴은 다음과 같습니다 IIS AppPool\[APPLICATION POOL NAME]. 응용 프로그램 풀 이름의 공백이 허용됩니다. 또한 "내장 보안 사용자"가 이름 검색을위한 개체 유형 ( "사용자 또는 그룹 선택"대화 상자의 맨 위 필드)으로 선택된 경우에만이 사용자를 찾을 수 있습니다.
Jpsy

49

IUSR은 IIS_IUSER 그룹의 일부이므로 걱정하지 않고 IUSR에 대한 권한을 제거 할 수 있습니다. 추가 자료

그러나 점점 더 많은 Windows 시스템 서비스가 NETWORKSERVICE로 실행되기 시작하면서 시간이 지남에 따라 문제가 발생했습니다. NETWORKSERVICE로 실행되는 서비스가 동일한 ID로 실행되는 다른 서비스를 변조 할 수 있기 때문입니다. IIS 작업자 프로세스는 기본적으로 타사 코드 (Classic ASP, ASP.NET, PHP 코드)를 실행하기 때문에 IIS 작업자 프로세스를 다른 Windows 시스템 서비스와 격리하고 고유 한 ID로 IIS 작업자 프로세스를 실행해야했습니다. Windows 운영 체제는 "가상 계정"이라는 기능을 제공하여 IIS가 각 응용 프로그램 풀에 대해 고유 한 ID를 만들 수있게합니다. DefaultAppPool은 기본적으로 사용자가 만든 모든 응용 프로그램 풀에 할당 된 풀입니다.

보다 안전하게하기 위해 IIS DefaultAppPool ID를 ApplicationPoolIdentity로 변경할 수 있습니다.

권한과 관련하여 작성 및 삭제는 부여 할 수있는 모든 권한을 요약합니다. 따라서 IIS_USERS 그룹에 할당 한 것은 필요합니다. 더 이상 아무것도 없습니다.

도움이 되었기를 바랍니다.


3
Server Essentials 2012 R2 아래에 IIS 8을 설치했습니다. 이 컴퓨터는 도메인 컨트롤러이기도합니다. AD 사용자 및 컴퓨터에서 IIS_IUSRS 그룹은 비어 있으며 IUSR 사용자를 포함하지 않습니다. 그룹에 추가 할 수 있다고 생각하지만 익명 사이트의 경우 IUSR 사용자에게 권한을 부여합니다.
마크 베리

7
IUSR에 대한 권한을 부여했을 때 효과가있었습니다. IIS_IUSER에 권한을 부여하면 작동하지 않습니다.
ihebiheb

Iusr은 IIS_Iusrs의 구성원이 아닙니다. (또는 윈도우에 버그가 있음) 일반적으로 Windows는 IIS_Iusrs를 사용합니다. (동적 페이지 실행 또는 정적 페이지 액세스) Windows에서 IIS_Iusrs가 아닌 Iusr을 사용하는 경우가 있습니다. PHP를 사용한 파일 업로드가 그 중 하나입니다. ... 나는 M $가 IUSR 및 IIS_IUSRS의 permssion을 부여하는 "가장 좋은 사례"를 제공해야한다고 생각 (만 iis_iusr을 부여한다면, 당신은 특권 예외를 충족)
finejustice

이제는 응용 프로그램 풀 그룹 (IWGP)으로 변경되었다고 생각합니다. 나는 IWGP에 권한을 주었고 효과가 있었다.
Rohit Arora

6
IUSR은 IIS_IUSER의 일부입니다. 전혀 그렇지 않다! IUSR은 익명 사용자, IIS_IUSER는 apppool 사용자를위한 그룹입니다.
giammin

6

사이트 폴더에 IIS_IUSRS 권한을 추가해도 js 및 css와 같은 리소스에 여전히 액세스 할 수 없습니다 (오류 401, 금지됨). 그러나 IUSR을 추가했을 때 괜찮 았습니다. 따라서 @Travis G @에게 "걱정하지 않고 IUSR에 대한 권한을 제거 할 수 없습니다"라고 확신하십시오.


7
IIS7 +를 사용 IIS AppPool\MyApplicationPoolName하는 경우 업데이트 된 답변에 따라 올바른 솔루션을 사용하는 것을 잊지 마십시오 . 더 이상 IUSR (S)에 대해 고민 할 필요가 없습니다!
EvilDr

2
귀하의 제안을 시도했지만 작동하지 않습니다. 권한에서 IUSR (S)을 제거하고 응용 프로그램이 실행되는 풀 이름 만 유지했습니다. 자원에 접근 할 수 없게되었습니다. IIS 8.5. IUSR을 추가하면 작동합니다.
Alexander

당신은 당신의 상황에 대한 많은 정보와 함께 당신의 자신의 질문을 게시해야합니다.
EvilDr

4

@EvilDr AD 환경에서 IUSR_ [identifier] 계정을 만들고 특정 응용 프로그램 풀이 해당 IUSR_ [identifier] 계정에서 실행되도록 할 수 있습니다.

"응용 프로그램 풀"> "고급 설정"> "ID"> "사용자 정의 계정"

고급 설정에서 웹 사이트를 "특정 사용자"가 아닌 "응용 프로그램 사용자 (통과 인증)"로 설정하십시오.

이제 IUSR_ [identifier]에게 파일 및 폴더에 대한 적절한 NTFS 권한을 부여하십시오 (예 : companydata에서 수정).


고맙지 만 AD를 사용하지 않습니다. 또한 최근 MS 설명서에 따르면 IIS 7 & 8은 이미 설명한대로 작동하도록 이미 구성되어 있습니다. 문제는 실제로 지정된 계정 중 하나가 실제로 필요한지 여부와 비즈니스는 어느 것입니까?
EvilDr

@EvilDr AD를 사용하고 있지 않다는 것을 알려 주셔서 감사합니다. IIS_IUSRS는 사용자가 아니라 그룹입니다. IIS 6.0의 IIS_WPG와 유사합니다. IIS_IUSRS 및 IUSR에 대한 정보는 다음 링크를 참조하십시오 . IUSR 계정의 companydata *에 대한 수정 권한을 설정하고이 사용자를 IIS_IUSRS 그룹에 추가하고 해당 사용자 계정을 사용하여 응용 프로그램 풀을 실행할 수 있습니다. IUSR_account가 여러 개인 경우 공유 폴더 (예 : TMP)에서 IIS_IUSRS에 대한 그랜드 권한 만 있으면됩니다.
Jan Reilink

Jan, 나는 항상 IUSR이 기본적으로 IIS_IUSRS 그룹의 일부라고 생각 했습니까? IUSR 계정은 기본 제공 계정이므로 어떻게 확인해야합니까? IIS_USRS 수정을 선택 취소하고 대신 IUSR을 확인해야한다고 말씀하십니까? 단일 응용 프로그램 요구 사항을 감안할 때 실제로 차이가 있다고 생각하지 않습니까?
EvilDr


0

특정 사용자 (및 응용 프로그램 사용자 아님)를 사용합니다. 그런 다음 응용 프로그램에서 가장을 활성화합니다. 특정 사용자로 설정된 계정이 있으면 해당 자격 증명은 해당 서버의 로컬 리소스 에 액세스하는 데 사용됩니다 (외부 리소스가 아닌).

특정 사용자 설정은 특히 로컬 리소스에 액세스하기위한 것입니다.

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