Разница между EUID и UID?

EUID не совпадает с UID. В каком контексте они оба используются в сценарии?

Я пытался получить значения по echo "UID is $UID and EUID is $EUID", но только пространство пришло как выходной. Моя машина работает под управлением Ubuntu 12.04 LTS. На некоторых сайтах видно, что это обычно используется для проверки того, является ли он пользователем root, но не может получить надлежащую разницу.

2 ответа

Решение

Он работает только на bash, а не на dash (в дистрибутивах на основе Debian, поскольку Ubuntu sh обычно является символической ссылкой на dash).

Если вы запускаете скрипт в интерактивном режиме, вы можете не настроить bash в качестве оболочки по умолчанию, запустите bash прежде чем пытаться

Если вы запускаете его из консоли:

bash script.sh

Если вы запускаете его, используя его путь (например, ./script.sh) убедитесь, что первая строка скрипта:

#!/bin/bash

И не:

#!/bin/sh

Для более общего способа сделать это проверьте: https://askubuntu.com/questions/15853/how-can-a-script-check-if-its-being-run-as-root

В этом посте команда id упоминается, где:

id -u    # is the EUID
id -u -r # is the UID

Они разные, когда программа запускает set-uid. Эффективный UID - это пользователь, которого вы изменили, UID - исходный пользователь.

Другие вопросы по тегам