Tôi có thể thay đổi quyền sở hữu tất cả các tệp của một người dùng cụ thể không?


9

Có cách nào để tìm đệ quy tất cả các tệp do người dùng sở hữu và thay đổi chúng thành một người dùng / nhóm khác trong Gnu / Linux không?

Tôi giả sử phải có một số phép thuật một lớp nhưng kỹ năng thuật sĩ dòng lệnh của tôi không đạt được điều đó :)

Cảm ơn!

Câu trả lời:


14

Sử dụng findlệnh với -usertùy chọn. Cái gì đó như:

find / -user john

cuối cùng sẽ bật lên tất cả các tệp thuộc sở hữu của người dùng "john".

Nếu bạn muốn thay đổi quyền sở hữu của họ (tôi sẽ chạy findmà không thực hiện để đảm bảo bạn có danh sách bạn muốn), thì đại loại như:

find / -user john -exec chown harry {} \;

sẽ làm điều đó.


1
Tôi thường sử dụng UID và chạy chown harry:harrynếu tôi cần đảm bảo rằng thành viên nhóm cũng đúng. Nhưng điều đó phụ thuộc rất nhiều vào ứng dụng ở đây.
ewwhite

Nó thực sự không hiệu quả với tôi trừ khi tôi sử dụng UID. Bạn có thể tìm thấy UID trong / etc / passwd
user222054

7

Điều này là muộn, nhưng hôm nay tôi tình cờ gặp câu hỏi này vì tôi rsynckhông có --usermaplựa chọn này.

My chown(v. Chown (GNU coreutils) 8.13) cung cấp một recurse ( -R) tích hợp sẵn và một --fromtùy chọn để vấn đề của bạn (và của tôi) cũng có thể được giải quyết bằng cách sử dụng

chown -R --from=john harry /


Cụ thể hơn, tôi đang di chuyển một máy chủ từ OpenSuse sang debian và người dùng và nhóm apache2 khác nhau giữa các bản phân phối. Trong OpenSuse người dùng wwwrun (id:30)và nhóm của nó www (id:8), bằng debian www-data (id: 33)cho cả hai. Sau khi tôi sao chép các tập tin bằng cách sử dụng

rsync -az /path/to/files me@debian:/path/to/

Tôi đã sử dụng

chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/

trên máy đích (debian).


Lưu ý: rsync version 3.1.0 protocol version 31đã đề cập ở trên --usermapvì vậy nếu tôi có điều đó tôi có thể thực hiện cả ba bước với một lệnh trên máy nguồn:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/

Tôi thích cái này, đặc biệt là cho tùy chọn thay đổi nhóm là tốt. Một find -execlót cho tôi là một phương sách cuối cùng, ngay trước khi làm mọi thứ bằng tay. (Ngoài ra, tôi ghét viết lách {} \;, nhưng đây là vấn đề cá nhân)
Tomasz Gandor
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.