GID, текущие, первичные, дополнительные, эффективные и реальные идентификаторы групп?

Следующие ссылки обсуждают эти концепции в разных контекстах. Я прочитал их определения, но я до сих пор не могу сказать, как они связаны, или если некоторые из них одинаковы.

  • Идентификатор текущей группы
  • ID группы
  • Идентификаторы первичной и дополнительной групп
  • Эффективные и реальные идентификаторы групп (также в Википедии )

Вот один пример источника моей путаницы:

Согласно man id , если я набираю id , я должен получить то, что они называют эффективными и реальными идентификаторами группы.

 id uid=501(joe) gid=501(joe) groups=501(joe), 100(users) 

Однако, Википедия ссылается на вывод id чтобы различать первичные и дополнительные идентификаторы. Более того, Wikipedia различает первичные и дополнительные и эффективные против реальных идентификаторов групп. Как эти понятия связаны друг с другом?

Также верно ли, что первичный идентификатор группы = идентификатор группы = текущий идентификатор группы?

  • Что означает атрибут 's' в разрешениях файлов?
  • Цель использования setuid () в программах SUID
  • почему sudo работает на Linux, но не на Android?
  • lsof: ПРЕДУПРЕЖДЕНИЕ: не может stat () файловая система fuse.gvfsd-fuse
  • Недостаточно привилегий в NetworkManager с xmonad
  • Обнаружение задач cron, выполняемых другим пользователем
  • Альтернатива su / sudo для barebone-системы
  • Привилегии процесса отказа
  • 2 Solutions collect form web for “GID, текущие, первичные, дополнительные, эффективные и реальные идентификаторы групп?”

    Здесь вы смешиваете два разных отличия:

    1. Между действительными и эффективными идентификаторами групп
    2. Между группами первичных и дополнительных пользователей

    Первое различие относится к тому, как выполняются процессы . Обычно, когда вы запускаете команду / программу, она запускается с привилегиями вашего пользователя. Он имеет реальный идентификатор группы, такой же, как и у вашей основной группы пользователя. Это может быть изменено процессом, чтобы преформировать некоторые задачи в качестве члена другой специальной группы. Для этого в программах используется функция setgid, которая изменяет их эффективный идентификатор группы.

    Второе различие относится к пользователям . У каждого пользователя есть его / ее основная группа . Для каждого пользователя есть только один пользователь и на выходе команды id указывается gid . Кроме того, каждый пользователь может принадлежать нескольким дополнительным группам – и они перечислены в конце вывода id .

    [Редактировать] :

    Я согласен с тем, что manpage для id несколько вводит в заблуждение. Вероятно, это потому, что это урезанная версия описания, предоставленного информационным документом. Чтобы увидеть это более четко, запустите info coreutils "id invocation" (как указано в конце руководства по id ).

    Вид ядра

    Понятно, что существует три группы групп, частью которых является процесс. Каждый набор является подмножеством следующего.

    1. Единственная группа, которая является группой по умолчанию процесса, к которой будут принадлежать файлы, созданные этим процессом.
    2. Набор групп, которые проверяются, когда группе требуется разрешение на открытие файла.
    3. Набор групп, на которые может работать процесс с дополнительными полномочиями.

    По историческим причинам эти наборы:

    1. эффективный идентификатор группы (egid);
    2. эффективный идентификатор группы плюс идентификаторы дополнительных групп ;
    3. все вышеперечисленное плюс реальный идентификатор группы и сохраненный идентификатор группы .

    Обычно программа имеет один идентификатор пользователя. Если исполняемый файл имеет установленный бит режима setuid , то программа имеет два идентификатора пользователя: его эффективный идентификатор пользователя – это тот, который имеет значение для прав доступа к файлам, ограничений для каждого пользователя, определения того, выполняется ли процесс с правами root и так далее. Процесс может переключаться между действительными и реальными идентификаторами пользователей, если он не нуждается в дополнительных привилегиях все время, или если ему нужно переключиться между двумя пользователями без полномочий root.

    Такой же механизм существует для группы. Для групп существует дополнительная функция, которой не было, когда система была спроектирована: процесс может быть членом любого числа групп; это дополнительные идентификаторы групп.

    Просмотр базы данных пользователя

    После аутентификации пользователя процесс входа в систему переходит к этому пользователю, непосредственно перед запуском оболочки пользователя (или любой другой программы, запрошенной пользователем). Перед переходом на нужный пользователя (и потери привилегий root) процесс входа в систему переключится на нужные группы.

    В ранних версиях unix процесс может быть только в одной группе. Эта группа является идентификатором первичной группы пользователя, хранящейся в пользовательской базе данных (обычно /etc/passwd ). Эта группа становится реальным и эффективным идентификатором группы оболочки или другой программой, запускаемой процессом входа в систему.

    В настоящее время процесс может быть в нескольких группах, поэтому пользователи могут быть в нескольких группах. База данных группы (обычно /etc/group ) содержит список пользователей для каждой группы. Эти группы становятся дополнительными идентификаторами групп для программы, запускаемой процессом входа в систему.

    Interesting Posts

    Как узнать, какая пользовательская конфигурация используется iptables?

    Как найти и заменить новую строку?

    Сценарий оболочки для копирования списка файлов с пробелами

    Как просмотреть файлы в zip из командной строки терминала

    Будет ли использовать производительность воздействия дисплея?

    Почему Metasploit не может устанавливать сеансы Meterpreter?

    скрипт, выполняющийся в crontab, не выдающий вывод на экран оболочки

    Не удалось установить статический IP-адрес

    Как удалить (не отключить / маску) блок в Systemd?

    Установите переменные переменных переменных в bash (или другие)

    EBtables не работает

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

    Обновление ядра – требуется перезагрузка или нет?

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

    Что означает ошибка = продолжить настройку монтирования?

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