У меня смешанная среда разработки программного обеспечения 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 uid2.) 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.so3.) общая сессия:
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.so4.) общий-пароль
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]).