Bug 187852 - udev wait to connect ldap on boot but ldap is not start before udev
Summary: udev wait to connect ldap on boot but ldap is not start before udev
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: udev
Version: 5
Hardware: i686
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Harald Hoyer
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2006-04-03 22:52 UTC by Mickael
Modified: 2007-11-30 22:11 UTC (History)
0 users

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2006-04-05 09:41:46 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Mickael 2006-04-03 22:52:34 UTC
Description of problem:
I use OpenLDAP to authenticate my user on my system.
In FC4 i have no problem.
My problem is with udev when my computer boot.

When i have in my /etc/nsswitch.conf : "passwd/shadow/group: files ldap"
udev wait for connect to LDAP. But OpenLDAP start after many other thing that udev.

When i set in /etc/nsswitch.conf : "passwd/shadow/group: files"
I don't have to wait but i lose my authentication of my users.


Version-Release number of selected component (if applicable):
udev-084-13
openldap-2.3.19-4

How reproducible:
Setup authentication of users and groups in OpenLDAP on the same machine.
My configuration is set in pam, ldap.conf, nsswitch.conf.

Steps to Reproduce:
1.
2.
3.
  
Actual results:
Very long timeout on boot (waiting 5, 10, 20, 40, 80...)

Expected results:
start udev without check the connection with ldap.

Additional info:
Excuse for my english, i am french.

Comment 1 Harald Hoyer 2006-04-04 12:16:43 UTC
Do you have any users, groups in your rules files, which are not in passwd/group??

$ for i in $(perl -n -e 'if (/GROUP="([^"]*)"/) { print "$1\n"; };'
/etc/udev/rules.d/*.rules|sort -u);do grep -q $i /etc/group || echo $i;done

$ for i in $(perl -n -e 'if (/OWNER="([^"]*)"/) { print "$1\n"; };'
/etc/udev/rules.d/*.rules|sort -u);do grep -q $i /etc/passwd || echo $i;done


Comment 2 Mickael 2006-04-04 23:24:55 UTC
I have do many test with your answer.

When i have execute yours command, i have found one user and group (asterisk)
who need to be in the /etc/{passwd,group}.

I use asterisk in CVS and i don't known why, but this version create a file in
the directory /etc/udev/rules.d/ who need the user asterisk.

The problem is now solve for udev.

I have a small question:
udev is the first thing that start on the system.
There are not network or other daemon on the csystem.
Why udev use all possibility (nsswitch) to find all user in the *.rules ?
Is it not possible to restric the search to /etc/passwd only ?

An another thing to finish:
udev the problem is solve, now i need to open another bug report for named who
have the same probleme: named don't start if i have "files ldap" in the
/etc/nsswitch.conf and start if "ldap" is not present. ;((

Very thank to you for your help.


Comment 3 Harald Hoyer 2006-04-05 09:41:46 UTC
> Why udev use all possibility (nsswitch) to find all user in the *.rules ?
This is standard glibc behaviour, which cannot/should not be changed.

> Is it not possible to restric the search to /etc/passwd only ?
I would love to do this for start_udev, but what if the users are in a DB?

Comment 4 Harald Hoyer 2006-04-05 09:48:16 UTC
This may help:
/etc/nsswitch.conf:
passwd:         files ldap [UNAVAIL=return]
group:          files ldap [UNAVAIL=return] 


Note You need to log in before you can comment on or make changes to this bug.