[Catatan: Q serupa ini menyangkut pesan kesalahan bash yang sama. Sudah ditandai duplikat dari Q lain ini . Tetapi karena saya menemukan sumber yang sangat berbeda untuk kesalahan ini, saya akan menjawab Q saya sendiri di bawah ini.]
Baris skrip bash yang sebelumnya berfungsi
while ... do ... done <<< "$foo"
suatu hari mulai menghasilkan pesan kesalahan ini:
tidak dapat membuat file temp untuk dokumen-sini: Izin ditolak
bash
permissions
here-string
Pandangan elips
sumber
sumber
ima_policy=appraise_tcb
parameter kernel) dengan kombinasi/tmp
tidak sedangtmpfs
. Tapi ini sebenarnya bukan kasus biasa :).Jawaban:
Saya telah menambahkan
umask 777
sebelum string di sini. Setelah menghapus umask, kesalahan hilang. Jadi pelajaran yang didapat: Ada file sementara yang dibuat untuk string di sini (<<<
), dan ini terkait dengan dokumen di sini (<<
), dan Anda harus memiliki set umask yang sesuai agar ini berfungsi.sumber
Dalam kasus saya, saya mengubah
/tmp
izin default direktori (saya pikir saya telah mengubah secara tidak sengaja ke 0777).Solusinya adalah mengembalikannya kembali ke
/tmp
izin default , yaitu 1777 dalam oktal (1 = bit lengket, 7 = R + W + X).Jadi singkatnya
sudo chmod -R 1777 /tmp
harus memperbaiki masalah.sumber
-R
benderanya. Tidak ada alasan untuk mengubah file semua orang di bawah ini/tmp
menjadi read-write-executable oleh semua orang. Beberapa file itu sensitif terhadap keamanan pengguna Anda.pengalaman pribadi saya dengan masalah ini adalah dengan
umask
notasi biner, seperti @ elips-view. Saya menduga tulisan itu:akan memberi saya akses baca dan tulis ke file yang saya buat, apa yang salah
Setelah saya mengubah
umask
menjadikesalahan menghilang.
Sebenarnya, notasi biner harus dipahami sebagai komplemen biner.
Jadi, dalam
umask
topeng di bawah ini ketika seseorang menulis0
untuk pemilik file, pengguna ini akan memiliki akses total ke file yang ia buat. Nilai tersebut2
berarti bit ke-2 tertutup, apa artinya dalam kasus ini, secara default pengguna lain tidak akan diizinkan untuk menulis ke file yang dibuat oleh pemilik file.sumber
umask
, karena tepat tiga bit terlibat dalam izin file Posix - untuk pemilik, salah satu grupnya, dan semua orang lainnya.