확인. 여기에서는 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 경계에서 작동한다는 것을 알아내는 것은 당혹 스럽습니다.