我知道有getPermissions()
方法,但我不知道如何使用它。如果用户可以读取文件,我如何使用JSch进行检查?
答案 0 :(得分:3)
首先,您通常应该问一个功能性问题(您希望得到什么),以获得有用的答案。您要求实施/技术细节,因此我可能无用的技术答案:
SftpATTRS.getPermissions()
返回* nix权限的数字表示:
https://en.wikipedia.org/wiki/File_system_permissions#Numeric_notation
如果当前用户有权读取文件,那么它本身就不足以确定。此外,您必须知道:谁是文件的所有者(getUId
返回所有者ID,但SFTP中没有用于将其映射到/来自用户名的API)以及该文件的组({ {1}},同样的。)
因此,当每个人都有权限时,您只能确保用户可以读取该文件。存在标志getGId
(其他类的读取权限)可以告诉您什么。但缺少标志并不意味着用户无法读取文件,例如如果用户是文件的所有者,并且有标记0004
(对所有者类的读取权限)。
另请注意,当远程系统不是* nix(例如它的Windows)时,0400
值通常无关紧要。
非平凡但唯一可靠的方法是挖掘JSch源代码并提取新API以打开文件进行阅读。然后,您可以尝试打开文件(您不必实际阅读任何内容),以告知用户是否有权这样做。