ubuntuusers.de

Samba PDC + LDAP - smbldap_open - Problem

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

MorphAH

Anmeldungsdatum:
2. Juli 2007

Beiträge: 11

Hi,
ich versuche gerade vergebens einen PDC per Samba mit einem LDAP-Verzeichnis aufzubauen.
Dabei bin ich nahezu strikt nach folgendem Tutorial vorgegangen:
http://www.howtoforge.com/openldap-samba-domain-controller-ubuntu7.10-p3

Ein paar Daten zu meiner angepassten Konfiguration:
OS des Servers : Ubuntu 8.04 JeOS (SERVER)
OS des Clients: WinXP Home (PC2)
Domäne : localzone.de

Wenn ich nun versuche, mich mit dem Client auf dem Server anzumelden,
erscheint auf dem Client die Meldung: "Zugriff verweigert",
daraus schließe ich, dass der Benutzer korrekt erstellt und auch authentifiziert wurde,
da keine Meldung bez. falschen Benutzer/Password ausgegeben wird.

Hier die Konfig-Dateien:

smb.conf:

[global]
	log file = /var/log/samba.log
	netbios name = server
	server string = %h server (Samba, Ubuntu JeOS)
	workgroup = localzone.de
	os level = 20
	log level= 2
	encrypt passwords = true
	security = user
	

###PDC
	domain logons = yes
	obey pam restrictions = no

###Ldap-Einstellungen###
	passdb backend = ldapsam:ldap://localhost/
	ldap admin dn = cn=admin,dc=localzone,dc=de
	ldap suffix = dc=localzone,dc=de
	ldap group suffix = ou=Groups
	ldap user suffix = ou=Users
	ldap machine suffix = ou=Computers
	ldap idmap suffix = ou=Users
	; Do ldap passwd sync
	ldap passwd sync = Yes
	ldap delete dn = Yes

	logon path = 
	
###Scripts
	add user script = /usr/sbin/smbldap-useradd -m "%u"
	delete user script = /usr/sbin/smbldap-userdel "%u"
	add machine script = /usr/sbin/smbldap-useradd -w "%u"
	add group script = /usr/sbin/smbldap-groupadd -p "%g"
	delete group script = /usr/sbin/smbldap-groupdel "%g"
	add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
	delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
	set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"

	passwd program = /usr/sbin/smbldap-passwd %u
	passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*


[homes]
   browseable = no
   writeable = yes

[root]
	writeable = yes
	path = /

slapd.conf:

# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema

include		/etc/ldap/schema/samba.schema
include		/etc/ldap/schema/misc.schema

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel        none

# Where the dynamically loaded modules are stored
modulepath	/usr/lib/ldap
moduleload	back_bdb

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

#######################################################################
# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend		bdb

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend		<other>

#######################################################################
# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        bdb

# The base of your directory in database #1
suffix dc=localzone,dc=de

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
rootdn cn=admin,dc=localzone,dc=de

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# The dbconfig settings are used to generate a DB_CONFIG file the first
# time slapd starts.  They do NOT override existing an existing DB_CONFIG
# file.  You should therefore change these settings in DB_CONFIG directly
# or remove DB_CONFIG and restart slapd for changes to take effect.

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057 for more
# information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index           objectClass 	eq
index		sambaSID	eq
index		sambaSIDList	eq
index		sambaGroupType	eq

# Save the time that the entry gets modified, for database #1
lastmod         on

# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint      512 30

# Where to store the replica logs for database #1
# replogfile	/var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,sambaNTPassword,sambaLMPassword
        by dn="cn=admin,dc=localzone,dc=de" write
        by anonymous auth
        by self write
        by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work 
# happily.
access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
access to *
        by dn="cn=admin,dc=localzone,dc=de" write
        by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=localzone,dc=de" write
#        by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be bdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database        <other>

# The base of your directory for database #2
#suffix		"dc=debian,dc=org"
rootpw {crypt}352MLF9Jv/6ZM

Deweiteren hier die Auszüge aus meiner samba.log-Datei im Log-Level 2
nach einer erfolglosen Anmeldung wie oben beschrieben:

[2008/06/20 09:15:23, 2] smbd/sesssetup.c:setup_new_vc_session(1209)
  setup_new_vc_session: New VC == 0, if NT4.x compatible we would close all old resources.
[2008/06/20 09:15:23, 2] lib/smbldap.c:smbldap_open_connection(786)
  smbldap_open_connection: connection opened
