Saya mencoba ke chown
dalam /opt
dan untuk beberapa alasan chown
melompat ke orang tua dan membagikan semuanya.
Adakah yang bisa menyarankan mengapa / bagaimana ini bisa terjadi, dan bagaimana menghindari melakukannya di masa depan? Ini sedikit tentang menjalankan perintah dalam direktori tertentu dapat secara efektif melompat dan menjalankannya di direktori root.
ubuntu: /opt > sudo chown -R root:www-data .*
chown: changing ownership of '../var/lib/lxcfs/proc/cpuinfo': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/meminfo': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/stat': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/uptime': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/diskstats': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc/swaps': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/proc': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/devices': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/blkio': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/hugetlb': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/rdma': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/pids': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/freezer': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/cpuset': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/memory': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/perf_event': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/cpu,cpuacct': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/net_cls,net_prio': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/name=systemd': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup/unified': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs/cgroup': Operation not permitted
chown: changing ownership of '../var/lib/lxcfs': No such file or directory
^C
:ubuntu: /opt >
permissions
chown
Duke Dougal
sumber
sumber
sudo chown -R root:wwwdata /opt
sesuai dialog --help ... mungkin menggunakan pipa itu menyebabkan beberapa masalah ???.*
cocok..
(direktori induk, yaitu/
) - lihat Apakah “chmod 777. * -R” direktori induk chmod (..)?cd
ke direktori root dan menghilangkan leaing /, atau memulai perintah dengan(
, yang berarti perintah tidak akan dieksekusi sampai pencocokan)
diketik, memberikan kesempatan untuk menekan Ctrl-C dan menyelamatkan dari kesalahan buruk (sepertirm -rf /tmp/foo-install
dan menekan Enter, bukan T).Jawaban:
Ini terjadi karena Anda menggunakan:
padahal seharusnya Anda menggunakan ini:
Pertama,
-R
bersifat rekursif untuk semua direktori di bawah direktori target.Selain itu,
*
akan cocok dengan semua file dan direktori di bawah direktori saat ini. Selanjutnya,.*
akan mencocokkan semua file dan direktori satu tingkat di atas direktori saat ini.Untuk menghindari ini di masa mendatang, Anda dapat menggunakan
ls
perintah untuk memverifikasi jalur sebelum Anda menjalankanchown
perintah seperti dalam contoh berikut:Cara lain untuk menghindari ini adalah dengan selalu menggunakan path lengkap ke direktori yang ingin Anda jalankan perintahnya.
Berikut ini sebuah contoh:
Edit:
Anda dapat menggunakan perintah berikut untuk
chmod
semua file atau direktori tersembunyi langsung di bawah/opt
(dengan asumsi karakter pertama setelah.
yang membuat mereka disembunyikan adalah huruf, angka, tanda hubung atau garis bawah yang seharusnya benar untuk sebagian besar file).Anda dapat memverifikasi file apa ini
chmod
dengan menjalankan perintah berikut:Bagian pertama dari perintah :
for i in /opt/.[A-Za-z0-9-_]*
mengatakan bahwa, untuk semua hasil glob,/opt/.[A-Za-z0-9-_]*
tetapkan setiap hasil ke variabel "i".Glob di sini mengatakan bahwa karakter pertama harus
.
dan bahwa karakter berikutnya[A-Za-z0-9-_]
harus berupa karakter apa pun yang AZ atau az atau angka 0-9 atau a-
atau a_
.Ini akan mengecualikan hasil
.
dan..
yang mewakili direktori saat ini dan direktori di atas direktori saat ini dan hanya akan menyertakan file dan direktori tersembunyi.Bagian kedua dari perintah :
do sudo chmod root:www-data "/opt/$i"
mengatakan untuk menjalankan perintah untuk semua variabel yang cocok dengan nilai saat ini$i
.Bagian ketiga dari perintah :
done
mengatakan bahwa saya sudah selesai.Selain itu, Anda menggunakan
-R
opsi denganchmod
dan-R
opsi bersifat rekursif dan akan berlaku untuk semua direktori dan file.Ketika Anda hanya menggunakan
chmod
perintah tanpa opsi, perintah hanya akan berlaku untuk file atau direktori tertentu yang Anda berikan dan tidak akan berlaku secara rekursif ke direktori.sumber
ls
output dan sangat lambat sementara jawabannya adalah untuk digunakanfind
.**
, dan bahkan yang harus diaktifkan secara eksplisit. IMHO, Anda harus lebih jelas tentang peran-R
. (2) Orang-orang disarankan untuk tidak menggunakan polos*
karena dapat mencocokkan nama file yang diawali dengan-
, yang kemudian akan ditafsirkan sebagai opsi. harus melindungi dari itu, tapi saya tidak yakin semua perintah menghormati konvensi itu. … (Lanjutan)command
-- *
*
,./*
dan bahkan/opt/*
gagal menemukan “file dot” (.*
) kecuali jikadotglob
opsi disetel. Seperti yang dikatakan Joshua Besneatte dan ilkkachu ,chown -R /opt
danchown -R .
lebih baik. … (Lanjutan)Sayangnya, shell glob
.*
cocok..
(direktori induk) dalam hal ini/
:Untuk diskusi tambahan, lihat:
sumber
Masalah Anda datang karena
.*
cocok dengan semua yang dimulai dengan titik. Konteksnya adalah direktori saat ini, karena ungkapan ini tidak termasuk jalur. Jadi, jika ada file atau folder tersembunyi seperti.git
di direktori saat ini, Anda akan mencocokkannya. Tetapi (seperti yang akan Anda lihat dengan menjalankanls -a
di folder itu), Anda juga akan cocok.
dan..
Dan
..
, tentu saja, adalah direktori induk, jadichmod -R
secara rekursif menargetkan semua yang ada di direktori induk.sumber
/opt/.*
tidak akan membantu,/opt/..
sama..
dengan CWD =/opt
..
sebagai konteks, tetapi itu tidak berhasil karena garis miring yang hilang ...