У / etc / group в чому значення другого поля?


18

Зразок /etc/groupфайлу містить такі записи:

root:*:0:
adm:!:4:logcheck
antoine:x:1000:

Сторінки, які я читав (Debian & OSX), кажуть, що друге поле - це зберігання групового пароля. Оскільки вони рідко використовуються, у ньому зазвичай розміщується зірочка *або а, xа не залишається порожнім.

На shadowсторінці man також зазначено, що це друге поле має зберігати результат cryptфункції. І якщо недійсний результат зберігається (наприклад, *або !), це означає, що пароль не може використовуватися як метод аутентифікації.

Чи справедливо це і для groupфайлу? Чому я закінчую 3 різні символи у моєму groupфайлі, які мають однакове значення? Чи можу я безпечно все змінити на *?


Що б ви могли досягти, змінивши їх усі *?
Йорданм

Я бачу лише !використання однієї групи на одному сервері з 10+, якими я зараз керую. Для простоти деяких перевіряючих сценаріїв, завжди маючи однакові символи, можна було б зрозуміти речі. Ну, якщо це насправді означає те саме, звичайно.
Тонін

Відповіді:


28

Ви думаєте , що !, *або xмає особливе значення тут, і, отже , побоюючись , що там можуть бути деякі відмінності між ними.

Справа в тому, що цих персонажів вибирають просто тому, що вони виділяються, принаймні західним очам. Ці символи означають відсутнє значення, або виняток, або попередження. Ви можете поставити boogaboogaсюди і мати точно такий же ефект.

Це пояснюється тим, як обробляються паролі в системах типу Unix. Коли система отримує введення пароля, він хеширует його і порівнює його зі збереженим хешем. Тому тут важливо лише те, що ви використовуєте певний символ чи послідовність символів, які, можливо, не можуть бути дійсним хешем пароля. (Він також не повинен містити двокрапки з очевидних причин.)

Хоча різницю між цими символами немає з точки зору основної ОС, є деякі умови:

  • Коли pwconv(8)програма Linux бачить x, це означає, що "я вже перемістив цей загальнодоступний хеш-пароль до файлу тіньового пароля".

    Це не є важливим випадком на практиці, оскільки дні переходу до (або, боже, вам допомогти, від ) тіньових паролів зараз позаду.

  • Якщо ви користуєтесь usermod -Lабо passwd -lблокуєте користувача, це !має особливе значення, /etc/shadowоскільки це умова "зламати цей хеш, щоб він більше не відповідав".

    Додавання будь-якого іншого символу до збереженого хешу також порушить його. Порушивши цю угоду тільки запобігає usermod -Uабо passwd -uвід відмикання логін користувача. Так само правдиво, оскільки ви заблокували його вручну, додавши хибний символ, ви можете розблокувати його вручну, видаливши його.

    Однак, це лише дрібниці щодо цього питання. Немає groupmod -Lабо gpasswd -l, отже, немає ніякої !конвенції в Росії /etc/group.

    Більш дрібниця: якщо ви які збираєтеся користувач блокування облікових записів вручну, ви повинні триматися подалі від [A-Za-z0-9/\]безлічі, так як ті правові символи для хеша. Ось одна причина usermodвикористовує !тут замість x.

Я не бачу нічого поганого в нормалізації всіх /etc/groupполів вашого пароля, якщо це робить вас краще. Тим самим ти вже кажеш, що ти з задоволенням зламаєш ці файли вручну, тому ти, мабуть, не такий, щоб використовувати інструменти, які так чи інакше дбають про відмінності. Незалежно від цього, зміна не матиме впливу на щоденну роботу системи.


Дякуємо за Вашу дуже повну відповідь. В даний час пишучи сценарії для перевірки користувачів і груп на моїх серверах, я також хотів знати, чи можна знайти в цій галузі будь-яку іншу послідовність символів чи знаків. З вашої відповіді та не настільки тривіальних деталей я набагато кращий погляд на це. Знову дякую!
Тонін

1
Для сценаріїв ви, ймовірно, повинні телефонувати getpwent(3)та дружити. Perl має обгортки для них у своїй стандартній бібліотеці, як і будь-який інший скриптовий мову, орієнтований на системний адміністратор Unix. Якщо ви використовуєте мову без таких обгортків, це було б гарним приводом для торгівлі. :)
Warren Young

Якщо ви все ще читаєте речі, яким майже шість років ... Дякую за відповідь, я бачу деякі історичні причини, по яких люди використовують такі речі, як xі *для позначення поля "невикористаного" пароля. Цікаво, що все-таки ... Сторінка man говорить про те, що це поле може бути порожнім (те, що в полі бази даних може називатися NULL - особливо в Oracle, який визначає NULL і порожній рядок однаковим). Отже, повернемося до / і т.д. / група: чому використання xабо !або *, замість того щоб просто залишити це поле порожнім? Два поспіль колони виділяються так само добре, як і будь-який із цих символів. Не важливо - просто цікаво
mathguy

1
@mathguy: Поле порожнього пароля означає "немає пароля", не те саме, що поле пароля, що містить символ, який ніколи не може відповідати справжньому паролю. Оскільки більшість систем Unix не використовують групові паролі, це різниця без різниці, але ви не хочете розвивати звичку, яка може потрапити в проблеми, як, наприклад, у більшості систем Linux '/etc/shadow . Також я відкидаю думку про те, що подвійна кишка так само ясна. Швидко, скільки тут порожніх полів :::::::? Зараз скільки :x:*:!:x:*::? Однакова кількість колонок, але різні відповіді, я вірю.
Воррен Янг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.