2012-08-01 90 views
4

我目前正在使用Jsch实现SFTP客户端。使用Jsch检查SFTP权限

对于此客户端,我需要检查登录用户在SFTP服务器上拥有的权限,以检查用户是否能够执行某些操作。不幸的是,我似乎无法找到任何文档或示例向我们展示如何做到这一点。

在此先感谢。

+0

什么样的允许你的意思是?特定文件的文件权限?组成员资格? – mthmulders 2012-08-01 09:08:35

+0

目前我也是一名客户,他提供了一些基本功能。你需要什么? – reporter 2012-08-02 14:56:48

+0

基本上我需要检查登录用户是否具有SFTP服务器上的读/写权限才能处理各种文件。 – PascalV 2012-08-07 10:14:46

回答

3

该代码会做你想要什么:

ChannelSftp channel = (ChannelSftp)session.openChannel("sftp"); 
SftpATTRS attrs = channel.lstat(fileOnServer) 
boolean userHasPermissionsToWriteFile = attrs != null && ((attrs.getPermissions() & 00200) != 0) && attrs.getUId() != 0; 

attrs.getUId() != 0 

检查该用户没有根的准备方法

+0

纠正我,如果我错了,但不会检查看到该文件拥有所有者写入权限?那么,如果所有者是登录用户以外的人呢? – neubert 2016-05-05 05:16:10

0

同样的方法(格式化和重构):

private boolean accessAllowed(String path) 
    throws SftpException, JSchException { 

    boolean result = false; 

    ChannelSftp channel = (ChannelSftp) session.openChannel("sftp"); 
    SftpATTRS attrs = channel.lstat(path); 

    result = 
     attrs != null && 
     ((attrs.getPermissions() & 00200) != 0) && 
     attrs.getUId() != 0; 

    return result; 
    }