umask
Gibi saygıchmod +x
man chmod
diyor ki eğer augo
gibi verilmez:
chmod +x mypath
sonra a
kullanılır, ancak şu şekilde kullanılır umask
:
Ugoa harflerinin bir kombinasyonu, hangi kullanıcıların dosyaya erişiminin değiştirileceğini kontrol eder: dosyanın sahibi olan kullanıcı (u), dosyanın grubundaki diğer kullanıcılar (g), dosyanın grubunda olmayan diğer kullanıcılar (o) veya tümü kullanıcılar (a). Bunlardan hiçbiri verilmemişse, etki (a) verilmiş gibidir, ancak umask'de ayarlanan bitler etkilenmez.
İşte bu davranışı tam olarak simüle eden bir sürüm:
#!/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')
Ayrıca bkz: Python'da varsayılan dosya izinlerini nasıl alabilirim?
Ubuntu 16.04, Python 3.5.2'de test edilmiştir.