2012-05-09 15 views
6

Gần đây tôi đã thiết kế lại bảo mật trên máy chủ tệp của chúng tôi, đánh dấu hầu hết những gì là Kiểm soát toàn bộ để sửa đổi. Bây giờ các nhà phát triển của tôi đang nói với tôi rằng bất cứ khi nào họ sử dụng GENERIC_ALL để mở một tệp (ví dụ: CreateFile()), họ nhận được một thông báo từ chối truy cập.GENERIC_ALL và thư mục/tệp ACL? GENERIC_ALL thực sự làm gì?

Sau khi nghiên cứu, dường như không có gì biểu thị rằng GENERIC_ALL là bất kỳ hơn GENERIC_EXECUTE + GENERIC_WRITE + GENERIC_READ; tuy nhiên, điều này có vẻ không đúng, vì nhà phát triển có thể thêm ba giá trị không đổi và sử dụng giá trị này thành CreateFile().

Vì vậy, tôi hỏi ... GENERIC_ALL thực sự làm gì?

Cảm ơn,

Matt

+0

Giống như một số con ma chết tiệt trong phép lạ máy, tôi đã nghĩ về điều này ngày hôm nay khi tôi gặp vấn đề thời gian chờ với TortoiseHg không thể tạo tệp trên chia sẻ của người dùng. Bất cứ ai chỉ cập nhật các bài viết, tôi nợ bạn một. – mbrownnyc

Trả lời

4

Quyền truy cập GENERIC_ALL bao gồm mỗi đúng truy cập có thể, bao gồm những thứ như WRITE_DAC (để thay đổi quyền) và WRITE_OWNER (thay đổi chủ sở hữu). Trang File Security and Access Rights hiển thị cách bản đồ quyền truy cập GENERIC_* quyền truy cập cụ thể đối với tệp. Trang File Access Rights Constants hiển thị tất cả quyền truy cập có thể có đối với tệp (có thể tất cả sẽ được yêu cầu khi sử dụng GENERIC_ALL).

Bạn nên khuyến khích các nhà phát triển của bạn chỉ yêu cầu cấp truy cập mà họ thực sự cần. Hiếm khi, ví dụ, là một tập tin được mở cho cả hai GENERIC_EXECUTEGENERIC_WRITE cùng một lúc.

3

GENERIC_ALL có nghĩa là "mọi cấp độ có thể tiếp cận" (cho các tập tin, điều này có tên FILE_ALL_ACCESS). Vì bạn đã xóa Toàn quyền kiểm soát, các nỗ lực mở cho GENERIC_ALL sẽ không thành công với quyền truy cập bị từ chối vì (ví dụ) WRITE_DAC không còn được cấp nữa.