Saya mendapat banyak masalah ketika mengubah izin folder yang myfolder
berada di /
. Saya mengeluarkan perintah
sudo chown -R luca:luca /myfolder/.*
Tujuan saya adalah mengubah kepemilikan semua file tersembunyi di /myfolder
.
Sayangnya saya menyadari bahwa kepemilikan /
juga berubah, yang tentu saja membuat saya sistem yang rusak. Saya pikir ini terjadi karena ..
pertandingan .*
, tetapi masih terasa aneh bagi saya.
Apakah mengubah direktori induk adalah perilaku yang benar atau haruskah saya mengajukan laporan bug?
Jika itu adalah kesalahan saya dalam menggunakan chown, apa praktik terbaik yang digunakan untuk mencegah mengubah kepemilikan folder dan file sistem?
permissions
filesystem
chown
hidden-files
lucacerone
sumber
sumber
..
pertandingan.*
.*
berarti file apa pun yang diakhiri dengan.
*.
berarti file apa pun yang dimulai dengan.
/
secara langsung (membuat folder, menghapus, dll) kecuali benar-benar diperlukan (buka pertanyaan untuk apa yang ingin Anda capai). Juga berbahaya menggunakan wildcard + hak istimewa root karena, lebih sering daripada tidak, Anda tidak 100% yakin apa yang terpengaruh oleh wildcard.chmod
danchown
merupakan perintah yang serupa, keduanya dimulai denganch
, berisio
dan memiliki dua huruf serupa lainnya (n
danm
). </ literal> Serius, mereka berdua dalam bentuk:[cmd] -R [mode or user] [one or more files]
. Beberapa solusi yang ditawarkan pada pertanyaan itu juga berfungsi untuk kasus Anda, misalnya yang ini dari Sean Reifschneider (di tengah). Jawaban ini juga berlaku untuk file tersembunyi hanya dengan menghapus pola glob untuk file yang tidak tersembunyi.Jawaban:
Ingat bahwa baris perintah diperluas (ditafsirkan) oleh shell sebelum dieksekusi
ditafsirkan pertama sebagai:
catat
/myfolder/..
di baris perintah Andachown -R luca:luca /myfolder/..
setara denganchown -R luca:luca /
yang membuat chown berjalan "mundur"
Gunakan
echo /myfolder/.*
ketika Anda menggunakan "*" untuk memverifikasi.sumber
/myfolder
. Thefind
perintah berlebihan dan istirahat dengan nama file yang mengandung spasi. (jika Anda ingin mengubah file secara rekursif,find /myfolder | xargs chown luca:luca
mirip denganchown -R luca:luca /myfolder
).Baik. Baris perintah sebagai root sangat kuat. Baca beberapa buku klasik ini . Dan ya,
.*
cocok dengan..
apa yang dimaksudkan. Dot bukan karakter khusus. Itu adalah konvensi. Secara konvensi, file yang dimulai dengan titik disembunyikan dari tampilan default saat mendaftar direktori - tidak kurang, dan tidak lebih. Secara konvensi, inode yang mengarah ke direktori saat ini mendapatkan.
nama dan inode yang mengarah ke direktori induk mendapatkan..
namanya.Apa yang seharusnya Anda lakukan adalah
Apakah saya menyebutkan bahwa tidak ada yang istimewa tentang nama file yang dimulai dengan titik? Rekursif
chown
tidak berpikir begitu.Saat ini, Anda mungkin dapat menyelamatkan beberapa fungsionalitas dengan mengubah kepemilikan kembali ke root. Dalam jangka panjang, Anda mungkin harus menginstal ulang sistem.
Sebagai aturan umum:
echo .*
).sumber
chown -R luca:luca /myfolder/.[^.]*
saya pikirecho .*
adalah cara yang baik untuk mencoba ekspansi. Ini akan menunjukkan dengan tepat apa yang dilihat shell.ls .*
bisa menjadi sedikit lebih membingungkan, karena akan turun direktori (ls -d .*
mungkin lebih baik, tetapi mungkin juga hanya menggunakanecho .*
)