Я знаю, что включение setuid для скриптов имеет проблемы с безопасностью и поэтому неактивно по умолчанию, но ожидаю, что оно работает для исполняемых файлов. Я создал исполняемый файл, который показывает uid в качестве вывода, следуя инструкциям, описанным в этом посте: Разрешить setuid для сценариев оболочки
Но он возвращает один и тот же uid (1000) как до, так и после запуска sudo chmod +s ./setuid-test
. Я думаю, это означает, что setuid не влияет на мой исполняемый файл, почему и как решить?
Исходный код:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
Построен и работает с
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
При запуске ls -la
вот что я получаю:
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- возвращает -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
каталог, чтобы найти точку монтирования, затем mount | grep nameofmountpoint
. Там есть nosuid
флаг?