PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Samba3 Domäne mit Roaming Profiles



neonknight
01.09.05, 15:15
Hallo Samba-Tänzer

Ich versuche nun schon seit viiiiel zu langer Zeit, eine Samba-Domäne mit Roaming Profiles aufzusetzen. Ich kann Windows-Maschinen (mit XP Pro) zur Domäne hinzufügen, Benutzer können sich anmelden - jedoch erhalten sie dann immer die Meldung, dass das servergespeicherte Profil nicht gefunden werden könne. Dies ist mir unverständlich, hoffentlich sieht einer von euch den Fehler.

Meine /etc/samba/smb.conf:


[global]
workgroup = TEST
netbios name = python
os level = 33
domain master = yes
local master = yes
security = user
domain logons = yes
wins support = yes
dns proxy = no
logon path = \\python\profiles\%U
logon drive = H:
logon script = %u.bat
add machine script = /usr/sbin/useradd -d /dev/null -g clientpc -s /bin/false %u
username level = 16
passdb backend = tdbsam
dos charset = 850
unix charset = utf-8
time server = yes
admin users = root
vfs object = vscan-clamav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf

[homes]
comment = Home Directories
browseable = no
writeable = yes
path = /home/%U
guest ok = no
inherit permissions = yes

[netlogon]
comment = Network Logon Service
path = /var/lib/samba/netlogon
read only = yes
write list = ntadmin
guest ok = yes
public = no
browseable = no

[profiles]
comment = User Profiles
path = /var/lib/samba/profiles/
read only = no
create mask = 0600
directory mask = 0700
writeable = yes
browseable = no
root preexec = PROFILE=/var/lib/samba/profiles/%U; if [ ! -e $PROFILE ]; then mkdir -pm700 $PROFILE; chown %U:%G $PROFILE; fi


Die Berechtigungen in /var/lib/samba/netlogon und /var/lib/samba/profiles sollten eigentlich auch stimmen:


# ls -l /var/lib/samba/
insgesamt 0
drwxr-xr-x 3 root root 168 1. Sep 13:20 netlogon
drwxr-xr-x 7 root root 168 4. Aug 10:41 printers
drwx------ 2 root root 168 1. Sep 12:22 private
drwxrwxrwx 5 root root 144 1. Sep 14:37 profiles

# ls -l /var/lib/samba/netlogon/
drwxr-xr-x 13 root root 472 1. Sep 14:33 Default User
-rw-r--r-- 1 testuser users 164 1. Sep 13:56 testuser.bat

# ls -l /var/lib/samba/profiles/
drwx------ 14 root root 480 31. Aug 16:46 root
drwx------ 14 testuser users 480 1. Sep 14:42 testuser


Scheinbar wird das Anmeldeskript in netlogon nicht ausgeführt. Wenn ich es aufrufe über die Netzwerkumgebung, erhalte ich die Meldung, dass ich keine Zugriffsberechtung hätte. Das "Default User" Verzeichnis kann ich hingegen betreten und enthaltene Dateien öffnen. Ist das normal oder läuft schon hier etwas schief?
Das Benutzerverzeichnis unter /var/lib/samba/profiles wird nicht automatisch erstellt, obwohl es dies ja eigentlich durch die "root preexec" Zeile machen sollte. Ich habe das Verzeichnis von Hand angelegt, der User kann von Windows aus hineinschreiben.
Das Homeverzeichnis wird nach H: eingehängt und ist schreibbar.

Ich habe es erst mit dem HowTo von http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/ versucht, danach bin ich auf http://www.tecchannel.de/index.cfm?pid=197&pk=402321&p=1 gestossen. Das Resultat war identisch :(

Samba ist Version 3.0.14a
Als Clients habe ich zwei Rechner mit WindowsXP SP2 ausprobiert

Schon im Voraus vielen Dank!

Sebastian Henrich
05.09.05, 17:02
Was steht denn nach einem fehlgeschlagenen Anmeldeversuch in dem Samba Log (/var/log/samba/smbd.log)?

