(Зауваження: 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.
Для отримання додаткової інформації див: