2009-10-07 10 views
1

comment puis-je créer un nouveau fichier dans le répertoire/var/log en utilisant le langage python dans OSX leopard? J'ai essayé de le faire en utilisant la fonction os.open mais je reçois « permission denied »comment créer un nouveau fichier en utilisant python

merci à l'avance

+0

Pas vraiment une question de programmation. Les problèmes d'autorisation font partie de superuser.com. –

+0

son tagged comme python qui signifie "os.open" est une fonction python. – nur

Répondre

1

Il a probablement échoué parce que/var/log a utilisateur défini à la racine et le groupe mis à la roue. Essayez d'exécuter votre code python en tant que root et cela fonctionnera probablement.

+0

merci. mon application est une application launchagent. il s'exécute pendant le démarrage et enregistre des données dans le fichier de temps en temps. les données enregistrées par l'application ne peuvent pas être affichées sans les privilèges root. comment puis-je y parvenir? – nur

6

racine ne peut écrire dans /var/log/ sous Mac OS X ...:

$ ls -ld /var/log 
drwxr-xr-x 60 root wheel 2040 Oct 6 17:00 /var/log 

peut-être envisager l'utilisation du module syslog dans la bibliothèque standard ...

+0

merci. comment puis-je accéder à syslog en utilisant le langage python? – nur

+0

@nur, 'import syslog' bien sûr - voir http://docs.python.org/library/syslog.html pour tous les détails! –

+0

@alex merci beaucoup. En fait, ce que je veux réaliser, c'est que j'écris une application launchagent pour osx en utilisant python. il écrit de temps en temps des méta-informations dans un db sqlite. ces données ne peuvent pas être vues par l'utilisateur sans privilèges root. donc j'ai besoin de garder ce fichier db en place où seul root a accès. comment puis-je y parvenir? – nur

1

Vous pouvez créer le fichier journal en tant que root puis changer le propriétaire à l'utilisateur de votre script est exécuté comme

# touch /var/log/mylogfile 
# chown myuser /var/log/mylogfile 

où mylogfile est votre fichier journal et myuser est l'utilisateur le script sera exécuté comme

également regarder dans logrotate

Questions connexes