Please keep replies on the list.
On Mon, 14 Jun 2010, Ariel wrote:
> On Jun 14, 2010, at 1:33 PM, Aaron Richton wrote:
>
>> On Mon, 14 Jun 2010, Ariel wrote:
>>
>>> I don't like having the /etc/ldap.conf world readable [...]
>>> Advice?
>>
>> And you didn't chmod /etc/passwd and /etc/group too? What if people get
>> valuable information out of those? You can't do this and be POSIX
>> multi-user; getgr*/getpw* are unprivileged operations. Your users
>> should be able to get some output with getent(1), and your users should
>> be able to get the same output with "cat /etc/ldap.conf" and a bit of
>> thought, and any attempts to make that harder will be a waste of time
>> on your part. Change back the permissions, or change your OS.
>>
>> Now, with all this said, if your users can get *more* information with
>> "cat /etc/ldap.conf" and thought than getent(1) provides, that may well
>> be a configuration error on your part, which would be appropriate to
>> discuss on this list...
>
> I have not heard of getent before, but it seems it would only be able to
> read ldap users if there was a copy of the ldap database locally? Or am
> I wrong about this?
Don't think about this in terms of LDAP or any other network name service.
Imagine you've got a fresh-from-factory laptop. You start adding users,
they go into /etc/passwd. /etc/passwd is world-readable. Everybody on the
laptop can see the list of users as you update it.
Same for a server with LDAP. The actual name service is irrelevant, it's a
requirement of the API that has to be provided...
> I am not worried about local users being seen, there are few per server
> and they have low privileges. I was worried about someone being able to
> read all our ldap users which can access every system on our network and
> many of which have very high privileges. This is the reason why we
> restrict reading from our ldap server to a validated read-only user in
> the first place.
OK, again forget LDAP. You've got two servers now, each with their own
/etc/passwd. Say there are 6 users on one and 8 on the other. In the
simple, non-network case, cat /etc/passwd should show 6 or 8 (depending on
where you type it) and getent passwd should match with 6 or 8 users shown.
> Even if they cannot read the password hash, getting a full list of users
> seemed like something I would want to avoid. But if any attempts at
> doing so in the way I was describing is meaningless then I can move on
> to other things that need doing.
...well, to continue my example, if you configure things such that "getent
passwd" shows 14 users, that would probably be a mistake. You're right
that outputting a full list of users, across disparate authentication
configurations, is probably something to be avoided.
But that's what ACLs are for. See slapd.access(5). And you do this
server-side (possibly combined with a binddn on the client) by editing the
world-readable ldap.conf, not by chmod'ing the file...