Бит setuid имеет различное поведение в зависимости от каталога

Я тестировал разрешение setuid, и у меня возникли проблемы с его настройкой.

Допустим, я делаю тесты с двумя пользователями owneruser а также otheruser,

Я написал простую программу на C, все, что она делает, это вызывает system() для отображения текущего пользователя.

testid.c:

int main(void)
{
  setresgid(222, 222, 222); // To simplify, this numbers represent just harcoded 
  setresuid(222, 222, 222); // values for the owneruser id and owneruser group id

  system("whoami");
}

пользователь owneruser компилирует программу в два разных каталога и устанавливает бит setuid, который owneruser владеет, а другой для примера к /tmp каталог, команды выглядят примерно так:

gcc testid.c -o /tmp/testid
gcc testid.c -o /home/owneruser/testid

chmod 4755 /tmp/testid
chmod 4755 /home/owneruser/testid

Теперь когда otheruser запускает программы, в /home/owneruser/testid Я получаю вывод:

owneruser

И в /tmp/testid Я получаю вывод:

otheruser

Что вызывает это другое поведение?

0 ответов

Другие вопросы по тегам