2010-09-01 3 views
1

J'ai du mal à faire en sorte qu'apache serve un fichier via XSendFile lorsqu'il se trouve dans un répertoire monté avec samba. Pour donner un peu d'arrière-plan: J'ai une application Ruby on Rails qui remplace lentement une application ASP.NET, et je l'ai en cours d'exécution sur un serveur Linux exécutant apache2 et passager. La machine Windows qui exécute le code ASP.NET partage un répertoire de téléchargement que j'ai monté via Samba.XSendFile ne peut pas stat fichier si sur le partage samba de Windows?

Chaque fois que je tente d'envoyer un fichier en utilisant l'en-tête de X_SENDFILE je reçois dans mes journaux de serveur apache:

Les résultats partiels sont valides, mais le traitement est incomplète: xsendfile: impossible de fichier stat:/path/to/file Mais quand je tape manuellement: stat/path/to/file, cela me donne des statistiques sur les fichiers. Je sais que le fichier est là. (J'ai également essayé ceci après la connexion pendant que l'utilisateur Apache s'exécute sous) Les autorisations de fichier autant que je peux dire sont correctes.

Existe-t-il un problème avec le fichier XSendFile d'Apache et les fichiers sur un partage SMB?

Répondre

1

peut-être des problèmes de fichiers/autorisations (en tant qu'utilisateur x, vous ne pouvez pas y accéder). Vous pourriez essayer de faire un chmod a + rwx dessus ...

1

Je l'ai retrouvé. Parfois, il faut juste que quelqu'un pointe l'évidence! J'ai le partage de samba monté sur/mnt/winbox-uploads Il a été monté avec: dir_mode = 0777, file_mode = 0777 (pour tester) donc j'ai supposé que les permissions étaient grandes ouvertes. Cependant, après avoir vérifié les permissions sur le répertoire/mnt/winbox-uploads, j'ai vu qu'ils étaient: drwxrwx ---. Ce qui signifiait essentiellement que si je n'étais pas le propriétaire ou le groupe, je ne peux même pas entrer dans le répertoire.

CECI N'A PAS ÉTÉ RÉSOLU. VOIR NOTE CI-DESSOUS

+0

Ok, fausse alarme. Cela n'a fonctionné que parce que j'avais démonté le partage de samba. Cela ne fonctionne toujours pas avec le répertoire monté via samba. – demersus

+0

En réponse à eriko: J'ai essayé de copier les fichiers sur ma machine Linux. Et ça fonctionne très bien. Malheureusement, ce n'est pas une bonne option car il existe une ancienne application ASP.NET qui doit également accéder à ces fichiers. Donc, je dois les ranger sur la boîte à fenêtres .... GRR .... MS me donne toujours mal à la tête – demersus

1

Les montages Samba n'ont pas vraiment les mêmes permissions que sur un système de fichiers vraiment unix. Rappelez-vous que samba a été principalement conçu pour le système Unix -> client Windows pas Windows Server -> client unix. Commandes comme chmod etc ne fonctionnent pas très bien.

Ensuite, le problème est que ruby ​​ne fait pas confiance aux systèmes de fichiers. Si vous vous sentez le moins du monde mal à l'aise pour accéder à un fichier, il abandonne. J'ai quelques applications de rails qui fonctionnent à partir d'un partage nfs qui utilise acls et non unix autorisations de fichiers et ils ne seront pas exécutés à moins que je retourne et donne des utilisateurs ou des groupes sur tmp, log, etc car ruby ​​n'essaie même pas de regarder pour accéder au fichier s'il ne voit pas les permissions d'utilisateur/groupe même si cela réussira puisqu'il y a des acl.

Pour une réponse, essayez le clonage sur les fichiers dans la boîte de l'application rails est en cours d'exécution.

Questions connexes