ฉันได้อ่านแล้วว่าการเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ชื่อคงที่/tmp
อาจเป็นความเสี่ยงด้านความปลอดภัยเพราะหากผู้โจมตี (หรือผู้กระทำความผิด) สังเกตเห็นว่าไฟล์/tmp/tmpfileformyscript.tmp
ถูกสร้างขึ้นเมื่อฉันเรียกใช้สคริปต์ของฉัน (แม้ว่าเขาจะไม่สามารถเข้าถึงการอ่านของฉัน สคริปต์) ตัวอย่างเช่นเขาสามารถสร้าง symlink ln -s ~wildcard/.bashrc /tmp/tmpfileformyscript.tmp
ซึ่งจะทำให้ฉันทำลาย.bashrc
ไฟล์ของฉันเมื่อฉันเรียกใช้สคริปต์ของฉัน
ดังนั้นฉันสามารถใช้สิ่งที่ชอบfilename="tmpfile.tmp.$RANDOM" ; echo outputtext > "$filename"
แทน
อย่างไรก็ตามฉันต้องการใช้ไฟล์ tmp สำหรับการแคชในบางครั้งซึ่งในกรณีนี้ฉันต้องการทราบว่า "tmpfile.tmp. *" ตรงกับทุกอย่างใน/tmp
นั้นหรือไม่และใช้ไฟล์นั้นแทนการสร้างไฟล์ใหม่หรือไม่ น่าเสียดายtest
และสิ่งที่เทียบเท่า[ -f filename ]
ไม่สนับสนุนไฟล์ที่ทำให้กลมกลืนไปเท่าที่ฉันสามารถบอกได้
ดังนั้นคำถามของฉันคือสองเท่า:
- ฉันจะสร้าง tempfile อย่างปลอดภัยได้อย่างไร คือ
"predictablename.$RANDOM"
การปฏิบัติที่ได้รับการยอมรับหรือมีที่ดีกว่า (ความปลอดภัยมากขึ้นง่ายขึ้น) วิธี? - ฉันจะเข้าถึงไฟล์และ / หรือสร้างการมีอยู่ของไฟล์ได้ในภายหลังโดยการตรวจสอบได้
predictablename
อย่างไร?
$TMPDIR
และ~/.cache
เป็นสิ่งที่ฉันต้องการ หลังจากนั้นบางคนก็คิดว่าฉันรู้ว่าเหตุผลเดียวที่ฉันต้องการ/tmp
คือแบ่งพาร์ติชัน - ดังนั้นแคชจึงไม่สามารถเติม/home
พาร์ติชันได้ แต่สำหรับกรณีการใช้งานนี้เป็นปัญหาที่ไม่สมบูรณ์ดังนั้นไดเรกทอรีย่อยที่ตรง~/.cache
กับความต้องการของฉันอย่างสมบูรณ์แบบและหลีกเลี่ยงปัญหาด้านความปลอดภัย