Кажется, здесь происходит некоторое предположение ...
Очевидно, что обратные пометки делают то, что объяснили другие, расширяют whoami
прежде чем вызывать sudo, и убирают обратные пометки, возвращая root, как и ожидалось.
Но полезно понять, что на самом деле происходит с sudo(8). Так что я на самом деле посмотрел справочную страницу!
«Реальный и эффективный uid и gid настроены так, чтобы соответствовать целевому пользователю…»
Таким образом, похоже, что наблюдаемое поведение не имеет ничего общего с разницей между эффективным и реальным идентификатором пользователя.
Также показательно сделать "sudo printenv" и сравнить с просто "printenv", что на самом деле меня немного удивило. Он показывает, что [i] некоторые [/i] экспортируемые переменные доступны, а другие нет: он сообщает о вызывающем пользователе HOME, PATH, PS1, SHELL, TERM и EDITOR, но не о других, таких как MANPATH, CVSROOT, LD_LIBRARY_PATH или ENV. Это кажется немного странным, так как это может привести к тому, что программы будут вести себя не так, как первоначальный пользователь или пользователь root.