Bug 187852

Summary: udev wait to connect ldap on boot but ldap is not start before udev
Product: [Fedora] Fedora Reporter: Mickael <micled>
Component: udevAssignee: Harald Hoyer <harald>
Status: CLOSED NOTABUG QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 5   
Target Milestone: ---   
Target Release: ---   
Hardware: i686   
OS: Linux   
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-04-05 05:41:46 EDT Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Description Mickael 2006-04-03 18:52:34 EDT
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):

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:
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 08:16:43 EDT
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 19:24:55 EDT
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 05:41:46 EDT
> 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 05:48:16 EDT
This may help:
passwd:         files ldap [UNAVAIL=return]
group:          files ldap [UNAVAIL=return]