markus281
05.09.05, 21:51
Tschuldige für die blöde Frage, aber heißt das ganze nicht irgendwas mit logonserver\netlogon\basispfad etc. im Windows ?
Und kannst du Profile nicht lokal speichern lassen ?

neonknight
06.09.05, 14:08
Danke für eure Antworten!

Ich habe einen Tippfehler in der "root preexec"-Zeile gefunden. Wenn das Profilverzeichnis beim anmelden nicht existiert, so wird es nun tatsächlich angelegt. Beim erstmaligen Abmelden wird dann auch das Profil auf den Server geschrieben und anschliessend trotzdem die Fehlermeldung ausgegeben, dass das Profil nicht aktualisiert werden könne. Bei weiteren Login-Versuchen scheitert es wie gehabt.
Bei den gescheiterten Schreib- und Leseversuchen lautet die letzte Zeile der Windows-Fehlermeldung "Access Denied". Kann das damit zusammenhängen, dass ich nicht auf die Skripte im Netlogon-Share zugreifen kann?


Tschuldige für die blöde Frage, aber heißt das ganze nicht irgendwas mit logonserver\netlogon\basispfad etc. im Windows ?
Hmmm, wie meinst du das genau? Muss ich da bei Windows etwas ändern (das wär etwas doof, da müsste ich immerhin gegen 40 Workstations anpassen - unter Annahme, dass Samba jemals laufen wird :ugly: )? Oder ist das eine Änderung am Server?
Es gibt für Samba noch den Parameter "logon home", aber der ist gemäss Doku nur für Win98 relevant.


Und kannst du Profile nicht lokal speichern lassen ?
Nein, definitiv nicht. Einige unserer Mitarbeiter sind zwingend auf ein Roaming Profile angewiesen, da sie keinen festen Arbeitsplatz haben sondern dort arbeiten, wo ein PC frei ist.



Was steht denn nach einem fehlgeschlagenen Anmeldeversuch in dem Samba Log (/var/log/samba/smbd.log)?

mit "log level = 2" erhalte ich:

# tail -f log.smbd -n 0
[2005/09/06 13:51:55, 0] lib/util_sock.c:get_peer_addr(1150)
getpeername failed. Error was Transport endpoint is not connected

