2011-09-02 54 views
0

我正在使用Ubuntu Lucid LynxC和文件權限

是否可以通過具有隻讀權限的C程序在文件中寫入數據。如果這是不可能的,那麼有沒有辦法讓sudo訪問C程序。

對於沒有權限的文件,我會將數據保存在字符串中。然後,我會打開該文件寫入選項:

FILE *fp = fopen(file_path,"w") 
fputs(string,fp); 
fclose(fp); 
+0

'sudo program'也許? –

+0

個人而言,我認爲這不是關於編程,而是Unix操作系統的使用。投票轉移到SU。 –

回答

0

在Unix中一般你想要做的是使該程序的可執行由根,世界可執行資,然後設置SUID位就可以了。

chown root filename 
chmod 4775 filename 

的到底是什麼意思位見chomd docs,但都在一起,這意味着每當有人運行這個可執行文件,他們得到設置爲所有者(root)的可執行進程的用戶ID。

1

不,你不能寫入只讀文件,那樣會破壞只讀整點。至於爲root用戶提供對c程序的訪問權限,您可以始終以root用戶身份或者有權修改文件的人員身份運行它。

1

如果您是該文件的所有者,您可以使用chmod更改權限。如果您不是所有者,您可以使用setuid位來訪問該文件,但這應該避免。

1

程序在運行時無法提升自己的sudo狀態。 而這是一件讓人沮喪的事情。 如果有可能,每種病毒都有能力接管任何系統。

程序需要從一開始就以正確的訪問權限開始。

0

您可以,但不能以標準的跨平臺方式。

在Unix系統上,使用chmod。它應該在<sys/stat.h>

請參閱this link

如果你需要root權限。嘗試:

if(fp == NULL) 
    execvp("sudo", argv); 
+0

如果程序沒有chmod權限,該怎麼辦? –