Всем привет.
переношу одну небольшую прогу с обычного C# в Net Core 3.1, чтобы поддерживала линукс.
программа идентифицирует пользователя ,который с ней работает по SID. Удобно иметь уникальный идентификатор как в доменной среде, так и без нее.
в линуксе аналога быстрым поиском не вижу.
1) Есть простой цифровой идентификатор локального пользователя (например у root это 1000 я так понял), и
2) _будет_ идентификатор, когда пользователь будет в домене (но это не точно, может что-то неправильно понял).
есть еще какой-то идентификатор, но его не получить под самим пользователем — нет прав.
в общем, подскажите плз, есть в unix такой универсальный уникальный id, который бы и для доменной среды оставался таким же (когда пользак будет ходить по другим компам со своей учеткой) и без домена, и чтобы с правами этого самого пользователя его можно было получить?
Здравствуйте, dmitry251, Вы писали:
vsb>>Не слышал ни про какие домены в юниксе.
D>о как, т.е. для каждого пользака в сети админ идет и создает учетки руками локально? если пользак уволился, идет и нового создает?
Есть YP/NIS, есть LDAP и т.п., есть общая среда на этой базе (аналог домена), а вот SID в привычном виде не водится.
Здравствуйте, dmitry251, Вы писали:
d> в общем, подскажите плз, есть в unix такой универсальный уникальный id, который бы и для доменной среды оставался таким же (когда пользак будет ходить по другим компам со своей учеткой) и без домена, и чтобы с правами этого самого пользователя его можно было получить?
Если я правильно тебя понял, то такого нет. ID текущего пользователя ты получаешь по getuid/geteuid. Локальный и какой-нибудь LDAP/sssd пользователь с одним и тем же логином будут иметь разные UID потому что для системы это будут _разные_ пользователи. Но возможно я неправильно понял что ты хочешь.
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, dmitry251, Вы писали:
d>> в общем, подскажите плз, есть в unix такой универсальный уникальный id, который бы и для доменной среды оставался таким же (когда пользак будет ходить по другим компам со своей учеткой) и без домена, и чтобы с правами этого самого пользователя его можно было получить?
AB>Если я правильно тебя понял, то такого нет. ID текущего пользователя ты получаешь по getuid/geteuid. Локальный и какой-нибудь LDAP/sssd пользователь с одним и тем же логином будут иметь разные UID потому что для системы это будут _разные_ пользователи. Но возможно я неправильно понял что ты хочешь.
а если пользователь вошел через ldap/sssd то командой getuid/geteuid можно будет получить его uid? не локальный (т.е. эта команда будет работать вообще, или для получения uid ldap нужны другие команды?)
D>переношу одну небольшую прогу с обычного C# в Net Core 3.1, чтобы поддерживала линукс. D>программа идентифицирует пользователя ,который с ней работает по SID. Удобно иметь уникальный идентификатор как в доменной среде, так и без нее.
uid, gid уникальные только в пределах той области, в которой задан пользователь (отдельная машина или какой-нибудь directory server).
Строго говоря тоже верно и для SID: если клонировать машинку, то SID локальных пользователей будут одинаковыми (аналогичное верно и для AD домена).
Чтобы локальный и сетевой linux пользователь могли сосуществовать обычно разделяют диапазон UID для локальных (например <10000) и сетевых (net users).
Но это все зависит от реализации (используемого directory server), нет какого-то канонического подхода.
Разница с SID в том, что SID машинки (домена), который служит префиксом для SID пользователей генерируется случайно (и существенно длиннее в байтах чем UID), поэтому как правило не пересекаются.
Я думаю, для начала стоит определиться в какой области нужный Вам ID должен быть уникален (отдельная машинка, локальная сеть, вселенная).
Здравствуйте, dmitry251, Вы писали:
d> а если пользователь вошел через ldap/sssd то командой getuid/geteuid можно будет получить его uid? не локальный (т.е. эта команда будет работать вообще, или для получения uid ldap нужны другие команды?)
Мне не на чем точно проверить, но должно работать. Системе должно быть все равно в какой uid мапится некий логин, лишь бы все остальное соответствовало.
Здравствуйте, dmitry251, Вы писали:
D>в общем, подскажите плз, есть в unix такой универсальный уникальный id, который бы и для доменной среды оставался таким же (когда пользак будет ходить по другим компам со своей учеткой) и без домена, и чтобы с правами этого самого пользователя его можно было получить?
Правильный вопрос, что такое домен в линуксном понимании? В линухе такого нет, пришло из венды. Где-то вокрух этой околовендовой инфраструктуры и надо искать ответ...
Здравствуйте, dmitry251, Вы писали:
D>в общем, подскажите плз, есть в unix такой универсальный уникальный id, который бы и для доменной среды оставался таким же (когда пользак будет ходить по другим компам со своей учеткой) и без домена, и чтобы с правами этого самого пользователя его можно было получить?
Пользователь доменный от freeipa/AD? Тогда оно наверняка об kerberos. kinit/klist подёргай и вообще про kerberos почитай
Опять же не забывай, что работает это так:
1. Ты логинишься каким-то линупсопользователем
2. От него выполняешь kinit user@domain
И доменный юзер "маппится" на текущего линупс-юзера об выданный тикет
Можно настраивать конечно логин сразу от доменной учётки, но проще именно так, об kinit