Я использую 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, я изменил владельца и группу для укоренения.
$ 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 для корня 0, правильно? Это означает, что я выполняю-rwsr-xr-x файл, принадлежавший корню, с моими собственными полномочиями пользователя?Я не понимаю.
Вы, вероятно, помещаете файл на раздел, это смонтировано с nosuid
. Можно ввести mount
для наблюдения, если это верно. Если так, или переместите файл в другой раздел или повторно смонтируйтесь, раздел с -o suid
(обратите внимание, что выполнение последнего может иметь последствия безопасности).