Cara file chown rekursif yang benar (termasuk dir tersembunyi)

8

Teka-teki ini disebabkan oleh lari git pulldari root.

Ada berbagai alasan bagi saya untuk melakukannya ... Saya ingin perangkat saya memperbarui kode ketika boot, dan rc.localdijalankan oleh root.

Semuanya bekerja sebagian besar baik-baik saja ( npm installcenderung gagal ketika dijalankan oleh root, tapi itu adalah topik 'nother keseluruhan), masalahnya muncul ketika saya mencoba menggunakan repositori git dengan pengguna non-root sesudahnya ... beberapa file git memiliki telah ditulis oleh root, jadi sekarang saya tidak bisa menggunakannya lagi (izin ditolak).

Jadi saya ingin chownmengembalikannya secara rekursif tetapi sepertinya tidak ada yang benar-benar berfungsi pada semua file git kecil. Saya mencoba -Rflag dan ./**/*path.

Dugaan saya adalah bahwa tidak satu pun dari teknik-teknik itu turun ke direktori dot

Steven Lu
sumber
1
Shell apa yang Anda gunakan? Dalam, bashAnda perlu mengatur shopt -s dotglobuntuk mencocokkan file yang tersembunyi oleh *atau **.
jimmij
1
@jimmij senang tahu, terima kasih (Anda mungkin bisa menjawabnya)
Steven Lu
Apakah Anda chown -R *, bukan chown -R .?
Peter Cordes

Jawaban:

16

Perintah berikut ini berfungsi untuk saya di Ubuntu. Itu mengubah semua file dan direktori kepemilikan secara serampangan

sudo chown -R someuser:somegroup YourDir
Valarpirai
sumber
Saya mencoba sudo chown -R me:me .dan ketika saya ls -alsemua file saya masih dimiliki oleh root. Mengapa ini tidak berhasil?
Richard
@ Richard apakah Anda mencoba menggunakan jalur absolut atau ./?
vdegenne
0

Saya menggunakan treesebagai gantinya:

 sudo tree -fai ~/.blabla  | xargs -L1 -I{} sudo chown youruser:youruser {}

Juga berhati-hati untuk tidak menjalankan chown atau chmod rekursif pada direktori '/' atau direktori sistem lainnya.

Eduard Florinescu
sumber