Чи завжди буде пара однакових UID та GID?


11

Я повинен змінити право власності на файл / каталог, використовуючи. chmodЯ знаю лише ім'я користувача власника, але хочу змінити ім'я групи за замовчуванням simultaneosly. На цьому етапі назву групи не вирішено, тому я ввожу те саме, що ім'я користувача

chown -R username:username path_to_dir

Команда може працювати для різних систем / користувачів, тож я занепокоєний, чи завжди у Linux є парне ім'я користувача (користувач): ім'я користувача (група) АБО в якийсь момент це за замовчуванням group_name може призвести до помилки.

Хоча я почав знаходити GID від користувача, що належить

id username | tr '(=)' ':' | awk -F: '{print $3}

Але для знань я хочу знати. До цих пір аналізів, за /etc/passwd /etc/groupsвинятком кількох користувачів, таких як "вимкнення, зупинка, синхронізація, оператор", усі користувачі також перелічені в групи.

EDIT 1: ім'я користувача-id id - також хороший варіант


3
У другому прикладі ви шукали id -g username?
користувач1686

1
Або id -gn usernameякий друкує ім'я замість ідентифікатора.
Крістіан Цюпіту

У Linux також є безліч "груп пристроїв" - наприклад. диск, пам'ять, кмем, аудіо, відео тощо - які не мають відповідного користувача.
Баард Копперуд

Відповіді:


20

Немає гарантії, що ім'я групи = usernameбуде існувати.

Найпоширеніший сценарій полягає в тому, що системні адміністратори використовують в Linux створення нового користувача локально в системі без чітких специфікацій для групи, а це означає, що група буде створена за замовчуванням так само, як ім'я користувача та призначить користувачеві мати GID за замовчуванням має бути новоствореною групою.

Це не означає, що інший системний адміністратор буде дотримуватися цієї процедури, і якщо ви кинете інші послуги іменування в суміш, наприклад NIS або LDAP, група, призначена за замовчуванням, швидше за все, не буде такою ж, як новий GID з іменем групи, таким же як ім'я користувача.

Тож не слід покладатися на те, що ім'я користувача = ім'я групи


Це також може залежати не тільки від місцевої політики адміністратора, але і від інструментів, що входять до різних дистрибутивів. Багато сайтів просто приймуть типові параметри, що використовуються наданими інструментами. Хоча більшість дистрибутивів, які я використовував протягом багатьох років, постачаються із useraddсценарієм, який за замовчуванням створює групу з такою ж назвою, не у всіх. Востаннє я його використовував (багато, багато років тому), сценарій створення slackware користувача за замовчуванням мав єдину групу, usersзамість якої були внесені всі користувачі. docs.slackware.com/slackbook:users припускає, що це все ще може бути так.
Жуль

11

Хоча ідіома приватної групи користувачів часто використовується в сучасних системах Linux, * nix насправді не вимагає унікальної первинної групи для кожного користувача, і цілком можливо для декількох облікових записів користувачів спільну первинну групу, наприклад, usersабо staff.

Навіть у випадках, коли ідіома UPG застосовується, немає жодної конкретної причини, що числовий GID конкретного UPG повинен дорівнювати UID власника, хоча більшість інструментів для створення облікових записів намагаються призначити UID та GID в порядку, якщо вони є в наявності. Ідентифікатори можуть легко вийти з ладу, якщо користувачі та / або групи потребують послідовності в декількох системах (наприклад, для розміщення раніше існуючих акцій NFS).


6

Як Ramesh за замовчуванням вказав, UID та GID рівні для звичайних користувачів. Однак це не завжди так, тому ви не повинні робити таке припущення, оскільки це може спричинити хаос для вашої системи. Призначення дозволів на файли / папки неправильній групі дещо безладно, чи не так?

Отже, коротка відповідь: ні, UID не завжди дорівнює GID. Тим не менш, /etc/passwdмістить і UID, і GID групи за замовчуванням в одному рядку, тому їх досить легко витягнути.


"за замовчуванням UID та GID рівні для звичайних користувачів" - насправді це твердження справедливо лише в тому випадку, якщо ви додасте "в деяких популярних дистрибутивах Linux". Так, Ubuntu та ін. зробіть це так, але я б вважав загальну групу "користувачів" більше за замовчуванням.
jstarek

Так, якщо ми прагнемо бути 100% точними, то ви праві. Напевно, нам потрібно буде додати ще десяток різноманітних "ifs", щоб ніколи не пропустити жодного винятку. Усі мої дистрибуції на базі Debian (LMDE, Crunchbang, чисті Debian) поводяться таким чином, і один CentOS 6.5 у мене також. Зверніть увагу, оскільки мені не потрібно додавати величезну кількість користувачів, які я, як правило, використовую, adduserа не useraddвстановлені за замовчуванням /etc/adduser.conf, USERGROUPS=yesякі створюють групу для кожного нового користувача. Зазвичай ці групи (не завжди) мають той самий GID, що і UID користувача, для якого вони створені.
Ератьєль

2

З цього посилання я бачу нижню інформацію.

Ідентифікатор користувача (UID) - це унікальне додатне ціле число, присвоєне Unix-подібній операційній системі кожному користувачеві. Кожен користувач ідентифікує систему за своїм UID, а імена користувачів, як правило, використовуються лише як інтерфейс для людей.

UID- /etc/passwdфайли разом із відповідними іменами користувачів та іншою специфічною для користувача інформацією зберігаються у файлі, який можна прочитати за допомогою команди cat наступним чином:

cat /etc/passwd

Третє поле містить UID, а четверте поле містить ідентифікатор групи (GID), який за замовчуванням дорівнює UID для всіх звичайних користувачів.

EDIT

Однак, як зазначає @Karlson, це неправда, що UID буде рівним GID за замовчуванням.

Заява справедлива лише в тому випадку, якщо жодна звичайна група не додається окремо і жодні групи явно не вказані в будь-якому створенні користувача . За замовчуванням gid для наступного доданого користувача = max(gid) + 1. Немає кореляції між UID та GID, необхідною будь-якою системою * NIX, вони в деяких випадках просто збігаються.

Більше посилань

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users


Останнє твердження є абсолютно хибним. UID = GID лише в тому випадку, коли новий користувач створений в локальній системі і GID явно не призначений для існуючої групи.
Карлсон

Ні, це не зовсім помилково, як чітко сказано "за замовчуванням". Деякі роз’яснення були б дуже вдячні тут.
Ератьєль

1
@Erathiel За замовчуванням GID дорівнює GID, призначеному при створенні користувача. Якщо користувач створений локально і без зазначення GID у -gпрапорі useraddпрограми, створить групу для вас, і якщо не відбудеться зміна GID, це буде = UID. Однак, якщо метод створення не відомий, ви не можете розраховувати на те, що так буде:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Карлсон

У деяких системах useradd також створює групу з такою ж назвою для облікового запису. Залежить від аромату Linux.
Піт

@Karlson, я ніколи не згадував, що завжди буде рівним. Чітко вказано, що за замовчуванням він дорівнює UID для всіх звичайних користувачів .
Рамеш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.