[2008/06/20 09:15:23, 2] passdb/pdb_ldap.c:init_sam_from_ldap(545)
  init_sam_from_ldap: Entry found for user: ricky
[2008/06/20 09:15:23, 2] passdb/pdb_ldap.c:init_group_from_ldap(2162)
  init_group_from_ldap: Entry found for group: 513
[2008/06/20 09:15:23, 2] passdb/pdb_ldap.c:init_group_from_ldap(2162)
  init_group_from_ldap: Entry found for group: 513
[2008/06/20 09:15:23, 2] auth/auth.c:check_ntlm_password(309)
  check_ntlm_password:  authentication for user [ricky] -> [ricky] -> [ricky] succeeded
[2008/06/20 09:15:23, 2] smbd/sesssetup.c:setup_new_vc_session(1209)
  setup_new_vc_session: New VC == 0, if NT4.x compatible we would close all old resources.
[2008/06/20 09:15:23, 2] smbd/reply.c:reply_special(324)
[2008/06/20 09:15:23, 2] smbd/sesssetup.c:setup_new_vc_session(1209)
  setup_new_vc_session: New VC == 0, if NT4.x compatible we would close all old resources.
[2008/06/20 09:15:23, 2] lib/smbldap.c:smbldap_open_connection(786)
  smbldap_open_connection: connection opened
[2008/06/20 09:15:23, 2] passdb/pdb_ldap.c:init_sam_from_ldap(545)
  init_sam_from_ldap: Entry found for user: ricky
[2008/06/20 09:15:23, 2] passdb/pdb_ldap.c:init_group_from_ldap(2162)
  init_group_from_ldap: Entry found for group: 513
[2008/06/20 09:15:23, 2] passdb/pdb_ldap.c:init_group_from_ldap(2162)
  init_group_from_ldap: Entry found for group: 513
[2008/06/20 09:15:23, 2] auth/auth.c:check_ntlm_password(309)
  check_ntlm_password:  authentication for user [ricky] -> [ricky] -> [ricky] succeeded
  netbios connect: name1=SERVER          name2=PC2            
[2008/06/20 09:15:23, 2] smbd/reply.c:reply_special(331)
  netbios connect: local=server remote=pc2, name type = 0
[2008/06/20 09:15:23, 2] rpc_server/srv_samr_nt.c:_samr_lookup_domain(2916)
  Returning domain sid for domain LOCALZONE.DE -> S-1-5-21-642033337-4056483930-3229589705
[2008/06/20 09:15:23, 2] rpc_server/srv_samr_nt.c:_samr_lookup_domain(2916)
  Returning domain sid for domain LOCALZONE.DE -> S-1-5-21-642033337-4056483930-3229589705
[2008/06/20 09:15:23, 2] lib/smbldap_util.c:smbldap_search_domain_info(256)
  smbldap_search_domain_info: Searching for:[(&(objectClass=sambaDomain)(sambaDomainName=LOCALZONE.DE))]
[2008/06/20 09:15:23, 0] lib/smbldap.c:smbldap_open(1014)
  smbldap_open: cannot access LDAP when not root..
[2008/06/20 09:15:23, 2] lib/smbldap_util.c:smbldap_search_domain_info(263)
  smbldap_search_domain_info: Problem during LDAPsearch: Insufficient access
[2008/06/20 09:15:23, 2] lib/smbldap_util.c:smbldap_search_domain_info(264)
  smbldap_search_domain_info: Query was: dc=localzone,dc=de, (&(objectClass=sambaDomain)(sambaDomainName=LOCALZONE.DE))

Könnt ihr mit dem Problem etwas anfangen und mir sagen, wie ich es lösen kann?
MfG

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

Es könnte sein, dass der User keinen Zugriff auf sein Profilverzeichnis auf dem Server hat. Ich hatte dieses Problem am Anfang auch. Zusätzlich wäre es gut, wenn du im Abschnitt

[homes]
   browseable = no
   writeable = yes


einen

path = /home/%U

angeben würdest, damit jeder Nutzer sein eigenes Home hat. Dort dann noch die Rechte und den Besitz richtig einstellen und es sollte klappen.

MfG Dalai

MorphAH

(Themenstarter)

Anmeldungsdatum:
2. Juli 2007

Beiträge: 11

Habe nun die smb.conf entsprechend angepasst:

[global]
	security = user
	encrypt passwords = yes
	netbiosname = server
	server string = Samba %v (JeOS-PDC) @ localzone.de
	
	log level = 2
	log file = /var/log/samba.log


