4 votes

Lecture de fichiers sur un partage réseau à partir d'un service Windows (application sur tomcat comme service)

J'ai une application web sur tomcat6, qui est installée comme un service dans un WinServer (2008 ou 2003r2, je ne suis pas sûr, les gens ne m'ont pas laissé mettre la main dessus jusqu'à présent). Le service Tomcat fonctionne avec un compte de service particulier (non local, mais créé dans le contrôleur de domaine), différent du compte qui fait fonctionner le serveur.

Nous avons un contrôleur de domaine, donc nos utilisateurs sont toujours vérifiés par rapport à ActiveDirectory.

La webapp lit les fichiers d'un dossier dans un dossier partagé du réseau, qui comporte de nombreux sous-dossiers avec des restrictions particulières. Le sous-dossier désigné pour recevoir les fichiers est configuré pour autoriser le compte de service avec les autorisations suivantes

  • Parcourir le dossier / exécuter le fichier
  • Lire les articles
  • Lire les attributs
  • Lire les attributs ext.
  • Créer des fichiers / écrire des données
  • Créer des dossiers / annexer des données
  • Attributs d'écriture
  • Écriture des attributs ext.
  • Supprimer
  • Permissions de lecture

Et pourtant, ma webapp n'est pas en mesure d'atteindre le sous-dossier (qui se trouve juste en dessous du dossier racine du partage réseau), //fileServer/sharedRootFolder/myFolder ). Ce qui est amusant, c'est que si je fais pointer la webapp vers un sous-dossier que nous utilisons comme point commun pour le partage de fichiers entre tous les employés (par ex. //fileServer/sharedRootFolder/ourCommonFolder ), la webapp peut lire les fichiers. La même application Web exécutée à partir d'un Tomcat autonome (même version 6.x) sur mon poste de travail peut lire les deux endroits (elle est exécutée avec mon propre compte de domaine, qui a moins de droits sur le dossier "inaccessible").

Y a-t-il des paramètres de configuration supplémentaires pour l'utilisateur, le service Windows du serveur ou les autorisations dans le dossier dont je dois tenir compte ?

P.S. Je regarde les permissions données avec le clic droit - propriétés - données de sécurité.

EDIT。 Sur ce fil Si le compte de service basé sur le domaine a le droit d'accéder au sous-dossier que je souhaite sur le partage réseau (qui est situé sur un serveur différent, sur le même réseau local) et si le compte de service se connecter en tant que service lors du démarrage du service, que dois-je faire d'autre pour avoir effectivement accès au sous-dossier du partage réseau ? ???

EDIT2 : Le site //fileServer/sharedRootFolder/ourCommonFolder a des permissions pour Tout le monde Je suppose donc qu'il s'agit d'un problème lié à la configuration du service, au compte de service basé sur le domaine qui le démarre et à la fonction "connexion en tant que service" ou quelque chose du genre.

EDIT3 : Aujourd'hui, nous avons configuré l'ouverture de session en tant que service pour le compte de service (qui était déjà un administrateur local dans le serveur) et cela ne fonctionne pas encore. Je suis à court d'idées...

1voto

Thorn Points 163

Je vérifierais d'abord que l'erreur est en fait un manque de permissions "utilisateur". Regardez le fichier journal (le répertoire de tomcat a un dossier appelé log) - l'application peut faire sa propre journalisation, sinon les erreurs sont envoyées vers le flux de sortie standard - la console - qui est typiquement redirigée vers un fichier texte .out dans le dossier log.

Pouvez-vous vous connecter au serveur avec le compte utilisateur qui exécute Tomcat ? Vous pouvez accéder au dossier dont vous avez besoin depuis votre PC ; pouvez-vous y accéder depuis le serveur ? Nous devons localiser le problème avant de le résoudre.

0 votes

1. L'application web utilise log4j, oui. L'erreur que commons.io génère est "Le paramètre 'directory' n'est pas un répertoire", qui provient d'une validation de File.isDirectory(). Cela signifie que l'application ne peut pas lister le contenu du répertoire. Je suis donc sûr de cette partie. De plus, l'application PEUT lire les fichiers du même partage réseau si je l'exécute à partir d'un Tomcat dans ma station (avec mon utilisateur), donc la logique de 'lecture de dossier' est correcte.// 2. Oui, nous nous sommes connectés avec le compte de service et oui, il atteint le sous-dossier dans le partage réseau en utilisant l'explorateur Windows./// Cela semble lié à l'utilisateur qui démarre le service.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X