J'ai la configuration d'environnement suivante.Ubuntu Tomcat CIFS: Permet à l'utilisateur de tomcat d'écrire le fichier en utilisant le servlet
Server: Ubuntu
App Server: Tomcat7
Java: JDK 7
Une servlet doit écrire un fichier dans un dossier de montage. Tomcat s'exécute en utilisant un utilisateur appelé tomcat7
et un CIFS
est lié à /mntt/mydir/
avec un utilisateur différent appelé coder
.
L'autorisation est définie sur 777
pour /mntt/mydir
service va créer un dossier et essayer de télécharger/écrire un fichier dans ce dossier.
Lorsque le dossier est créé, il a l'autorisation mis à 755
et le fichier a la permission mis à 644
, propriétaire des deux fichiers et dossiers est coder
et non tomcat7
Alors, quand mon programme tente d'écrire quelque chose dans le fichier, il jette Permission denined
exception.
MISE À JOUR Code Création du fichier
//Create directory
File uploadFile = new File(dirpath);
uploadFile.mkdirs();
//Create and Write to File
OutputStream stream = new FileOutputStream(new File(dirPath+"/upload"));
S'il vous plaît guider. Aussi, s'il vous plaît laissez-moi savoir si vous avez besoin de plus amples informations.
Merci
Je n'utilise pas linux si souvent, mais je pense que le fait de placer l'indicateur gid sur/mntt/mydir ferait que les nouveaux répertoires hériteront de l'utilisateur/groupe du répertoire parent. http://en.wikipedia.org/wiki/Setuid#setgid_on_directories –
Quel est ce service qui crée les fichiers/répertoires en tant qu'utilisateur 'coder'? Est-ce quelque chose que vous pouvez contrôler/changer? – mavroprovato
@mavroprovato C'est du code java simple. Veuillez trouver la question mise à jour –