2013-07-19 17 views
5

Çalıştırdığımda, /home/test/ içinde bir dizin oluşturduğunda ve içinde bazı dosyalar yazıyor olan bir komut dosyası var. Bu senaryoyu çalıştırdığımda, iyi çalışıyor. Ancak, benTüm yeni dizinlerde 777 izin var

$ret = `/home/..../testscript.py` 

ile perl programı onu çağırdığınızda o klasör oluşturamazsınız böylece izinleri yok, ya da oluşturulduktan sonra içine yazamazsınız. Python open("/home/test/abcde/file1.txt", "w") yaptığında bu dosyaya benziyor, bu dosyanın izinleri var -rw-r--r-- Bunun için neler yapabilirim? Tüm alt dizinlerin global yazma erişimine sahip olmasını sağlamak için/home/test ayarlamanın bir yolu var mı? Ya da daha iyi bir çözüm belki?

+1

Bu dizinleri nasıl yapıyorsunuz? Oluşturduğunuzda izinleri ayarlayabilmeniz gerekir. – squiguy

+0

os.system ('chmod -R 777/home/test') – user1759572

+0

os.mkdir ("/ home/test/abcde") –

cevap

12

koyun: Python komut içinde

os.umask(0000) 

o dizin oluşturur önce. Python komut dosyasını değiştiremiyorsanız, koyun:

umask(0000) 

Perl komut Python komut dosyasını çağırır önce. Yeni bir dosya ya da dizin oluşturulduğunda

, izinler creat() veya mkdir() çağrısında belirtilen izinler alınarak ve daha sonra umask belirtilen bitleri kapalı maskeleme tarafından belirlenir. Genelde, uygulamalar işlevi çağırdıklarında (yürütülebilir ya da olmayan bir şey oluşturup oluşturmadıklarına bağlı olarak) 0666 ya da 0777 izinlerini belirtirler. umask için ortak bir değer, 022 olup, grup ve dünya yazma izinlerini kapatır. Onları istemiyorsanız, çağrıda belirtilen izinleri korumak için yukarıdaki umask değerini kullanın.

İlgili konular