Чи можу я сортувати файли / etc / group та / etc / passwd?


33

Моє /etc/groupзросло, додаючи нових користувачів, а також встановивши програми, які додали власного користувача та / або групу. Те саме стосується і для /etc/passwd. Зараз редагування стало трохи громіздким через відсутність структури.

Чи можу я сортувати ці файли (наприклад, за числовим ідентифікатором або за алфавітом за назвою) без негативного впливу на систему та / або менеджери пакетів?

Я б здогадувався, що це не має значення, але просто щоб бути впевненим, я хотів би отримати другу думку. Можливо, це rootповинен бути 1-й рядок або в межах перших рядків 1k чи щось таке?

Те саме стосується /etc/*shadow.


7
"Редагування тепер стало трохи громіздким через відсутність структури" Чому ви редагуєте ці файли вручну?
Кевін

Як сортування файлу допомагає редагувати? Це тому, що ви хочете згрупувати пов’язані облікові записи разом, а потім зробити подібні зміни в діапазоні рядків? Але чи буде суміжний обліковий запис суміжним, якщо сортувати за uid чи ім'ям?
Бармар

@Barmar Це допомагало головним чином тому, що облікові записи користувачів групуються за діапазонами та відокремлюються від системних облікових записів (при сортуванні за UID). Тому простіше, наприклад, помітити правильний рядок, щоб переглянути чи змінити під час редагування vi.
Ned64

Відповіді:


50

Вам повинно бути добре, роблячи це : насправді, згідно статті та читання документації, ви можете сортувати /etc/passwdі /etc/groupза UID / GID відповідно, pwck -sі grpck -sвідповідно.


3
@Menasheh Кольори цього веб-сайту не виділяють їх так сильно, як на інших сайтах, але "ОК це робиться" у цій відповіді є гіперпосиланням.
hvd

2
Гаразд, добре, але ... Загалом, чи є поважні причини вручну редагувати / etc / passwd та подібні файли? Чи не вважається кращим отримати доступ до них через інструменти, призначені для їх створення та зміни?
mickeyf_supports_Monica

@mickeyf Я бачив, як люди вручну редагують, /etc/passwdколи вони вносять пакетні зміни, як-от зміна поля GECOS для всіх користувачів через переміщення / реструктуризацію (зміни глобальної кімнати або номера телефону тощо). Це більше не часто, але є конкретні причини, які час від часу з’являються.
ErikF

44

Хоча ЕрікФ правильно, що це, як правило, добре, я хочу зазначити одне потенційне питання:

Вам дозволяється поєднувати різні імена користувачів на один і той же UID. Якщо ви скористаєтеся цим, інструменти, які переносять UID назад на ім’я користувача, зазвичай вибирають перше ім’я користувача, яке вони знайдуть для цього UID /etc/passwd. Сортування може призвести до того, що спочатку з’явиться інше ім’я користувача. Для цілей відображення (наприклад, ls -lвихід) будь-яке ім'я користувача повинно працювати, але можливо, ви налаштували якусь програму для прийому запитів від імені користувача A, де вона буде відхиляти ці запити, якщо бачить, що вони ідуть від імені користувача B, навіть якщо A і B є одним і тим же користувачем.


Дякую, я знаю, що ти міг користуватися користувачем tcsh і uid 0 в Solaris кілька десятиліть тому. Однак система Linux сама не створить цю ситуацію - вам потрібно буде вручну створити такого користувача, щоб виникнути проблеми з цією ситуацією.
Ned64

2

Коріння в першому рядку давно фактично є «стандартним» і дуже зручно, якщо вам коли-небудь доведеться виправити їх оболонку або видалити пароль, коли ви вирішуєте проблеми або відновлення системи.

Так само я вважаю за краще мати користувачів демонів / утиліт у середині та стандартних користувачів у кінці обох passwdта shadow.

hvd відповідь також дуже хороша щодо порушення порядку користувачів, особливо в системах, де багато користувачів підтримують вручну.

Якщо вам дещо вдасться сортувати файли, наприклад, лише для стандартних користувачів, це було б розумніше, ніж змінювати порядок усіх користувачів, imo.


1
Якщо ви сортуєте числовий номер за UID, вам слід отримати бажане замовлення. Корінь завжди є 0, а у демонів умовно є UID під 100.
Barmar

@Barmar Якщо сортування за UID, а не за іменем, справді, дякую, що запам’ятали.
Rui F Ribeiro

0

Ось дещо волохатий баш-код для аналогічного сортування тіньових / gshadow-файлів безпечно (використовуючи vipw -s/ vigr -s) та на місці з командного рядка:

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/passwd\" -c \"wq! \" >/dev/null 2>&1" vipw -s

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/group\" -c \"wq! \" >/dev/null 2>&1" vigr -s

ПРИМІТКА:

  1. vi -cпередає команду в редактор Vim , який призначений бути редактором vipw/ vigrпо EDITORзмінної
  2. Код awk сортується shadowза passwdgshadowза group)
  3. Звороті риси - це лише кілька необхідних рівнів, які відповідають рівню котирування.
  4. Друга сила (-c \ "wq! \") Записує і закриває відсортований файл. Сила необхідна, оскільки тінь / gshadow часто є режимом 000 (тобто непридатним). Зверніть увагу на пробіл між "!" і "\" необхідно, щоб запобігти інтерпретації оболонкою як "! \", що посилається на баш-подію.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.