# tail -f log.laptop002 -n 0
[2005/09/06 13:51:56, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 13:51:56, 2] rpc_parse/parse_prs.c:netsec_decode(1594)
netsec_decode: FAILED: packet sequence number:
[2005/09/06 13:51:56, 2] lib/util.c:dump_data(1995)
[000] 4D 4C D1 76 16 94 32 23 ML.v..2#
[2005/09/06 13:51:56, 2] rpc_parse/parse_prs.c:netsec_decode(1596)
should be:
[2005/09/06 13:51:56, 2] lib/util.c:dump_data(1995)
[000] 00 00 00 00 80 00 00 00 ........
[2005/09/06 13:51:56, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 13:51:56, 2] auth/auth.c:check_ntlm_password(305)
check_ntlm_password: authentication for user [testuser] -> [testuser] -> [tes
tuser] succeeded
[2005/09/06 13:51:57, 2] smbd/server.c:exit_server(609)
Closing connections
[2005/09/06 13:51:57, 2] auth/auth.c:check_ntlm_password(305)
check_ntlm_password: authentication for user [testuser] -> [testuser] -> [tes
tuser] succeeded
[2005/09/06 13:51:57, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 13:51:57, 2] rpc_server/srv_samr_nt.c:_samr_lookup_domain(2580)
Returning domain sid for domain TEST -> S-1-5-21-2915346977-4114269081-2006
90199
[2005/09/06 13:51:57, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 13:51:57, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 13:51:57, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 13:51:57, 1] smbd/service.c:make_connection_snum(642)
irclaptop002 (130.60.243.171) connect to service profiles initially as user te
stuser (uid=1003, gid=100) (pid 17862)
[2005/09/06 13:51:58, 2] smbd/dosmode.c:unix_mode(60)
unix_mode(testuser) inheriting from .
[2005/09/06 13:51:58, 2] smbd/dosmode.c:unix_mode(68)
unix_mode(testuser) inherit mode 40777
[2005/09/06 13:51:58, 2] smbd/dosmode.c:unix_mode(60)
unix_mode(testuser) inheriting from .
[2005/09/06 13:51:58, 2] smbd/dosmode.c:unix_mode(68)
unix_mode(testuser) inherit mode 40777
[2005/09/06 13:52:03, 2] auth/auth.c:check_ntlm_password(305)
check_ntlm_password: authentication for user [testuser] -> [testuser] -> [tes
tuser] succeeded
[2005/09/06 13:52:03, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 13:52:03, 1] smbd/service.c:make_connection_snum(642)
irclaptop002 (130.60.243.171) connect to service netlogon initially as user te
stuser (uid=1003, gid=100) (pid 17860)
[2005/09/06 13:52:04, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 13:52:04, 1] smbd/service.c:make_connection_snum(642)
irclaptop002 (130.60.243.171) connect to service testuser initially as user te
stuser (uid=1003, gid=100) (pid 17860)
[2005/09/06 13:52:05, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 13:52:07, 1] smbd/service.c:close_cnum(830)
irclaptop002 (130.60.243.171) closed connection to service profiles
[2005/09/06 13:52:07, 2] smbd/server.c:exit_server(609)
Closing connections
[2005/09/06 13:52:12, 2] smbd/dosmode.c:unix_mode(60)
unix_mode(NvQTwk) inheriting from .
[2005/09/06 13:52:12, 2] smbd/dosmode.c:unix_mode(68)
unix_mode(NvQTwk) inherit mode 40700
[2005/09/06 13:52:20, 2] smbd/dosmode.c:unix_mode(60)
unix_mode(ti_monitor.msg) inheriting from .
[2005/09/06 13:52:20, 2] smbd/dosmode.c:unix_mode(68)
unix_mode(ti_monitor.msg) inherit mode 40700

Sebastian Henrich
06.09.05, 15:23
Laut dem Log tritt bei dem Anmelden kein Fehler auf, falls ich nichts übersehen habe.

Kannst du mal bitte den Log-Ausschnitt vom Abmelden posten.

Vielleicht liegt es an den Rechten mit denen die Profile gespeichert werden sollen. Überprüf mal die Dateirechte und die Besitzer unter denen die Profile angelegt werden.

Roaming Profiles sind generell möglich. Bei mir läuft hier ein Samba 2.2.12 und da klappt es. Ich gehe davon aus, dass das bei der 3.0 Version auch geht.

neonknight
06.09.05, 16:22
Laut dem Log tritt bei dem Anmelden kein Fehler auf, falls ich nichts übersehen habe.
Ja, das irritiert mich ein Bisschen... So habe ich keinen wirklichen Anhaltspunkt.



Kannst du mal bitte den Log-Ausschnitt vom Abmelden posten.

Ich hab das Profil auf dem Server gelöscht, so dass ohne Fehler angemeldet werden kann. Beim Abmelden hat er aber merkwürdigerweise diesmal keine Daten ins Profil geschrieben (hat er vorher aber!). Nach der Anmeldung kann ich aufs Profilverzeichnis zugreifen und hineinschreiben.


# tail -f log.irclaptop002 -n 0
[2005/09/06 16:06:55, 2] rpc_server/srv_samr_nt.c:_samr_lookup_domain(2580)
Returning domain sid for domain TEST -> S-1-5-21-2915346977-4114269081-2006
90199
[2005/09/06 16:06:59, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 16:06:59, 2] auth/auth.c:check_ntlm_password(305)
check_ntlm_password: authentication for user [testuser] -> [testuser] -> [tes
tuser] succeeded
[2005/09/06 16:06:59, 2] lib/access.c:check_access(324)
Allowed connection from (130.60.243.171)
[2005/09/06 16:06:59, 1] smbd/service.c:make_connection_snum(642)
irclaptop002 (130.60.243.171) connect to service profiles initially as user te
stuser (uid=1003, gid=100) (pid 18265)
[2005/09/06 16:06:59, 1] smbd/service.c:close_cnum(830)
irclaptop002 (130.60.243.171) closed connection to service profiles
[2005/09/06 16:07:06, 1] smbd/service.c:close_cnum(830)
irclaptop002 (130.60.243.171) closed connection to service netlogon
[2005/09/06 16:07:06, 1] smbd/service.c:close_cnum(830)
irclaptop002 (130.60.243.171) closed connection to service testuser
[2005/09/06 16:07:06, 2] smbd/server.c:exit_server(609)
Closing connections
[2005/09/06 16:07:06, 2] smbd/server.c:exit_server(609)
Closing connections




