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

Несколько имен входа для одного пользователя в linux с использованием аутентификации сервера LDAP

В моей лаборатории около 30 систем (автономных ПК) и около 200 студентов будут ее использовать. В каждой системе есть учетная запись USER с паролем 123456, который известен этим 200 людям. Следовательно, они получают доступ к любой бесплатной системе и работают какое-то время. Их использование регистрируется просто записью в книге регистров. Я хочу предоставить каждому пользователю отдельные логины и пароли, что легко достигается с помощью сервера LDAP. Но я не хочу создавать 200 учетных записей пользователей на каждом ПК. Я хочу сопоставить все входы 200 человек в саму учетную запись USER. У них будет одинаковый профиль и один и тот же домашний каталог. Я просто хочу записать в файл время и дату лабораторного использования людьми. Можно ли это сделать с помощью LDAP или другого программного обеспечения?

Согласитесь с SLESKE, но, чтобы расширить его / ее комментарии, вам нужно сначала сделать пару вещей!

В Linux библиотеки, управляющие входом в систему, должны быть перенаправлены на использование серверной части LDAP, а не на поиск в / etc / passwd.

Если вы используете OpenLDAP, вам нужно будет обратить внимание на две вещи:

NSCD (демон кэширования сервера имен), который кэширует запросы LDAP. Вы запустите это на каждом хосте, на котором пользователи входят в систему.

NSSLDAP (переключатель сервера имен для LDAP) - это связующее звено, которое заставляет логины запрашивать NSCD, который, в свою очередь, запрашивает серверную часть LDAP, или NSSLDAP будет запрашивать серверную часть LDAP напрямую, если NSCD устарел или недоступен.

Таким образом, на каждой рабочей станции вам нужно будет установить OpenLDAP, NSCD и NSSLDAP, если они не являются частью вашего дистрибутива. OpenLDAP требуется для получения клиентских библиотек, которые знают, как использовать протокол LDAP.

Затем вам нужно внести правки в некоторые файлы:

/etc/nscd.conf Этот файл управляет тем, что кэшируется. Вот дамп одной из моих систем, которая действует как сервер Samba:

    enable-cache            passwd          yes
    positive-time-to-live   passwd          10
    negative-time-to-live   passwd          3
    suggested-size          passwd          211
    check-files             passwd          yes
    persistent              passwd          yes
    shared                  passwd          yes
    max-db-size             passwd          33554432
    auto-propagate          passwd          yes

    enable-cache            group           yes
    positive-time-to-live   group           3600
    negative-time-to-live   group           3
    suggested-size          group           211
    check-files             group           yes
    persistent              group           yes
    shared                  group           yes
    max-db-size             group           33554432
    auto-propagate          group           yes

    enable-cache            hosts           yes
    positive-time-to-live   hosts           3600
    negative-time-to-live   hosts           3
    suggested-size          hosts           211
    check-files             hosts           yes
    persistent              hosts           yes
    shared                  hosts           yes
    max-db-size             hosts           33554432

Затем вам нужно будет изменить файл nsswitch.ldap (прочтите DOC, слишком много, чтобы вдаваться в подробности).

ОЧЕНЬ ВАЖНАЯ ВЕЩЬ !!!!

Если ваш сервер LDAP не работает, вы хотите убедиться, что локальная учетная запись root все еще может войти в систему. Или, если на одной из ваших рабочих станций возникают проблемы с сетью, вы захотите убедиться, что вы все еще можете войти в систему.

Поэтому, когда мои Linux-машины загружаются, у меня есть сценарий, который всегда копирует файл nsswitch.conf на место, которое выглядит следующим образом:

passwd: compat group: compat

хосты: файлы dns сети: файлы

сервисы: файлы протоколы: файлы rpc: файлы ethers: файлы маски сети: файлы netgroup: файлы bootparams: файлы

automount: files псевдонимы: files

и как только я буду готов использовать LDAP для входа в систему, я заменяю файл nsswitch.conf следующим:

passwd: файлы ldap группа: файлы ldap shadow: файлы ldap

хосты: файлы dns сети: файлы

сервисы: файлы протоколы: файлы rpc: файлы ethers: файлы маски сети: файлы netgroup: файлы bootparams: файлы

automount: files псевдонимы: files

Первый позволяет мне входить в систему локально, а второй позволяет и то, и другое, но из-за кеширования NSCD требуется время, чтобы NSCD устарел, что вызывает задержки или проблемы с входом.

Об этом можно сказать гораздо больше, но, надеюсь, это поможет вам начать.

Кстати: я разработчик Pozix Linux и Pozix Linux Small Business Server, и у нас более 400 систем Samba работают именно так!

Согласен, комментарии TRS80 действительны, но вот скрипт, который мы используем для создания файлов LDIF из файлов / etc / passwd. Полученный файл LDIF можно использовать для заполнения вашей базы данных LDAP. Вам нужно будет убедиться, что при запуске этого сценария на нескольких рабочих станциях вы отсеиваете повторяющиеся имена учетных записей, чтобы получить уникальные имена учетных записей с уникальными UID.

cat /etc/passwd | while read i; do
  uid=`echo $i | cut -d : -f 1`
  uidNumber=`echo $i | cut -d : -f 3`
  gidNumber=`echo $i | cut -d : -f 4`
  gecos=`echo $i | cut -d : -f 5`
  homeDirectory=`echo $i | cut -d : -f 6`
  loginShell=`echo $i | cut -d : -f 6`
  userPassword=`cat /etc/shadow | grep $uid | cut -d : -f 2`

  echo "dn: cn=$gecos,ou=people,dc=mycompany,dc=com"
  echo "objectClass: account"
  echo "objectClass: posixAccount"
  echo "cn: $gecos"
  echo "uid: $uid"
  echo "uidNumber: $uidNumber"
  echo "gidNumber: $gidNumber"
  echo "homeDirectory: $homeDirectory"
  echo "loginShell: $loginShell"
  echo "userPassword: $userPassword"

done

Вам не нужно создавать 200 учетных записей пользователей на каждом ПК. Linux может получать всю информацию о пользователях из LDAP, поэтому учетные записи не существуют локально (то есть в / etc / passwd). Домашний каталог обычно находится на сетевом диске (NFS или аналогичном).

Это стандартный подход. Есть ли причина, по которой вы этого не делаете?

Если вы установите одинаковые атрибуты uidNumber и homeDirectory для каждой учетной записи, все, вероятно, должно работать так, как вы хотите.