Как просмотреть полную историю zsh?

Вероятно, оболочка по той или иной причине меняет свой эффективный идентификатор пользователя обратно на реальный идентификатор пользователя в процессе запуска. Вы можете проверить это, добавив:

/* needs _GNU_SOURCE; non-Linux users see setregid/setreuid instead */
uid_t euid = geteuid(), egid = getegid();
setresgid(egid, egid, egid);
setresuid(euid, euid, euid);

перед вашим system(). (На самом деле, даже в Linux вам, вероятно, нужно установить только настоящие; сохраненные должны быть в порядке, чтобы оставить в покое. Это просто грубая сила для отладки. В зависимости от того, почему вы установили идентификатор -, вам, конечно, может понадобиться где-то сохранить настоящие идентификаторы.)

[Кроме того, если это не просто упражнение по изучению того, как работает setid, то существует множество проблем безопасности, о которых нужно беспокоиться, особенно при вызове оболочки. Например, существует множество переменных среды, влияющих на поведение оболочки. Предпочитайте уже -существующий подход, такой как sudo, если это вообще возможно.]

0
11.07.2021, 18:43
0 ответов

Теги

Похожие вопросы