2012-08-01 68 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; 
    }