ดูเหมือนว่าทุกครั้งที่ผมสร้างไฟล์ที่มีtouch
สิทธิ์ที่จะถูกตั้งค่า: -rw-R - r--
มีวิธีที่ฉันสามารถกำหนดค่าสิทธิ์ด้วยtouch
หรือไม่นี้จะต้องทำหลังจากที่มีคำสั่งที่แตกต่างกันอย่างไร
ดูเหมือนว่าทุกครั้งที่ผมสร้างไฟล์ที่มีtouch
สิทธิ์ที่จะถูกตั้งค่า: -rw-R - r--
มีวิธีที่ฉันสามารถกำหนดค่าสิทธิ์ด้วยtouch
หรือไม่นี้จะต้องทำหลังจากที่มีคำสั่งที่แตกต่างกันอย่างไร
คำตอบ:
คุณสามารถปรับเปลี่ยนของคุณumask
จะอนุญาตให้ (สำหรับการใช้งานส่วนใหญ่) / สิทธิพิเศษในการเขียนอ่านข้อมูลเพิ่มเติม 0666
แต่ไม่ปฏิบัติการเนื่องจากโดยทั่วไปสิทธิ์ขอเป็น
ถ้าumask
เป็น022
คุณจะเห็นtouch
ทำให้0644
ไฟล์
ที่น่าสนใจPOSIXอธิบายพฤติกรรมนี้ในแง่ของcreat
:
หากไฟล์ไม่มีอยู่:
ฟังก์ชันcreat ()ถูกเรียกด้วยอาร์กิวเมนต์ดังนี้
ตัวถูกดำเนินการไฟล์ถูกใช้เป็นอาร์กิวเมนต์พา ธ
ค่าของบิตแบบครบวงจรหรือของ
S_IRUSR
,S_IWUSR
,S_IRGRP
,S_IWGRP
,S_IROTH
และS_IWOTH
ถูกนำมาใช้เป็นอาร์กิวเมนต์โหมด
และมันเป็นเพียงโดยต่อไปนี้เชื่อมโยงไปยังcreat
แล้วจะopen
สังเกตเห็นเอ่ยถึงumask
และกลับมาติดตามไปopen
(และcreat
) เพื่อตรวจสอบว่าควรจะส่งผลกระทบต่อumask
touch
เพื่อumask
ให้มีผลกับtouch
คำสั่งเท่านั้นให้ใช้เชลล์ย่อย:
(umask 066; touch private-file)
(umask 0; touch world-writable-file)
touch file-as-per-current-umask
(โปรดทราบว่าในกรณีใด ๆ หากไฟล์ที่มีอยู่ก่อนtouch
จะไม่เปลี่ยนสิทธิ์ของมันเพียงแค่ปรับปรุงการประทับเวลาของมัน)
umask
คุณสามารถจัดการกับ โดยทั่วไปแล้วจะมีการตั้งค่า022
ซึ่งหมายความว่าเมื่อผู้ใช้สร้างไฟล์มันจะได้รับอนุญาตจาก0644
คุณสามารถจัดการumask
ตามความต้องการของคุณ