Установка бита разрешения позволяет вашему приложению использовать только вызов setuid
и сама по себе не изменяет ваши разрешения. Для этого вам нужно установить uid с помощью setuid(uid_t uid)
. Подробности смотрите на справочной странице:https://linux.die.net/man/2/setuid
Вы можете использовать geteuid()
для получения текущего эффективного uid (, то есть владельца файла с разрешением setuid ). См. справочную страницу:https://linux.die.net/man/2/geteuid
Пример:
// downnow.c
#include
#include
int main() {
setuid(geteuid());
system("shutdown --no-wall --halt now");
return 0;
}
При наличии достаточных прав процесс в вашей системе может создавать пакеты TCP/IP с поддельными адресами отправителя. Это характерно, например, для DOS-атак.
Помимо этого, ваша система может иметь несколько действительных исходных адресов.
Внедрение правила (, запрещающего источник в OUTPUT ), похоже, выходит за рамки того, что должен делать iptables.