Кажется, здесь происходит некоторое предположение ...
Очевидно, что обратные пометки делают то, что объяснили другие, расширяясь 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.
whoami
? Просто скажите sudo whoami .. возвращает root