Những người triển khai thay đổi sản xuất cho nhóm CNTT của chúng tôi đã được giao nhiệm vụ xem xét bảo mật cho tất cả các đối tượng khác nhau trong nhóm của chúng tôi. việc sử dụng của chúng tôi hoặc đã chuyển sang các nhóm khác không còn quyền truy cập vào các cổ phiếu máy chủ, thư mục web, cơ sở dữ liệu sql, v.v. của chúng tôi gần đây đã hoàn thành phần SQL và chúng tôi có thể sử dụng lại tập lệnh có thể chạy hàng năm (hoặc bất kỳ tần suất nào chúng tôi đến với). Nó hoạt động rất tốt và chúng tôi đã kiểm tra 20 cơ sở dữ liệu trên 10 máy chủ hoặc hơn một vài phút.Sử dụng C# để nhận danh sách ACL cho Máy chủ và ổ đĩa được ánh xạ
Hiện tại, đối với nội dung của máy chủ. Tôi có một ứng dụng mà tôi đã viết trong C# bằng cách sử dụng .NET 2.0 sẽ đệ quy quét một danh sách các thư mục và kết xuất các ACL vào một tệp văn bản. Điều này làm việc tuyệt vời. Trên máy cục bộ. Đường dẫn UNC và ánh xạ không hoạt động, tôi nhận được thông báo ngoại lệ sau: Quy trình không có đặc quyền 'SeSecurityPrivilege' được yêu cầu cho hoạt động này.
On line này:
DirectorySecurity DirSec = di.GetAccessControl(AccessControlSections.All);
đâu di là một đối tượng DirectoryInfo liệt kê từ a [] array DirectoryInfo.
Chúng tôi không có khả năng sẽ được cấp đặc quyền SeSecurityPrivilege. Tuy nhiên tôi không nghĩ rằng điều này là cần thiết. Tôi có thể mở thư mục và kích chuột phải vào các thuộc tính và kích tab bảo mật và xem nó trong GUI. Tôi cũng cần cũng có thể truy cập nó theo lập trình.
Bất kỳ suy nghĩ nào về cách tôi có thể thay đổi phần mã này để nhận các quyền cho thư mục được nhắm mục tiêu?
private void CheckSecurity(DirectoryInfo[] DIArray)
{
foreach (DirectoryInfo di in DIArray)
{
DirectorySecurity DirSec = di.GetAccessControl(AccessControlSections.All);
string sAccessInfo = string.Empty;
foreach (FileSystemAccessRule FSAR in DirSec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
sAccessInfo += GetAceInformation(FSAR);
}
if (sAccessInfo != string.Empty)
{
// Write info to text file
}
}
}
private string GetAceInformation(FileSystemAccessRule ace)
{
StringBuilder info = new StringBuilder();
string line = string.Format("Account: {0}", ace.IdentityReference.Value);
info.AppendLine(line);
line = string.Format("Type: {0}", ace.AccessControlType);
info.AppendLine(line);
line = string.Format("Rights: {0}", ace.FileSystemRights);
info.AppendLine(line);
line = string.Format("Inherited ACE: {0}", ace.IsInherited);
info.AppendLine(line);
return info.ToString();
}
Edit: Làm thế nào tôi sẽ kiểm tra thư mục từ xa cho attrib đọc trong ACL khi nó không thành công trên nhận được "GetAccessControl()" phương pháp cho thư mục gốc? (Nếu tôi vượt qua trong \ server \ path, nó sẽ gặp lỗi khi nhận thông tin cho \ server \ path).
Tài khoản người dùng là tài khoản miền và tôi có quyền đọc cấu trúc tệp. Tôi có thể xem bảo mật từ các thuộc tính của thư mục/tập tin.
Tôi sẽ kiểm tra giám sát quy trình nhưng tôi không chắc chắn rằng tôi sẽ có thể chạy trên máy chủ (Tôi không phải là quản trị viên trên (các) máy chủ được đề cập).
mẫu câu hỏi/Mã này thật sự rất hữu ích. Tôi sử dụng mã này xây dựng một màn hình cho phép tập tin cho một trong các hệ thống nội bộ của chúng tôi. –