Необходимо сделать мобильный профиль пользователя:
1. Авторизация в AD на Windows Server 2008
2. Монтирование хомяка по CIFS с ресурса на этом сервере
3. ...
...Авторизация работает на ура, а вот с монтирование возникли некоторые вопросы...
1. При логине доменного юзера из gdm, его хомка монтируется аж 3 раза (/bin/login, ssh и su отрабатывают как надо - глючит только gdm)
2. Есть локальный юзер administrator. При его логине тоже зачем-то монтируется хомяк с сервера, хотя используется всё-равно локальный. Причём gdm просит повторить пароль для pam_mount, причём 3 раза. И принимает только 3 пустых пароля =)
3. Как отмонтировать ресурс, после того, как пользователь вышел?
4. Надо запретить доменным пользователям доступ к флешкам.
5. При логине через раз пишется, что невозможно определить имя группы по её GID (10000 - пользователи домена)
6. И самое неприятное - openoffice не работает, если хомяк находится на сервере. Вылетает с ошибкой ещё до запуска. В хомке при этом появляется дира ~/.openoffice, но она заполнена не до конца. Решается копированием этой диры из хомки любого локального юзера и проставлением прав. Но это не очень элегантное решение. Необходимо понять причину.
Всё остальное вроде работает хорошо.
Конфиги:
1. Хомяки монтируются из /etc/security/pam_mount.conf.xml
<volume fstype="cifs" server="192.168.1.1" path="Homes/%(USER)"
mountpoint="/home/IT/%(USER)" options="workgroup=IT,rw,iocharset=utf8,username=Администратор,password=some_password,gid=10000,umask=022,dir_mode=0700,file_mode=0644"
/>
2. /etc/pam.d/common-account
account requisite pam_unix.so
account sufficient pam_localuser.so
account required pam_winbind.so use_first_pass
3. /etc/pam.d/common-auth
auth sufficient pam_unix.so
auth required pam_winbind.so use_first_pass debug
auth required pam_group.so
auth required pam_mount.so use_first_pass
4. /etc/pam.d/common-pammount
auth optional pam_mount.so try_first_pass
session optional pam_mount.so try_first_pass
5. /etc/pam.d/common-password
password sufficient pam_winbind.so
password required pam_unix.so nullok md5
6. /etc/pam.d/common-session
session optional pam_mkhomedir.so
session required pam_unix.so
session required pam_winbind.so
session optional pam_mount.so use_first_pass
session optional pam_umask.so
7. /etc/pam.d/gdm
#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so
@include common-auth
@include common-account
session required pam_limits.so
@include common-session
session required pam_mount.so use_first_pass
@include common-pammount
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
@include common-password
8. /etc/pam.d/sudo
auth sufficient pam_winbind.so
auth sufficient pam_unix.so use_first_pass
auth required pam_deny.so
@include common-account
9. /etc/samba/smb.conf
[global]
unix charset = UTF-8
dos charset = CP866
display charset = UTF-8
workgroup = IT
server string = %h server (Samba, Ubuntu)
wins support = no
wins server = 192.168.1.1
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = ADS
password server = 192.168.1.1
realm = IT.LOCAL
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
invalid users = root
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *passwd:*password\supdated\ssuccessfully*
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
winbind enum groups = yes
winbind enum users = yes
template homedir = /home/%D/%U
client use spnego = yes
winbind use default domain = yes
winbind refresh tickets = yes
restrict anonymous = 2
domain master = no
local master = no
preferred master = no
os level = 0 printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
map to guest = Bad User
logon path = \\%L\profiles\.msprofile
logon home = \\%L\%U\.9xprofile
logon drive = P:
usershare allow guests = No
netbios name = workstation1
winbind offline logon = yes
10. /etc/nsswitch
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns
networks: files dns
protocols: db files
services: db files
ethers: db files
rpc: dv files
netgroup: files winbind
11. /etc/krb5.conf
[libdefaults]
default_realm = IT.LOCAL
clockskew = 300
# default_realm = EXAMPLE.COM[realms]
IT.LOCAL = {
kdc = server2008.it.local
default_domain = it.local
admin_server = 192.168.1.1:749
}
# EXAMPLE.COM = {
# kdc = kerberos.example.com
# admin_server = kerberos.example.com
# }
[logging]
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log
default = SYSLOG:NOTICE:DAEMON
[domain_realm]
.it.local = IT.LOCAL
.it = IT.LOCAL
[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
minimum_uid = 1
addressless = false
clockskew = 300
debug = false
debug_sensitive = false
existing_ticket = false
external = sshd
initial_prompt = false
subsequent_prompt = false
use_shmem = sshd
validate = false
}
Пробовал на OpenSuse 11 и Ubuntu 8.04. История везде примерно одинаковая. Только OpenSuse ещё пришлось долго и упорно добивать напильником =)
Всем отписавшимся заранее огромное спасибо!