Tương đương với chmod để thay đổi quyền truy cập tệp trong Windows


Câu trả lời:


25

Greg đề cập attrib - nhưng attrib không ở bất cứ đâu gần chmod- attribcó thể đặt thuộc tính Chỉ đọc / Ẩn của một tệp - nó không cung cấp các điều khiển chi tiết giống như icacls.

icaclsthiết lập / đặt lại danh sách kiểm soát truy cập, do đó bạn có thể cấp / từ chối quyền cho các nhóm & SID riêng lẻ. Nó khá phức tạp mặc dù.

Đây là một ví dụ tôi đã lưu trong ý chính của tôi ; nó đặt lại danh sách kiểm soát quyền sở hữu và quyền truy cập cho tất cả các tệp trong một thư mục và đặc biệt hữu ích để khắc phục những phiền toái đó "Bạn cần có quyền từ .. để thực hiện hành động này" đặc biệt là khi di chuyển tệp từ cài đặt trước:

icacls * /reset /t /c /q 

Đặt lại thay thế cái hiện có với danh sách mặc định.
/thành động đệ quy trên tất cả các tệp, thư mục và thư mục con
/qkhông hiển thị bất kỳ thông báo thành công nào
/ctiếp tục với các tệp còn lại ngay cả khi xảy ra lỗi.

Bạn cũng có thể làm những việc như sao lưu các ACL hiện có và áp dụng chúng trên tất cả. Hãy xem ss64 giải thích các tùy chọn khác nhau và chuyển đổi rất tốt.


Vấn đề là, tôi không thể làm điều này, vì mỗi tệp có thông báo: "Truy cập bị từ chối". Có cách nào xung quanh điều này? Trên một hệ thống trường học chặn điều này, nhưng không phải cmd?
theonlygusti

Bạn cần đặc quyền quản trị viên; "bình thường" cmdmà bạn nhận được bằng cách nhấn [Win] + [R] thiếu những thứ này. Đối với những nhu cầu đặc biệt như vậy, tôi có một phím tắt "Quản trị viên", với "Thực thi là quản trị viên" (hoặc tương tự; tôi đang sử dụng hệ thống Windows của Đức) (và có màu nền đỏ sẫm).
Tobias

Tôi thực sự phải đối mặt với vấn đề với quyền bị từ chối lỗi. Tại sao tôi có thể làm gì đó nếu tôi là quản trị viên và bảng điều khiển tôi cũng chạy với tư cách quản trị viên. Đó là gì?
Čamo

13

Hoặc cacls , xcacls hoặc icacls yêu thích cá nhân của tôi có thể sẽ làm những gì bạn cần.


1
Tôi tin rằng icaclschỉ có sẵn trên Vista / 7.
Hello71

9

(Đáng buồn thay) không thể là một tương đương chính xác, vì Linux và DOS / Windows sử dụng các thuộc tính cho các mục đích khác nhau và (như Chathuranga đã nói trước đây) mô hình bảo mật là khác nhau:

  • Trong các hệ thống tệp Windows, có các thuộc tính "hidden" ( H) và "system" ( S) không có tương đương trong Linux; ở đó, các tệp được ẩn bằng cách thêm tên bằng dấu chấm ( .).
  • Không có tương đương với Athuộc tính "archive" ( ) của Windows .
  • Không có tương đương với các xthuộc tính Linux "thực thi" ( ) trong các thuộc tính tệp DOS / Windows.
  • một tương đương với Windows "thư mục" ( D) thuộc tính (nhưng nó không thể thay đổi anyway).
  • Trong các hệ thống tệp Linux, mọi mục nhập được sở hữu bởi chính xác một người dùng và chính xác một nhóm, và đọc / ghi / thực thi có thể được phép cho mỗi người trong số họ và cho những người khác. ACL (như được sử dụng bởi Windows) thậm chí còn linh hoạt hơn, nhưng cũng phức tạp hơn và cú pháp dòng lệnh là một PITA (tất nhiên theo ý kiến ​​khiêm tốn của tôi)

Các tập tin thuộc tính hệ điều hành DOS R(read-only) là một trong đó có thể được coi là có một tương đương: thuộc tính này thiết lập là khoảng như wthuộc tính cho tất cả là mất tích; nhưng quyền thay đổi thuộc tính này phải tuân theo ACL.

