Могу ли я отсортировать файлы / etc / group и / etc / passwd?

33

Мой /etc/groupвырос за счет добавления новых пользователей, а также установки программ, которые добавили своих собственных пользователей и / или группы. То же самое верно для /etc/passwd. Редактирование теперь стало немного громоздким из-за отсутствия структуры.

Могу ли я отсортировать эти файлы (например, по числовому идентификатору или по алфавиту по имени) без негативного влияния на систему и / или менеджеры пакетов?

Я думаю, это не имеет значения, но просто чтобы быть уверенным, что я хотел бы получить второе мнение. Может быть, rootдолжна быть 1-я строка или в пределах 1-й строки или что-то?

То же самое касается /etc/*shadow.

Ned64
источник
7
«Редактирование стало немного громоздким из-за отсутствия структуры». Почему вы редактируете эти файлы вручную?
Кевин
Как сортировка файла помогает с редактированием? Это потому, что вы хотите сгруппировать связанные учетные записи вместе, а затем сделать аналогичные изменения в диапазоне строк? Но будет ли связанный аккаунт смежным, если вы сортируете по uid или имени?
Бармар
@ Barmar Это помогло в основном потому, что учетные записи пользователей сгруппированы по диапазонам и отделены от системных учетных записей (при сортировке по UID). Поэтому легче, например, определить правильную строку для просмотра или изменения при редактировании с помощью vi.
Нед64

Ответы:

50

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

ErikF
источник
3
@Menasheh Цвета этого сайта не выделяют их так сильно, как на других сайтах, но в этом ответе «ОК, делая это» - гиперссылка.
18:59
2
Хорошо, хорошо, но ... В общем, есть ли веские причины для ручного редактирования / etc / passwd и подобных файлов? Разве не считается лучшим доступ к ним через инструменты, предназначенные для их создания и изменения?
mickeyf_supports_Monica
@mickeyf Я видел, как люди вручную редактировали, /etc/passwdкогда вносили пакетные изменения, такие как изменение поля GECOS для всех пользователей из-за перемещения / реструктуризации (глобальное изменение номера или номера телефона и т. д.). Это больше не распространено, но есть определенные причины, которые возникают время от времени.
ErikF
44

Хотя ErikF прав, что в целом все должно быть в порядке, я хочу указать на одну потенциальную проблему:

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

HVD
источник
Спасибо, я знаю, что вы могли, раньше несколько лет назад в Solaris был пользователь с tcsh и uid 0. Однако система Linux не создаст эту ситуацию сама по себе - вам нужно будет вручную создать такого пользователя, чтобы иметь проблемы с этой ситуацией.
Нед64
2

Наличие root в первой строке уже давно де-факто является «стандартным» и очень удобно, если вам когда-либо приходится исправлять их оболочку или удалять пароль при работе с проблемами или восстановлении систем.

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

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

Если вам в некоторой степени удастся отсортировать файлы, например, только для обычных пользователей, это будет более разумно, чем изменение порядка всех пользователей, imo.

Руи Ф Рибейро
источник
1
Если вы сортируете численно по UID, вы должны получить предпочтительный заказ. Корень всегда 0, и демоны обычно имеют UID до 100.
Barmar
@ Barar Если сортировка по UID, а не по имени, действительно, спасибо, что запомнили.
Руи Ф Рибейро
0

Вот немного небрежного кода bash для аналогичной сортировки файлов shadow / 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! \") Принудительно записывает и закрывает отсортированный файл. Сила необходима, поскольку shadow / gshadow часто находятся в режиме 000 (т.е. недоступны для записи). Обратите внимание на пробел между '!' и '\' необходимо для предотвращения интерпретации оболочкой как '! \', которая ссылается на событие bash.
puterboy
источник