Как начать (или найти) процесс с RUID, отличным от EUID?

Вдохновленный одним из ранее ответивших вопросов , я попытался выполнить программу пользователем, который не был ее владельцем, – и RUID процесса и EUID остались прежними. (Если я не прочитаю ответ неправильно, и это не так, как вы можете добиться разницы).

Затем я попытался открыть программу в качестве другого пользователя через sudo – и все равно ничего.

Я просмотрел все уже существующие процессы (я думаю) через ps axo euid,ruid,comm -eg , и ни у одного из них не было разных RUID и EUID.

Как я могу достичь (или найти процессы с) разницу? Некоторые конкретные команды помогли бы, потому что я мог бы сделать некоторые ошибки в некоторых шагах.

Вызов исполняемого файла, который у вас нет, ничего примечательного. Большинство исполняемых файлов в системе принадлежат root, и их запуск не дает пользователю каких-либо дополнительных привилегий.

Только исполняемые файлы setuid начинаются с действующего UID, установленного владельцем исполняемого файла, в то время как реальный UID остается реальным UID вызывающего процесса.

sudo – setuid root, поэтому он работает с эффективным UID 0 и вашим реальным UID. Но когда он вызывает другую команду, он устанавливает целевой код UID и реальный UID целевому пользователю. Вам придется поймать судо, чтобы наблюдать за EUID, который отличается от RUID. Это будет слишком быстро, если вы не sudo пароль sudo .

Вы можете легко наблюдать различные UID, запустив команду passwd как пользователь без полномочий root. Пока отображается приглашение, запустите ps в другом цвете:

 ps -o user,ruser -C passwd 

Чтобы найти все запущенные процессы с разными EUID и RUID, вы можете использовать

 ps -e -o user= -o ruser= | awk '$1 != $2' 

Нормально, чтобы не найти ни одного, большинство процессов setuid недолговечны.