it-swarm-vi.tech

Sử dụng ICACLS để đặt quyền trên thư mục người dùng

Tôi đang cố gắng thiết lập lại quyền trên thư mục người dùng và gặp một chút rắc rối với bước cuối cùng của tập lệnh. Tập lệnh của tôi về cơ bản chiếm quyền sở hữu toàn bộ thư mục người dùng, đặt lại quyền trên tất cả các tệp và thư mục cho thư mục, cấp rõ ràng các quyền tôi cần, dừng tất cả các quyền thừa kế từ thư mục mẹ, đặt chủ sở hữu hợp pháp (người dùng được chỉ định) cho tất cả các tệp và các thư mục, và sau đó xóa quyền mà tôi đã cấp cho chính mình để tôi có thể thao tác trên các tệp. Tôi cần bước cuối cùng này để loại bỏ bản thân khỏi TẤT CẢ các tệp và thư mục con, nhưng hiện tại nó chỉ xóa tôi khỏi% userDir% và để lại tất cả các quyền được kế thừa bên dưới. Đây là một thiếu sót rõ ràng trong ICACLS. Có ai biết cách nào khác để thực hiện điều này?

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /inheritance:r
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%"
16
pk.

Trước tiên hãy quan sát: Mỗi khi bạn chặn quyền thừa kế, bạn sẽ tự cắt đứt sự linh hoạt trong tương lai. Tôi tránh chặn quyền thừa kế bằng mọi giá.

Ví dụ: nếu bạn cần người dùng có thể liệt kê nội dung của thư mục "E:\Home Directories" cấp cao nhất, hãy xem xét các quyền sau:

  • HỆ THỐNG - Kiểm soát hoàn toàn - Áp dụng cho thư mục này, thư mục con và tệp
  • BUILTIN\Quản trị viên - Kiểm soát hoàn toàn - Áp dụng cho thư mục này, thư mục con và tệp
  • BUILTIN\Người dùng được xác thực - Đọc và Thực thi - Chỉ áp dụng cho thư mục này

Sự cho phép cuối cùng không kế thừa vào các thư mục con. Ở mỗi thư mục con, tính kế thừa vẫn được bật và bạn chỉ cần chỉ định người dùng với quyền "Sửa đổi" hoặc "Kiểm soát hoàn toàn" (tùy thuộc vào cách bạn cảm nhận về việc người dùng có thể đặt quyền trong thư mục chính của họ). (Thông thường tôi đặt quyền cuối cùng bằng cách thêm "Người dùng được xác thực" vào trang thuộc tính Bảo mật không "Nâng cao", bỏ chọn hộp kiểm "Đọc" và "Đọc và Thực thi". Cài đặt "Áp dụng cho" cho ACE đó thành "Chỉ thư mục này". Đó là cách dễ nhất, về số lần nhấp, để đặt nó.)

Sau đó, tập lệnh của bạn trở thành:

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T

Tôi hoàn toàn nghi ngờ rằng việc bổ sung quyền "Người dùng được xác thực" mà tôi đã mô tả ở trên với quyền thừa kế được đặt thành "Chỉ thư mục này" sẽ cung cấp cho bạn những gì bạn đang tìm kiếm trong chức năng và sẽ cho bạn sự linh hoạt trong tương lai nếu bạn tìm ra rằng bạn phải thiết lập một quyền mà có thể cần phải kế thừa vào tất cả các thư mục nhà của người dùng trong tương lai.

Đây là SOP cho các thư mục nhà của người dùng, chuyển hướng thư mục "Tài liệu của tôi", "Máy tính để bàn", vv và cho các thư mục hồ sơ người dùng chuyển vùng. Nó hoạt động rất tốt.

Biên tập

re: nhận xét của bạn về BUILTIN\Quản trị viên truy cập