Vielleicht liegt es an den Rechten mit denen die Profile gespeichert werden sollen. Überprüf mal die Dateirechte und die Besitzer unter denen die Profile angelegt werden.
Die sollten eigentlich korrekt sein, siehe auch mein Ausgangsposting.

Die Anmeldeskripte müssen scheinbar explizit dem User gehören, welcher sie ausführen will, ansonsten kann man gar nicht darauf zugreifen. Das habe ich jetzt geändert. Allerdings wird das Skript beim Anmelden trotzdem nicht ausgeführt :( Manuelles auswählen nach dem Login funktioniert.

Sebastian Henrich
06.09.05, 16:45
Die Netlogon Skripte sind unabhängig von den Roaming Profiles. Du kannst Roaming Profiles benutzen ohne Netlogon Skripte zu verwenden. Das Problem mit den Skripten liegt sehr wahrscheinlich daran, dass du "logon script = %u.bat" anstatt "logon script = %U.bat" gesetzt hast.

Laut dem "The Official Samba-3 Howto And Reference Guide" steht %u für "username of the current service if any" und %U "session username (the username that the client wanted, not necessarily the same as the one they got)"

neonknight
06.09.05, 16:56
Das Skript wird jetzt auch ausgeführt, es wird an dem von dir genannten Problem gescheitert sein.

OK, mit einem Hack hab ichs soeben zum Laufen bekommen:
logon path = \\python\%U
so geht's. Dann wird das Profil nach /home/testuser geschrieben. Wieso es dort geht, aber in /var/lib/samba/profiles/testuser nicht, ist mir unverständlich...

Interessanterweise nutzt der Client jetzt auch das Profil aus \\python\netlogon\Default User, wenn ein neues Profil erstellt werden muss.

Alles in allem läuft es also, wenn auch mit einem Hack, den ich gerne noch korrigieren würde...

Sebastian Henrich
06.09.05, 17:22
Hat der Unix Benutzer der zu testuser gehört in "/var/lib/samba/profiles/" ausreichende Schreibrechte und ist das Verzeichnis für ihn erreichbar? Meld dich mal als testuser an den Unixserver an und versuch das Verzeichnis "/var/lib/samba/profiles/testuser" zu erstellen.

neonknight
06.09.05, 17:29
Hat der Unix Benutzer der zu testuser gehört in "/var/lib/samba/profiles/" ausreichende Schreibrechte und ist das Verzeichnis für ihn erreichbar? Meld dich mal als testuser an den Unixserver an und versuch das Verzeichnis "/var/lib/samba/profiles/testuser" zu erstellen.
Ja, hat er. Das Verzeichnis kann ich erstellen.

Sebastian Henrich
06.09.05, 17:49
Ich weiß nicht ob das der Grund ist, aber nimm mal den "/" hinter "/var/lib/samba/profiles/" weg.

Wenn das nichts bringt, versuch mal das Skript zum Erstellen des Profil-Verzeichnisses auszukommentieren und das Verzeichnis von Hand zu erstellen. Wenn es dann geht liegt es vielleicht am Skript.

neonknight
06.09.05, 18:16
Beides getestet, daran liegt's nicht. (das Verzeichnis wurde vom Skript immer korrekt erstellt - und Erstellung von Hand habe ich auch schon ausprobiert...)