Назад | Перейти на главную страницу

Справочная информация о расчете sambaSID

Я участвую в разработке и запускаю веб-приложение с открытым исходным кодом, которое в значительной степени существовало до меня. Приложение добавляет записи LDAP для пользователей веб-приложений в локальный экземпляр LDAP, чтобы предоставить этим пользователям доступ к файловой системе через Samba.

Во всех рабочих примерах я знаю sambaSID значение, хранящееся в LDAP, настроено для расчета по шаблону

$ LOCALSID "-" ($ UIDNUMBER * 2 + 1000)

Пример: для пользователя с uid 1002 sambaSID будет примерно таким S-1-5-21-1234567890-5678912345-987654321 - 3004 [пробелы добавлены для удобства чтения]. Мне любопытно, почему это необходимо. Откуда берутся эти магические числа 2 и 1000, нужны ли они и если да, то почему?

Обыскивая, я нашел этот PDF который не имеет отношения к нашему приложению и точно объясняет эту процедуру:

5. Настройка sambaSID пользователей.

При создании пользователей для внешнего LDAP нужно обращать особое внимание на их sambaSID.

Правильные записи Samba для пользователя выглядят следующим образом:

uidNumber: 1001

sambaSID: S-1-5-21-2896602268-470177729-4123194723-3002
gidNumber: 1000

sambaPrimaryGroupSID: S-1-5-21-2896602268-470177729-4123194723-3001

Как видите, к обычному sambaSID добавлен четырехзначный номер (взятый из примера WORKGROUP выше). Это создается следующим образом:

sambaSID: uidNumber * 2 + 1000
sambaPrimaryGroupSID: gidNumber * 2 + 1001

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

Поэтому не похоже, что эти числа выбраны произвольно. Однако в наших примерах, в отличие от цитируемого PDF-файла, я обнаружил, что sambaPrimaryGroupSID не подвергается какой-либо художественной обработке, его значение для группы 100 (users) он просто добавлен, например S-1-5-21-1234567890-5678912345-987654321 - 100, который отличается от объяснений в PDF-документе, упомянутом выше. Тем не менее, доступ Samba также работает с ним правильно, поэтому мне интересно, насколько надежен источник, который я нашел.

Откуда взялись эти магические числа «2» и «1000»? Они нужны или полезны для чего-нибудь?

Я искал то же самое и нашел эта ссылка.

Там объясняется, что умножение на 2 позволяет убедиться, что идентификаторы безопасности пользователя и идентификаторы безопасности группы не перекрываются. (Последнее всегда странно).

Что касается +1000, номера ниже 1000 зарезервированы для специальных групп Windows, так же как в Linux зарезервировано довольно много меньших групповых номеров. Обычные пользователи Windows получают номера, начинающиеся с 1000.