LINUX.ORG.RU

Разрешённые символы в /etc/passwd

 ,


0

1

Экспериментируя с поддержкой нескольких пользователей в Haiku обнаружил что если в полях пользователя есть символ «:», то создаётся битый файл /etc/passwd (#16611). Система не должна допускать порчу базы пользователей при создании пользователя. Есть ли список запрещённых символов в /etc/passwd, есть механизмы экранирования? В man не могу ничего найти по этой теме кроме того, что почему-то в имени пользователя запрещены большие буквы.

★★★★★

почему-то в имени пользователя запрещены большие буквы

Историческая особенность.

Если ввести имя пользователя большими буквами то tty переключается на поддержку терминалов без нижнего регистра (были когда-то такие). Т.е. шел начинает принимать команды большими буквами, как LS, CD и т.д.

Но эту фичу могли уже выпилить, а вот рекомендация осталась.

Так же ‘:’ является разделителем в passwd. Т.ч. тоже не удивительно.

beastie ★★★★★
()
Ответ на: комментарий от beastie

Так же ‘:’ является разделителем в passwd.

Что будет если в пути домашней директории есть «:»? Файловая система такие имена разрешает.

X512 ★★★★★
() автор топика
Ответ на: комментарий от X512

Я тебе скажу, что «и». То, что посиксовая система управления пользователями через утилиту с флагом setuid безнадежно устарела и не имеет места на современном компьютере. Собственно, PAM уже давным-давно используется, потому конкретно аутентификация уже к этому механизму отношения не имеет. Последний шаг не дает сделать тот факт, что в 2020 году на никсах до сих пор поклоняются текстовым форматам, несмотря на то, что сами данные в ячейках этих файлов уже тяготеют к бинарному формату. То есть, не хватает легко редактируемого бинарного формата, в котором можно было бы хранить нужные данные просто и надежно, без боязни побить «конфиги» (кто сказал реестр?).

byko3y ★★★★
()

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

gremlin_the_red ★★★★★
()
Ответ на: комментарий от gremlin_the_red

В /etc/passwd не только имя пользователя но и путь домашней директории, комментарий и прочее. Про ограничения этого ничего не сказано.

X512 ★★★★★
() автор топика
Ответ на: комментарий от X512

В коде shadow-utils нелегальными для остальных полей являются только символы \n и :

gremlin_the_red ★★★★★
()
Ответ на: комментарий от X512

Что будет если в пути домашней директории есть «:»? Файловая система такие имена разрешает.

Что будет если ты выстрелишь себе в ногу? Оружие такое действие разрешает.

futurama ★★★★★
()
Ответ на: комментарий от byko3y

И что изменится от появления бинарного формата? К тебе наконец-то вернётся потенция? Волосы станут шелковистыми?

Или все же можно и в текстовом формате символ экранировать и никакой бинарный формат нахер не нужен?

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

Во-первых структурированный файл ускоряет парсинг. Текст отвратительно играет роль структуры данных — конкретно по этой причине был создан питон. Нынче тулзы для работы с пользователями целиком парсят текстовый конфиг, потом модифицируют структуры в памяти, и целиком пишут файл обратно. Всё это под колхозной блокировкой в виде отдельного файлика с PID.

Во-вторых, что делать при порче файла в результате убийства процесса, выключения компа, или просто ванькиной системной утилиты? В принципе, shadow для этого применяет более-менее целостную систему с бэкапом старого файла и запись во временный новый файл, который подменяет целевой файл. В итоге это на самом деле каша из топора, реализация системы надежного хранения, которые есть в sqlite или реестре винды, только костыльнее и недоработанее. Например, во временном файле хранятся не изменения, а всё содержимое, да этих файлов еще и два. Ну типа когда речь идет про 200 байт — это еще куда не шло, а прикинь что будет, если пользователей будут сотни-тысячи?

byko3y ★★★★
()
Последнее исправление: byko3y (всего исправлений: 1)
Ответ на: комментарий от byko3y

Ужас та какой, как все интернеты на этом живут… Нормально они, блевать, живут, уж явно получше винды.

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

А вот теперь жрите systemd, который еще более монолитен, чем винда, но зато который умеет запускать службы с виртуальными пользователями и раздает пользователям права доступа к устройствам и системным операциям через systemd-logind на основе пользователей PAM, где /etc/passwd и /etc/groups уже являются второстепенными. Проблему бинарных конфигов они так и не решили, к слову.

byko3y ★★★★
()
Ответ на: комментарий от X512

на основе пользователей PAM

Как это работает?

https://systemd.io/USER_RECORD/

Справедливости ради, они таки заменили passwd на JSON, в том числе пароли.

byko3y ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.