Làm thế nào để có quyền sở hữu các tập tin từ dòng lệnh?


34

Mỗi lần tôi chạy vào một tập tin mà tôi cần sở hữu. Tôi thường sử dụng caclsđể thay đổi quyền ntfs, nhưng dường như không có quyền sở hữu. Dưới * nix tôi sẽ chạy một cái gì đó như chown me:me <file>. Có một cửa sổ tương đương với chown?


quá tệ setACL không hoạt động với tập lệnh ở trên. lỗi sai trên Win XP, 7 và 8 và bạn cần phải là người chuyên nghiệp để tìm ra lỗi của nó

Câu trả lời:


25

subinacl là một công cụ quyền lực của Windows sysadmin để làm mọi thứ liên quan đến quyền sở hữu và ACL. Bạn có thể thay đổi quyền sở hữu cho bất kỳ ai khác ngoài bạn ( bạn không thể làm điều này với GUI ).

subinacl /file test.txt /setowner=domain\foo

Điều này cho phép bạn đặt quyền cho bất kỳ người dùng nào bạn thích mà không cần phải là quản trị viên (như tôi tin rằng Takeown.exe yêu cầu).


Không hợp lệ cho windows xp Tôi có thể tải xuống SUBINACL.exe (bộ tài nguyên Windows 2003) và sử dụng nó trong Windows XP không?
Kiquenet

Chắc chắn bạn có thể! Đó có lẽ là nơi tôi đã nhận nó từ. Hãy thử ở đây .
crb

26

Bạn đang tìm kiếm "TAKEOWN.EXE", lần đầu tiên trong Windows Server 2003 là một thành phần tiêu chuẩn và tôi tin rằng một mục tài nguyên-bộ tài nguyên trước đó. Nó có sẵn trên Windows 7 và có lẽ các hệ thống mới hơn.

takeown /f <some-file-or-folder> /r

/rthực hiện thao tác đệ quy trên tất cả các con của thư mục đã chỉ định. Không giống như subinacl, bạn phải đăng nhập với tư cách là người dùng mà bạn đang cố gắng sở hữu; hoặc, bạn chỉ có thể gán quyền sở hữu cho nhóm "Quản trị viên".

Đây là bản sao tài liệu của nó, như được bảo quản trên SS64 :

Cú pháp TakenOWN [/ s Máy tính [/ u [Tên miền] Tên người dùng [/ p [Mật khẩu]]]] / f Tên tệp [/ a] [/ r [/ d {Y | N}]]

Key / s Computer Tên hoặc địa chỉ IP của máy tính từ xa (không sử dụng dấu gạch chéo ngược). mặc định = máy tính cục bộ. Tham số này áp dụng cho tất cả các tệp và thư mục được chỉ định trong lệnh.

/ u [Tên miền] Tên người dùng Chạy tập lệnh với quyền của tài khoản người dùng được chỉ định. mặc định = quyền hệ thống.

/ p [Mật khẩu] Mật khẩu của tài khoản người dùng được chỉ định trong tham số / u.

/ f FileName Tên tệp, đường dẫn UNC hoặc mẫu tên thư mục. Chấp nhận ký tự đại diện *

/ a Trao quyền sở hữu cho nhóm Quản trị viên thay vì người dùng hiện tại.

/ r Thực hiện thao tác đệ quy trên tất cả các tệp trong thư mục và thư mục con được chỉ định.

/ d {Y | N} Bỏ qua lời nhắc xác nhận được hiển thị khi người dùng hiện tại không có quyền "Thư mục danh sách" trên một thư mục được chỉ định và thay vào đó sử dụng giá trị mặc định: Y: Giữ quyền sở hữu thư mục. N: Bỏ qua thư mục. Lưu ý rằng bạn phải sử dụng tùy chọn này kết hợp với tùy chọn / r. Nếu tham số / a không được chỉ định, quyền sở hữu tệp được trao cho người dùng hiện đang đăng nhập vào máy tính.

Các mẫu hỗn hợp sử dụng (? Và *) không được hỗ trợ bởi lệnh Takeown.

Sau khi thay đổi chủ sở hữu cho một tệp / thư mục, sau đó bạn có thể gán toàn quyền cho các tệp và sau đó đọc hoặc xóa chúng.



SS64 Có liên kết tài liệu tốt hơn: ss64.com/nt/takeown.html
jpaugh

17

Có quyền sở hữu và toàn quyền của thư mục và mọi thứ bên trong:

takeown /F somedir /A /R
icacls somedir /grant:r User:F /T

Hãy chắc chắn để bắt đầu Dấu nhắc lệnh với tư cách Quản trị viên!

