如何在程式中公升高和降低許可權

2021-07-02 14:08:19 字數 444 閱讀 8917

在做linuxftp專案進行許可權管理時,如果是某個非root使用者登入,則必須進行降許可權處理。而有些系統呼叫又只能以root許可權呼叫,所以那時又需要進行公升許可權處理。

降低許可權單調用setegid和seteuid是不夠的,因為程序還有個supplementary group ids(附加程序組id),這個可用setgroups來改變。

下面舉個簡單的例子吧:

[cpp]view plain

copy

print?

#include 

#include 

#include 

#include 

intmain()    

以root許可權來編譯執行這個例子,會輸出-1,0。

注意,由於setgroups需要root許可權,所以降低許可權時要放在前面,而公升高許可權則放在後面。

如何在程式中延時

方法一 使用sleep函式,如延時2秒,用sleep 2000 方法二 使用sleep函式的不利在於延時期間不能處理其他的訊息,如果時間太長,就好象宕機一樣,利用coledatetime類和coledatetimespan類實現延時就不會出現那樣的問題 coledatetime start time...

如何在C 中呼叫C程式

c 和c是兩種完全不同的編譯鏈結處理方式,如果直接在c 裡面呼叫c函式,會找不到函式體,報鏈結錯誤。要解決這個問題,就要在 c 檔案裡面顯示宣告一下哪些函式是c寫的,要用c的方式來處理。1.引用標頭檔案前需要加上 extern c 如果引用多個,那麼就如下所示 extern c 然後在呼叫這些函式之...

如何在C 中呼叫C程式?

c 和c是兩種完全不同的編譯鏈結處理方式,如果直接在c 裡面呼叫c函式,會找不到函式體,報鏈結錯誤。要解決這個問題,就要在 c 檔案裡面顯示宣告一下哪些函式是c寫的,要用c的方式來處理。1.引用標頭檔案前需要加上 extern c 如果引用多個,那麼就如下所示 extern c 然後在呼叫這些函式之...