เคารพumask
เช่นchmod +x
man chmod
บอกว่าถ้าaugo
ไม่ได้รับใน:
chmod +x mypath
จากนั้นa
จะใช้ แต่กับumask
:
การรวมกันของตัวอักษร ugoa ควบคุมการเข้าถึงไฟล์ของผู้ใช้ที่จะเปลี่ยนแปลง: ผู้ใช้ที่เป็นเจ้าของไฟล์ (u) ผู้ใช้รายอื่นในกลุ่มของไฟล์ (g) ผู้ใช้อื่นที่ไม่อยู่ในกลุ่มของไฟล์ (o) หรือทั้งหมด ผู้ใช้ (ก) หากไม่ได้รับสิ่งเหล่านี้เอฟเฟกต์จะเหมือนกับว่า (a) ได้รับแต่บิตที่ตั้งค่าใน umask จะไม่ได้รับผลกระทบ
นี่คือเวอร์ชันที่จำลองพฤติกรรมดังกล่าว:
#!/usr/bin/env python3
import os
import stat
def get_umask():
umask = os.umask(0)
os.umask(umask)
return umask
def chmod_plus_x(path):
os.chmod(
path,
os.stat(path).st_mode |
(
(
stat.S_IXUSR |
stat.S_IXGRP |
stat.S_IXOTH
)
& ~get_umask()
)
)
chmod_plus_x('.gitignore')
ดูเพิ่มเติม: ฉันจะรับสิทธิ์ไฟล์เริ่มต้นใน Python ได้อย่างไร
ทดสอบใน Ubuntu 16.04, Python 3.5.2