Я относительно новичок в понятиях, упомянутых в вопросе, и чтение о них из разных источников только делает их более запутанными. Так вот что я понял до сих пор:
Когда нам дают разрешения для файла, они выглядят так:
-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin
Мы предполагаем, что пользователь, user2
который находится в группе, users
пытается выполнить file.bin
. Если бы бит setuid не был установлен, это означало бы, что и RUID, и EUID file.bin
были равны UID user2
. Но поскольку бит setuid установлен, это означает, что RUID теперь равен UID user2
, а EUID - это UID владельца файла user1
.
Мои вопросы:
- В чем разница между владельцем файла и
root
? Имеет лиroot
те же разрешения, что и владелец? Или нам нужна отдельная запись в списке разрешений дляroot
? - Разница между RUID и EUID?
- Насколько я понимаю, RUID и EUID применяются только к процессам. Если это так, то почему они имеют значение идентификатора пользователя?
- Если RUID - это пользователь, который создает процесс, а EUID - это пользователь, который в данный момент запускает процесс, то первое предложение первого ответа в этом вопросе не имеет для меня никакого смысла.
- Правильно ли я понял, что делает бит setuid?
setuid
бит.root
) можно установить EUID и RUID на произвольные значения (например,login
,su
, иsudo
программы делают это). Как правило, когда привилегированный процесс меняет свои UID на ненулевые значения, он больше не является привилегированным и не может статьroot
снова. См. Справочные страницы setuid (2) , seteuid (2) и setreuid (2) .setfsuid()
настоящее время не требуется и ее следует избегать в новых приложениях».