###PDC###
	workgroup = localzone.de
	domain master = yes
	domain logons = yes

	passdb backend = ldapsam:ldap://localhost/
	obey pam restrictions = no

###LDAP###
	ldap admin dn = cn=admin,dc=localzone,dc=de
	ldap suffix = dc=localzone, dc=de
	ldap group suffix = ou=Groups
	ldap user suffix = ou=Users
	ldap machine suffix = ou=Computers
	ldap idmap suffix = ou=Users
	ldap delete dn = Yes

	ldap passwd sync = Yes
	passwd program = /usr/sbin/smbldap-passwd %u
	passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*

###LDAP-Skripte###
	add user script = /usr/sbin/smbldap-useradd -m "%u"
	delete user script = /usr/sbin/smbldap-userdel "%u"
	add machine script = /usr/sbin/smbldap-useradd -w "%u"
	add group script = /usr/sbin/smbldap-groupadd -p "%g"
	delete group script = /usr/sbin/smbldap-groupdel "%g"
	add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
	delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
	set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
	
###Anmeldung###
	logon drive = Z:
	logon path = \\server\%U
	logon home = \\server\%U
	logon script = %U.bat


[Wurzel]
	path = /
	writeable = yes
[homes]
	path = /home/%U
	browseable = no
	writeable = yes

Problem ist aber immernoch, dass ich mich
der Domäne als eingeschränkter Nutzer nicht anschließen kann.

Melde ich mich hingegen als "root" an, funktioniert es wie gewünscht.
Habe die Dateirechte des Profile-Ordners bereits testweise auf 777 gesetzt,
ohne Erfolg...

Greift die Anmeldung noch auf andere Dateien/Ordner zu, die nicht in der smb.conf angegeben sind?

MfG

Dalai

Avatar von Dalai

Anmeldungsdatum:
16. Juni 2008

Beiträge: 2316

Wohnort: Meiningen

MorphAH hat geschrieben:

Greift die Anmeldung noch auf andere Dateien/Ordner zu, die nicht in der smb.conf angegeben sind?

Ja, wenn du logon path definierst, dann musst du auch eine [profiles] section erstellen, siehe smb.conf:

smb.conf hat geschrieben:

# The following setting only takes effect if 'domain logons' is set
# It specifies the location of the user's profile directory
# from the client point of view)
# The following required a [profiles] share to be setup on the
# samba server (see below)

; logon path = \\%N\profiles\%U
# Another common choice is storing the profile in the user's home directory
# logon path = \\%N\profile\%U

Ich habe bei mir stehen:

[global]
logon path = \\%N\profile\%U
logon home = \\%N\%U

[homes]
   comment = Windows-Profil (%U)
   path = /home/samba/profile/%u/
   browseable = no
   writeable = yes
   create mask = 0660
   directory mask = 0770
   write list = %U, administrator
   csc policy = disable
   inherit owner = yes
   force group = root
   valid users = %U, administrator

[profile]
   comment = Nutzerprofil
   path = /home/samba/profile
   guest ok = no
   browseable = no
   writeable = yes
   create mask = 0660
   directory mask = 0770
   valid users = %U, administrator
   write list = %U, administrator
   csc policy = disable
   inherit owner = yes
   force group = root

Damit funktioniert das einwandfrei. Zusätzlich müssen natürlich die Besitz- und Zugriffsrechte gesetzt werden. Ich mache das - wie oben zu sehen - mit create mask und directory mask. Das Anmelden funktioniert natürlich nur, wenn das Vaterverzeichnis für diese(n) Nutzer schreibbar ist 😉.
Die Besitzrechte, die ich bei meinen Home-Verzeichnissen habe: <user>:root (damit administrator aus der Gruppe root auch schreiben darf); Zugriffsrechte siehe oben.

Der Unterschied zwischen logon path und logon home hat zusätzlich den Vorteil, dass das Windowsprofil sich nicht mit den Daten des Users in dessen Home überschneidet bzw. das "zumüllt". Also Vorsicht, wenn du diese beiden auf denselben Wert setzt.

MfG Dalai

MorphAH

(Themenstarter)

Anmeldungsdatum:
2. Juli 2007

Beiträge: 11

Also habe das Problem nun gelöst,
am logon path lag es nicht,
das hat alles gestimmt...

http://ubuntuforums.org/showthread.php?t=640760&page=25

Habe den Benutzer ricky einmal vollständig gelöscht und wieder neu angelegt,
und siehe da, ich konnte mich problemlos in der Domäne anmelden...
Thx4Help

Antworten |