в общем, идея такая: есть домен на samba-3.0.33. как backend используется winbind -> ldap. я завожу пользователя через net user add, почти все прекрасно кроме того, что по умолчанию ему прописывается (pdbedit -L -v) Home Directory: \\domain\user (getent passwd) user:*:10003:10000:user:/home/domain/user:/bin/false в соответствии с умолчательным smb.conf template homedir = /home/%D/%U но проблема в том, что эта директория не создается при этом (/home/domain создана с правами root:domadmins 775) И пользователь в принципе видит свой каталог, определенный по умолчанию в [Homes], но воспользоваться не может - ему отвечается "у вас нет прав или каталога не существует". но есть уже почти готовое решение: /etc/pam.d/system-auth-winbind которое использует pam_winbind и pam_mkhomedir не так давно был введен control system-auth, который сейчас легко можно переключать между local и ldap. возникает естественное предложение - интегрировать system-auth-winbind в этот control, для этого нужно только дописать system-auth-use_first_pass-winbind и, соотв, интегрировать его как-нужно. надеюсь, это получится как раз как описано в smb.conf комментарии: # template homedir determines the home directory for winbind users, with # %D expanding to their domain name and %U expanding to their username. # Make sure that PAM-entry for application which uses pam_winbind is able # to auto-create those directories using something like pam_mkhomedir. Also, make sure # that domain (%D) directory do exist in advance as pam_mkhomedir does not create it (/home/%D можно создавать тоже заранее в скрипте, а то слишком неочевидно, что надо заранее создавать это вручную ;)
Патч приветствуется.
нынешним собирателям самбы: еще немного инфы раскопал человек по ссылкам http://permalink.gmane.org/gmane.linux.altlinux.community/118661 Что бы авторизация шла через winbind необходимо привести /etc/pam.d/gdm к виду: #%PAM-1.0 #auth required pam_env.so #auth include system-auth #auth required pam_nologin.so #account include system-auth #password include system-auth #session include system-auth #session optional pam_console.so auth include system-auth-winbind auth required pam_nologin.so account include system-auth-winbind password include system-auth-winbind session include system-auth-winbind session optional pam_console.so А /etc/pam.d/system-auth-winbind к виду: #%PAM-1.0 auth required pam_securetty.so auth required pam_nologin.so #auth sufficient pam_winbind.so auth sufficient pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login auth include system-auth-use_first_pass account sufficient pam_winbind.so account include system-auth password sufficient pam_winbind.so password include system-auth-use_first_pass # We use pam_mkhomedir to create home dirs for incoming domain users # Note used umask, it will result in rwxr-x--x access rights #session required pam_mkhomedir.so skel=/etc/skel/ umask=0026 session required pam_mkhomedir.so skel=/etc/skel/ umask=0077 session include system-auth и http://permalink.gmane.org/gmane.linux.altlinux.community/118681 По мимо конфигурации PAM нужно было добавить несколько опций в самбу: # Диапазоны идентификаторов для виртуальных пользователей и групп. idmap uid = 10000 - 40000 idmap gid = 10000 - 40000 winbind enum groups = yes winbind enum users = yes # Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп # будут использоваться с доменом, т.е. вместо username - DOMAIN\username. winbind use default domain = yes # Если вы хотите разрещить использовать командную строку для пользователей домена, то # добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false template shell = /bin/bash # Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку winbind refresh tickets = yes Перезагрузился и все заработало. ------------------ сам еще не пробовал..
Мне негде протестировать подобную конфигурацию, протестированные патчи категорически приветствуются.
протестировал конфигурацию такую.. system-auth-winbind ------------ #%PAM-1.0 auth sufficient pam_tcb.so shadow fork prefix=$2a$ count=8 nullok auth required pam_winbind.so use_first_pass account sufficient pam_tcb.so shadow fork account required pam_winbind.so use_first_pass password sufficient pam_winbind.so password required pam_passwdqc.so config=/etc/passwdqc.conf password sufficient pam_tcb.so use_authtok shadow fork prefix=$2a$ count=8 nullok write_to=tcb session sufficient pam_tcb.so session required pam_winbind.so session required pam_mktemp.so session required pam_limits.so # We use pam_mkhomedir to create home dirs for incoming domain users session required pam_mkhomedir.so skel=/etc/skel/ umask=0077 ----------------------- system-auth-winbind-use_first_pass ------------ #%PAM-1.0 auth required pam_winbind.so use_first_pass password required pam_winbind.so use_authtok -------------- ссылки system-auth и system-auth-use_first_pass указывают на них. работает - login, kdm, kscreensaver, ssh, su, sudo доменные пользователи работают наравне с локальными (сначала проверяется локальный). например (lykov_m доменный пользователь) -------------- May 27 13:42:21 combr kdm: :0[5621]: pam_tcb(kde4:auth): Credentials for user lykov_m unknown May 27 13:42:21 combr kdm: :0[5585]: pam_tcb(kde4:auth): Authentication failed for UNKNOWN USER from (uid=0) May 27 13:42:21 combr kdm: :0[5585]: pam_winbind(kde4:auth): getting password (0x00000010) May 27 13:42:21 combr kdm: :0[5585]: pam_winbind(kde4:auth): pam_get_item returned a password May 27 13:42:21 combr kdm: :0[5585]: pam_winbind(kde4:auth): user 'lykov_m' granted access May 27 13:42:25 combr kdm: :0[5585]: pam_winbind(kde4:account): user 'lykov_m' granted access May 27 13:42:25 combr kdm: :0[5585]: pam_tcb(kde4:session): Session opened for lykov_m by (uid=0) ------------- важно, чтобы в smb.conf было указано template shell = /bin/bash потому что из ldap поле loginShell не берется, хотя и ищется в числе прочих. вопрос с группами не проработан, в этом варианте доменная группа одна по умолчанию: $ id uid=10058(lykov_m) gid=10006(domain users) группы=10006(domain users),10(wheel) домашний каталог создается на ходу вместе с вышестоящей папкой (по имени домена) при логине в kdm создаются и остальные папки по xdg (документы и др.) все это на p6 с samba-common-3.5.8-alt3 (сервер samba-3.0.33 на server4.0) естественно что winbind дожен быть настроен заранее $ wbinfo -a lykov_m%passw plaintext password authentication succeeded
правда, есть еще одна засада: если установлена политика периодической смены паролей, и пароль меняется через passwd (current NT password, new NT password, retype new NT password), то при этом поле sambaLMPassword (в LDAP) уничтожается (очищается). после чего компьютер (machine trust account) считается неаутентифицированной, и при следующей попытке логина до проверки пароля пользователя не доходит, говоря на machine account NT_STATUS_ACCESS_DENIED. новый net rpc join member решает (заполняет поле sambaLMPassword).