2017-07-12 2 views
-2

J'utilise JSch pour sftp fichiers. Après le téléchargement, je modifie les autorisations sur le fichier. Mais comment changer le propriétaire? Il n'y a pas de bons exemples que j'ai pu trouver. Je veuxComment utiliser JSch sftp?

chown Administrator:Administrators filename.exe 

comme vous le feriez dans linux, mais la commande chown JSch prend un entier, plutôt qu'une chaîne pour le propriétaire: groupe. Quel genre de non-sens est-ce?

est ici une partie de mon code

jSch = new JSch(); 
    if (useKey) jSch.addIdentity(privateKey); 
    session = jSch.getSession(user, host, port); 
    if (!useKey) { 
     session.setPassword(pass); 
     session.setConfig("PreferredAuthentications", "password"); 
    } 
    session.setConfig("StrictHostKeyChecking", "no"); 
    session.connect(FTP_TIMEOUT); 
    channel = session.openChannel("sftp"); 
    sftp = (ChannelSftp) channel; 
    sftp.connect(FTP_TIMEOUT); 

    sftp.put(fis,file.getName()); 
    String permissions = "744";  
    int octal = Integer.parseInt(permissions,8); //jsh uses octal, not decimal 
    if (file.getName().endsWith(".exe")) { //make exe files executable 
     sftp.chmod(octal,file.getName()); 
     sftp.chown(this-is-an-integer-not-a-string, file.getName()); 
    } 

Répondre

0

La méthode chown est utilise avec UID, s'il vous plaît se référer à javadocs. Vous essayez de compiler une autorisation dans un UID, c'est faux. Veuillez trouver l'UID de l'utilisateur que vous souhaitez modifier, puis passez à la fonction chown. Si votre serveur est Linux, vous pouvez vous référer here

+0

Le propriétaire est administrateur et c'est correct. Mais le groupe est None et devrait être Administrators. Comment changer le groupe quand il n'y a qu'une entrée pour l'UID? – user3217883

0

JSCH implémente SFTP version 3. SFTP version 3 utilise des valeurs numériques pour le propriétaire et le groupe d'un fichier. Un client qui souhaite modifier le propriétaire ou le groupe d'un fichier sur le serveur doit connaître les valeurs numériques correctes à demander.

Notez que le serveur SFSS OpenSSH implémente également la version 3 de SFTP. C'est le serveur SFTP le plus utilisé, et c'est probablement celui que vous utilisez. Pour autant que je sache, il ne supporte pas une opération chown qui prend le nom du propriétaire sous forme de chaîne.

Il ressemble à SFTP version 4 et supporte plus tard le propriétaire et le groupe en tant que chaînes. Vous pouvez peut-être trouver un client et un serveur SFTP tiers (c'est-à-dire commercial) prenant en charge cette fonctionnalité.