我正在使用C#和Renci.SshNet打開SFTP連接。我可以很好地獲取文件的屬性,包括文件的所有者和組。然而,它們是整數,並且弄清楚用戶可以做什麼需要知道他們的用戶ID和組ID。這是從Windows機器上完成的,因此信息不易獲得。如何在沒有用戶在* nix機器上手動運行id -u
和id -g
的情況下獲取用戶標識和組ID?使用SFTP獲取用戶名和組名
0
A
回答
0
Renci SSH.NET庫使用SFTP協議版本3.在此版本的協議中,只有GID和UID號碼作爲不同的值提供。
用戶名和組名在SFTP協議版本4和更新版本中提供。但是,即使SSH.NET確實支持這個版本的協議,它也沒有什麼幫助,因爲大多數SFTP服務器(特別是OpenSSH)只支持版本3。
有一個在SFTP 3版本,其中OpenSSH服務器提供的* nix ls
般的記錄文件中的上市提供了longname
領域。所以它包含用戶名和組名。只是記錄的格式是平臺特定的。 SSH.NET只是忽略了這個字段,並沒有試圖解析它(實際上它不會被解析)。見註釋「這個字段的值無意義的信息」,在SftpNameResponse.LoadData()
:
protected override void LoadData()
{
...
for (int i = 0; i < this.Count; i++)
{
var fileName = this.ReadString(this.Encoding);
this.ReadString(); // This field value has meaningless information
...
}
}
如果你真的需要的價值,你可以考慮切換到WinSCP .NET assembly,它採用了longname
領域,並暴露用戶名以及RemoteFileInfo
class的.Owner
和.Group
屬性中的組名稱。
使用Session.ListDirectory
檢索列表。
RemoteDirectoryInfo directory = session.ListDirectory("/home/martin/public_html");
foreach (RemoteFileInfo fileInfo in directory.Files)
{
Console.WriteLine("{0} owned by {1}:{2}",
fileInfo.Name, fileInfo.Owner, fileInfo.Group);
}
如果您的服務器支持它,WinSCP支持SFTP版本4-6。
(我是WinSCP的作者)
相關問題
- 1. 使用URI :: URL從SFTP URL中提取用戶名和密碼
- 2. Hadoop從linux shell用戶名和組映射獲取用戶名和組映射?
- 3. 獲取用戶名和域名在C++
- 4. 獲取Facebook'用戶名'或'用戶名'
- 5. Perl:從stat獲取用戶名和組名commad
- 6. sftp登錄私鑰和公鑰沒有用戶名和域名
- 7. LDAP通過用戶名和域名獲取用戶DN
- 8. 獲取用戶名爲當前用戶名的行的總和
- 9. 獲取用戶名和域名(域\用戶)在ASP.Net C#
- 10. Twitter搜索Api獲取用戶名和用戶真實姓名
- 11. 獲取用戶名和ASP.NET通用Hanlder
- 12. Java獲取一組用戶名
- 13. 使用ActiveX獲取用戶名
- 14. 使用C獲取Facebook用戶名#
- 15. 使用AuthSub c#獲取用戶名?
- 16. 使用Windows Azure獲取Facebook用戶名
- 17. 使用WMI獲取當前用戶名
- 18. 如何在NetSqlAZMAN中獲取應用組,SID和用戶名
- 19. Codeigniter:獲取用戶名和ID
- 20. 獲取Windows用戶名和密碼
- 21. 從HttpServletRequest獲取用戶名和密碼
- 22. 從URI獲取用戶名和密碼
- 23. 獲取用戶名和訪問令牌
- 24. android獲取facebook用戶名和密碼
- 25. 的System.DirectoryServices和IIS - 獲取用戶名
- 26. spring-ws獲取用戶名和密碼
- 27. 獲取用戶名和上傳文件
- 28. 獲取windows用戶名和javascript
- 29. Facebook和JavaScript - 獲取用戶名
- 30. Facebook和php - 獲取用戶名