Если вы меняете идентификационные данные пользователя с помощью исполняемого файла suid, ваш реальный и эффективный идентификатор пользователя будет другим. Но если использовать use su (или sudo), они оба будут установлены для нового пользователя. Это означает, что команды, которые вызывают getuid () или geteuid (), не будут полезны.
Лучший способ - проверить, кому принадлежит терминал, на котором запущен скрипт. Это, очевидно, не будет работать, если процесс отсоединился от своего терминала, но если сценарий не запущен демоном, это маловероятно. Попробуйте stat -c %U $(tty)
. Я верю, что who am i
будет делать то же самое на большинстве Unix-подобных ОС.