(Зауваження: groups
Команда, хоча все ще корисна, здебільшого витісняється командою id .)
Користувач має первинну групу, яку традиційно визначають у файловому
/etc/passwd
файлі, з яким він входить, але сьогодні він може мати інші джерела. Він також може бути членом додаткових груп, відомих як вторинні або додаткові групи, традиційно зазначені у файлі /etc/groups
, але які сьогодні також можуть надходити або мати на увазі додаткові джерела (наприклад, NIS, LDAP, SAMBA тощо).
Первинні та додаткові групи визначаються під час входу та залишаються поточними . Однак користувач може в будь-який момент змінити свою поточну активну первинну групу
за допомогою newgrp
команди.
Процес входу задає первинну та додаткову групи. Надалі він, як правило, викликає функцію libc
initgroups , яка збирає список додаткових групових даних і передає їх
функції функції setgroups , яка встановлює їх у контексті процесу.
Джерелами інформації для initgroups
:
використовуються бібліотекою GNU C та деякими іншими програмами для визначення джерел, з яких можна отримати інформацію про службу імен у ряді категорій та в якому порядку. Кожна категорія інформації ідентифікується ім'ям бази даних.
У groups
команді показує групи в даний час застосовуються до вашого користувачеві, і список буде почати з поточної основною групою , за яким слід додатковим групи з моменту входу в системі . Будь-які зміни джерел даних після часу входу не відображаються у відображеному списку.
groups username
Команда просить Linux , щоб обчислити групи для цього користувача, що він буде робити , використовуючи головним чином файли /etc/password
і /etc/groups
потім додаткові джерела. Це відобразить поточну ситуацію системних файлів і може не дорівнювати поточній групі, яка діє ще з моменту входу.
groups username
Команда може дати інший результат , якщо він не використовує всі джерела, процес Логіна , використовувані для розрахунку ваших додаткових груп, що і по- видимому , відбулися у вашому випадку. Ці джерела можуть бути недоступними у вашому вході або можуть просто не звертатися до команди.
Використання id username
команди може дати кращі результати, хоча також не гарантується, що вона буде такою ж повною, як і процес входу. id
Команда пізніша , ніж та повинна була бути більш точними , ніж, стара groups
команда.
Незважаючи на те, що groups
команда дає точний і правильний результат, ви добре продемонстрували, що groups username
команда не може покладатися на те саме.
Не вивчаючи вихідний код groups
команди, я б здогадався, що реалізація groups username
команди у ваших аналізах дистрибуції Linux /etc/groups
, яка у вашому випадку нічого не містить, але не використовує /etc/nsswitch.conf
, звідки вийшли всі ваші додаткові групи. Тому в списку тільки ім'я основної групи,
jacob
.
Для отримання додаткової інформації див: