我知道有getPermissions()
方法,但不知道怎么用。如何使用 JSch 检查用户是否可以读取文件?
首先,您通常应该问一个功能性问题(您想要实现什么),以获得有用的答案。您要求实现/技术细节,因此我可能无用的技术答案:
SftpATTRS.getPermissions()
返回 *nix 权限的数字表示:
https://en.wikipedia.org/wiki/File-system_permissions#Numeric_notation
它本身不足以确定当前用户是否有权读取该文件。此外,您还必须知道:谁是文件的所有者(getUId
返回所有者 ID,但 SFTP 中没有 API 可以将其映射到/从用户名)以及文件的组是什么(getGId
, 相同)。
因此,只有当每个人都有权限时,您才能确保用户可以读取该文件。通过标志的存在可以看出什么0004
(其他类的读取权限)。但缺少该标志并不意味着用户无法读取该文件,例如如果用户是文件的所有者并且有标志0400
(所有者类的读取权限)。
另请注意,当远程系统不是 *nix(例如,它是 Windows)时,getPermissions()
无论如何,价值通常是无关紧要的。
重要但唯一可靠的方法是深入研究 JSch 源代码并提取新的 API 来打开文件进行阅读。然后您可以尝试打开该文件(您实际上不必读取任何内容)来判断用户是否有权这样做。
一般来说,尝试检测您是否具有操作权限是没有意义的。尝试一下操作,看看是否成功。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)