Java 使用Jsch检查SFTP权限
我目前正在使用Jsch实现一个SFTP客户机 对于该客户端,我需要检查登录用户在SFTP服务器上的权限,以便检查用户是否能够执行某些操作。不幸的是,我似乎找不到任何文档或示例来说明如何做到这一点Java 使用Jsch检查SFTP权限,java,ssh,sftp,jsch,Java,Ssh,Sftp,Jsch,我目前正在使用Jsch实现一个SFTP客户机 对于该客户端,我需要检查登录用户在SFTP服务器上的权限,以便检查用户是否能够执行某些操作。不幸的是,我似乎找不到任何文档或示例来说明如何做到这一点 提前感谢。此代码将执行您想要的操作: ChannelSftp channel = (ChannelSftp)session.openChannel("sftp"); SftpATTRS attrs = channel.lstat(fileOnServer) boolean userHasPermissi
提前感谢。此代码将执行您想要的操作:
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
检查用户是否不是根用户,在ready方法中使用相同的方法(格式化和重构):
你指的是什么样的权限?特定文件的文件权限?组成员资格?目前我还在一个客户端工作,该客户端提供一些基本功能。您需要什么?基本上,我需要检查登录用户是否具有SFTP服务器上的读/写权限,以便处理各种文件。如果我错了,请更正我,但检查文件是否具有所有者写入权限?那么,如果所有者不是登录用户,该怎么办?
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;
}