내가 연구하고 아무데도 가지지 못한 IIS 7.5 및 ASP.NET의 문제가 있습니다. 도움을 주시면 감사하겠습니다.
내 질문은 IIS 7.5에서 ASP.NET을 사용하면 IIS 및 / 또는 운영 체제 C:\dump
가 완전 신뢰 하에서 실행될 때 와 같이 웹 응용 프로그램이 폴더에 쓰도록 어떻게 허용 합니까? 응용 프로그램 풀 사용자 (이 경우 ApplicationPoolIdentity
) 에 대한 쓰기 액세스 권한을 명시 적으로 추가 할 필요가없는 방법은 무엇입니까?
내가 아는 많은 것 :
- IIS 7.5에서 응용 프로그램 풀의 기본 아이디는
ApplicationPoolIdentity
입니다. ApplicationPoolIdentity
“IIS APPPOOL \ AppPoolName”이라는 Windows 사용자 계정을 나타냅니다.이 계정은 응용 프로그램 풀을 만들 때 만들어지며 여기서 AppPoolName은 응용 프로그램 풀의 이름입니다.- “IIS APPPOOL \ AppPoolName”사용자는 기본적으로
IIS_IUSRS
그룹 의 구성원입니다 . - 당신이 완전 신뢰에서 실행하는 경우, 웹 응용 프로그램은 파일 시스템의 여러 분야 (제외 폴더처럼 쓸 수
C:\Users
,C:\Windows
등). 예를 들어, 애플리케이션은와 같은 일부 폴더에 쓸 수있는 액세스 권한을 갖습니다C:\dump
. - 기본적으로
IIS_IUSRS
그룹에는 읽기 또는 쓰기 액세스 권한이 부여되지 않습니다C:\dump
(적어도 Windows 탐색기의 “보안”탭을 통해 볼 수있는 액세스 권한은 허용되지 않음). - 에 대한 쓰기 액세스를 거부
IIS_IUSRS
하면 예상대로 폴더에 쓰려고 할 때 SecurityException이 발생합니다.
따라서이 모든 것을 고려하면 “IIS APPPOOL \ AppPoolName”사용자에게 쓰기 액세스 권한이 어떻게 부여됩니까? w3wp.exe 프로세스는이 사용자로 실행되므로이 사용자가 명시 적으로 액세스 할 수없는 폴더에 쓸 수있는 것은 무엇입니까?
완전 신뢰 하에서 실행중인 경우 사용자가 작성해야하는 모든 폴더에 대한 액세스 권한을 사용자에게 부여하는 데 어려움이 있기 때문에 편의상이 작업이 수행되었음을 이해합니다. 이 액세스를 제한하려면 언제든지 중간 신뢰에서 응용 프로그램을 실행할 수 있습니다. 명시적인 파일 시스템 액세스 권한이없는 것처럼 보이지만 운영 체제 및 / 또는 IIS가 이러한 쓰기 작업을 수행하는 방법에 대해 알고 싶습니다.
답변
는 ApplicationPoolIdentity
의 회원 할당 된 Users
그룹뿐만 아니라 IIS_IUSRS
그룹을. 언뜻보기에 이것은 다소 걱정스러워 보일 수 있지만 Users
그룹은 NTFS 권한이 다소 제한되어 있습니다.
예를 들어 폴더에 폴더를 만들려고하면 폴더를 만들 C:\Windows
수 없습니다. (가) ApplicationPoolIdentity
여전히 윈도우 시스템 폴더에서 파일을 읽을 수 있어야합니다 (그렇지 않으면 어떻게 다른 작업자 프로세스 동적 필수 DLL의로드 할 수있을 것입니다).
c:\dump
폴더 에 쓸 수있는 것에 대한 관찰과 관련하여 . 고급 보안 설정에서 권한을 살펴보면 다음과 같은 내용이 표시됩니다.
다음에서 특별 권한이 상속됨을 참조하십시오 c:\
.
이것이 귀하의 사이트 가 해당 폴더를 ApplicationPoolIdentity
읽고 쓸 수 있는 이유 입니다. 그 권리는 c:\
드라이브 에서 상속됩니다 .
각각 고유 한 응용 프로그램 풀과 응용 프로그램 풀 ID가있는 수백 개의 사이트가있는 공유 환경에서는 사이트 폴더를 Users
그룹이 제거 된 폴더 나 볼륨에 저장하고 관리자와 SYSTEM 계정에 액세스 권한이 있습니다 (상 속됨).
그런 다음 IIS AppPool\[name]
사이트 루트 폴더 각각에 필요한 필수 권한을 개별적으로 할당 합니다.
또한 잠재적으로 중요한 파일 또는 데이터를 저장하는 위치에 생성 한 모든 폴더에 Users
그룹이 제거되어 있는지 확인해야합니다 . 또한 설치하는 모든 응용 프로그램이 c:\program files\[app name]
폴더에 중요한 데이터를 저장하지 않고 사용자 프로필 폴더를 대신 사용 하는지 확인해야합니다 .
그렇습니다. 언뜻보기에는 필요한 것 ApplicationPoolIdentity
보다 더 많은 권리가 있는 것처럼 보이지만 실제로 그룹 구성원이 지시하는 것보다 더 많은 권리가 없습니다.
ApplicationPoolIdentity
의 그룹 구성원은 시스 인 터널을 사용하여 검사 할 수 Explorer의 도구를 처리합니다 . 관심있는 응용 프로그램 풀 ID로 실행중인 작업자 프로세스를 찾으십시오. User Name
표시 할 열 목록에 열을 추가 해야합니다.
예를 들어 여기 900300
에 Application Pool Identity가 인 풀이 있습니다 IIS APPPOOL\900300
. 프로세스의 속성을 마우스 오른쪽 버튼으로 클릭하고 보안 탭을 선택하십시오.
우리가 볼 수 있듯이 그룹 IIS APPPOOL\900300
의 구성원입니다 Users
.
답변
-
폴더를 마우스 오른쪽 버튼으로 클릭하십시오.
-
속성을 클릭하십시오
-
보안 탭을 클릭하십시오. 다음과 같은 것을 보게 될 것입니다 :
- 위 화면에서 “편집 …”버튼을 클릭하십시오. 다음과 같은 것을 보게 될 것입니다 :
- 위 화면에서 “추가 …”버튼을 클릭하십시오. 다음과 같은 것을 보게 될 것입니다 :
- 위 화면에서 “위치 …”버튼을 클릭하십시오. 이와 같은 것을 보게 될 것입니다. 이제이 트리 구조의 맨 위로 이동하여 컴퓨터 이름을 선택한 다음 확인을 클릭하십시오.
- 이제 “iis apppool \ your_apppool_name”을 입력하고 “이름 확인”버튼을 클릭하십시오. apppool이 있으면 텍스트 상자에 밑줄과 함께 apppool 이름이 표시됩니다. 확인 버튼을 클릭하십시오.
-
계정에 부여 할 액세스 권한을 확인 / 선택 취소
-
적용 버튼을 클릭 한 다음 확인을 클릭하십시오.
답변
II의 각 응용 프로그램 풀은 기본적으로 c : \ users 아래에 전체 읽기 / 쓰기 권한이있는 자체 보안 사용자 폴더를 만듭니다. Users 폴더를 열고 어떤 응용 프로그램 풀 폴더가 있는지 확인한 후 마우스 오른쪽 단추를 클릭하고 할당 된 응용 프로그램 풀 가상 계정에 대한 권한을 확인하십시오. 루트 및 하위 폴더에 지정된 읽기 / 쓰기 액세스 권한이있는 응용 프로그램 풀 계정이 이미 추가되어 있어야합니다.
따라서 파일 스토리지 액세스 유형이 자동으로 수행되므로 앱 풀 사용자 계정 폴더에 원하는 것을 무엇이든 쓸 수 있어야합니다. 그렇기 때문에 각 응용 프로그램 풀에 대한 가상 사용자 계정이 만들어졌습니다.
답변
이벤트 로그 → Windows → 응용 프로그램에서 다음과 같이 IIS 웹 사이트에 대한 액세스 문제를 해결하려고 시도했습니다 .
로그 이름 : 응용 프로그램 출처 : ASP.NET 4.0.30319.0 날짜 : 2012 년 1 월 1 일 오후 4시 12 분 33 초 이벤트 ID : 1314 작업 범주 : 웹 이벤트 레벨 : 정보 키워드 : 클래식 사용자 : N / A 컴퓨터 : SALTIIS01 기술: 이벤트 코드 : 4008 이벤트 메시지 : 요청에 대한 파일 권한 부여에 실패했습니다. 이벤트 시간 : 2012 년 1 월 5 일 4:12:33 오후 이벤트 시간 (UTC) : 2012 년 1 월 6 일 12:12:33 AM 이벤트 ID : 349fcb2ec3c24b16a862f6eb9b23dd6c 이벤트 순서 : 7 이벤트 발생 : 3 이벤트 상세 코드 : 0 신청 정보 : 응용 프로그램 도메인 : / LM / W3SVC / 2 / ROOT / Application / SNCDW-19-129702818025409890 신뢰 수준 : 전체 응용 프로그램 가상 경로 : / Application / SNCDW 응용 프로그램 경로 : D : \ Sites \ WCF \ Application \ SNCDW \ 기계 이름 : SALTIIS01 공정 정보 : 프로세스 ID : 1896 프로세스 이름 : w3wp.exe 계정 이름 : iisservice 정보를 요청하다: 요청 URL : http : //webservicestest/Application/SNCDW/PC.svc 요청 경로 : /Application/SNCDW/PC.svc 사용자 호스트 주소 : 10.60.16.79 사용자 : js3228 인증 됨 : True 인증 유형 : 협상 스레드 계정 이름 : iisservice
결국 Windows Everyone
그룹 이 해당 폴더 에 대한 읽기 권한 을 부여하여 제대로 작동하게해야했습니다.