web-dev-qa-db-fra.com

SFTP Télécharger la permission du fichier refusé

J'essaie de télécharger un fichier Excel à l'aide de la machine SFTP vers Linux à partir de My Windows PC local.

Voici mon code:

private void uploadToSftp() {
        try
        {
            ChannelSftp sftpClient = null;
            Channel channel = null;
            JSch jsch = new JSch();
            Session session = jsch.getSession("username", "Host", 22);
            session.setPassword("password");
            Properties config = new Properties();
            config.put("StrictHostKeyChecking","no");
            session.setConfig(config);
            session.connect();
            channel = session.openChannel("sftp");
            channel.connect();
            sftpClient = (ChannelSftp) channel;

            sftpClient.cd("/var/www/folder");
            File localFile = new File("C:\\Workspace\\upload-file\\test.xlsx");
            sftpClient.put(localFile.getAbsolutePath(),localFile.getName());

            sftpClient.disconnect();
            channel.disconnect();
            session.disconnect();
        } catch (JSchException e) {
            e.printStackTrace();  
        } catch (SftpException e) {
            e.printStackTrace();
        }
    }

mais chaque fois que j'exécute cette application, j'ai une erreur:

3: Permission denied
    at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.Java:2873)
    at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.Java:594)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.Java:475)
    at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.Java:365)

Quelqu'un peut-il savoir ce qui pourrait être un problème et comment puis-je résoudre ce problème?

6
user9219740

Vous semblez télécharger votre fichier local "c:\workspace\upload-file\test.xlsx" sur répertoire distant, "/ var/www/dossier" = sur sftp.

Je suppose que vous avez toutes les autorisations pour R EADING, w RIVER, E xecuting, etc. sur votre fichier local ( "c:\workspace\upload-file\test.xlsx"), mais votre dossier distant, "/ var/www/dossier", pourrait ne pas accepter votre Accès de l'application, y compris l'action "Télécharger".

Solution:

Le moyen le plus simple de résoudre ce problème vient d'accorder à toutes les utilisateurs de faire quoi que ce soit dans votre répertoire cible de téléchargement ( VAR/www/dossier "). Veuillez essayer ces commandes Linux pour vérifier la permission de votre dossier de téléchargement.

ls -ld /var/www/folder

Si vous voyez votre /var/www/dossier / Le répertoire n'est pas autorisé w Riting ou r EADING (ex: DRWXR-XR-X) Pour les utilisateurs normaux, veuillez accorder des autorisations pour ce dossier avec la commande Follwing.

chmod 777 /var/www/folder
//check permission again.
ls -ld /var/www/folder

Si vous pouvez vérifier que la permission du dossier cible est suffisante ( drwxrwxrwx), veuillez exécuter votre application à nouveau.

NOTE : Donner toutes les autorisations pour d'autres utilisateurs n'est pas considérée comme une bonne pratique. Veuillez faire cette solution pour tester et modifier le paramètre de permission adapté à votre spécification ultérieurement. Pour plus de détails, Veuillez cocher ce lien (cliquez sur).

1
YONGSOO KIM