我目前正在使用 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
检查用户不是root
准备好的方法中的相同方法(格式化和重构):
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;
}