Đồng ý. Ở đây chúng tôi đang cố gắng thiết lập một trang web Classic ASP tại IIS 7.5 trong Windows Server 2008 R2. Có một thư mục có tên dbc dưới gốc của trang web và nó có một tệp được sử dụng để đọc và ghi thông tin nhất định trong khi mọi trang được xử lý.
Vấn đề là, nếu tôi cấp Quyền ghi IUSR và Quyền ghi IIS_IUSRS hoặc Quyền ghi mặc định mặc định, tôi nhận được "Quyền truy cập vào đường dẫn 'E: .. \ websiteroot \ dbc \ filename.txt' bị từ chối"
Nhưng nếu tôi cấp cho MỌI NGƯỜI Viết quyền truy cập vào thư mục dbc đó, thì tôi không gặp bất kỳ lỗi nào, mọi thứ dường như hoàn hảo.
Thông tin thêm: Trang web chạy ở chế độ Đường ống cổ điển, Xác thực ẩn danh được bật (có lẽ đó là xác thực duy nhất được bật) .. Và tôi đã thử xác thực ẩn danh bằng tài khoản IUSR cũng như Nhận dạng nhóm ứng dụng. Trong trường hợp của tôi, ApplicationPoolIdentity là Danh tính để Xác thực trang web. Chúng tôi sử dụng COM + cho tệp I / O. Và Classic ASP Server.CreateObject để khởi tạo một đối tượng ra khỏi nó. COM + chạy như một Dịch vụ Mạng.
Suy nghĩ? Tôi không muốn cấp quyền Viết cho MỌI NGƯỜI. Tui bỏ lỡ điều gì vậy?
GIẢI QUYẾT: Đây là những gì tôi đã làm.
Trang web của tôi có tên là CodesDemo đang chạy dưới AppPoolIdentity trong IIS 7.5, có thể được định vị bởi Danh tính IIS AppPool \ CodesDemo. Tôi đã sử dụng ICACLS để cấp quyền RW trên thư mục đó.
và COM + thực sự đang thực hiện tệp I / O đang chạy trong Nhận dạng dịch vụ mạng. Khi tôi đang sử dụng Trình theo dõi tiến trình để theo dõi Lỗi từ chối truy cập, nó đã cho thấy Dịch vụ mạng chỉ có quyền Đọc trên thư mục đó.
Tôi đã sử dụng "tên người dùng" / cấp: ICACLS: r "NT AUTHORITY \ NETWORKSERVICE" :( OI) (CI) RXW / T để cấp quyền truy cập Ghi trên thư mục đó.
Và giải quyết nó.
Tôi đã có ý định rằng vì trang web chạy dưới dạng Nhận dạng CodesDemo, đây sẽ là tài khoản sẽ được sử dụng để truy cập tệp qua COM +. Nhưng thật xấu hổ khi phát hiện ra rằng COM + vẫn sẽ hoạt động trên ranh giới Danh tính của chính nó.