확인. 여기에서는 Windows Server 2008 R2의 IIS 7.5에서 Classic ASP 웹 사이트를 설정하려고합니다. 웹 사이트의 루트 아래에 dbc라는 폴더가 있으며 모든 페이지가 처리되는 동안 특정 정보를 읽고 쓰는 데 사용되는 파일이 있습니다.
문제는 IUSR 쓰기 권한 및 IIS_IUSRS 쓰기 권한 또는 DefaultAppPool 쓰기 권한을 부여하면 ” ‘E : .. \ websiteroot \ dbc \ filename.txt’경로에 대한 액세스가 거부되었습니다”라는 메시지가 나타납니다.
그러나 해당 dbc 폴더에 대해 모두 쓰기 권한을 부여하면 오류가 발생하지 않으며 모든 것이 완벽 해 보입니다.
추가 정보 : 웹 사이트가 클래식 파이프 라인 모드에서 실행되고 익명 인증이 활성화되어있을 수 있습니다 (아마도 유일한 인증이 활성화 된 것임). IUSR 계정과 응용 프로그램 풀 ID를 사용하여 익명 인증을 시도했습니다. 필자의 경우 ApplicationPoolIdentity는 웹 사이트 인증을위한 ID입니다. 파일 I / O에는 COM +를 사용합니다. Classic ASP Server.CreateObject를 사용하여 객체를 인스턴스화합니다. COM +는 네트워크 서비스로 실행됩니다.
생각? 모두에게 쓰기 권한을 부여하고 싶지 않습니다. 뭔가 빠졌습니까?
해결 : 여기 내가 한 일이 있습니다.
CipherDemo라는 내 웹 사이트는 IIS 7.5의 AppPoolIdentity에서 실행되고 있으며 이는 Identity IIS AppPool \ CipherDemo에 의해 찾을 수 있습니다. ICACLS를 사용하여 해당 폴더에 대한 RW 권한을 부여했습니다.
실제로 파일 I / O를 수행 한 COM +는 네트워크 서비스 ID로 실행되었습니다. 프로세스 모니터를 사용하여 액세스 거부 오류를 추적 할 때 네트워크 서비스에 해당 폴더에 대한 읽기 권한 만있는 것으로 나타났습니다.
ICACLS “foldername”/ grant : r “NT AUTHORITY \ NETWORKSERVICE”:( OI) (CI) RXW / T를 사용하여 해당 폴더에 대한 쓰기 권한을 부여했습니다.
그리고 그것을 해결했습니다.
웹 사이트가 CipherDemo Identity로 실행되므로 COM +를 통해 파일에 액세스하는 데 사용되는 계정이 될 것입니다. 그러나 COM +가 여전히 자체 ID 경계에서 작동한다는 것을 알아내는 것은 당혹 스럽습니다.
답변
IIS 7.5 (및 선택적으로 IIS 7)에서 모든 작업자는 응용 프로그램 풀 ID (사용자 “IIS AppPool * PoolName *”)로 실행됩니다.
Everyone이 아닌 해당 사용자에게 액세스 권한을 부여하십시오. 이름을 선택 ID 대화 상자에 입력해야합니다. 찾기 기능에는 표시되지 않습니다.
iis.net 에는 매우 자세한 내용을 다루는 매우 유용한 페이지 가 있습니다.
참고 : IIS7 (Server 2008)에서 :
- 고급 설정에서 앱 풀별로 앱 풀 ID를 설정합니다.
- GUI 지원이 없으므로 권한을 설정하려면 명령 줄이 필요합니다 (
icacls.exe
).
마지막으로 SQL 서버의 ID 선택 응용 프로그램 풀 ID 중 하나에 대해 알고하지 않습니다 사용 CREATE LOGIN
하고 CREATE USER
처음에,이 후 GUI가 부여 역할 등을 사용할 수있다
답변
NTFS GUI를 통해 직접 입력하여 계정을 추가 할 수 있습니다. 이름은 IIS APPPOOL\<<app pool name>>
예를 들어 형식입니다 IIS APPPOOL\DefaultAppPool
. (이 Microsoft 지원 기사 참조 )
대안 솔루션 : “네트워크 서비스”계정을 쓰기 권한을 부여하는 응용 프로그램 풀 사용자로 사용하고 있습니다.
답변
특정 사용자에게 폴더 쓰기 권한 만 부여하려면 사이트의 ‘익명 사용자 ID’를 ‘응용 프로그램 풀 ID’가 아닌 ‘특정 사용자’로 변경해야합니다.