флаг setuid не меняет эффективный идентификатор пользователя - PullRequest
0 голосов
/ 29 июня 2018

Здесь у меня есть файл с именем uid_demo.c, в котором отображается реальный и эффективный идентификаторы пользователя.

#include <stdio.h>

int main() {
    printf("real uid: %d\n", getuid());
    printf("effective uid: %d\n", geteuid());
}

И я выполнил следующие команды:

gcc -o uid_demo uid_demo.c
sudo chown root:root ./uid_demo
sudo chmod u+s ./uid_demo
ls -l uid_demo

Выход:

-rwsrwxr-x 1 root root 8712 Jun 29 15:09 uid_demo

Когда я запускаю программу, она должна отображать мой реальный ИД пользователя (1000) и эффективный ИД пользователя 0 (root), так как владельцем файла является root, а разрешение setuid включено. Тем не менее, он отображает следующее:

real uid: 1000
effective uid: 1000

Любая помощь? Заранее спасибо.

1 Ответ

0 голосов
/ 29 июня 2018

Возможно, вы запускаете программу в файловой системе, которая смонтирована с флагом nosuid, поэтому ваш бит setuid не соблюдается.

Переместите ваш код в другое место в файловой системе, в которой его нет, или отключите флаг nosuid в параметрах монтирования для текущей файловой системы.

Флаг nosuid является функцией безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...