簡體   English   中英

setreuid()失敗,不允許操作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM