Bisakah saya mengubah kepemilikan semua file pengguna tertentu?

9

Apakah ada cara untuk secara rekursif menemukan semua file yang dimiliki oleh pengguna dan mengubahnya ke pengguna / grup lain di Gnu / Linux?

Saya berasumsi pasti ada sihir satu liner tetapi keterampilan sihir baris perintah saya tidak sampai pada itu :)

Terima kasih!

john
sumber

Jawaban:

14

Gunakan findperintah dengan -useropsi. Sesuatu seperti:

find / -user john

pada akhirnya akan muncul semua file yang dimiliki oleh pengguna "john".

Jika Anda ingin mengubah kepemilikan mereka (saya akan menjalankan findtanpa eksekusi untuk memastikan Anda memiliki daftar yang Anda inginkan), maka sesuatu seperti:

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

akan melakukannya.

cjc
sumber
1
Saya biasanya menggunakan UID dan lari chown harry:harryjika saya perlu memastikan keanggotaan grup juga benar. Tapi itu sangat tergantung pada aplikasi di sini.
ewwhite
Ini sebenarnya tidak akan bekerja untuk saya kecuali saya menggunakan UID. UID dapat ditemukan di / etc / passwd
user222054
7

Ini sudah terlambat, tetapi hari ini saya menemukan pertanyaan ini karena saya rsynctidak memiliki --usermappilihan.

Saya chown(v. Chown (GNU coreutils) 8.13) menawarkan built-in recurse ( -R) dan --frompilihan sehingga masalah Anda (dan saya) bisa juga telah diselesaikan dengan menggunakan

chown -R --from=john harry /


Lebih khusus lagi, saya memigrasi server dari OpenSuse ke debian, dan pengguna dan grup apache2 berbeda di antara distribusi. Di OpenSuse, pengguna wwwrun (id:30)dan grupnya www (id:8), dalam bahasa debian www-data (id: 33)untuk keduanya. Setelah saya menyalin file menggunakan

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

Saya menggunakan

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

pada mesin target (debian).


Catatan: rsync version 3.1.0 protocol version 31memiliki yang disebutkan di atas --usermapjadi jika saya punya saya bisa melakukan ketiga langkah dengan satu perintah pada mesin sumber:

rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/
Aet3miirah
sumber
Saya lebih suka yang ini, terutama untuk opsi untuk mengubah grup juga. Satu find -execliner untuk saya adalah pilihan terakhir, tepat sebelum melakukan sesuatu secara manual. (Juga, saya benci menulis {} \;, tetapi ini pribadi)
Tomasz Gandor