Я предполагаю, что исполняемый файл с установленным битом 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
отсутствует имя файла.