相关疑难解决方法(0)

setuid 不工作

我试图了解如何setuid工作。

所以我做了一个虚拟程序,它只打印当前用户:

#include<bits/stdc++.h>
using namespace std;


int main(){
    cout << system("id -a") << "\n";
    cout << system("whoami")  << "\n";
}
Run Code Online (Sandbox Code Playgroud)

my-binary在用户下编译并创建了可执行文件anmol

-rwxrwxr-x 1 anmol anmol 9972 Feb  1 16:54 my-binary
Run Code Online (Sandbox Code Playgroud)

然后,我setuid使用chmod +s以下选项设置选项:

-rwsrwsr-x 1 anmol anmol 9972 Feb  1 16:54 my-binary
Run Code Online (Sandbox Code Playgroud)

如果我正常执行它,我会得到以下输出:

uid=1000(anmol) gid=1000(anmol) groups=1000(anmol),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),122(sambashare)
anmol
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用 更改为另一个用户su user2,然后执行它,我会得到:

uid=1001(user2) gid=1001(user2) groups=1001(user2)
user2
Run Code Online (Sandbox Code Playgroud)

当我使用 执行它时sudo ./my-binary,我得到:

uid=1001(root) gid=1001(root) groups=1001(root)
root
Run Code Online (Sandbox Code Playgroud)

据我了解,无论我如何运行它,我不应该每次都得到第一个输出吗?

我在这里检查了其他类似的问题,有些人建议我检查文件系统是否使用nosuid选项挂载,所以我执行mount | …

filesystems users setuid permissions

1
推荐指数
1
解决办法
249
查看次数

标签 统计

filesystems ×1

permissions ×1

setuid ×1

users ×1