В чем преимущество синхронизации UID / GID на машинах Linux?

24

Прежде чем я углублюсь в глубину того, как синхронизировать UID / GID на разных компьютерах с Linux, я хотел бы знать, что на самом деле является преимуществом?

Я знаю, что это позволяет относительно легко синхронизировать файлы (поскольку владение «естественно» сохраняется). Однако это также может быть достигнуто иначе в зависимости от услуги передачи.

Есть ли что-нибудь еще, что выиграло бы от согласованных UID / GID?

Алекс
источник
4
Не забывайте при изменении uid / gid обновлять архивы (tar-файлы и т. Д.), А также файлы conf, которые могут использовать числовые идентификаторы вместо uidname / groupnames.
Оливье Дюлак

Ответы:

31

технический долг

По причинам, изложенным ниже, гораздо проще решить эту проблему на раннем этапе, чтобы избежать накопления технического долга . Даже если вы уже оказались в такой ситуации, вероятно, лучше разобраться с этим в ближайшем будущем, чем позволить ему продолжить строительство.

сетевые файловые системы

Этот вопрос, по-видимому, сосредоточен на узкой области передачи файлов между компьютерами с локальными файловыми системами, которая допускает конкретные состояния владения машиной.

Соображения, касающиеся сетевой файловой системы, - это, пожалуй, самый большой случай, когда вы пытаетесь синхронизировать ваши UID / GID-сопоставления, потому что вы обычно можете выбросить это «достигнутое иначе», которое вы упомянули в окне в тот момент, когда они входят в изображение. Конечно, вы не могли бы иметь сетевые файловые системы разделены между этими хостами прямо сейчас ... но что о будущем? Можете ли вы честно сказать, что никогда не будет прецедента использования сетевой файловой системы между вашими текущими хостами или хостами, которые будут созданы в будущем? Это не очень дальновидно, чтобы думать иначе.

Предположим, что /homeэто сетевая файловая система, используемая совместно host1и host2в следующих примерах.

  • Несогласие разрешений : /home/user1принадлежит каждому пользователю в каждой системе. Это лишает пользователя возможности иметь постоянный доступ или изменять свой домашний каталог в разных системах.
  • chown wars : пользователь очень часто отправляет заявку с требованием, чтобы его права доступа к домашнему каталогу были зафиксированы в конкретной системе. Исправление этой проблемы host2нарушает права доступа host1. Иногда может потребоваться сработать несколько таких билетов, прежде чем кто-то отступит и поймет, что в игре идет перетягивание каната. Единственное решение - исправить несоответствующие идентификаторы. Что приводит к...
  • Ад перебалансировки UID / GID : Сложность исправления идентификаторов позже увеличивается экспоненциально на количество повторных сопоставлений, необходимых для исправления одного пользователя на нескольких машинах. ( user1имеет идентификатор user2, но user2имеет идентификатор user17... и это только первая система в кластере) Чем дольше вы ждете решения проблемы, тем сложнее могут стать эти цепочки, что часто требует простоев приложений на нескольких серверах для того, чтобы все правильно синхронизировать.
  • Проблемы безопасности : user2на host2имеет тот же UID , как user1на host1, что позволяет им писать /home/user1на host2без ведома user1. Эти изменения затем оцениваются host1с разрешениями user1. Что возможно могло пойти не так? (если user1это пользователь приложения, кто - то в разработчике будет открыть его для записи и будет вносить изменения. это время доказанный факт.)

Существуют и другие сценарии, и это лишь примеры наиболее распространенных.

имена не всегда вариант

Любые сценарии или файлы конфигурации, написанные с использованием числовых идентификаторов, по своей природе становятся непереносимыми в вашей среде. Как правило, это не проблема, потому что большинство людей не кодируют их жестко, если они абсолютно не обязаны ... но иногда инструмент, с которым вы работаете, не дает вам выбора в этом вопросе. В этих сценариях вы вынуждены поддерживать n разных версий скрипта или файла конфигурации.

Пример: pam_succeed_ifпозволяет использовать поля user, uidи gid... вариант «группа» явно отсутствует. Если бы вы оказались в положении, когда несколько систем должны были реализовать какую-либо форму ограничения доступа на основе групп, у вас было бы n различных вариантов конфигураций PAM. (или хотя бы один GID, на котором вы должны избегать столкновений)

централизованное управление

Ответ natxo достаточно хорошо освещен.

Андрей Б
источник
Я не уверен, что правильно сказать, что использование сетевой файловой системы предотвращает исправление проблем с разными uid. Я знаю по крайней мере одну файловую систему, которая поддерживает карту uid, позволяющую указать, какие группы и пользователи совпадают на разных компьютерах.
Vality
@Vality Если бы это было общедоступное решение, я бы все еще не решался назвать его масштабируемым.
Андрей Б
Я согласен, я просто не хотел, чтобы ФП думал, что это невозможно, я в целом согласен с вашим предположением, что наилучшим решением является их синхронизация.
Vality
Благодарность! К сожалению, «рано» давно прошло. Хотя я знаю, что некоторую конфигурацию ldap / kerberos я бы хотел включить сюда, где я работаю, но этого не произойдет сейчас. По некоторым другим причинам я был особенно заинтересован в использовании UID / GID во взаимодействующих системах. Как я уже говорил, передача файлов - это одна проблема (которая в настоящее время имеет статус «все работает»), поэтому я хотел узнать, есть ли другие вещи (как вы упомянули), на которые также влияют UID. Не могли бы вы добавить несколько ключевых слов из этих «других сценариев»? Это сделало бы это великолепным ответом!
Алекс
@alex Ну, я имел в виду «другие сценарии» с точки зрения проблем с сетевой файловой системой. Независимо от того, насколько поздно вы находитесь в игре, проблема только усугубляется, поскольку она осталась без внимания. Если приведенные нами причины не являются адекватными, возможно, было бы полезно, если бы вы задали свой вопрос немного подробнее, указав эти «другие причины». Ответы, представленные до сих пор, на мой взгляд, довольно хорошие. Если вы пытаетесь убедить руководство, мы не обязаны заставлять их поступать правильно.
Андрей Б,
18

Как только вы достигнете определенного размера (и это всегда раньше, чем вы думаете), вы поймете, что изменение ваших паролей или отключение учетных записей для кого-то на всех хостах - это PITA. Вот почему люди используют системы с базами данных LDAP (или NIS, но не делают этого, в наше время небезопасно), такие как openldap или в наши дни отличная freeipa.

Вы храните информацию обо всех учетных записях / группах в центральной базе данных, все хосты делятся этой информацией. Оттуда вы можете сделать гораздо больше: использовать информацию о пользователях для разрешений на файлы, конечно, но также создавать виртуальных пользователей для всех приложений, которые имеют привязки ldap, вместо того, чтобы создавать там своих пользователей (многие веб-приложения могут использовать ldap для их пользовательской базы данных), поддерживайте центральную базу данных правил sudo, распространяйте свою среду autofs, сохраняйте зоны DNS, ...

natxo asenjo
источник