Ich arbeite hier auch an dem Problem. Inzwischen kann man sich an dem Server anmelden, was vermutlich mit der Reaktivierung des nscd zu tun hat. Keine Ahnung warum das so sein soll, aber nachdem der nscd läuft geht es halt.
Allerdings kann der opsiconfiged die Benutzer nicht der Grupper opsiadmin zuordnen.
Ich versuche mal zusammenzufassen, was ich bisher weiss:
Der Benutzer existiert und ist Mitglied der Gruppe opsiadmin, soweit es Linux angeht.
Code: Alles auswählen
server:~# getent passwd user
user:x:1000:501::/home/user:/bin/bash
server:~# getent group opsiadmin
opsiadmin:*:1008:user,pcpatch[...]
server:~# id user
uid=1000(user) gid=501(domadmins) Gruppen=[...]1008(opsiadmin),501(domadmin)
Ich habe vor allem bei den Gruppen einen grossen Teil entfernt.
Bei einem Anmeldeversuch entstehen folgende Zeilen im Logfile auf debug level:
Code: Alles auswählen
[5] [Sep 07 10:53:36] Now using log-file '/var/log/opsi/opsiconfd/192.168.67.238.log' for object 0x8e8f06c (Logger.py|330)
[4] [Sep 07 10:53:36] Client '192.168.67.238' did not send cookie (opsiconfd|257)
[4] [Sep 07 10:53:36] New session created (opsiconfd|933)
[5] [Sep 07 10:53:36] Storing hostname '' in session (opsiconfd|307)
[6] [Sep 07 10:53:36] Trying to get username and password from Authorization header (opsiconfd|313)
[6] [Sep 07 10:53:36] Authorization header found (type: basic) (opsiconfd|316)
[5] [Sep 07 10:53:36] Got json-rpc request: {'params': [], 'id': 1, 'method': 'authenticated'} (opsiconfd|240)
[4] [Sep 07 10:53:36] Authorization request from user@192.168.67.238 (opsiconfd|350)
[5] [Sep 07 10:53:36] OS reports 'domainname.local' as default domain (BackendManager.py|110)
[5] [Sep 07 10:53:36] Reading config file '/etc/opsi/backendManager.d/10_file.conf' (BackendManager.py|361)
[5] [Sep 07 10:53:36] Reading config file '/etc/opsi/backendManager.d/11_ldap.conf' (BackendManager.py|361)
[...]
[5] [Sep 07 10:53:36] Using backend OPSI.Backend.OpsiPXEConfd.OpsiPXEConfdBackend. (BackendManager.py|211)
[5] [Sep 07 10:53:36] Using backend OPSI.Backend.File31.File31Backend. (BackendManager.py|211)
[5] [Sep 07 10:53:36] Backend config for 'WakeOnLAN': {'defaultdomain': 'domainname.local'} (BackendManager.py|195)
[5] [Sep 07 10:53:36] Using backend OPSI.Backend.WakeOnLAN.WakeOnLANBackend. (BackendManager.py|211)
[6] [Sep 07 10:53:36] Trying to authenticate by Operating System... (BackendManager.py|161)
[6] [Sep 07 10:53:36] PAM conversation: query 'login:', type '2' (BackendManager.py|304)
[6] [Sep 07 10:53:36] PAM conversation: query 'Password: ', type '1' (BackendManager.py|304)
[6] [Sep 07 10:53:36] Primary group of user 'user' is 'domadmins' (BackendManager.py|334)
[6] [Sep 07 10:53:36] User 'ben' is member of group 'adm' (BackendManager.py|339)
[6] [Sep 07 10:53:36] User 'ben' is member of group 'dvgsamso' (BackendManager.py|339)
[6] [Sep 07 10:53:36] User 'ben' is member of group 'svnuser' (BackendManager.py|339)
[5] [Sep 07 10:53:36] Operating System authentication successful for user 'user', groups 'domadmins,adm,dvgsamso,svnuser' (BackendManager.py|165)
[4] [Sep 07 10:53:36] BackendManager created. (opsiconfd|387)
[5] [Sep 07 10:53:36] RPC method: 'authenticated' params: '[]' (opsiconfd|467)
[5] [Sep 07 10:53:36] Executing: authenticated([]) (opsiconfd|520)
[5] [Sep 07 10:53:36] Got result... (opsiconfd|534)
[5] [Sep 07 10:53:36] Took 0.000s to process authenticated() (opsiconfd|549)
[...]
Man sieht also, dass opsiconfd der Meinung ist, dass der user nicht Mitglied der Gruppe ist.
Wenn ich alles richtig interpretiere ist hier der Teil des Codes aus BackenManayger.py, der Zuständig ist:
Code: Alles auswählen
self.__userGroups = [ grp.getgrgid( pwd.getpwnam(user)[3] )[0] ]
logger.debug("Primary group of user '%s' is '%s'" % (user, self.__userGroups[0]))
groups = grp.getgrall()
for group in groups:
if user in group[3]:
self.__userGroups.append(group[0])
logger.debug("User '%s' is member of group '%s'" % (user, group[0]))
Was mich jetzt wunder ist das hier:
Code: Alles auswählen
server:~# python
Python 2.5.2 (r252:60911, Jan 4 2009, 17:40:26)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import grp;
>>> for gruppe in grp.getgrall():
... if gruppe[0] == "opsiadmin" and "user" in gruppe[3]:
... print "Mitglied von opsiadmin!"
...
Mitglied von opsiadmin!
FYI: Zum Abschluss noch die Systeminfo, die der Kollege bisher nicht mitgepostet hatte
Code: Alles auswählen
samson:~# cat /etc/debian_version
5.0.2
samson:~# dpkg -l '*opsi*' | grep ^ii
ii opsi-atftpd 0.7.dfsg-1.4 advanced TFTP server - opsi version with pcre, fifo and max-blksize patches
ii opsi-configed 1.3.3-2 OPSI config editor
ii opsi-depotserver 3.3-10 server fuer das Softwareverteilungssystem OPSI
ii opsi-linux-bootimage 20090126-1 Linux-Bootimage fuer das Softwareverteilungssystem OPSI
ii opsi-utils 3.3.1.0-4 OPSI utils
ii opsiconfd 2.0.0.12-1 OPSI configuration service
ii opsipxeconfd 0.3.6-1 OPSI PXE configuration daemon
ii python-opsi 3.3.1.0-5 OPSI python library
Eine letzt information noch: Mir ist aufgefallen, daß Python ebenfalls in einer neuen Version installiert wurde. Alte war 2.4 und neue ist 2.5. Also habe ich den manuellen Test (siehe oben) noch einmal gemacht, aber expliziet mit dem 2.4 binary. Hier schlägt der Test fehl. Habe darufhin geprüft ob opsiconfd /usr/bin/python nutzt und ob dieser auf python 2.5 zeigt. Beides ist korrekt. Allerdings tritt der fehler auch nach einem Neustart des Servers weiterhin auf mit dem leichten nebeneffekt, dass der Fehler clientseitig nur sehr träge angezeigt wird.