Ошибка HTTP 401.3 - неавторизовано [закрыто]

Поскольку бит suid в исполняемых файлах только изменяет эффективный UID (EUID), исполняемый файл будет работать как, а не реальный UID (RUID), который возвращает getuid(), и в дополнение к ограничению на suid скрипты (любой исполняемый файл, начинающийся с «#!»), некоторые оболочки, такие как bash в качестве дополнительной меры безопасности, в этом случае вернут EUID в RUID, вам нужно будет использовать вызов setuid(0) в коде C перед выполнением скрипта.

См. страницы man в setuid, seteuid, getuid и geteuid, чтобы узнать точную семантику реальных и эффективных UID.

( ПРЕДУПРЕЖДЕНИЕ ) Конечно, это подходящий момент, чтобы упомянуть, что ограничение на скрипты suid во многих системах Unix, оболочках и интерпретаторах существует по какой-либо причине, что что, если сценарий не очень осторожен в том, чтобы дезинфицировать его вход и состояние окружающей среды, когда он выполняется, они опасны и могут быть использованы для повышения безопасности. Поэтому будьте очень осторожны при этом. Установите доступ к своему сценарию и обертке как можно строже, разрешите этот конкретный сценарий, который вы намереваетесь выполнить, и очистите среду внутри вашей программы C перед запуском скрипта, установив переменные среды, такие как PATH, чтобы содержать именно то, что необходимо в правильном порядке, и нет каталогов, которые можно записать другим.

23
задан Shawn 10 September 2011 в 11:03
поделиться