[英]setreuid() fails with Operation not permitted
我正在嘗試使用以下代碼更改流程的實際UID
int ERN2=setreuid(euid,m_ruid);
printf("something went wrong with setreuid %s\n", strerror(ERN2));
std::cout<<"error no for setrugid"<<ERN2<<"\n";
if ( ERN2 == 0)
{
.....
}
m_ruid
是root(0),而euid
是可接受的ID,但是當我得到setreuid()
的結果時,它始終為-1,並且我使用strerror()
表示“不允許操作”,這使我能夠更改realGID setregid()
但更改UID始終失敗,任何人都會有所了解。
我在FreeBSD上,我想知道為什么即使我們將root用作參數之一也是如此。
手冊頁非常清晰:
如果成功,則setreuid()函數返回值0;否則,返回0。 否則,返回值-1,並且將全局變量errno設置為指示錯誤。
這就是錯誤返回幾乎適用於所有系統調用的方式。 它們不返回errno,而是在錯誤時返回-1
或等效值,並設置全局變量errno
。
如果不清楚,請嘗試使用strerror(errno)
看看您能得到什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.