小编use*_*765的帖子

为什么ptrace在setuid之后没有附加到进程?

我的Linux守护程序有问题.它以root权限开始,进行一些配置,然后通过切换到某个用户和组来永久删除权限并继续工作.切换到非特权用户的方式如下:

void switch_to_user_group(std::string const& username, std::string const& groupname)
{
    // Switch to user/group
    gid_t gid = getgid();
    if (!groupname.empty())
    {
        gid = get_group_id(groupname);
        if (0 != setgid(gid))
        {
            std::cout << "Failed to switch to group " << gid << std::endl;
            std::abort();
        }
    }

    if (!username.empty())
    {
        uid_t uid = get_user_id(username);
        if (initgroups(username.c_str(), gid) != 0)
        {
            std::cout << "initgroups failed" << std::endl;
            std::abort();
        }
        if (0 != setuid(uid))
        {
            std::cout << "Failed to switch to user " << uid << …
Run Code Online (Sandbox Code Playgroud)

ptrace setuid

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

标签 统计

ptrace ×1

setuid ×1