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

Аутентификация пользователей CVS в Active Directory

У меня смешанная среда разработки программного обеспечения Linux / Windows, в которой клиенты Linux переходят в систему, где они могут аутентифицироваться в Active Directory. (Эту часть я понял)

Наша лаборатория в настоящее время использует CVS для контроля версий исходного кода. В процессе миграции нам потребуется, чтобы пользователи могли аутентифицироваться на нашем сервере CVS. Я запланировал так, что, когда произойдет миграция, мы настроим сервер CVS для аутентификации пользователей в AD.

К сожалению, у меня нет большого опыта работы с CVS. Возможна ли вообще эта задача? Насколько я понимаю, его можно настроить для аутентификации пользователей на основе локальных пользователей в системе. Однако, поскольку фактические пользователи не будут хранить свои учетные данные локально на сервере (поскольку он извлекает их из AD), можно ли указать CVS на pam для аутентификации?

Я читал о доступе к CVS через SSH с учетными данными пользователя. Будет ли это требованием для того, чтобы это произошло? Если да, то как это настроить?

Я очень признателен за помощь!

Это будет довольно долго, но давайте все равно сделаем это. Во-первых, да, это можно сделать. Я не могу многое предоставить по настройке CVS, но я могу предоставить все, что вам нужно, чтобы Linux-сервер аутентифицировал пользователей в Active Directory.
Все начинается с /etc/nsswitch.conf. Вот соответствующий раздел:
passwd: files ldap compat
shadow: files ldap compat
group: files ldap compat

Теперь, в зависимости от того, какой дистрибутив вы используете, вам нужно будет установить несколько пакетов ldap. В Redhat / Fedora / CentOS это будет nss_ldap, в Debian / Ubuntu и т.п. вам потребуются libnss-ldap и libpam-ldap. Я бы также порекомендовал несколько ldap-utils для отладки.

При указанном выше ваши службы имен будут пытаться использовать LDAP, поэтому теперь вам нужно настроить различные пакеты LDAP для использования вашего сервера AD. База поиска должна быть base cn=Users,dc=aminocom,dc=com и DN привязки должен быть binddn cn=LDAPsearch,cn=Users,dc=aminocom,dc=com. Вам нужно будет определить конкретного пользователя, чтобы разрешить просмотр AD. Мы создали пользователя с именем LDAPSearch и поместили его учетные данные в отдельный файл с именем .secret. Прочтите документацию к этим пакетам для получения более подробной информации. Кроме того, я бы рекомендовал политику мягкого связывания и следующие сопоставления атрибутов:

# Services for UNIX 3.5 mappings
nss_base_passwd cn=Users,dc=aminocom,dc=com?sub
nss_base_shadow cn=Users,dc=aminocom,dc=com?sub
nss_base_group cn=Users,dc=aminocom,dc=com?sub
nss_map_objectclass posixAccount user
nss_map_objectclass shadowAccount user
nss_map_attribute uid sAMAccountName
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute gidNumber msSFU30GidNumber
nss_map_attribute loginShell msSFU30LoginShell
nss_map_attribute gecos name
nss_map_attribute userPassword msSFU30Password
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_objectclass posixGroup Group
nss_map_attribute uniqueMember msSFU30PosixMember
nss_map_attribute cn cn
pam_login_attribute sAMAccountName
pam_filter objectclass=user
pam_member_attribute msSFU30PosixMember
pam_groupdn cn=nixUsers,cn=Users,dc=aminocom,dc=com
pam_password ad

Все это предполагает, что на вашем контроллере домена установлены службы Windows для Unix. В AD вам нужно будет настроить основную группу Unix (в нашем случае - nixUsers) и добавить в эту группу каждого пользователя CVS.
Вероятно, вы сможете использовать AD напрямую (то есть без служб Windows для Unix), но для этого потребуются другие сопоставления атрибутов. Возможно, вам придется немного поэкспериментировать.

Теперь мы переходим к настройке PAM. В Debian в основном есть 4 файла, которые нужно изменить:

1.) общий счет:

account required   pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid 

2.) common-auth:

auth    required   pam_env.so
auth    sufficient pam_unix.so nullok try_first_pass
auth    requisite  pam_succeed_if.so uid >=500 quiet
auth    sufficient pam_ldap.so use_first_pass
auth    required   pam_deny.so

3.) общая сессия:

session optional        pam_keyinit.so revoke
session required        pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required        pam_unix.so
session optional        pam_ldap.so

4.) общий-пароль

password sufficient pam_unix.so md5 shadow nullok try_first_pass password sufficient pam_ldap.so password required pam_deny.so

В Redhat (и его производных) все необходимые изменения должны быть внесены в соответствующие разделы в /etc/pam.d/system-auth и /etc/pam.d/system-auth-ac.

Вышеуказанное позволит пользователям входить в систему с учетными данными AD. Однако это НЕ создает для них автоматически домашний каталог (если вы не выполняете какие-либо дополнительные сценарии) и не позволяет им изменять свои пароли через Linux. Это тоже можно сделать, но для этого потребуется модификация их рабочих станций (если они используют Linux). Если у вас возникнут дополнительные вопросы по вышеуказанному, просто задайте их.

Мы используем это на многих наших серверах, работает как шарм.

Как оказалось, CVS просто использует PAM. Итак, если ваш сервер уже настроен для аутентификации в AD, CVS также получит информацию для аутентификации.

Предложение wolfgangsz очень полезно для выполнения первого шага (аутентификация сервера в AD через LDAP [вы также можете использовать Winbind]).