Я предполагаю, что исполняемый файл с установленным битом SetUID должен быть запущен как его владелец, но я не могу воспроизвести его. Я попробовал следующее.
$ cat prepare.sh cp / bin / bash. chown root.root bash chmod 4770 bash # Проверено $ sudo sh prepare.sh $ ./bash $ id -u 1000 $ выход $
$ cat test.c
#include <stdio.h>
#include <unistd.h>
int main () {
printf ("% d,% d \ n", getuid (), geteuid ());
вернуть 0;
}
$ gcc -o test test.c
$ chmod 4770 test # Проверено
$ sudo chown root.root test
$ ./test
1000,1000
$ # Почему ???
Однако
$ su # ./bash # id -u 0 # ./тестовое задание 0,0 # Выход # Выход $
Примечание. Точка монтирования не имеет и nosuidне noexecустановлена.
Кто-нибудь может объяснить, почему он не работает на Ubuntu 16.04 LTS?
sudo? В нем есть ошибка или опечатка, однако chmodотсутствует имя файла.