Вопрос или проблема
В Classic Shell Scripting от O’Reilly Арнольд Роббинс и Нельсон Х.Ф. Биб пишут следующее,
Если файловая система с пользователем
smith
с UID 100 смонтирована на файловой системе, где UID 100 назначен пользователюjones
, тоjones
будет иметь полный доступ к файламsmith
. Это будет верно, даже если в целевой системе существует другой пользователь с именемsmith
.
и, честно говоря, я не совсем понимаю, какие из этого следуют последствия.
Означает ли это, что если у меня есть флешка, я её mount
, и я cp
на неё файл, который myself
создал на своей системе, то эта флешка может быть umount
ирована, mount
ирована на другой системе с именем пользователя myself
(возможно, созданного специально для этой цели), и этот пользователь получит доступ к файлу, который был у меня на моей системе?
Теперь, когда я это написал, я начинаю думать, что в этом нет ничего странного, в том плане, что файл не был зашифрован или что-то еще, и myself
cp
ящий файл на флешку означает, что я пытаюсь его поделить, так что в этом нет ничего неправильного/небезопасного в том, что он становится читаемым где-то еще.
Я чего-то не понимаю?
Текст говорит, что если UID 100 (smith
) владеет файлом и диск перемещается на другую систему, где также существует UID 100, то кем бы ни был этот пользователь с UID 100 (например, jones
), этот пользователь будет владеть файлом там.
На вашем примере, если myself
(возможно, пользователь с UID 1000) создает файл, и этот диск перемещается на систему, где пользователь myself
имеет UID 5000, то файл не будет принадлежать myself
, а принадлежит тому пользователю, у которого UID 1000.
Суть в том, что имя пользователя не имеет значения. Важно UID, число, которое идентифицирует пользователя. Если диск перемещен на систему, где один или несколько владельцев не существуют, то команда ls -l
перечислит владельцев как простые числа, а не имена пользователей. Пользователь root может переназначить владение файлом с помощью команды chown
.
Цитируемый вами текст ничего не говорит о содержимом файла. Вы потеряете доступ к расшифрованному содержимому, даже если никогда его не перемещали, если оно зашифровано, и вы потеряете ключ. Это не имеет отношения к тому, что говорит текст.
Часть про файловую систему уже была ответлена. Дополняя:
Если у вас есть разные системы и вы хотите избежать этой проблемы, вы можете использовать архив. Это может зависеть от типа архива, но tar
сохраняет как ID, так и имена. Если имя не существует на системе извлечения, то используется ID.
Это предполагает, что используемая файловая система вообще поддерживает UID.
Например, если у вас есть файловая система на USB, она, скорее всего, отформатирована как exfat или vfat, ни одна из которых не поддерживает UID, и при монтировании владение файлами часто маппируется на пользователя, который смонтировал диск, именно чтобы обойти эти проблемы.
Однако, если вы отформатировали свой USB (например) как ext4fs, то, скорее всего, у вас будут проблемы с маппированием UID при перемещении его между несовместимыми системами.
Это также веская причина для корпоративных систем использовать SSO — система единого входа также означает унифицированные пользовательские ID, что значительно упрощает совместное использование файловых систем.
Ответ или решение
Введение в IT и системное администрирование нередко предполагает необходимость понимания принципов работы файловых систем и управления доступом. Разумеется, это включает знание о том, как идентификация пользователей через user ID (UID) может повлиять на доступность файлов при переносе данных между различными системами. Рассмотрим детально, как это работает и как избежать потенциальных проблем.
Теория (Theory)
UID — это уникальный идентификатор, который назначается каждому пользователю в системе UNIX-подобных операционных систем. При создании файла или каталога, операционная система связывает его с UID пользователя, который его создал. Это связано с тем, что файловая система часто не хранит имен пользователей, а только их UID. Таким образом, когда файловая система перемещается на другой компьютер, она по-прежнему хранит информацию об этом числовом UID, независимо от того, какому пользователю он соответствует на новой системе.
Проблема возникает, если этот же UID на целевой системе привязан к другому пользователю. Например, пользователь с UID 100 на одной системе владеет файлом, а на другой системе тот же UID 100 присвоен другому пользователю. В такой ситуации второй пользователь получит доступ к файлу, как если бы это был его файл.
Пример (Example)
Предположим, что на вашей системе существует пользователь по имени "smith" с UID 100, который создает файл, сохраняемый на USB-устройстве, отформатированном с помощью файловой системы, поддерживающей UID, например, ext4. Если это устройство перемещается и монтируется на другой системе, где UID 100 не принадлежит "smith", а, например, "jones", то "jones" автоматически получит права на доступ и управление файлом. В то время как другое имя пользователя (в данном случае, "smith") будет не актуально: важен именно идентификатор UID.
Применение (Application)
Чтобы избежать потенциальных проблем, связанных с перемещением носителей данных между системами с разными UID, следует учитывать следующие шаги и практики:
-
Архивация. Использование архивов (например, tar), которые сохраняют как имена, так и UID, позволят восстановить правильные атрибуты на новой системе, если имя пользователя не распознано.
-
Выбор файловой системы. Наиболее распространенные файловые системы для переносных носителей, такие как exFAT и VFAT, не поддерживают UID. Это помогает избежать описанных проблем. Однако при использовании файловых систем, поддерживающих UID (например, ext4), может возникнуть необходимость в управлении этими идентификаторами.
-
Единая система аутентификации (SSO). В корпоративной среде использование единой системы идентификации и аутентификации может значительно упрощать управление и доступ к ресурсам, сводя на нет риски разномастных UID.
-
Корректировка прав доступа. После перемещения данных администраторам может потребоваться изменить права доступа с помощью командной строки, например, с использованием команды
chown
для переопределения владельца файла или каталога в зависимости от существующих пользователей. -
Использование системы резервных копий. Системы резервного копирования могут быть настроены на сохранение метаданных о пользователях, что позволяет точно восстановить их при миграции данных на новые системы.
Заключение
Понимание механизмов работы UID и файловых систем поможет не только в предупреждении потенциальных утечек данных из-за некорректного управления правами доступа, но и в улучшении практик управления данными и безопасностью информации. Внимательное отношение к таким аспектам может значительно сократить риски и повысить общую надежность работы IT-инфраструктуры.