我知道有
getPermissions()
方法,但我不知道如何使用它。我该如何使用JSch检查用户是否可以读取文件?getPermissions()
方法,但我不知道如何使用它。我该如何使用JSch检查用户是否可以读取文件?SftpATTRS.getPermissions()
返回*nix权限的数字表示:getUId
返回所有者ID,但在SFTP中没有API将其与用户名映射)以及文件的组是什么(getGId
也是如此)。因此,只有在每个人都有读取文件的权限时,您才可以确定用户可以读取文件。您可以通过标志0004
(其他类的读取权限)的存在来判断。但缺少该标志并不意味着用户无法读取文件,例如,在用户是文件所有者且存在0400
(所有者类的读取权限)标志的情况下。
请注意,当远程系统不是*nix(例如Windows)时,getPermissions()
值通常是无关紧要的。
非平凡的但唯一可靠的方法是深入研究JSch源代码并提取新的API来打开文件进行读取。然后,您可以尝试只打开文件(实际上不必读取任何内容),以确定用户是否有权限这样做。
总的来说,检测您是否具有执行操作的权限是没有意义的。尝试进行操作并查看其是否成功即可。