В моей лаборатории около 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 для каждой учетной записи, все, вероятно, должно работать так, как вы хотите.