Разница между владельцем / корнем и 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

Можно ли выполнить оператор python с терминала?

Обратный порядок пар строк текстового файла

Добавьте число в огромный файл ASCII

Как скопировать строки access.log по времени?

серверы имен стираются после перезапуска systemctl network.service

Чтение из последовательного порта самым простым способом?

Назовите процесс, используя большинство процессоров без начальных или конечных пробелов

Как добавить 100 пользователей из файла

Как очистить окна установки и двойной загрузки / мультизагрузки 10 Ubuntu и Kali?

Внутри скрипта bash, выполняющего ssh, автоматически добавьте хост только для определенных известных ключей RSA

Файлы отсутствуют, и я хочу знать, что с ними случилось

Установите debug flash player в Chrome?

15 ГБ неиспользуемого пространства в файловой системе

Могу ли я сделать ssh и сделать для циклов и сенсорных файлов одним выстрелом?

Почему эта переменная не имеет значения, даже если она установлена ​​в .bashrc?

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