Thật tuyệt khi có một chmod/ chowntương đương trên Windows, có lẽ được viết bằng một số ngôn ngữ kịch bản, lần lượt gọi attribcacls(hoặc người kế thừa), nhưng tôi không có.


Bài đăng đầu tiên tốt!
slm

Bạn đang nhầm lẫn thuộc tính tập tin và quyền. Linux có các thuộc tính tệp có thể được thay đổi thông qua chattr . Linux có quyền kiểm soát truy cập chi tiết cho các thuộc tính (ví dụ: thuộc tính [i] mmutable chỉ có thể được đặt theo gốc hoặc CAP_LINUX_IMMUTABLEquy trình), trong khi quyền truy cập để đặt thuộc tính trong Windows là tất cả hoặc không có gì. Đó là một lỗi phổ biến trong việc triển khai chmodcho Windows để sử dụng lệnh này để đặt thuộc tính tệp chỉ đọc. Thật không may, các hệ thống chỉ được thông báo như các lập trình viên phát triển chúng.
Eryk CN

@eryksun: Thú vị - Tôi không biết chattrlệnh đó . Nhưng bạn không có ý tôi, để "nhầm lẫn các thuộc tính và quyền của tập tin", phải không? AFAICS, mọi từ tôi viết về các thuộc tính của DOS vẫn đúng.
Tobias

Một tập tin bao gồm rất nhiều thuộc tính (mở rộng). Trong Unix, tập hợp các thuộc tính cốt lõi được lưu trữ trong inode, bao gồm cả chế độ tệp (quyền). Các thuộc tính mở rộng khác (ví dụ ACL) có thể được lưu trữ bên ngoài. Windows không tương đương với thuộc tính "chế độ" Unix. Nó cũng không có bản ghi inode chung cho các hệ thống tập tin. Một bản ghi MFT NTFS là tương tự. Từ POV của nó, các thuộc tính tệp Windows tiêu chuẩn là một thuộc tính duy nhất của bản ghi tệp. Chúng tương ứng với các thuộc tính tệp Linux được đặt qua chattr, ngoại trừ Windows có thuộc tính thư mục do không có inode.
Eryk CN

Câu hỏi hỏi về "[e] quivalent của chmod để thay đổi quyền truy cập tệp trong Windows". Không có tương đương trực tiếp chmodtrong Windows vì không có gì giống như thuộc tính "chế độ" tệp. Tập hợp tiêu chuẩn của các thuộc tính tệp Windows không có gì để làm với điều này. Thuộc tính chỉ đọc không phải là một quyền. Về cơ bản nó nói rằng tập tin được viết bằng đá, vì vậy mọi nỗ lực sửa đổi nó đều phải thất bại. Thuộc tính tệp "bất biến" của Linux là tương tự. Windows chỉ sử dụng ACL cho quyền, vì vậy icacls.exe và tương tự là các lệnh tương tự duy nhất về chủ đề quyền.
Eryk CN

6
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

Hoạt động như một bùa mê để thay đổi quyền trên một thư mục cho người dùng tên miền. Thông tin bổ sung liên quan caclsicacls.


Bài đăng đầu tiên rất hay! Chưa bao giờ nghe nói về icacls.
slm

5

Các attriblệnh là trận đấu gần nhất cho những thứ rất cơ bản (read-only, cờ lưu trữ). Sau đó, có lệnh ACL (danh sách điều khiển truy cập) cacls. Cuối cùng nhưng không kém phần quan trọng, vì Windows thực sự tuân thủ Posix, các cờ giống như unix vẫn tồn tại. Nếu bạn cài đặt bộ công cụ Cygwin, bạn sẽ nhận được một chmod. (Một chút lạc đề, vì bạn đang tìm kiếm một lệnh tương đương với lệnh unix, tải xuống và cài đặt Cgygwin có thể là một điều thú vị đối với bạn.)



2

Không có gì gọi là chmod trong windows vì mô hình bảo mật của Windows khác với Linux. Bạn có thể sử dụng attriblệnh để thay đổi các thuộc tính của các đối tượng. (Nhưng họ thiên về các đặc tính toàn cầu.)


2

Đối với tôi, cách giải quyết là cài đặt Cygwin và thêm thư mục bin của nó vào đường dẫn hệ thống. Sau đó, nếu bạn chạy "chmod" trong dòng lệnh, nó sẽ hoạt động. Mặc dù tôi chưa xác minh tính đúng đắn của nó.


1
Tham khảo: đơn giảnchi tiết
Bob
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.