Đệ quy đệ quy tất cả các tệp được sở hữu bởi một người dùng cụ thể


32

Có thể tìm và chown tất cả các tệp mà một người dùng cụ thể sở hữu không? Tôi đã làm một loạt những điều là người dùng sai và cần phải cung cấp quyền sở hữu chính xác cho người dùng của các tập tin.

Có một cách đệ quy và có điều kiện để tôi có thể tạo ra một loạt các tập tin và thư mục?

Câu trả lời:


58

Bạn có thể sử dụng lệnh find xách tay này với một cái gì đó như thế này.

find . -user old-user -exec chown new-user:new-group {} \;

Bạn có thể mở rộng tệp này để tìm các tệp cụ thể với các tùy chọn -iname (không phải POSIX nhưng có sẵn trên OSX)

find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

Các . là viết tắt của thư mục hiện tại và bên dưới, vì vậy bạn có thể sử dụng một đường dẫn cụ thể làm cơ sở.

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

Những gì tôi đang tìm kiếm. Nhưng chỉ cần lưu ý rằng các tùy chọn sau khi chown new-user:new-usercó lẽ nên nóinew-user:new-group
Henesnarfel

2
Tôi đoán các dấu ngoặc nhọn phải nằm trong dấu ngoặc kép để xử lý đúng các đường dẫn có khoảng trắng. Vì vậyfind . -user old-user -exec chown new-user:new-group "{}" \;
Dan Benamy

Trong trường hợp bất kỳ ai khác đang tìm cách tìm các tệp không thuộc sở hữu của một người dùng nào đó (các tệp của người dùng trong thư mục chính không thuộc sở hữu của người dùng đó), bạn có thể thêm '!' đến -user other-userphần để tìm ngược lại. Ví dụ , find . ! -user other-user.
Jon

Thường thì ở trên là hữu ích hơn khi bạn thêm -group old-group. Bằng cách đó, bạn có thể duy trì quyền sở hữu nhóm (quản trị viên, nhân viên, tên nhóm sillyother)
brianlmerritt

ps - chown có thể yêu cầu sudo
brianlmerritt

12

Bạn có thể dùng

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group  *

Từ hướng dẫn chown --help:

  --from=CURRENT_OWNER:CURRENT_GROUP
                     change the owner and/or group of each file only if
                     its current owner and/or group match those specified
                     here.  Either may be omitted, in which case a match
                     is not required for the omitted attribute.

chỉnh sửa : Tất nhiên, điều này chỉ hoạt động trên linux và hầu hết các UNIces. Đối với OSX (dựa trên BSD), hãy xem giải pháp của @StephenTrapping.


+1 nhưng điều đó sẽ không hoạt động trên OSX, nó chownkhông có tùy chọn đó, xem tại đây .
terdon

Rất tiếc, thực sự, tôi đã bỏ lỡ thẻ osx :) Đã bỏ phiếu @StephenTrapping.
Rik

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *sẽ bỏ qua các tập tin ẩn trong lệnh thư mục được chạy, tuy nhiên cũng chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .hoạt động cho các tập tin ẩn trong thư mục mẹ.
Lashae

3

Các -htùy chọn của chown thay đổi sự cho phép của liên kết tượng trưng tập tin bản thân và không chỉ là mục tiêu.

Điều này có thể rất quan trọng khi thực hiện điều này trên các thư mục nhị phân phần mềm, sử dụng các liên kết cộng sinh để chuyển đổi giữa các phiên bản.

find . -user old-user -exec chown -h new-user:new-group {} \;

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.