c++ - 如何在远程文件上使用 chmod?
问题描述
我在家里设置了一个使用 FreeBSD 11.0 的 SFTP 服务器,并且我正在编写一个程序,该程序也可以进行简单的权限更改。如何更改远程主机上的文件权限?
我已经尝试在所有地方寻找既方便用户又可以支持这一点的库,但无济于事,它们不符合我的标准。我决定尝试编写自己的支持,但我不知道如何实现这一点。
我想做的伪代码:
void setFlags (short flags) {
// Set remote file's permissions based on flags (example flag: 744)
FILE *rfile = fopen ("/remote/file/path.txt", 'w');
chmodRemote (rfile, flags);
fclose (rfile);
}
编辑:我不想用system ("foo");
这个。
解决方案
经过这么长时间,我想出了一个解决方案。
sys/socket.h
使用其设置的端口(默认 22,SSH 端口)连接到 SFTP 站点。您选择的加密技术(对称加密、非对称加密和散列)必须由您设置,但是如果您选择手动执行此过程,因为这就是 SSH 使目标设备上的解密成为可能的方式,所有这些(和数据包格式)在这里解释。您可能还想了解如何通过会话检索数据。发送一个包含所有所需元数据的数据包,因为这是一个 shell 会话(a la “FTP over SSH”)。这也是发送其他命令的方式。
请注意,如果您想向后兼容 FTP,则需要参考原始 FTP 命令列表,因为旧版本不使用 shell 数据包;为此,您将需要SITE
命令(后跟服务器的命令和参数),没有周围的绒毛,只有原始数据。
推荐阅读
- html - 在不同的表中插入多个信息,Mysq,Node.js
- webpack - Webpack 构建非常缓慢
- ios - 缺少装配参考?
- python - TypeVar 和 NewType 有什么区别?
- python-3.x - 如何删除我的 Urwid 小部件之间的空格?
- postgresql - 如何在 Express 中使用 Sequelize for Postgresql 实现 IS-A 关系?
- tcl - 在调用者上下文中打印包含列表变量的表达式
- c# - 上传到 Azure 块 Blob 时如何选择最佳块大小
- spring-data-jpa - Spring JPA 查询以识别孤儿
- matlab - Matlab - 如何将一组单元格数组转换为允许索引的数组?