-SUID- Невозможно запустить файл "-rwsr-xr-x" от имени пользователя root

Я использую Ubuntu 16.10.

Я следовал за книгой, делая что-то вроде этого:

#include <stdio.h>

int main() {
    printf("Real UID:\t%d\n", getuid());
    printf("Effective UID:\t%d\n", geteuid());
}

И чтобы запустить этот файл как sudo без использования команды sudo, после компиляции с помощью gcc я изменил владельца и группу на root.

$ gcc -o test test.c
$ sudo chown root:root ./test
$ chmod u+s ./test
$ ls -l
-rwsr-xr-x 1 root root 8512 Mar 9 test

Теперь это то, что я получил, когда запустил файл. Мой UID 1000.

$ ./test
Real UID:        1000
Effective UID:   1000

В книге, которую я читал, сказано, что результат должен быть таким:

$ ./test
Real UID:        1000
Effective UID:   0

UID для root равен 0, верно? Означает ли это, что я запускаю файл -rwsr-xr-x, принадлежащий root, с моей собственной привилегией пользователя? Я не понимаю

1 ответ

Ваша книга немного на старой стороне? Кажется, что современные варианты *nix широко игнорируют залипание исполняемых файлов:

[...] ядро ​​Linux игнорирует залипание файлов. [...] Когда бит закрепления установлен в каталоге, файлы в этом каталоге могут быть не связаны или переименованы только пользователем root или владельцем каталога или владельцем файла. [4]

https://en.wikipedia.org/wiki/Sticky_bit

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