我正在使用Ubuntu Lucid LynxC和文件權限
是否可以通過具有隻讀權限的C程序在文件中寫入數據。如果這是不可能的,那麼有沒有辦法讓sudo訪問C程序。
對於沒有權限的文件,我會將數據保存在字符串中。然後,我會打開該文件寫入選項:
FILE *fp = fopen(file_path,"w")
fputs(string,fp);
fclose(fp);
我正在使用Ubuntu Lucid LynxC和文件權限
是否可以通過具有隻讀權限的C程序在文件中寫入數據。如果這是不可能的,那麼有沒有辦法讓sudo訪問C程序。
對於沒有權限的文件,我會將數據保存在字符串中。然後,我會打開該文件寫入選項:
FILE *fp = fopen(file_path,"w")
fputs(string,fp);
fclose(fp);
在Unix中一般你想要做的是使該程序的可執行由根,世界可執行資,然後設置SUID位就可以了。
chown root filename
chmod 4775 filename
的到底是什麼意思位見chomd docs,但都在一起,這意味着每當有人運行這個可執行文件,他們得到設置爲所有者(root)的可執行進程的用戶ID。
不,你不能寫入只讀文件,那樣會破壞只讀整點。至於爲root用戶提供對c程序的訪問權限,您可以始終以root用戶身份或者有權修改文件的人員身份運行它。
程序在運行時無法提升自己的sudo狀態。 而這是一件讓人沮喪的事情。 如果有可能,每種病毒都有能力接管任何系統。
程序需要從一開始就以正確的訪問權限開始。
您可以,但不能以標準的跨平臺方式。
在Unix系統上,使用chmod
。它應該在<sys/stat.h>
請參閱this link。
如果你需要root權限。嘗試:
if(fp == NULL)
execvp("sudo", argv);
如果程序沒有chmod權限,該怎麼辦? –
'sudo program'也許? –
個人而言,我認爲這不是關於編程,而是Unix操作系統的使用。投票轉移到SU。 –