使用Jsch检查SFTP权限
问题描述:
我目前正在使用Jsch实现SFTP客户端。使用Jsch检查SFTP权限
对于此客户端,我需要检查登录用户在SFTP服务器上拥有的权限,以检查用户是否能够执行某些操作。不幸的是,我似乎无法找到任何文档或示例向我们展示如何做到这一点。
在此先感谢。
答
该代码会做你想要什么:
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
答
同样的方法(格式化和重构):
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;
}
什么样的允许你的意思是?特定文件的文件权限?组成员资格? – mthmulders 2012-08-01 09:08:35
目前我也是一名客户,他提供了一些基本功能。你需要什么? – reporter 2012-08-02 14:56:48
基本上我需要检查登录用户是否具有SFTP服务器上的读/写权限才能处理各种文件。 – PascalV 2012-08-07 10:14:46