Разница между владельцем / корнем и RUID / EUID

Я относительно новичок в концепциях, упомянутых в вопросе, и чтение о них из разных источников только делает их более запутанными. Вот что я понял до сих пор:

Когда нам даются разрешения для файла, они выглядят следующим образом:

-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin 

Мы предполагаем, что пользователь user2 который находится в группе users пытается выполнить file.bin . Если бит setuid не был установлен, это означало бы, что и RUID, и EUID file.bin были равны UID пользователя2. Но поскольку бит setuid установлен, это означает, что RUID теперь равен UID пользователя2, а EUID – это идентификатор владельца файла user1 .

Мои вопросы:

  1. В чем разница между владельцем файла и root ? Имеются ли у root те же разрешения, что и у владельца? Или нам нужна отдельная запись в списке разрешений для root ?
  2. Разница между RUID и EUID?
    • Насколько я понимаю, RUID и EUID применяются только к процессам. Если это так, почему у них есть значение идентификатора пользователя?
    • Если RUID является пользователем, который создает этот процесс, а EUID – это пользователь, который в данный момент запускает этот процесс, то первое предложение первого ответа в этом вопросе не имеет для меня никакого смысла.
    • Правильно ли я понял, что делает бит setuid?

One Solution collect form web for “Разница между владельцем / корнем и RUID / EUID”

Вот ответы:

  1. root всегда имеет полный доступ к файлам и каталогам. У владельца файла обычно есть и их, но это не всегда так. Например:

     -r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.bin 

    user1 является владельцем ; однако он может только читать и выполнять , но у root все еще есть полный доступ ( rwx ) к файлу.

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

    EUID – это эффективный идентификатор пользователя , он изменяется для процессов (не для пользователя), которые выполняет пользователь, которые установили бит setuid .

    Если user2 выполняет file.bin , RUID будет user2 а EUID процесса будет user1 .

Давайте рассмотрим случай passwd :

 -rwsr-xr-x 1 root root 45396 may 25 2012 /usr/bin/passwd 
  • Когда user2 хочет изменить свой пароль , он выполняет /usr/bin/passwd .

  • RUID будет user2 но EUID этого процесса будет root .

  • user2 может использовать passwd для изменения только собственного пароля, потому что внутренне passwd проверяет RUID и, если он не является root , его действия будут ограничены действительным паролем пользователя.

  • Необходимо, чтобы EUID стала root в случае passwd потому что процесс должен записываться в /etc/passwd и / или /etc/shadow .

Interesting Posts

USB установлен в / dev / sda вместо / dev / sdb

Конфигурация режима Bash vi по умолчанию в режиме команд

флаг noexec для / tmp (OpenSUSE)

Установка драйвера, источник ядра не найден

Как сделать ls с подстановочным знаком и посмотреть имя каталога

Как отключить всплывающие надписи в gnome 2?

Упрощенная навигация в терминале

когда вы спящий спящий режим, столбец VIRT верхней команды показывает пространство подкачки, используемое процессом?

Менеджер архива не показывает файл с именем «-»

команда строк печатает некоторые дополнительные символы

Как я могу переместить процесс в фоновом режиме, а также отключить его вывод?

Как рассчитать средние запросы за секунды, используя awk или sed в журналах Apache

Изменение приложений по умолчанию, используемых gnome-open, exo-open, xdg-open, gvfs-open и kde-open

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

Почему символы, отличные от ASCII, отображаются с помощью вопросительного знака?

Linux и Unix - лучшая ОС в мире.