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).
답변
나는 내 자신의 답변을 게시하는 것을 싫어하지만 최근 일부 답변은 내 자신의 질문에 게시 한 솔루션을 무시하여 어리석은 접근 방식을 제안합니다.
즉, Windows 사용자 계정 권한을 전혀 편집 할 필요가 없습니다 . 그렇게하는 것은 위험을 초래할뿐입니다. 프로세스는 상속 된 권한을 사용하여 IIS에서 완전히 관리됩니다.
올바른 사용자 계정에 수정 / 쓰기 권한 적용
-
도메인이 사이트 목록에 표시되면 마우스 오른쪽 버튼을 클릭하고 권한 편집을 선택합니다.
보안 탭 아래에
MACHINE_NAME\IIS_IUSRS
표시됩니다. 이는 IIS가 디렉토리에 대한 읽기 전용 권한을 자동으로 갖음을 의미합니다 (예 : 사이트에서 ASP.Net을 실행하는 경우). 이 항목을 편집 할 필요는 없습니다 . -
편집 버튼을 클릭 한 다음 추가 … 를 클릭 하십시오.
-
텍스트 상자에을 입력
IIS AppPool\MyApplicationPoolName
하고MyApplicationPoolName
도메인 이름 또는 사이트에 액세스하는 응용 프로그램 풀로 대체 하십시오. 예 :IIS AppPool\mydomain.com
-
를 눌러 이름 확인 버튼을 누릅니다. 입력 한 텍스트가 변형됩니다 (밑줄에 유의).
-
확인 을 눌러 사용자를 추가하십시오
-
새 사용자 (도메인)를 선택하면 수정 또는 쓰기 권한을 안전하게 제공 할 수 있습니다.
답변
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 그룹에 할당 한 것은 필요합니다. 더 이상 아무것도 없습니다.
도움이 되었기를 바랍니다.
답변
사이트 폴더에 IIS_IUSRS 권한을 추가해도 js 및 css와 같은 리소스에 여전히 액세스 할 수 없습니다 (오류 401, 금지됨). 그러나 IUSR을 추가했을 때 괜찮 았습니다. 따라서 @Travis G @에게 “걱정하지 않고 IUSR에 대한 권한을 제거 할 수 없습니다”라고 확신하십시오.
답변
@EvilDr AD 환경에서 IUSR_ [identifier] 계정을 만들고 특정 응용 프로그램 풀이 해당 IUSR_ [identifier] 계정에서 실행되도록 할 수 있습니다.
“응용 프로그램 풀”> “고급 설정”> “ID”> “사용자 정의 계정”
고급 설정에서 웹 사이트를 “특정 사용자”가 아닌 “응용 프로그램 사용자 (통과 인증)”로 설정하십시오.
이제 IUSR_ [identifier]에게 파일 및 폴더에 대한 적절한 NTFS 권한을 부여하십시오 (예 : companydata에서 수정).
답변
IIS_IUSRS 그룹은 ApplicationPool Identity를 사용하는 경우에만 두드러집니다. 런타임에이 그룹이 비어있는 것처럼 보이더라도 IIS는이 문서에 추가하여 Microsoft 문서에 따라 작업자 프로세스를 실행합니다.
답변
특정 사용자 (및 응용 프로그램 사용자 아님)를 사용합니다. 그런 다음 응용 프로그램에서 가장을 활성화합니다. 특정 사용자로 설정된 계정이 있으면 해당 자격 증명은 해당 서버의 로컬 리소스 에 액세스하는 데 사용됩니다 (외부 리소스가 아닌).
특정 사용자 설정은 특히 로컬 리소스에 액세스하기위한 것입니다.