GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengatur izin file tertentu saat mengarahkan keluaran?

Saya tahu ini pertanyaan lama, tetapi saya ingin menambahkan dua sen saya.

Saya memiliki ide yang sama dan menghasilkan solusi yang mirip dengan BowlesCR. Masalah dengan solusinya adalah perintah saya (foo ) tidak akan berfungsi jika saya mengubah umask sebelum menjalankannya, jadi inilah masalah saya:

foo | ( umask 0033; cat >> /tmp/foo.log; )

Di sini, umask hanya memengaruhi pengalihan ke foo.log di subkulit. Segala sesuatu yang lain tetap tidak terpengaruh.

Agak berbelit-belit, tetapi berhasil.


Tanpa skrip yang benar, Anda dapat membuat rantai sedikit:

touch /tmp/foo.log; chmod 0644 /tmp/foo.log; foo >> /tmp/foo.log

Sangat mirip dengan jawaban Slowki, tetapi diringkas menjadi satu baris.

Satu-satunya hal lain yang dapat saya pikirkan adalah mengutak-atik umask. Sebaiknya lakukan ini dalam subkulit agar tidak mencemari lingkungan saat ini:

(umask 0033 && foo >> /tmp/foo.log)

Namun, ada dua masalah dengan itu.

  1. Umask tidak dapat menaikkan izin di atas tingkat yang ditentukan dalam creat() syscall (tampaknya 0666 yang digunakan Bash).
  2. Ini tidak akan mengubah izin pada file yang ada (karena umask hanya berlaku untuk pembuatan file ).

Tidak ada cara untuk melakukannya sambil menyalurkan sejauh yang saya tahu, skrip sederhana mungkin merupakan solusi terbaik.

if [ -e /tmp/foo.log ]; then
    foo >> /tmp/foo.log
else
    foo >> /tmp/foo.log
    chmod 0644 /tmp/foo.log
fi

Linux
  1. Mengarahkan Stdout Ke File yang Anda Tidak Memiliki Izin Menulis?

  2. Apakah Rsync ~/foo Target/foo Sama Dengan Rsync ~/foo/ Target/foo/?

  3. Perbedaan Antara /var/log/messages, /var/log/syslog, Dan /var/log/kern.log?

  1. Cara Mengosongkan File Log di Linux

  2. Bagaimana systemd-tmpfiles membersihkan /tmp/ atau /var/tmp (pengganti tmpwatch) di CentOS / RHEL 7

  3. CentOS / RHEL :Cara memutar file /var/log/wtmp dan /var/log/btmp menggunakan logrotate

  1. Cara menonaktifkan penghapusan otomatis file di direktori /tmp dan /var/tmp di CentOS / RHEL 5,6

  2. Cara memotong File /var/log/lastlog

  3. Kapan saya harus menggunakan /dev/shm/ dan kapan saya harus menggunakan /tmp/?