
Я пытаюсь заставить свой Linux-бокс использовать аутентификацию Active Directory. Я считаю, что у меня почти все настроено правильно. Я могу выдавать wbinfo -g
и wbinfo -u
видеть все группы и пользователей соответственно.
Краткое введение в мою установку:
Имя пользователя, которое я использую на моем Linux-ящике для выполнения административных задач, — nick
. Мое имя пользователя Active Directory — nwalke
. У них два разных пароля. Я могу войти в ящик с nick
паролем и этого пользователя, а также могу войти как nwalke
с nwalke
паролем .
Любопытный момент:
После создания домашнего каталога пользователя Active Directory я запускаю скрипт, требующий доступа root. Это делается для настройки некоторых общесистемных вещей, таких как общий ресурс Samba для них. Когда я вхожу как nwalke
, я ввожу свой nwalke
пароль, и все проходит успешно. Затем меня приветствует [sudo] password for nick:
. Если я ввожу свой nwalke
пароль здесь, он говорит Sorry, try again.
. Если я ввожу nick
пароль , он говорит Sorry, user nick is not allowed to execute scriptname as root
.
Если я сделаю groups
как nwalke
, то увижу, что волшебным образом моему пользователю была предоставлена группа nick
.
Теперь я случайно подумал, что nick
у него UID 100, а не 1000. Так что изначально в моем smb.conf
у меня был idmap uid 1000-10000
. Единственное, что я могу вспомнить, это то, что я вошел в систему, nwalke
когда он был еще установлен, и теперь мне просто выдают UID 1000, заставляя Linux думать, что я nick
.
Я не совсем уверен, куда идти дальше. Как я уже сказал, я почти уверен, что Active Directory правильно взаимодействует с моим сервером, но что-то должно быть неправильно отображено на стороне Linux.
Есть предположения?
Вот мой smb.conf
:
[global]
security = ads
netbios name = hostname
realm = COMPANY.COM
password server = adshost.company.com
workgroup = COMPANY
idmap uid = 10000-90000
idmap gid = 10000-90000
winbind separator = +
winbind enum users = no
winbind enum groups = no
winbind use default domain = yes
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
domain master = no
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
Нужно ли мне как-то привязываться к пользователю на Linux-компьютере?
решение1
Похоже, у вас есть перекрытие UID.
Если nwalke
и nick
имеют одинаковый числовой UID, первое совпадение nsswitch победит для таких вещей, как id
, sudo
, ls
, и т. д. (и первое совпадение обычно находится вне файла passwd, если вы не изменили порядок /etc/nsswitch.conf
или эквивалент).
(логины будут работать с любым именем, потому что логин ищет пользователя по имени. Однако наличие двух пользователей с одинаковым именем может вызвать некоторый интересный хаос...)
Ваши локальные ( /etc/passwd
, /etc/group
) и удаленные (NIS, Samba, LDAP, что угодно) UID/GID не должны пересекаться. Исправьте эту основную проблему, и остальное решится само собой.
решение2
Я изменил значение в smb.conf на 10 000, но все равно создается впечатление, что nwalke связывается с 1000. Как решить эту проблему?
Я не могу вспомнить, какой это файл, и у меня сейчас нет системы, чтобы проверить.
Когда пользователь впервые подключается, ему назначается идентификатор, а затем он сохраняется в одной из баз данных Samba в /var/lib/samba/
Взгляните на эту папку, может быть очевидно, какой это файл. Вы можете попробовать остановить Samba и просто переместить/удалить все файлы там, хотя вам нужно будет снова присоединиться к домену, так как учетные данные учетной записи машины также хранятся в одной из этих баз данных.