我的程序通過TCP套接字接收可執行的二進制文件。在C中創建一個文件作爲可執行程序在Ubuntu中
我需要將此文件作爲可執行程序保存到硬盤中。文件被成功接收,但問題是默認文件屬性被設置爲不可執行。
如何在Ubuntu中將文件屬性更改爲C中的可執行文件?
謝謝 問候, 機器人
我的程序通過TCP套接字接收可執行的二進制文件。在C中創建一個文件作爲可執行程序在Ubuntu中
我需要將此文件作爲可執行程序保存到硬盤中。文件被成功接收,但問題是默認文件屬性被設置爲不可執行。
如何在Ubuntu中將文件屬性更改爲C中的可執行文件?
謝謝 問候, 機器人
如何int chmod(const char *path, mode_t mode)
和int fchmod(int fd, mode_t mode) ?
apropos chmod
man 2 chmod
最簡單的例子:
#include <sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]){
char * fpath = "/path/to/binary";
int ret=0;
if(ret = chmod(fpath, S_IRUSR|S_IXUSR) < 0){
perror("chmod failed");
exit(1);
}
printf("chmod ok\n");
exit(0);
}
它完美的作品... Thankx buddy .. – RoboAlex
您可以chmod
更改文件模式。詳細信息請閱讀手冊頁(man 2 chmod
)(與shell命令chmod
大致相同)。
你如何創建和寫入文件?如果你知道它將會是可執行的,只要首先使用正確的模式創建文件即可。
int fd = open("path/to/file", O_WRONLY | O_CREAT, 0777);
除非umask
被剝離可執行位(常用的值是0022
和0002
其離開單獨的可執行位),path/to/file
將創建最初的可執行文件。
答案是對的,但這可能不是一個好主意...... –
通過什麼機制,你確定收到的可執行文件永遠不會是惡意的? –
@BasileStarynkevitch - 我正在爲一個集羣機器編程。發送者也將是在主節點上運行的整個應用程序的一部分。所以沒有任何惡意問題。 – RoboAlex