-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]