Tôi đã có nhiều tranh luận với mọi người về việc tôi cấp quyền truy cập BUILTIN\Quản trị viên trong nhiều năm qua và vấn đề của tôi là:

  • Sẽ dễ dàng hơn để giải quyết một loại vấn đề người dùng nhất định nếu bạn có thể truy cập vào tệp của họ. Đó là một nỗi đau để "nắm quyền sở hữu" và có thể khá chậm nếu có một số lượng lớn các tập tin hiện diện.

  • Như bạn đã thấy với ICACLS, BUILTIN\Quản trị viên có thể "gán" quyền sở hữu (ngoài việc "lấy" nó) để không có "bảo mật" nào được thêm vào bằng cách không có tệp truy cập BUILTIN\Quản trị viên ở vị trí đầu tiên.

  • Trừ khi bạn đang sử dụng kiểm toán (và chọn lọc một số lượng lớn các mục dương tính giả), sẽ không có dấu vết kiểm toán khi người dùng BUILTIN\Quản trị viên sở hữu các tệp mà họ không nên truy cập, sao chép chúng và sau đó trả lại các tập tin cho chủ sở hữu và sự cho phép "thích hợp" của họ.

  • Trong thế giới của Microsoft, Hệ thống tập tin mã hóa (EFS) có nghĩa là để giải quyết vấn đề giữ cho truy cập BUILTIN\Quản trị viên trái phép không xảy ra. ACL NTFS không giải quyết vấn đề đó. (Rõ ràng, EFS không phải là chương trình duy nhất trong thị trấn. Mã hóa là câu trả lời thực sự để giải quyết vấn đề "giới hạn quyền truy cập của Quản trị viên mạng" cho dù bạn cắt nó như thế nào.)

Theo tôi, không chỉ định BUILTIN\Quản trị viên có quyền truy cập vào thư mục nhà của người dùng (và trên thực tế, bất kỳ thư mục nào) có nghĩa là bạn đang tăng độ phức tạp và thời gian cần thiết để giải quyết các vấn đề trong khi cung cấp ít hơn không có bảo mật thực sự ("ít hơn không có "Bởi vì nó truyền đạt một cảm giác an toàn sai lầm ở nơi không có).

Tôi đã từ bỏ việc cố gắng giành chiến thắng trong cuộc tranh luận với mọi người bằng logic. Nó dường như là một vấn đề tình cảm với một số người. Nó giống như "Từ chối/Nhận là" ngớ ngẩn được đặt ở gốc của một tổ chức Exchange để ngăn các nhóm đặc quyền nhất định mở hộp thư của người dùng. Nó không cung cấp bảo mật thực sự (vì khi kiểm toán, người ta có thể loại bỏ/áp dụng lại ACE khi cần thiết), một cảm giác an toàn sai lầm và cản trở khi giải quyết các vấn đề thực sự.

Ngay cả khi bạn không thích lập luận của tôi về BUILTIN\Quản trị viên có quyền truy cập bạn muốn để giữ nguyên cấu trúc phân cấp thừa kế bằng cách sử dụng kế thừa "Chỉ thư mục này" khi thích hợp. Chặn kế thừa trong hệ thống phân cấp quyền là một dấu hiệu chắc chắn rằng một cái gì đó về thiết kế bị "hỏng" (đảo ngược, v.v.).

18
Evan Anderson

Đầu tiên, cảm ơn cho đoạn trích kịch bản của bạn. Tôi đã làm việc trên cùng một thứ nhưng bị mắc kẹt ở một nơi khác. Trên hộp SBS 2008 của tôi, đoạn mã dưới đây hoạt động với tôi (tất nhiên là giả sử nó chạy ở mức cao). Tôi đã thực hiện một icacls% userdir%/t của một thư mục người dùng hoàn toàn mới (mặc định) được tạo bởi HĐH và so sánh nó với icacls% userdir%/t của một thư mục sau khi chạy tập lệnh này và nó trông giống như tất cả "O's và Tôi "là chính xác. Hy vọng nó cũng sẽ làm việc cho bạn.

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(oi)(ci)f
ICACLS "E:\Home Directories\%userDir%\*.*" /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%\*.*" /inheritance:r
ICACLS "E:\Home Directories\%userDir%\*.*" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%" /t

Trân trọng,

 -d
1
user16680