Tôi đã phải khởi động Command Prompt với tư cách Quản trị viên, nó hoạt động với tôi trong Windows 8.1. Với sự lúng túng của Windows 8.1, tôi đã phải tìm kiếm "lệnh", nhấp chuột phải vào biểu tượng Dấu nhắc lệnh. Đối với tôi để xem tùy chọn "Chạy với tư cách quản trị viên". Tôi đã có Dấu nhắc lệnh được ghim vào Thanh tác vụ của mình, nhưng nhấp chuột phải vào nó sẽ không hiển thị tùy chọn "chạy với tư cách Quản trị viên".

Trong Windows 10, "Chạy với tư cách Quản trị viên" sẽ có sẵn cho bạn dưới dạng tùy chọn nhấp chuột phải.

Cú pháp Takeown :

takeown [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <File name> [/a] [/r [/d {Y|N}]]

takeown tham khảo .

Cú pháp của Icacls :

icacls <FileName>[/GRANT [: r] <Sid>: <Perm> [...]] [/ Denegar <Sid>: <Perm> [...]] [/Remove [:g|:d]] <Sid> [...]] [/ t] [/ c] [/ l] [/ q] [/ setintegritylevel <Level>: <Policy> [...]]Icacls <Directory>[/ sustituir <SidOld><SidNew>[...]] [/ restore <ACLfile>[/ c] [/ l] [/q]]

icacls Tham khảo .


1
Hãy lưu ý rằng icacls cuộn cảm với tên đường dẫn dài. Thông báo lỗi "không tìm thấy tệp" là một chút sai lệch, tệ hơn là icalcs hủy bỏ xử lý phần còn lại của cây mà không có thông báo. Đôi khi bạn có thể sử dụng thủ thuật tạo âm lượng SUBST sâu hơn trong cây để giải quyết vấn đề này. Takeown.exe không chấp nhận tên dài.
Andrew Dennison

Không hợp lệ cho Windows XP
Kiquenet

8

Tôi biết đây là một bài viết thực sự cũ, nhưng có một cách được tích hợp trong Windows 7 và mới hơn (có thể là trong Windows Vista, nhưng tôi không chắc chắn). Chạy phần sau từ dấu nhắc lệnh leo thang trong thư mục bạn muốn đặt lại. /tnói icaclsđể thực hiện các hoạt động đệ quy.

icacls .\* /setowner %UserDomain%\%UserName% /t
icacls .\* /reset /t

Lệnh đầu tiên đặt lại chủ sở hữu cho người đã từng đăng nhập thông qua các biến môi trường. Tất nhiên, một tên cụ thể có thể được sử dụng thay thế.

Lệnh thứ hai sau đó buộc các quyền được sắp xếp lại xuống cây cho tất cả các thư mục và tệp con.

Mong rằng điều này sẽ giúp ai đó trong tương lai.


Lệnh đầu tiên là đủ cho tôi.
Benoit Blanchon

6

Bạn có thể muốn xem SetACL , con dao quản lý cấp phép của quân đội Thụy Sĩ. Dưới đây là một ví dụ về cách gán quyền sở hữu tất cả các tệp trên ổ C: cho "Quản trị viên" và xóa bảo vệ quyền thừa kế khỏi tất cả các đối tượng con trong một lần:

SetACL.exe -on "C:\\" -ot file -actn setprot
           -op "dacl:np;sacl:nc"
           -rec cont_obj
           -actn setowner -ownr "n:S-1-5-32-544;s:y"

Bạn cũng có thể thêm -silent.


3

Trong Windows Server 2003 R2 (và phiên bản mới hơn), bạn có thể tận dụng công cụ tích hợp icacls.exe để thay đổi quyền sở hữu từ dòng lệnh, cũng như tất cả các thao tác cacls.exe truyền thống mà nó mở rộng ...

Lưu ý rằng icacls.exe mặc định ở chế độ "chỉnh sửa", trong khi cacls.exe mặc định ở chế độ "thay thế" - một thay đổi đáng hoan nghênh đối với những người trong chúng ta bị cắn (hơn một lần) bởi sắc thái nhỏ bé đó!


icacls là tốt vì nó được bao gồm trong các phiên bản gần đây của windows và cho phép gán quyền sở hữu cho bất kỳ người dùng nào.
David


1

Một cách khác là fileacl Nó nhỏ và có thể đặt / bỏ đặt cờ "kế thừa / không kế thừa" trên đối tượng, không giống như hầu hết các tiện ích của windows.


0

Tôi đã tìm thấy giải pháp bằng Windows Tools: cacls

cacls <file or directory> /E /T /G <user>:F

0
  1. mở dấu nhắc lệnh như người dùng quản trị và thay đổi thư mục có vấn đề
  2. sở hữu tất cả các tập tin ở đó ... ví dụ: takeown /f *.jpg
  3. cấp quyền truy cập cho người dùng bạn chọn ... ví dụ: icacls *.jpg /grant "Everyone":F(lưu ý rằng trong Windows không phải tiếng Anh "Mọi người" có thể không tồn tại, ví dụ: trong Windows tiếng Đức, nó chỉ hoạt động với "Jeder" - bummer thực sự mà Windows dịch các tùy chọn lệnh!)
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.