xfs
[Top] [All Lists]

Re: [BUG] xfs_quota: can't handle the users managed by LDAP

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [BUG] xfs_quota: can't handle the users managed by LDAP
From: Satoru Takeuchi <takeuchi_satoru@xxxxxxxxxxxxxx>
Date: Mon, 26 Nov 2012 17:48:01 +0900
Cc: xfs ML <xfs@xxxxxxxxxxx>
In-reply-to: <20121122233757.GY2591@dastard>
References: <50ADB27F.8070806@xxxxxxxxxxxxxx> <20121122233757.GY2591@dastard>
User-agent: Mozilla/5.0 (Windows NT 6.0; rv:15.0) Gecko/20120907 Thunderbird/15.0.1
(2012/11/23 8:37), Dave Chinner wrote:
> On Thu, Nov 22, 2012 at 02:05:03PM +0900, Satoru Takeuchi wrote:
>> Hi,
>>
>> Current xfs_quota (I pulled xfsprogs today) seems not be able to the users
>> managed by LDAP. There is no patch since I'm not good at LDAP and don't know
>> the root cause yet ;-(
>>
>> Step to reproduce(in this case, "sat" is the user managed by LDAP):
>> ===============================================================================
>> # uname -r
>> 3.7.0-rc5
>> # mount -o loop,usrquota xfs.img mnt
>> # xfsprogs/quota/xfs_quota -xc "limit bsoft=10M bhard=10M sat" /dev/loop0
>> xfs_quota: invalid user name: sat                                          # 
>> denied
>> # su sat
>> $                                                                          # 
>> But this user acutally exists.
>> ===============================================================================
>>
>> The kernel is a bit old, but I suspect this is a userland problem.
> 
> Yes, userland.
> 
> However, xfs_quota is not supposed to know about LDAP, or NIS, or
> any other user database. It uses the getpwnam() to convert the user
> name to a UID, and that call is failing to find "sat". This is
> supposed to work with LDAP (as mentioned in the man page), and if it
> isn't it generally means something is broken with your LDAP setup
> (/etc/nsswitch.conf not correct?) rather than there being something
> wrong with xfs_quota....

Probably this behaivor comes from the difference between the test machine
and the build machine which I built the upstream xfsprogs.

I made the following simple program which just calls getpwnam().

===============================================================================
#include <sys/types.h>
#include <pwd.h>
#include <err.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
        struct passwd *p;
        if ((p = getpwnam("sat")) == NULL)
                err(EXIT_FAILURE, "getpwnam() failed.");
        printf("name = %s, id = %d\n", p->pw_name, p->pw_uid);
        exit(EXIT_SUCCESS);
}
===============================================================================

Here is the result of this problem at the test machine.

 - SUCCEEDED: build at the test machine
 - FAILED: built at the build machine

I will build xfsprogs at the test machine and confirm whether this behavior
(getpwnam() fails) happens or not again.

Thanks,
Satoru


<Prev in Thread] Current Thread [Next in Thread>