Saat membuat direktori, mkdir -m <mode> <dir>
sediakan untuk membuat satu atau lebih direktori dengan mode / izin yang ditetapkan (secara atomis).
Apakah ada yang setara untuk membuat file, di baris perintah?
Sesuatu yang mirip dengan:
open("file", O_WRONLY | O_APPEND | O_CREAT, 0777);
Apakah menggunakan touch
diikuti oleh satu chmod
-satunya pilihan saya di sini?
Sunting: Setelah mencoba saran Teppic untuk digunakan install
, saya menjalankannya strace
untuk melihat seberapa dekat dengan atom itu. Jawabannya adalah, tidak terlalu:
$ strace install -m 777 /dev/null newfile
...
open("newfile", O_WRONLY|O_CREAT|O_EXCL, 0666) = 4
fstat(4, {st_mode=S_IFREG|0666, st_size=0, ...}) = 0
...
fchmod(4, 0600) = 0
close(4) = 0
...
chmod("newfile", 0777) = 0
...
Namun, ini adalah perintah shell tunggal dan yang saya tidak tahu sebelumnya.
sumber
install
install
, jadi-m 755
tidak diperlukan.touch
selalu membuat file jika tidak ada, selalu mengikuti tautan simbolik, dan selalu membuat file tidak dapat dieksekusi. Anda dapat memutuskan bit baca dan tulis melalui umask .Pembuatan file atom "Aman" (khususnya, dengan
O_NOFOLLOW
) tidak dimungkinkan dengan alat shell tradisional. Anda bisa menggunakannyasysopen
dalam perl. Jika Anda memilikimktemp
utilitas yang terinspirasi BSD , itu membuat file secara atomis denganO_NOFOLLOW
; Anda harus meneleponchmod
setelah itu jika mode standar 600 bukan yang benar.sumber
touch
memiliki pilihan untuk membuat file yang dapat dieksekusi, itu yang saya cari. Kemudianumask
bisa digunakan untuk menyesuaikan detail. Sayangnya tidak ada cara denganumask
dantouch
untuk membuat executables.touch
diikuti olehchmod +x
.Saya memiliki skrip bash di direktori home saya yang
/home/anthony/touchmod.sh
berisi:Jadi jika saya harus membuat
readme.txt
dengan 644 izin saya bisa mengetik:sumber