* Horrible denial of service bug in autmount 5
@ 2008-06-20 13:24 Anton Altaparmakov
2008-06-20 13:44 ` Ian Kent
0 siblings, 1 reply; 39+ messages in thread
From: Anton Altaparmakov @ 2008-06-20 13:24 UTC (permalink / raw)
To: autofs; +Cc: H. Peter Anvin, Unix Support, Ian Kent
Hi,
The autofs 5.0.2 package that comes with opensuse 10.3 has a nasty
denial of service attack in the automount daemon. I can only assume
that the code comes from the actual autofs source rather than being
introduced by opensuse but I could be wrong (I haven't checked).
The bug is that automount searches /proc/*/cmdline for a substring
that matches "automount" and refuses to run if it finds such a thing.
So any user that just does:
cat > automount.c <<EOD
int main(void)
{
sleep(10000);
return 0;
}
EOD
gcc -o automount.c
export PATH=.;$PATH
automount
And now no-one can run the real automount including root!
Even if this was not a DoS waiting to happen, why do you have this
check in the code? There is no reason whatsoever to try and restrict
people from running multiple instances of the automount process...
We in fact run one automount instance for each logged in user on our
Linux distribution for Cambridge University. - We now have to play
silly buggers with running automount in such a way as to replace its
argv[0] with a different string so we can run multiple instances.
But that still leaves the DoS attack that any user can run a program
as above and no-one else will be able to log in any more as the
automount process will find the literal string "automount" from the
user's executable...
So we would really like the complete abomination that is autofs/daemon/
automount.c::is_automount_running() thrown away or at least made
optional with a command line option if you insist on having it, pretty
please with sugar on top?
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 13:24 Horrible denial of service bug in autmount 5 Anton Altaparmakov
@ 2008-06-20 13:44 ` Ian Kent
2008-06-20 14:01 ` Anton Altaparmakov
0 siblings, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-20 13:44 UTC (permalink / raw)
To: Anton Altaparmakov; +Cc: autofs, H.PeterA, Unix Support
On Fri, 2008-06-20 at 14:24 +0100, Anton Altaparmakov wrote:
> Hi,
>
> The autofs 5.0.2 package that comes with opensuse 10.3 has a nasty
> denial of service attack in the automount daemon. I can only assume
> that the code comes from the actual autofs source rather than being
> introduced by opensuse but I could be wrong (I haven't checked).
>
> The bug is that automount searches /proc/*/cmdline for a substring
> that matches "automount" and refuses to run if it finds such a thing.
>
> So any user that just does:
>
> cat > automount.c <<EOD
> int main(void)
> {
> sleep(10000);
> return 0;
> }
> EOD
> gcc -o automount.c
> export PATH=.;$PATH
> automount
>
> And now no-one can run the real automount including root!
>
> Even if this was not a DoS waiting to happen, why do you have this
> check in the code? There is no reason whatsoever to try and restrict
> people from running multiple instances of the automount process...
Really, the fact that you think no-one will ever attempt to run
automount again, perhaps by accidentally starting the application when
it is already running, using the same configuration shows you haven't
really thought about this issue.
>
> We in fact run one automount instance for each logged in user on our
> Linux distribution for Cambridge University. - We now have to play
> silly buggers with running automount in such a way as to replace its
> argv[0] with a different string so we can run multiple instances.
>
> But that still leaves the DoS attack that any user can run a program
> as above and no-one else will be able to log in any more as the
> automount process will find the literal string "automount" from the
> user's executable...
>
> So we would really like the complete abomination that is autofs/daemon/
> automount.c::is_automount_running() thrown away or at least made
> optional with a command line option if you insist on having it, pretty
> please with sugar on top?
The tone of your mail is lousy, given that your asking for something and
haven't offered a patch to support your request and haven't really
thought about the issue and haven't even offered any suggestions about
alternative approaches.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 13:44 ` Ian Kent
@ 2008-06-20 14:01 ` Anton Altaparmakov
2008-06-20 15:04 ` Ian Kent
0 siblings, 1 reply; 39+ messages in thread
From: Anton Altaparmakov @ 2008-06-20 14:01 UTC (permalink / raw)
To: Ian Kent, hpa; +Cc: autofs, Unix Support
Hi,
[Note: Corrected hpa's email address - I didn't notice it was still
the transmeta one... Oops.]
On 20 Jun 2008, at 14:44, Ian Kent wrote:
> On Fri, 2008-06-20 at 14:24 +0100, Anton Altaparmakov wrote:
>> Hi,
>>
>> The autofs 5.0.2 package that comes with opensuse 10.3 has a nasty
>> denial of service attack in the automount daemon. I can only assume
>> that the code comes from the actual autofs source rather than being
>> introduced by opensuse but I could be wrong (I haven't checked).
>>
>> The bug is that automount searches /proc/*/cmdline for a substring
>> that matches "automount" and refuses to run if it finds such a thing.
>>
>> So any user that just does:
>>
>> cat > automount.c <<EOD
>> int main(void)
>> {
>> sleep(10000);
>> return 0;
>> }
>> EOD
>> gcc -o automount.c
>> export PATH=.;$PATH
>> automount
>>
>> And now no-one can run the real automount including root!
>>
>> Even if this was not a DoS waiting to happen, why do you have this
>> check in the code? There is no reason whatsoever to try and restrict
>> people from running multiple instances of the automount process...
>
> Really, the fact that you think no-one will ever attempt to run
> automount again, perhaps by accidentally starting the application when
> it is already running, using the same configuration shows you haven't
> really thought about this issue.
And so what? The previous automount binary did not do this check
either. Lots of people use multiple invocations of the automounter in
all sorts of scenarios and you are gratuitously breaking all of those
applications or making them rather annoying.
But most importantly you are creating a DoS in your application
because ANY user can run the example code I showed in my original post
and thus stop the real automount process from running.
I am sorry but this is Unix. You are not allowed to protect people
from shooting themselves in the foot. That's what init scripts are
for! I have never seen such a stupid check in a daemon before!
>> We in fact run one automount instance for each logged in user on our
>> Linux distribution for Cambridge University. - We now have to play
>> silly buggers with running automount in such a way as to replace its
>> argv[0] with a different string so we can run multiple instances.
>>
>> But that still leaves the DoS attack that any user can run a program
>> as above and no-one else will be able to log in any more as the
>> automount process will find the literal string "automount" from the
>> user's executable...
>>
>> So we would really like the complete abomination that is autofs/
>> daemon/
>> automount.c::is_automount_running() thrown away or at least made
>> optional with a command line option if you insist on having it,
>> pretty
>> please with sugar on top?
>
> The tone of your mail is lousy, given that your asking for something
> and
> haven't offered a patch to support your request and haven't really
> thought about the issue and haven't even offered any suggestions about
> alternative approaches.
You need a patch to delete a few lines of code? Wow! I expected you
to be able to do it yourself!
And I did suggest two alternative approaches... Reread my above
paragraph. It clearly states that completely removing the
is_automount_running() function and its call site is one approach and
another one is to provide a command line option to bypass execution of
this code but that does not solve the DoS issue so only removal of the
code is a real solution.
Looking for literal strings in /proc is nothing short of stupid! I am
sorry for you and your users if you can't see that...
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 14:01 ` Anton Altaparmakov
@ 2008-06-20 15:04 ` Ian Kent
2008-06-20 15:24 ` Anton Altaparmakov
0 siblings, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-20 15:04 UTC (permalink / raw)
To: Anton Altaparmakov; +Cc: autofs, Unix Support, hpa
On Fri, 2008-06-20 at 15:01 +0100, Anton Altaparmakov wrote:
> Hi,
>
> [Note: Corrected hpa's email address - I didn't notice it was still
> the transmeta one... Oops.]
>
> On 20 Jun 2008, at 14:44, Ian Kent wrote:
> > On Fri, 2008-06-20 at 14:24 +0100, Anton Altaparmakov wrote:
> >> Hi,
> >>
> >> The autofs 5.0.2 package that comes with opensuse 10.3 has a nasty
> >> denial of service attack in the automount daemon. I can only assume
> >> that the code comes from the actual autofs source rather than being
> >> introduced by opensuse but I could be wrong (I haven't checked).
> >>
> >> The bug is that automount searches /proc/*/cmdline for a substring
> >> that matches "automount" and refuses to run if it finds such a thing.
> >>
> >> So any user that just does:
> >>
> >> cat > automount.c <<EOD
> >> int main(void)
> >> {
> >> sleep(10000);
> >> return 0;
> >> }
> >> EOD
> >> gcc -o automount.c
> >> export PATH=.;$PATH
> >> automount
> >>
> >> And now no-one can run the real automount including root!
> >>
> >> Even if this was not a DoS waiting to happen, why do you have this
> >> check in the code? There is no reason whatsoever to try and restrict
> >> people from running multiple instances of the automount process...
> >
> > Really, the fact that you think no-one will ever attempt to run
> > automount again, perhaps by accidentally starting the application when
> > it is already running, using the same configuration shows you haven't
> > really thought about this issue.
>
> And so what? The previous automount binary did not do this check
> either. Lots of people use multiple invocations of the automounter in
> all sorts of scenarios and you are gratuitously breaking all of those
> applications or making them rather annoying.
>
> But most importantly you are creating a DoS in your application
> because ANY user can run the example code I showed in my original post
> and thus stop the real automount process from running.
>
> I am sorry but this is Unix. You are not allowed to protect people
> from shooting themselves in the foot. That's what init scripts are
> for! I have never seen such a stupid check in a daemon before!
Ummm ... rubbish ... and rubbish and yeah the check is inconvenient but
not as bad as you claim.
I'm allowed to try and protect people from doing things that aren't
sensible if I wish to, "it is Unix" as you say.
>
> >> We in fact run one automount instance for each logged in user on our
> >> Linux distribution for Cambridge University. - We now have to play
> >> silly buggers with running automount in such a way as to replace its
> >> argv[0] with a different string so we can run multiple instances.
> >>
> >> But that still leaves the DoS attack that any user can run a program
> >> as above and no-one else will be able to log in any more as the
> >> automount process will find the literal string "automount" from the
> >> user's executable...
> >>
> >> So we would really like the complete abomination that is autofs/
> >> daemon/
> >> automount.c::is_automount_running() thrown away or at least made
> >> optional with a command line option if you insist on having it,
> >> pretty
> >> please with sugar on top?
> >
> > The tone of your mail is lousy, given that your asking for something
> > and
> > haven't offered a patch to support your request and haven't really
> > thought about the issue and haven't even offered any suggestions about
> > alternative approaches.
>
>
> You need a patch to delete a few lines of code? Wow! I expected you
> to be able to do it yourself!
>
> And I did suggest two alternative approaches... Reread my above
> paragraph. It clearly states that completely removing the
> is_automount_running() function and its call site is one approach and
> another one is to provide a command line option to bypass execution of
> this code but that does not solve the DoS issue so only removal of the
> code is a real solution.
Removing the function isn't a solution that I'm willing to accept, in
fact it isn't a solution at all, and since it's so simple you can easily
do it yourself and spend the time you save on coming up with a sensible
suggestion.
>
> Looking for literal strings in /proc is nothing short of stupid! I am
> sorry for you and your users if you can't see that...
I never said that you point was not well taken.
I said I didn't like your tone, given that you were asking for something
and that continues to be the case. If you think that posting using this
tone will get priority for fixing this then you are sadly mistaken.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 15:04 ` Ian Kent
@ 2008-06-20 15:24 ` Anton Altaparmakov
2008-06-20 15:28 ` Ian Kent
0 siblings, 1 reply; 39+ messages in thread
From: Anton Altaparmakov @ 2008-06-20 15:24 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Unix Support, hpa
Hi,
On 20 Jun 2008, at 16:04, Ian Kent wrote:
> On Fri, 2008-06-20 at 15:01 +0100, Anton Altaparmakov wrote:
>> On 20 Jun 2008, at 14:44, Ian Kent wrote:
>>> On Fri, 2008-06-20 at 14:24 +0100, Anton Altaparmakov wrote:
>>>> The autofs 5.0.2 package that comes with opensuse 10.3 has a nasty
>>>> denial of service attack in the automount daemon. I can only
>>>> assume
>>>> that the code comes from the actual autofs source rather than being
>>>> introduced by opensuse but I could be wrong (I haven't checked).
>>>>
>>>> The bug is that automount searches /proc/*/cmdline for a substring
>>>> that matches "automount" and refuses to run if it finds such a
>>>> thing.
>>>>
>>>> So any user that just does:
>>>>
>>>> cat > automount.c <<EOD
>>>> int main(void)
>>>> {
>>>> sleep(10000);
>>>> return 0;
>>>> }
>>>> EOD
>>>> gcc -o automount.c
>>>> export PATH=.;$PATH
>>>> automount
>>>>
>>>> And now no-one can run the real automount including root!
>>>>
>>>> Even if this was not a DoS waiting to happen, why do you have this
>>>> check in the code? There is no reason whatsoever to try and
>>>> restrict
>>>> people from running multiple instances of the automount process...
>>>
>>> Really, the fact that you think no-one will ever attempt to run
>>> automount again, perhaps by accidentally starting the application
>>> when
>>> it is already running, using the same configuration shows you
>>> haven't
>>> really thought about this issue.
>>
>> And so what? The previous automount binary did not do this check
>> either. Lots of people use multiple invocations of the automounter
>> in
>> all sorts of scenarios and you are gratuitously breaking all of those
>> applications or making them rather annoying.
>>
>> But most importantly you are creating a DoS in your application
>> because ANY user can run the example code I showed in my original
>> post
>> and thus stop the real automount process from running.
>>
>> I am sorry but this is Unix. You are not allowed to protect people
>> from shooting themselves in the foot. That's what init scripts are
>> for! I have never seen such a stupid check in a daemon before!
>
> Ummm ... rubbish ... and rubbish and yeah the check is inconvenient
> but
> not as bad as you claim.
Sorry but it is worse than you make out, too. Why don't you try
running the snippet I posted as a normal user and after that try to
restart the automounter for example? You will notice it will fail
telling you that it is already running even though it is not.
If the start (or restart) had been done automatically as part of
installing an updated rpm then suddenly you have a potentially broken
server (think of automounted home directories for example which is
what we have).
And there are plenty of people who set their servers to update
automatically during the night. (And no I am not one of them!)
> I'm allowed to try and protect people from doing things that aren't
> sensible if I wish to, "it is Unix" as you say.
Yes, sorry. I meant to write that it is against Unix Philosophy not
that you are not allowed to do it. (Brain to keyboard translation
error. - It is Friday!)
>>>> We in fact run one automount instance for each logged in user on
>>>> our
>>>> Linux distribution for Cambridge University. - We now have to play
>>>> silly buggers with running automount in such a way as to replace
>>>> its
>>>> argv[0] with a different string so we can run multiple instances.
>>>>
>>>> But that still leaves the DoS attack that any user can run a
>>>> program
>>>> as above and no-one else will be able to log in any more as the
>>>> automount process will find the literal string "automount" from the
>>>> user's executable...
>>>>
>>>> So we would really like the complete abomination that is autofs/
>>>> daemon/
>>>> automount.c::is_automount_running() thrown away or at least made
>>>> optional with a command line option if you insist on having it,
>>>> pretty
>>>> please with sugar on top?
>>>
>>> The tone of your mail is lousy, given that your asking for something
>>> and
>>> haven't offered a patch to support your request and haven't really
>>> thought about the issue and haven't even offered any suggestions
>>> about
>>> alternative approaches.
>>
>> You need a patch to delete a few lines of code? Wow! I expected you
>> to be able to do it yourself!
>>
>> And I did suggest two alternative approaches... Reread my above
>> paragraph. It clearly states that completely removing the
>> is_automount_running() function and its call site is one approach and
>> another one is to provide a command line option to bypass execution
>> of
>> this code but that does not solve the DoS issue so only removal of
>> the
>> code is a real solution.
>
> Removing the function isn't a solution that I'm willing to accept, in
> fact it isn't a solution at all, and since it's so simple you can
> easily
> do it yourself and spend the time you save on coming up with a
> sensible
> suggestion.
>
>> Looking for literal strings in /proc is nothing short of stupid! I
>> am
>> sorry for you and your users if you can't see that...
>
> I never said that you point was not well taken.
>
> I said I didn't like your tone, given that you were asking for
> something
> and that continues to be the case. If you think that posting using
> this
> tone will get priority for fixing this then you are sadly mistaken.
I don't care if you fix it as we are stuck with opensuse 10.3 now for
the next year and I doubt very much that sort of change would filter
through... And we have a workaround by running the automounter using:
perl -e 'exec {"automount"} @ARGV' pwf-amnt ...
Which means that in /proc/*/cmdline the string that appears is "pwf-
amnt" (as we override argv[0] in the exec call to that effect) thus
the is_automount_running() function does not find the literal string
"automount" in there and we can run it as many times as we want (which
is once per user).
However I think you should fix it because it is a DoS on all servers
using this daemon for automounting anything important...
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 15:24 ` Anton Altaparmakov
@ 2008-06-20 15:28 ` Ian Kent
2008-06-20 15:49 ` J.P. King
2008-06-20 17:03 ` H. Peter Anvin
0 siblings, 2 replies; 39+ messages in thread
From: Ian Kent @ 2008-06-20 15:28 UTC (permalink / raw)
To: Anton Altaparmakov; +Cc: autofs, Unix Support, hpa
On Fri, 2008-06-20 at 16:24 +0100, Anton Altaparmakov wrote:
> Which means that in /proc/*/cmdline the string that appears is "pwf-
> amnt" (as we override argv[0] in the exec call to that effect) thus
> the is_automount_running() function does not find the literal string
> "automount" in there and we can run it as many times as we want (which
> is once per user).
Why do you need to run one instance per user?
What does it get you that using a single source common global map
doesn't provide?
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 15:28 ` Ian Kent
@ 2008-06-20 15:49 ` J.P. King
2008-06-20 16:07 ` Ian Kent
2008-06-20 17:03 ` H. Peter Anvin
1 sibling, 1 reply; 39+ messages in thread
From: J.P. King @ 2008-06-20 15:49 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Anton Altaparmakov, Unix Support, hpa
Anton has just left for the weekend, so since I can answer this I will
> Why do you need to run one instance per user?
> What does it get you that using a single source common global map
> doesn't provide?
Our maps are generated on the fly by extracting information via LDAP from
a Novel E directory and then a new automounter is started to mount their
home directory and a number of other filesystems that we want them to have
access to.
Because of how NCPFS works we need a separate set of mounts per user.
If we have a shared global map then, since we need to modify it each time
a user logs in then we have a horrible locking problem.
Oh, and we have approximately 30,000 users, mostly not-entirely-trusted
students.
Even ignoring that, it is a suboptimal situation that any user can stop
the automounter from restarting by running a process with a particular
name. In general the reason daemons don't try and stop you running
multiple copies is because it is hard to do even remotely approaching
right. Normally they rely on a shared resource acting as your lock - such
as binding to port 80, or, if they must a lock/pid file.
To address a different question that was asked - why don't we maintain our
own patched version - clearly we could, however wherever possible we like
to have bugs, and I _think_ you've accepted that the DOS is a bug, fixed
upstream so that in the future we won't have to patch it again.
For every item of software that we have to patch we have to track the real
version for security holes and port our patch to this secured version.
This is a lot of effort at the best of times, and we have to do it enough
just to work around the infelicitudes with having to deal with Netware
without adding to them.
Let me try and turn the problem around. Given that you accept that the
DOS is something that you'd like to remove, how would you like to see the
problem being solved? Off the top of my head I can think of:
1 command line option - only have it check if the option is set. This has
to be the simplest solution, but it isn't great.
2 Pid file - have it check if there is a pid in the pid file before
writing its own pid.
3 Extend it to check not just the name, but the file/inode of the
programme being executed. This has a drawback if you upgrade the binary
then you can start the new version with the old one still running. It
also wouldn't solve our particular problem.
I'm prepared to have the code for 1 or 2 written and a patch submitted for
you. I wouldn't put work into 3 since it doesn't help us. If you can
come up with a different solution I'm probably happy to have that done too,
and a patch submitted, so long as it addresses our issue.
> Ian
Julian
--
Julian King
Computer Officer, University of Cambridge, Unix Support
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 15:49 ` J.P. King
@ 2008-06-20 16:07 ` Ian Kent
2008-06-20 16:22 ` J.P. King
0 siblings, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-20 16:07 UTC (permalink / raw)
To: J.P. King; +Cc: autofs, Anton Altaparmakov, Unix Support, hpa
On Fri, 2008-06-20 at 16:49 +0100, J.P. King wrote:
> Anton has just left for the weekend, so since I can answer this I will
Oh .. some people have it good.
I must say I wasn't exactly impressed receiving Antons mail after more
than 11 hours of work, but you get that.
>
> > Why do you need to run one instance per user?
> > What does it get you that using a single source common global map
> > doesn't provide?
>
> Our maps are generated on the fly by extracting information via LDAP from
> a Novel E directory and then a new automounter is started to mount their
> home directory and a number of other filesystems that we want them to have
> access to.
>
> Because of how NCPFS works we need a separate set of mounts per user.
Interesting, I haven't heard of a site doing it this way before.
>
> If we have a shared global map then, since we need to modify it each time
> a user logs in then we have a horrible locking problem.
>
> Oh, and we have approximately 30,000 users, mostly not-entirely-trusted
> students.
>
> Even ignoring that, it is a suboptimal situation that any user can stop
> the automounter from restarting by running a process with a particular
> name. In general the reason daemons don't try and stop you running
> multiple copies is because it is hard to do even remotely approaching
> right. Normally they rely on a shared resource acting as your lock - such
> as binding to port 80, or, if they must a lock/pid file.
>
> To address a different question that was asked - why don't we maintain our
> own patched version - clearly we could, however wherever possible we like
> to have bugs, and I _think_ you've accepted that the DOS is a bug, fixed
> upstream so that in the future we won't have to patch it again.
>
> For every item of software that we have to patch we have to track the real
> version for security holes and port our patch to this secured version.
> This is a lot of effort at the best of times, and we have to do it enough
> just to work around the infelicitudes with having to deal with Netware
> without adding to them.
Agreed and understood.
>
> Let me try and turn the problem around. Given that you accept that the
> DOS is something that you'd like to remove, how would you like to see the
> problem being solved? Off the top of my head I can think of:
>
> 1 command line option - only have it check if the option is set. This has
> to be the simplest solution, but it isn't great.
>
> 2 Pid file - have it check if there is a pid in the pid file before
> writing its own pid.
>
> 3 Extend it to check not just the name, but the file/inode of the
> programme being executed. This has a drawback if you upgrade the binary
> then you can start the new version with the old one still running. It
> also wouldn't solve our particular problem.
>
> I'm prepared to have the code for 1 or 2 written and a patch submitted for
> you. I wouldn't put work into 3 since it doesn't help us. If you can
> come up with a different solution I'm probably happy to have that done too,
> and a patch submitted, so long as it addresses our issue.
No need to have anything written, as Anton says it is fairly straight
forward once it is decided how to go about it.
I just have a few urgent things that need to be done before I can work
on it.
As far as a solution goes, I want to keep the check, in some form, which
I'm not sure of yet, but adding an option to bypass the check is an
obvious and simple way to address the issue for yourselves and I'll do
that to start with.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 16:07 ` Ian Kent
@ 2008-06-20 16:22 ` J.P. King
2008-06-20 16:27 ` Ian Kent
0 siblings, 1 reply; 39+ messages in thread
From: J.P. King @ 2008-06-20 16:22 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Anton Altaparmakov, Unix Support, hpa
> Oh .. some people have it good.
He did get in rather early, and it has been a rather hard month!
Yesterday was our deadline for the desktop image (800ish machines) and
next week we do the remote access servers.
> I must say I wasn't exactly impressed receiving Antons mail after more
> than 11 hours of work, but you get that.
My commiserations, but Anton wasn't to know how your work day had gone.
> As far as a solution goes, I want to keep the check, in some form, which
> I'm not sure of yet, but adding an option to bypass the check is an
> obvious and simple way to address the issue for yourselves and I'll do
> that to start with.
Once we know your solution we'll port that into our setup with the
expectation that it will have made it into our upstream distribution by
the time we next upgrade in 9-12 months time.
> Ian
Julian
--
Julian King
Computer Officer, University of Cambridge, Unix Support
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 16:22 ` J.P. King
@ 2008-06-20 16:27 ` Ian Kent
0 siblings, 0 replies; 39+ messages in thread
From: Ian Kent @ 2008-06-20 16:27 UTC (permalink / raw)
To: J.P. King; +Cc: autofs, Anton Altaparmakov, Unix Support, hpa
On Fri, 2008-06-20 at 17:22 +0100, J.P. King wrote:
> > Oh .. some people have it good.
>
> He did get in rather early, and it has been a rather hard month!
> Yesterday was our deadline for the desktop image (800ish machines) and
> next week we do the remote access servers.
>
> > I must say I wasn't exactly impressed receiving Antons mail after more
> > than 11 hours of work, but you get that.
>
> My commiserations, but Anton wasn't to know how your work day had gone.
>
> > As far as a solution goes, I want to keep the check, in some form, which
> > I'm not sure of yet, but adding an option to bypass the check is an
> > obvious and simple way to address the issue for yourselves and I'll do
> > that to start with.
>
> Once we know your solution we'll port that into our setup with the
> expectation that it will have made it into our upstream distribution by
> the time we next upgrade in 9-12 months time.
I'll let you know when I have done it.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 15:28 ` Ian Kent
2008-06-20 15:49 ` J.P. King
@ 2008-06-20 17:03 ` H. Peter Anvin
2008-06-20 18:22 ` Ian Kent
1 sibling, 1 reply; 39+ messages in thread
From: H. Peter Anvin @ 2008-06-20 17:03 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Anton Altaparmakov, Unix Support
Ian Kent wrote:
> On Fri, 2008-06-20 at 16:24 +0100, Anton Altaparmakov wrote:
>> Which means that in /proc/*/cmdline the string that appears is "pwf-
>> amnt" (as we override argv[0] in the exec call to that effect) thus
>> the is_automount_running() function does not find the literal string
>> "automount" in there and we can run it as many times as we want (which
>> is once per user).
>
> Why do you need to run one instance per user?
> What does it get you that using a single source common global map
> doesn't provide?
Okay, I'm confused... what reason could there *possibly* be for
searching /proc/*/cmdline? If there is a need for a mutex of some sort,
one should typically create a /var/run directory and put in lock files,
or some other solution to test the mutexing explicitly. grepping ps, in
effect, is hardly a good idea, to put it gently.
-hpa
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 17:03 ` H. Peter Anvin
@ 2008-06-20 18:22 ` Ian Kent
2008-06-20 19:03 ` H. Peter Anvin
0 siblings, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-20 18:22 UTC (permalink / raw)
To: H. Peter Anvin; +Cc: autofs, Anton Altaparmakov, Unix Support
On Fri, 2008-06-20 at 10:03 -0700, H. Peter Anvin wrote:
> Ian Kent wrote:
> > On Fri, 2008-06-20 at 16:24 +0100, Anton Altaparmakov wrote:
> >> Which means that in /proc/*/cmdline the string that appears is "pwf-
> >> amnt" (as we override argv[0] in the exec call to that effect) thus
> >> the is_automount_running() function does not find the literal string
> >> "automount" in there and we can run it as many times as we want (which
> >> is once per user).
> >
> > Why do you need to run one instance per user?
> > What does it get you that using a single source common global map
> > doesn't provide?
>
> Okay, I'm confused... what reason could there *possibly* be for
> searching /proc/*/cmdline? If there is a need for a mutex of some sort,
> one should typically create a /var/run directory and put in lock files,
> or some other solution to test the mutexing explicitly. grepping ps, in
> effect, is hardly a good idea, to put it gently.
This is nothing more than a check to see if another instance of
automount(8) is running.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 18:22 ` Ian Kent
@ 2008-06-20 19:03 ` H. Peter Anvin
2008-06-21 2:43 ` Ian Kent
0 siblings, 1 reply; 39+ messages in thread
From: H. Peter Anvin @ 2008-06-20 19:03 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Anton Altaparmakov, Unix Support
Ian Kent wrote:
>> Okay, I'm confused... what reason could there *possibly* be for
>> searching /proc/*/cmdline? If there is a need for a mutex of some sort,
>> one should typically create a /var/run directory and put in lock files,
>> or some other solution to test the mutexing explicitly. grepping ps, in
>> effect, is hardly a good idea, to put it gently.
>
> This is nothing more than a check to see if another instance of
> automount(8) is running.
But it is an utterly daft way to implement something like that. If you
want a lock, create an explicit lock, but doing string-matching on
command lines is idiotic.
-hpa
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-20 19:03 ` H. Peter Anvin
@ 2008-06-21 2:43 ` Ian Kent
2008-06-21 4:27 ` H. Peter Anvin
0 siblings, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-21 2:43 UTC (permalink / raw)
To: H. Peter Anvin; +Cc: autofs, Anton Altaparmakov, Unix Support
On Fri, 2008-06-20 at 12:03 -0700, H. Peter Anvin wrote:
> Ian Kent wrote:
> >> Okay, I'm confused... what reason could there *possibly* be for
> >> searching /proc/*/cmdline? If there is a need for a mutex of some sort,
> >> one should typically create a /var/run directory and put in lock files,
> >> or some other solution to test the mutexing explicitly. grepping ps, in
> >> effect, is hardly a good idea, to put it gently.
> >
> > This is nothing more than a check to see if another instance of
> > automount(8) is running.
>
> But it is an utterly daft way to implement something like that. If you
> want a lock, create an explicit lock, but doing string-matching on
> command lines is idiotic.
This isn't a lock or anything remotely like it.
And, yes, if run together closely enough the check could easily fail to
work but that isn't what the check is about.
Put another way, running multiple instances of the autofs version 5
daemon isn't supported at the moment.
For the common case usage multiple instances of the daemon aren't
needed.
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-21 2:43 ` Ian Kent
@ 2008-06-21 4:27 ` H. Peter Anvin
2008-06-21 4:44 ` Ian Kent
0 siblings, 1 reply; 39+ messages in thread
From: H. Peter Anvin @ 2008-06-21 4:27 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Anton Altaparmakov, Unix Support
Ian Kent wrote:
>> But it is an utterly daft way to implement something like that. If you
>> want a lock, create an explicit lock, but doing string-matching on
>> command lines is idiotic.
>
> This isn't a lock or anything remotely like it.
It is a lock, or at least something remotely like it.
> And, yes, if run together closely enough the check could easily fail to
> work but that isn't what the check is about.
What is it about, then?
> Put another way, running multiple instances of the autofs version 5
> daemon isn't supported at the moment.
>
> For the common case usage multiple instances of the daemon aren't
> needed.
Pardon my earlier abrasiveness (I'm having a horrible day), but why not
simply have /var/lock/automount and flock() it?
That way there is a sane workaround if the special cases, too.
-hpa
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-21 4:27 ` H. Peter Anvin
@ 2008-06-21 4:44 ` Ian Kent
2008-06-21 4:54 ` H. Peter Anvin
2008-06-21 9:18 ` J.P. King
0 siblings, 2 replies; 39+ messages in thread
From: Ian Kent @ 2008-06-21 4:44 UTC (permalink / raw)
To: H. Peter Anvin; +Cc: autofs, Anton Altaparmakov, Unix Support
On Fri, 2008-06-20 at 21:27 -0700, H. Peter Anvin wrote:
> Ian Kent wrote:
> >> But it is an utterly daft way to implement something like that. If you
> >> want a lock, create an explicit lock, but doing string-matching on
> >> command lines is idiotic.
> >
> > This isn't a lock or anything remotely like it.
>
> It is a lock, or at least something remotely like it.
>
> > And, yes, if run together closely enough the check could easily fail to
> > work but that isn't what the check is about.
>
> What is it about, then?
>
> > Put another way, running multiple instances of the autofs version 5
> > daemon isn't supported at the moment.
> >
> > For the common case usage multiple instances of the daemon aren't
> > needed.
>
> Pardon my earlier abrasiveness (I'm having a horrible day), but why not
> simply have /var/lock/automount and flock() it?
True and I very nearly wrote back and said that but then I started to
remember the painful issues of SIGKILL and trying to work out if the
flag file is really valid and the issues of mount(8) using a lock file
with flock() and stopped myself.
But, yes, I could do that.
To support multiple instances I will need to check in a few places that
I don't interfere with other process mounts. I suspect the Cambridge
guys have either been lucky so far and possibly not properly
investigated the issue. They don't seem to want to discuss it either so
I fear their in for an unpleasant surprise at some point.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-21 4:44 ` Ian Kent
@ 2008-06-21 4:54 ` H. Peter Anvin
2008-06-21 9:18 ` J.P. King
1 sibling, 0 replies; 39+ messages in thread
From: H. Peter Anvin @ 2008-06-21 4:54 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Anton Altaparmakov, Unix Support
Ian Kent wrote:
>
> True and I very nearly wrote back and said that but then I started to
> remember the painful issues of SIGKILL and trying to work out if the
> flag file is really valid and the issues of mount(8) using a lock file
> with flock() and stopped myself.
>
I think the issues with mount(8) had to do with backwards compatibility;
after all, it's one of the very first Linux utilities at all.
> But, yes, I could do that.
>
> To support multiple instances I will need to check in a few places that
> I don't interfere with other process mounts. I suspect the Cambridge
> guys have either been lucky so far and possibly not properly
> investigated the issue. They don't seem to want to discuss it either so
> I fear their in for an unpleasant surprise at some point.
Yeah, that's another ball of wax entirely.
-hpa
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-21 4:44 ` Ian Kent
2008-06-21 4:54 ` H. Peter Anvin
@ 2008-06-21 9:18 ` J.P. King
2008-06-23 1:53 ` Ian Kent
1 sibling, 1 reply; 39+ messages in thread
From: J.P. King @ 2008-06-21 9:18 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Anton Altaparmakov, Unix Support, H. Peter Anvin
> To support multiple instances I will need to check in a few places that
> I don't interfere with other process mounts. I suspect the Cambridge
> guys have either been lucky so far and possibly not properly
> investigated the issue.
The Cambridge guys have been using earlier versions of autofs which didn't
have this restriction (currently 4.1). Whether there was a bug that we
were sometimes triggering is a different matter. I am not aware of the
potential issue that you think we could be hitting, and I am unclear how
it could be something that was automount's problem, as opposed to a
general mounting filesystems race condition.
> They don't seem to want to discuss it either so
> I fear their in for an unpleasant surprise at some point.
Not only do we want to discuss it, we have been. We are also happy to put
work into resolving the issue. However we have identified a trivial DOS
and some, frankly, poor code, and there seems to be some reluctance in
accepting that this is an issue, regardless of any specific problems we're
having.
> Ian
Julian
--
Julian King
Computer Officer, University of Cambridge, Unix Support
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 2:26 ` J.P. King
@ 2008-06-23 1:08 ` H. Peter Anvin
2008-06-23 5:33 ` Jim Carter
2008-06-23 8:06 ` Anton Altaparmakov
2008-06-23 2:40 ` Ian Kent
1 sibling, 2 replies; 39+ messages in thread
From: H. Peter Anvin @ 2008-06-23 1:08 UTC (permalink / raw)
To: J.P. King; +Cc: autofs, Anton Altaparmakov, Unix Support, Ian Kent
J.P. King wrote:
>
> As I said previously, because this is quite hard. The maps need to be
> changed by the login process. We currently do this in the PAM
> configuration. Given that we can have multiple log in at the same time
> this means we need to do a lot of careful locking.
>
> Ideally we would do something like include all the files from a
> configuration directory and have a HUP get it to re-read all these
> configuration snippets. This would be a relatively involved change
> however.
>
This sounds like a perfect use of an executable map to me. I don't know
exactly what your maps look like, but it seems to me that since you have
an unusual local requirement it would make sense to deal with it in a
manner external to autofs itself.
-hpa
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-21 9:18 ` J.P. King
@ 2008-06-23 1:53 ` Ian Kent
2008-06-23 2:26 ` J.P. King
2008-06-23 5:27 ` Jim Carter
0 siblings, 2 replies; 39+ messages in thread
From: Ian Kent @ 2008-06-23 1:53 UTC (permalink / raw)
To: J.P. King; +Cc: autofs, Anton Altaparmakov, Unix Support, H. Peter Anvin
On Sat, 2008-06-21 at 10:18 +0100, J.P. King wrote:
> > To support multiple instances I will need to check in a few places that
> > I don't interfere with other process mounts. I suspect the Cambridge
> > guys have either been lucky so far and possibly not properly
> > investigated the issue.
>
> The Cambridge guys have been using earlier versions of autofs which didn't
> have this restriction (currently 4.1). Whether there was a bug that we
> were sometimes triggering is a different matter. I am not aware of the
> potential issue that you think we could be hitting, and I am unclear how
> it could be something that was automount's problem, as opposed to a
> general mounting filesystems race condition.
Sure, but version 5 is very different from version 4 and because it is
meant to run as a single instance there is potential for conflict.
It may well be the case that indirect maps are fine as they generally
restrict themselves to within their mount point but I'm fairly sure that
direct maps won't be OK.
>
> > They don't seem to want to discuss it either so
> > I fear their in for an unpleasant surprise at some point.
>
> Not only do we want to discuss it, we have been. We are also happy to put
> work into resolving the issue. However we have identified a trivial DOS
> and some, frankly, poor code, and there seems to be some reluctance in
> accepting that this is an issue, regardless of any specific problems we're
> having.
No, I'm not reluctant to accept that it is an issue but you need to
consider that running multiple instances may not be the right way to
achieve what you need with this version of autofs.
Is there some reason you can't update the master map and send a HUP
signal to the daemon?
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 1:53 ` Ian Kent
@ 2008-06-23 2:26 ` J.P. King
2008-06-23 1:08 ` H. Peter Anvin
2008-06-23 2:40 ` Ian Kent
2008-06-23 5:27 ` Jim Carter
1 sibling, 2 replies; 39+ messages in thread
From: J.P. King @ 2008-06-23 2:26 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Anton Altaparmakov, Unix Support, H. Peter Anvin
> Is there some reason you can't update the master map and send a HUP
> signal to the daemon?
As I said previously, because this is quite hard. The maps need to be
changed by the login process. We currently do this in the PAM
configuration. Given that we can have multiple log in at the same time
this means we need to do a lot of careful locking.
Ideally we would do something like include all the files from a
configuration directory and have a HUP get it to re-read all these
configuration snippets. This would be a relatively involved change
however.
Please do remember where we came in though - we have our needs, which is
our problem. You have a bug/DOS which we identified whilst looking for a
reason that something had broken between OpenSUSE 10.2 and OpenSUSE 10.3.
Clearly we are going to hope that when you fix your bug we can backport
the solution and solve our problem. If we can't we can't, and we will
work around whatever issues we have left.
> Ian
Julian
--
Julian King
Computer Officer, University of Cambridge, Unix Support
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 2:26 ` J.P. King
2008-06-23 1:08 ` H. Peter Anvin
@ 2008-06-23 2:40 ` Ian Kent
2008-06-23 2:55 ` J.P. King
1 sibling, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-23 2:40 UTC (permalink / raw)
To: J.P. King; +Cc: autofs, Anton Altaparmakov, Unix Support, H. Peter Anvin
On Mon, 2008-06-23 at 03:26 +0100, J.P. King wrote:
> > Is there some reason you can't update the master map and send a HUP
> > signal to the daemon?
>
> As I said previously, because this is quite hard. The maps need to be
> changed by the login process. We currently do this in the PAM
> configuration. Given that we can have multiple log in at the same time
> this means we need to do a lot of careful locking.
Yep.
>
> Ideally we would do something like include all the files from a
> configuration directory and have a HUP get it to re-read all these
> configuration snippets. This would be a relatively involved change
> however.
The daemon reads the master map to find out what to needs to change, so
you would still need to update the master map.
I understand that largish changes aren't good and there's the
possibility of clients running different versions of autofs.
>
> Please do remember where we came in though - we have our needs, which is
> our problem. You have a bug/DOS which we identified whilst looking for a
> reason that something had broken between OpenSUSE 10.2 and OpenSUSE 10.3.
> Clearly we are going to hope that when you fix your bug we can backport
> the solution and solve our problem. If we can't we can't, and we will
> work around whatever issues we have left.
You keep on about this, I've already said I'll fix it, let it go!
I'll add an option to override the behavior and change the check in line
with Peter's suggestion. But, being able to say that running multiple
instances is supported is a completely different issue which will
require more effort.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 2:40 ` Ian Kent
@ 2008-06-23 2:55 ` J.P. King
2008-06-23 3:10 ` Ian Kent
0 siblings, 1 reply; 39+ messages in thread
From: J.P. King @ 2008-06-23 2:55 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Anton Altaparmakov, Unix Support, H. Peter Anvin
>> our problem. You have a bug/DOS which we identified whilst looking for a
>> reason that something had broken between OpenSUSE 10.2 and OpenSUSE 10.3.
>> Clearly we are going to hope that when you fix your bug we can backport
>> the solution and solve our problem. If we can't we can't, and we will
>> work around whatever issues we have left.
>
> You keep on about this, I've already said I'll fix it, let it go!
I'm trying to emphasise that we aren't demanding that you make changes to
meet our needs! I don't want anyone reading this thread to think that
we're throwing our toys out of the pram demanding that changes be made to
suit our needs.
> Ian
Julian
--
Julian King
Computer Officer, University of Cambridge, Unix Support
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 2:55 ` J.P. King
@ 2008-06-23 3:10 ` Ian Kent
2008-06-23 7:15 ` Anton Altaparmakov
0 siblings, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-23 3:10 UTC (permalink / raw)
To: J.P. King; +Cc: autofs, Anton Altaparmakov, Unix Support, H. Peter Anvin
On Mon, 2008-06-23 at 03:55 +0100, J.P. King wrote:
> >> our problem. You have a bug/DOS which we identified whilst looking for a
> >> reason that something had broken between OpenSUSE 10.2 and OpenSUSE 10.3.
> >> Clearly we are going to hope that when you fix your bug we can backport
> >> the solution and solve our problem. If we can't we can't, and we will
> >> work around whatever issues we have left.
> >
> > You keep on about this, I've already said I'll fix it, let it go!
>
> I'm trying to emphasise that we aren't demanding that you make changes to
> meet our needs! I don't want anyone reading this thread to think that
> we're throwing our toys out of the pram demanding that changes be made to
> suit our needs.
I see, btw, what is the OpenSuSE rpm revision you are working with?
I see an rpm of autofs-5.0.2-30.2.i586.rpm and I'm assuming the
autofs.rpm is the source corresponding to that or am I missing something
about the OpenSuSE packaging.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 1:53 ` Ian Kent
2008-06-23 2:26 ` J.P. King
@ 2008-06-23 5:27 ` Jim Carter
1 sibling, 0 replies; 39+ messages in thread
From: Jim Carter @ 2008-06-23 5:27 UTC (permalink / raw)
To: Ian Kent
Cc: autofs, Anton Altaparmakov, J.P. King, Unix Support,
H. Peter Anvin
On Mon, 23 Jun 2008, Ian Kent wrote:
> Is there some reason you can't update the master map and send a HUP
> signal to the daemon?
Actually we have a (simpler) setup: the master map refers to a NIS map for
home directories (would be LDAP on a non-Solaris-derived installation).
This map is rebuilt whenever a user is added, removed or relocated, and
automount sees the change for $USER at the next attempt to mount
/home/$USER.
When users have special file storage they refer to /net/$HOST/$filesys
(example: /net/julia/h1) and whatever path components are below it. If
it's not acceptable to hard-code the host (and with 30,000 users where
potentially all of them need to do this, likely hardcoded hostnames and
partitions are not cool), we would create another NIS or LDAP map analogous
to auto.home, and update and republish it whenever a user's special storage
was altered.
James F. Carter Voice 310 825 2897 FAX 310 206 6673
UCLA-Mathnet; 6115 MSA; 405 Hilgard Ave.; Los Angeles, CA, USA 90095-1555
Email: jimc@math.ucla.edu http://www.math.ucla.edu/~jimc (q.v. for PGP key)
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 1:08 ` H. Peter Anvin
@ 2008-06-23 5:33 ` Jim Carter
2008-06-23 8:06 ` Anton Altaparmakov
1 sibling, 0 replies; 39+ messages in thread
From: Jim Carter @ 2008-06-23 5:33 UTC (permalink / raw)
To: H. Peter Anvin
Cc: autofs, Anton Altaparmakov, J.P. King, Unix Support, Ian Kent
On Sun, 22 Jun 2008, H. Peter Anvin wrote:
> J.P. King wrote:
> > Ideally we would do something like include all the files from a
> > configuration directory and have a HUP get it to re-read all these
> > configuration snippets. This would be a relatively involved change
> > however.
> >
>
> This sounds like a perfect use of an executable map to me. I don't know
> exactly what your maps look like, but it seems to me that since you have
> an unusual local requirement it would make sense to deal with it in a
> manner external to autofs itself.
That's an excellent suggestion! At my site we used an executable map to
get the effect of submounts, before I figured out how to do the job with
submounts. It was reliable and reasonably efficient.
James F. Carter Voice 310 825 2897 FAX 310 206 6673
UCLA-Mathnet; 6115 MSA; 405 Hilgard Ave.; Los Angeles, CA, USA 90095-1555
Email: jimc@math.ucla.edu http://www.math.ucla.edu/~jimc (q.v. for PGP key)
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 3:10 ` Ian Kent
@ 2008-06-23 7:15 ` Anton Altaparmakov
2008-06-23 7:45 ` Ian Kent
0 siblings, 1 reply; 39+ messages in thread
From: Anton Altaparmakov @ 2008-06-23 7:15 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, J.P. King, Unix Support, H. Peter Anvin
Good morning,
On 23 Jun 2008, at 04:10, Ian Kent wrote:
> I see, btw, what is the OpenSuSE rpm revision you are working with?
> I see an rpm of autofs-5.0.2-30.2.i586.rpm and I'm assuming the
> autofs.rpm is the source corresponding to that or am I missing
> something
> about the OpenSuSE packaging.
The one we are using is indeed autofs-5.0.2-30.2.i586.rpm and the
corresponding source rpm is autofs-5.0.2-30.2.src.rpm and it can be
obtained for example here:
http://www.mirrorservice.org/sites/ftp.opensuse.org/pub/opensuse/update/10.3/rpm/src/autofs-5.0.2-30.2.src.rpm
Regarding the need to run a single instance: you do realise that init
scripts do the exclusion already? So there should not be any reason
to repeat the exclusion in the daemon itself... At least on SuSE
systems this is done by executing daemons using "/sbin/startproc"
rather than running the daemons themselves. So you are basically
repeating everything the init script is already doing in the automount
daemon which IMHO is rather pointless given I assume all Linux
flavours use an analogous init script to launch the automount daemon.
I have included below the startproc man page if you want to have a
look what it does...
And for people like us who are not using an init script you can safely
assume we know what we are doing and that we are invoking the
automount daemon multiple times because we want to rather than because
we are stupid and need to be protected from ourselves. (-:
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/
<quote "man startproc">
STARTPROC(8) The SuSE boot concept
STARTPROC(8)
NAME
Startproc - Start processes identified by path name
Start_daemon - Start processes identified by path name
SYNOPSIS
startproc [-f] [-L] [[-n ]+/-<prio>] [-s] [-t sec] [-u user] [-
g group]
[-v] [-e] [-l log_file |-q|-d] [-p pid_file] [-i ignore_file]
[-c root]
/path/to/executable [arguments for executable]
start_daemon [-f] [-n +/-<prio>] /path/to/executable
[arguments for
executable]
DESCRIPTION
startproc and the LSB variant start_daemon check for all
processes of
the specified executable and starts it if no processes are
found. Note
that startproc is designed to start a daemon but not a kernel
thread or
a program which enables a kernel thread.
startproc does not use the pid to search for a process but
the full
path of the corresponding program which is used to identify
the exe‐
cutable (see proc(5)). Only if the inode number (/proc/<pid>/
exe) and
the full name are unavailable (/proc/<pid>/cmdline) or if
the exe‐
cutable changes its zeroth argument, startproc uses the
base name
(/proc/<pid>/stat) to identify the running program.
Extended functionality is provided by the -p option (former
option -f
changed due to the LSB specification). If this option is
specified,
startproc tries to check against the pid read from this file
instead of
the default (/var/run/<basename>.pid). The pid read from
this file is
compared against the pids of possible running processes that
use the
specified executable. In order to avoid confusion with stale
pid files,
a not up-to-date pid will be ignored.
For the possibility of having two different sessions of one
binary pro‐
gram, the option -i ignore_file allows to specify a pid file
which pid
number is used to ignore all processes of corresponding
process ses‐
sion.
The option -v makes startproc print out verbose diagnostics.
REQUIRED
/path/to/executable
Specifies the executable by its full path name. This
argument is
always required. Everything that follows this path is
considered
options for the executable to be launched. Further
information
can be obtained from the respective manpage(s).
OPTIONS
[-n ]+/-<prio>
Set the nice level for the process. If used, this
option should
always be the first in the command line. The nice
level <prio>
may be specified in the range between -20 and +20.
Only root is
allowed to set negative nice values.
-e Bequeath only a minimal set of environment variables
to the new
process: HOME, PATH, SHELL, RUNLEVEL, and PREVLEVEL.
-p pid_file
(Former option -f changed due to the LSB
specification.) Use an
alternate pid file instead of the default (/var/
run/<base‐
name>.pid). The pid read from this file is
being matched
against the pid of running processes that have an
executable
with specified path. of the program. In order to
avoid confu‐
sion with stale pid files, a not up-to-date pid will be
ignored.
-i ignore_file
The pid found in this file is used as session id of
the same
binary program which should be ignored by startproc.
-f This option is required by the Linux Standard Base
Specification
(LSB). With this option the start of a process is
forced.
-g group
Sets the group ID of the process to gid.
-l log_file
Redirect the process standard output and standard
error to the
file log_file.
-L This option causes symlinks to be followed, as the
like-named
option in ls(1). BR Note : for the file name the
original name
of the program is used instead of the name of the
symbolic link.
-c root
Change root directory to root. Services which have
been started
with this option can only be checked by checkproc(8)
and sig‐
naled by killproc(8) if checkproc(8) and killproc(8)
are called
with the same option argument for the option -c.
-q Equals to -l /dev/null (supresses output).
-d Let startproc expect that the started service will do
a dialog
by prompting for, e.g. a passphrase. This option
implies a
timeout of 15 seconds (-t 15).
-s Starts the process in a new session. The new task is
a process
group leader and has no controlling tty.
-t sec The number of seconds to wait after the successful
start of a
service. This options accepts the number of seconds
to wait.
You can specify some units after a given number: s for
seconds,
m for minutes, and h for hours to wait.
-u user
Sets the user ID of the process to user.
-v Verbose output.
EXAMPLE
startproc /usr/sbin/sendmail
starts /usr/sbin/sendmail if no sendmail process is
found. If a
pid file sendmail.pid exists in /var/run/, then the pid
found in
this file is used to search the process table for a
process with
an executable that matches the specified
pathname,
/usr/sbin/sendmail. If no matching process
is found,
/usr/sbin/sendmail is launched.
startproc -p /var/myrun/lpd.pid /usr/sbin/lpd
starts /usr/sbin/lpd if there is no process with the
pid found
in /var/myrun/lpd.pid and no process in the actual
process table
exists that uses the specified binary.
EXIT CODES
The exit codes have the following LSB conform conditions:
0 Success
1 Generic or unspecified error
2 Invalid or excess argument(s)
4 Insufficient privilege(s)
5 Program is not installed
7 Program is not running
In some error cases, diagnostic output is sent to standard
error, or,
if standard error is not available, syslogd(8) is being used.
NOTE
startproc is a replacement for the Bourne shell function
daemon found
in the widely used SysVinit package of Miquel van
Smoorenburg,
<miquels@cistron.nl>. startproc is not useful to start kernel
threads.
This should be done by service utilities designed for the
purpose to
accomplish this task.
BUGS
Identifying a process based on the executable file and the
correspond‐
ing inode number only works if the process stays alive
during start‐
proc's execution. Processes rewriting their zeroth argument
or shell
scripts (the inode number of the shell executable file is not
identical
to that of the script file) may not be identified by a
filename path.
Startproc does not start a process if there already exists one
being in
the zombie state. Zombies are processes which arn't alive
but listed
in the process table to have the exit status ready for the
correspond‐
ing parent processes. Therefore the parent processes should
be check
out.
FILES
/proc/ path to the proc file system (see proc(5)).
/etc/init.d/
path to the SuSE boot concept script base directory as
required
by the Linux Standard Base Specification
(LSB) (see
init.d(7)).
SEE ALSO
checkproc(8), killproc(8), insserv(8), init.d(7), kill(1),
skill(1),
killall(8), killall5(8), signal(7), proc(5).
COPYRIGHT
1994-2000 Werner Fink, 1996-2000 SuSE GmbH Nuernberg, Germany.
AUTHOR
Werner Fink <werner@suse.de>
3rd Berkeley Distribution Nov 10, 2000
STARTPROC(8)
</quote>
_______________________________________________
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 7:15 ` Anton Altaparmakov
@ 2008-06-23 7:45 ` Ian Kent
0 siblings, 0 replies; 39+ messages in thread
From: Ian Kent @ 2008-06-23 7:45 UTC (permalink / raw)
To: Anton Altaparmakov; +Cc: autofs, J.P. King, Unix Support, H. Peter Anvin
On Mon, 2008-06-23 at 08:15 +0100, Anton Altaparmakov wrote:
> Good morning,
>
> On 23 Jun 2008, at 04:10, Ian Kent wrote:
> > I see, btw, what is the OpenSuSE rpm revision you are working with?
> > I see an rpm of autofs-5.0.2-30.2.i586.rpm and I'm assuming the
> > autofs.rpm is the source corresponding to that or am I missing
> > something
> > about the OpenSuSE packaging.
>
>
> The one we are using is indeed autofs-5.0.2-30.2.i586.rpm and the
> corresponding source rpm is autofs-5.0.2-30.2.src.rpm and it can be
> obtained for example here:
>
> http://www.mirrorservice.org/sites/ftp.opensuse.org/pub/opensuse/update/10.3/rpm/src/autofs-5.0.2-30.2.src.rpm
Got it.
Will check patches against it and make any changes needed.
>
> Regarding the need to run a single instance: you do realise that init
> scripts do the exclusion already? So there should not be any reason
> to repeat the exclusion in the daemon itself... At least on SuSE
> systems this is done by executing daemons using "/sbin/startproc"
> rather than running the daemons themselves. So you are basically
> repeating everything the init script is already doing in the automount
> daemon which IMHO is rather pointless given I assume all Linux
> flavours use an analogous init script to launch the automount daemon.
Yeah, not all distributions use a function like this.
The idea here is that, if someone runs the program directly from the
command line, I want the same behavior except for possibly command line
arguments present in the configuration. Such as if someone runs the
program in the foreground maybe with debug enabled. A check to see if it
is already running is just a small part of that.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 1:08 ` H. Peter Anvin
2008-06-23 5:33 ` Jim Carter
@ 2008-06-23 8:06 ` Anton Altaparmakov
2008-06-23 9:03 ` Ian Kent
2008-06-24 1:08 ` Jim Carter
1 sibling, 2 replies; 39+ messages in thread
From: Anton Altaparmakov @ 2008-06-23 8:06 UTC (permalink / raw)
To: H. Peter Anvin; +Cc: autofs, J.P. King, Unix Support, Ian Kent
Hi,
On 23 Jun 2008, at 02:08, H. Peter Anvin wrote:
> J.P. King wrote:
>> As I said previously, because this is quite hard. The maps need to
>> be changed by the login process. We currently do this in the PAM
>> configuration. Given that we can have multiple log in at the same
>> time this means we need to do a lot of careful locking.
>> Ideally we would do something like include all the files from a
>> configuration directory and have a HUP get it to re-read all these
>> configuration snippets. This would be a relatively involved change
>> however.
>
> This sounds like a perfect use of an executable map to me.
Sounds like something that is certainly worth investigating.
> I don't know exactly what your maps look like, but it seems to me
> that since you have an unusual local requirement it would make sense
> to deal with it in a manner external to autofs itself.
This is what ours look like at present. When a user logs in we
generate two files (below $user is the user name of the user logging
in):
/var/run/pwfautomount/master.$user
/var/run/pwfautomount/auto.$user
I.e. for me with user name aia21 the files are:
/var/run/pwfautomount/master.aia21
/var/run/pwfautomount/auto.aia21
Where the first file is the master map for that user and it contains a
single line like this (in this example the user logging in is me, i.e.
aia21, hence the two "aia21" strings, those would be set to the
currently logging in user):
/servers/aia21 file:/var/run/pwfautomount/auto.aia21
And the second file contains at present for my user "aia21":
PWF-HOME1 -
fstype
=
ncp
,ipserver
=
172.16.3.42
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-HOME1/aia21.Aliases
PWF-HOME2 -
fstype
=
ncp
,ipserver
=
172.16.3.43
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-HOME2/aia21.Aliases
PWF-HOME3 -
fstype
=
ncp
,ipserver
=
172.16.3.44
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-HOME3/aia21.Aliases
PWF-HOME4 -
fstype
=
ncp
,ipserver
=
172.16.3.45
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-HOME4/aia21.Aliases
PWF-SHARED -
fstype
=
ncp
,ipserver
=
172.16.3.8
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-SHARED/aia21.Aliases
Note that these lines are generated by querying the Netware e-
Directory and have to be regenerated each time a user logs in as the
list can have changed between logins and in particular the list can be
different between different people logging in.
We then launch the automount process like so:
perl -e 'exec {"automount"} @ARGV' pwf-amnt \
-p "/var/run/pwfautomount/pid.$user" "/var/run/pwfautomount/
master.$user"
Note the perl exec magic is only needed with the new automount from
autofs 5. With autofs 4 we simply ran automount with appropriate
options...
Further, when a user logs out, we ask the automount process for that
user to shut down, thus causing all those mounts to disappear like so:
# Tidy up the user's automounter(s)
ampid=$(cat "/var/run/pwfautomount/pid.$user")
# Kill user's processes politely at first, then less so.
su -c "kill -TERM -1" $user
sleep 1
su -c "kill -KILL -1" $user
sleep 1
rm -f /var/run/pwfautomount/auto.$user /var/run/pwfautomount/pw.$user \
/var/run/pwfautomount/master.$user
# Repeatedly ask the automounter to shut down until it succeeds (and
hence the
# "kill" fails).
(
while kill -USR2 $ampid 2>/dev/null; do
sleep 1
done
) >/dev/null 2>&1
So we have a direct benefit of having multiple automount instances
because it makes it very easy to cause all the user's automounts to be
unmounted on logout.
We do not want them to remain as the number of connections to the
Novell e-Directory is limited per user thus if the automount mounts
were to remain for some reason each of them would count as a
"connection" and a user could easily get into a situation where they
can't log in at all any more because of old automount mounts sitting
around on various other servers/workstations.
How would we be able to perform such cleanup if using one automount
instance with an executable map?
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 8:06 ` Anton Altaparmakov
@ 2008-06-23 9:03 ` Ian Kent
2008-06-23 9:12 ` Ian Kent
2008-06-24 1:08 ` Jim Carter
1 sibling, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-23 9:03 UTC (permalink / raw)
To: Anton Altaparmakov; +Cc: autofs, J.P. King, Unix Support, H. Peter Anvin
On Mon, 2008-06-23 at 09:06 +0100, Anton Altaparmakov wrote:
> Hi,
>
> On 23 Jun 2008, at 02:08, H. Peter Anvin wrote:
> > J.P. King wrote:
> >> As I said previously, because this is quite hard. The maps need to
> >> be changed by the login process. We currently do this in the PAM
> >> configuration. Given that we can have multiple log in at the same
> >> time this means we need to do a lot of careful locking.
> >> Ideally we would do something like include all the files from a
> >> configuration directory and have a HUP get it to re-read all these
> >> configuration snippets. This would be a relatively involved change
> >> however.
> >
> > This sounds like a perfect use of an executable map to me.
>
> Sounds like something that is certainly worth investigating.
I suspect that you'll find that some existing bugs will prevent you from
moving to a single master map with 5.0.2 (and 5.0.3 as I'm currently
working on problems submount handling). I also think there is more than
one way to do this as well but there is no way to do a forced expire on
a specific mount point at the moment.
I'll just walk through the email and try to describe an alternate
approach in spite of the caveats above. I'm not sure that my suggestions
will be quite what you need, specifically wrt. the need for a forced
expire on a specific automount.
>
> > I don't know exactly what your maps look like, but it seems to me
> > that since you have an unusual local requirement it would make sense
> > to deal with it in a manner external to autofs itself.
>
>
> This is what ours look like at present. When a user logs in we
> generate two files (below $user is the user name of the user logging
> in):
>
> /var/run/pwfautomount/master.$user
> /var/run/pwfautomount/auto.$user
>
> I.e. for me with user name aia21 the files are:
>
> /var/run/pwfautomount/master.aia21
> /var/run/pwfautomount/auto.aia21
>
> Where the first file is the master map for that user and it contains a
> single line like this (in this example the user logging in is me, i.e.
> aia21, hence the two "aia21" strings, those would be set to the
> currently logging in user):
>
> /servers/aia21 file:/var/run/pwfautomount/auto.aia21
Here we might use:
/servers file:/<any dir you want>/auto.user
For the map entries below this might be something like:
* -fstype=autofs file:/var/run/pwfautomount/auto.&
The point of using a submount is that autofs will mount /servers/<user>
(for issuing control commands) and get it's map entries from the
map /var/run/pwfautomount/auto.<user> and when it expires away the mount
itself will also go away. Quite similar to what you have now and should
actually work with both v4 and v5 (or would if I didn't have bugs with
submounts in v5 at the moment and if v4 had a forced expire).
The problem for your setup is be not being able to send a forced expire
(USR2) to a specific mount which will of course cause mounts you don't
want umounted to be umounted. This is an example of the type of control
function we want to provide either by using the daemon or another
control program. The way this would work is similar to the way in which
we dynamically change the log level now (sorry, added in 5.0.3),
optionally specifying an autofs mount point.
But, yes, it ain't there now.
>
> And the second file contains at present for my user "aia21":
>
> PWF-HOME1 -
> fstype
> =
> ncp
> ,ipserver
> =
> 172.16.3.42
> ,owner
> =
> aia21
> ,uid
> =
> aia21
> ,gid
> =
> aia21
> ,hard
> ,nodev
> ,nosuid
> ,nfsextras
> ,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
> authcon/aia21 :PWF-HOME1/aia21.Aliases
> PWF-HOME2 -
> fstype
> =
> ncp
> ,ipserver
> =
> 172.16.3.43
> ,owner
> =
> aia21
> ,uid
> =
> aia21
> ,gid
> =
> aia21
> ,hard
> ,nodev
> ,nosuid
> ,nfsextras
> ,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
> authcon/aia21 :PWF-HOME2/aia21.Aliases
> PWF-HOME3 -
> fstype
> =
> ncp
> ,ipserver
> =
> 172.16.3.44
> ,owner
> =
> aia21
> ,uid
> =
> aia21
> ,gid
> =
> aia21
> ,hard
> ,nodev
> ,nosuid
> ,nfsextras
> ,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
> authcon/aia21 :PWF-HOME3/aia21.Aliases
> PWF-HOME4 -
> fstype
> =
> ncp
> ,ipserver
> =
> 172.16.3.45
> ,owner
> =
> aia21
> ,uid
> =
> aia21
> ,gid
> =
> aia21
> ,hard
> ,nodev
> ,nosuid
> ,nfsextras
> ,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
> authcon/aia21 :PWF-HOME4/aia21.Aliases
> PWF-SHARED -
> fstype
> =
> ncp
> ,ipserver
> =
> 172.16.3.8
> ,owner
> =
> aia21
> ,uid
> =
> aia21
> ,gid
> =
> aia21
> ,hard
> ,nodev
> ,nosuid
> ,nfsextras
> ,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
> authcon/aia21 :PWF-SHARED/aia21.Aliases
>
> Note that these lines are generated by querying the Netware e-
> Directory and have to be regenerated each time a user logs in as the
> list can have changed between logins and in particular the list can be
> different between different people logging in.
>
> We then launch the automount process like so:
>
> perl -e 'exec {"automount"} @ARGV' pwf-amnt \
> -p "/var/run/pwfautomount/pid.$user" "/var/run/pwfautomount/
> master.$user"
>
> Note the perl exec magic is only needed with the new automount from
> autofs 5. With autofs 4 we simply ran automount with appropriate
> options...
>
>
> Further, when a user logs out, we ask the automount process for that
> user to shut down, thus causing all those mounts to disappear like so:
>
> # Tidy up the user's automounter(s)
> ampid=$(cat "/var/run/pwfautomount/pid.$user")
>
> # Kill user's processes politely at first, then less so.
> su -c "kill -TERM -1" $user
> sleep 1
> su -c "kill -KILL -1" $user
> sleep 1
>
> rm -f /var/run/pwfautomount/auto.$user /var/run/pwfautomount/pw.$user \
> /var/run/pwfautomount/master.$user
>
> # Repeatedly ask the automounter to shut down until it succeeds (and
> hence the
> # "kill" fails).
> (
> while kill -USR2 $ampid 2>/dev/null; do
> sleep 1
> done
> ) >/dev/null 2>&1
We would probably take this logic into the forced-expire control
function, but for the general case, where forced umounting might not be
enabled, there's also the question of how long we try to get rid of the
mounts and the form of the communication of the result to the requester
(possibly a numeric return code?).
>
> So we have a direct benefit of having multiple automount instances
> because it makes it very easy to cause all the user's automounts to be
> unmounted on logout.
And probably will need continue this way for a while yet I think due to
the USR2 issue.
>
> We do not want them to remain as the number of connections to the
> Novell e-Directory is limited per user thus if the automount mounts
> were to remain for some reason each of them would count as a
> "connection" and a user could easily get into a situation where they
> can't log in at all any more because of old automount mounts sitting
> around on various other servers/workstations.
>
> How would we be able to perform such cleanup if using one automount
> instance with an executable map?
Perhaps someone else could post an approach using an executable map but
I'm not sure we can get around the forced-expire difficulty though.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 9:03 ` Ian Kent
@ 2008-06-23 9:12 ` Ian Kent
2008-06-23 9:18 ` Ian Kent
0 siblings, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-23 9:12 UTC (permalink / raw)
To: Anton Altaparmakov; +Cc: autofs, J.P. King, Unix Support, H. Peter Anvin
On Mon, 2008-06-23 at 17:03 +0800, Ian Kent wrote:
> >
> > /servers/aia21 file:/var/run/pwfautomount/auto.aia21
>
> Here we might use:
> /servers file:/<any dir you want>/auto.user
>
> For the map entries below this might be something like:
> * -fstype=autofs file:/var/run/pwfautomount/auto.&
>
Clearly this could well be "program:/var/run/pwfautomount/auto.&" and
contain the logic to generate the mount location. But it would be called
to lookup the mount location whenever a request to mount a given <key>
comes in (eg. /devsers/<user>/<key>) which may introduce unacceptable
overhead.
If this was used then the program map would return:
-fstype=autofs file:/var/run/pwfautomount/auto.&
without the key itself.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 9:12 ` Ian Kent
@ 2008-06-23 9:18 ` Ian Kent
0 siblings, 0 replies; 39+ messages in thread
From: Ian Kent @ 2008-06-23 9:18 UTC (permalink / raw)
To: Anton Altaparmakov; +Cc: autofs, J.P. King, Unix Support, H. Peter Anvin
On Mon, 2008-06-23 at 17:12 +0800, Ian Kent wrote:
> On Mon, 2008-06-23 at 17:03 +0800, Ian Kent wrote:
> > >
> > > /servers/aia21 file:/var/run/pwfautomount/auto.aia21
> >
> > Here we might use:
> > /servers file:/<any dir you want>/auto.user
> >
> > For the map entries below this might be something like:
> > * -fstype=autofs file:/var/run/pwfautomount/auto.&
> >
>
> Clearly this could well be "program:/var/run/pwfautomount/auto.&" and
> contain the logic to generate the mount location. But it would be called
> to lookup the mount location whenever a request to mount a given <key>
> comes in (eg. /devsers/<user>/<key>) which may introduce unacceptable
> overhead.
>
> If this was used then the program map would return:
>
> -fstype=autofs file:/var/run/pwfautomount/auto.&
Oops, that's not right.
It would return the location corresponding to the passed in key.
Ignore my comment about a program map, it's not right, I'll need to
re-think that.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-23 8:06 ` Anton Altaparmakov
2008-06-23 9:03 ` Ian Kent
@ 2008-06-24 1:08 ` Jim Carter
2008-06-24 7:27 ` Anton Altaparmakov
1 sibling, 1 reply; 39+ messages in thread
From: Jim Carter @ 2008-06-24 1:08 UTC (permalink / raw)
To: Anton Altaparmakov
Cc: autofs, Ian Kent, J.P. King, Unix Support, H. Peter Anvin
On Mon, 23 Jun 2008, Anton Altaparmakov wrote:
> On 23 Jun 2008, at 02:08, H. Peter Anvin wrote:
> > This sounds like a perfect use of an executable map to me.
>
> Sounds like something that is certainly worth investigating.
> ......
> This is what ours look like at present. When a user logs in we
> generate two files (below $user is the user name of the user logging
> in):
This problem is interesting: how would you do this while using the
multi-thread capability of autofs version 5? Here's how far I got. First,
we're not going to mount anything at login time; we're going to mount the
homedir the first time it's referenced, which on my system would be
slightly before logging in is finished (to check the ssh key in the
homedir). Similarly, we're going to rely on automount's normal expiration
behavior to get rid of mounts after logout.
/etc/auto.master would say:
/server /etc/auto.per-user
/etc/auto.per-user says:
* -fstype=autofs,-DNCP_USER=& program:/etc/auto.userdirs
(this is bogus, see below)
/etc/auto.userdirs is executable and goes something like this: (I modified
it so it reports something that can be mounted on my system, and it
actually happens.)
#!/bin/sh
# $1 is the map key, i.e. on access to /server/$user/$share, $1 would be
# $share. Translate the key into the server's IP address. Likely this
# is waaaaay different on an authentic Novell network.
ip=`dig +short +search $1 A`
# Emit the map row (leaving off the key). Bogus \'s supplied for
# readability.
echo -fstype=ncp,ipserver=$ip,owner=$NCP_USER,uid=$NCP_USER,gid=$NCP_USER,\
hard,nodev,nosuid,nfsextras,strong,codepage=cp850,iocharset=utf8,\
filemode=640,dirmode=750,a=/authcon/$NCP_USER :$1/$NCP_USER.Aliases
Now, what's the right way to get the NCP user available to the program
map? In a file map -DNCP_USER (as shown, with the hyphen) will propagate
this variable into the map rows, so the whole thing could have been
handled in a file map... except for the IP address in the mount options.
If ipserver could possibly be a FQDN rather than a numeric IP address, I
would be very, very tempted to create a massive DNS map that has "A"
records for PWF-HOME$N.$user.ncp-xlate.cam.ac.uk (to give an example domain
structure). This would be updated, perhaps by dynamic DNS updates,
whenever a user's server assignment changed.
Returning to the question that most interests me, in the submount I tried
these variants:
* -fstype=autofs,-DNCP_USER=& program:/etc/auto.userdirs
(NCP_USER was not defined as an environment variable; neither was USER)
* -fstype=autofs program:/etc/auto.userdirs &
(The extra arg to the program map was ignored with no error message)
What do people think would be the best way to get the containing map key
into the program map? Not the key to be translated by the map (in our
case PWF-HOME1 etc.), but the key that caused the submount to be created,
or any of the other environment variables of the submount, such as $USER,
which is probably what you really want to use here.
Warning: before deploying a submount-based scheme in production, watch for
a resolution of the internal locking (mutex) issue that's so bedeviling me.
James F. Carter Voice 310 825 2897 FAX 310 206 6673
UCLA-Mathnet; 6115 MSA; 405 Hilgard Ave.; Los Angeles, CA, USA 90095-1555
Email: jimc@math.ucla.edu http://www.math.ucla.edu/~jimc (q.v. for PGP key)
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-24 1:08 ` Jim Carter
@ 2008-06-24 7:27 ` Anton Altaparmakov
2008-06-24 7:38 ` Ian Kent
2008-06-24 18:55 ` Jim Carter
0 siblings, 2 replies; 39+ messages in thread
From: Anton Altaparmakov @ 2008-06-24 7:27 UTC (permalink / raw)
To: Jim Carter; +Cc: autofs, Ian Kent, J.P. King, Unix Support, H. Peter Anvin
Hi,
On 24 Jun 2008, at 02:08, Jim Carter wrote:
> On Mon, 23 Jun 2008, Anton Altaparmakov wrote:
>> On 23 Jun 2008, at 02:08, H. Peter Anvin wrote:
>>> This sounds like a perfect use of an executable map to me.
>>
>> Sounds like something that is certainly worth investigating.
>> ......
>> This is what ours look like at present. When a user logs in we
>> generate two files (below $user is the user name of the user logging
>> in):
>
> This problem is interesting: how would you do this while using the
> multi-thread capability of autofs version 5? Here's how far I got.
> First,
> we're not going to mount anything at login time; we're going to
> mount the
> homedir the first time it's referenced, which on my system would be
> slightly before logging in is finished (to check the ssh key in the
> homedir).
Note this is not possible for us. You cannot use SSH-keys when the
home directory is on a Netware server because you need the user's
password to be able to mount the home directory, there is no way to
perform the mount before asking the user for their password. Once the
user is logged in, as long as they maintain that session open, they
can then use SSH key based authentication when logging in to the same
PWF Linux server as their home directory is already mounted so their
SSH keys are accessible before their subsequent logins. This is one
of the "features" our users complain about the most...
> Similarly, we're going to rely on automount's normal expiration
> behavior to get rid of mounts after logout.
>
> /etc/auto.master would say:
> /server /etc/auto.per-user
>
> /etc/auto.per-user says:
> * -fstype=autofs,-DNCP_USER=& program:/etc/auto.userdirs
> (this is bogus, see below)
>
> /etc/auto.userdirs is executable and goes something like this: (I
> modified
> it so it reports something that can be mounted on my system, and it
> actually happens.)
>
> #!/bin/sh
> # $1 is the map key, i.e. on access to /server/$user/$share, $1
> would be
> # $share. Translate the key into the server's IP address. Likely
> this
> # is waaaaay different on an authentic Novell network.
> ip=`dig +short +search $1 A`
>
> # Emit the map row (leaving off the key). Bogus \'s supplied for
> # readability.
> echo -fstype=ncp,ipserver=$ip,owner=$NCP_USER,uid=$NCP_USER,gid=
> $NCP_USER,\
> hard,nodev,nosuid,nfsextras,strong,codepage=cp850,iocharset=utf8,\
> filemode=640,dirmode=750,a=/authcon/$NCP_USER :$1/$NCP_USER.Aliases
>
> Now, what's the right way to get the NCP user available to the program
> map? In a file map -DNCP_USER (as shown, with the hyphen) will
> propagate
> this variable into the map rows, so the whole thing could have been
> handled in a file map... except for the IP address in the mount
> options.
> If ipserver could possibly be a FQDN rather than a numeric IP
> address, I
> would be very, very tempted to create a massive DNS map that has "A"
> records for PWF-HOME$N.$user.ncp-xlate.cam.ac.uk (to give an example
> domain
> structure). This would be updated, perhaps by dynamic DNS updates,
> whenever a user's server assignment changed.
>
> Returning to the question that most interests me, in the submount I
> tried
> these variants:
>
> * -fstype=autofs,-DNCP_USER=& program:/etc/auto.userdirs
> (NCP_USER was not defined as an environment variable; neither was
> USER)
> * -fstype=autofs program:/etc/auto.userdirs &
> (The extra arg to the program map was ignored with no error
> message)
>
> What do people think would be the best way to get the containing map
> key
> into the program map? Not the key to be translated by the map (in our
> case PWF-HOME1 etc.), but the key that caused the submount to be
> created,
> or any of the other environment variables of the submount, such as
> $USER,
> which is probably what you really want to use here.
I would have expected the -DNCP_USER= to be created as an environment
variable for the program map to find or alternatively to be given on
the program map command line. Given a choice the environment variable
option would be much nicer and easier to use.
> Warning: before deploying a submount-based scheme in production,
> watch for
> a resolution of the internal locking (mutex) issue that's so
> bedeviling me.
Could you elaborate on this? What issue are you seeing? Thanks a lot
in advance!
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-24 7:27 ` Anton Altaparmakov
@ 2008-06-24 7:38 ` Ian Kent
2008-06-24 8:08 ` Anton Altaparmakov
2008-06-24 18:55 ` Jim Carter
1 sibling, 1 reply; 39+ messages in thread
From: Ian Kent @ 2008-06-24 7:38 UTC (permalink / raw)
To: Anton Altaparmakov; +Cc: autofs, Unix Support, J.P. King, H. Peter Anvin
On Tue, 2008-06-24 at 08:27 +0100, Anton Altaparmakov wrote:
> Hi,
>
> On 24 Jun 2008, at 02:08, Jim Carter wrote:
> > On Mon, 23 Jun 2008, Anton Altaparmakov wrote:
> >> On 23 Jun 2008, at 02:08, H. Peter Anvin wrote:
> >>> This sounds like a perfect use of an executable map to me.
> >>
> >> Sounds like something that is certainly worth investigating.
> >> ......
> >> This is what ours look like at present. When a user logs in we
> >> generate two files (below $user is the user name of the user logging
> >> in):
> >
> > This problem is interesting: how would you do this while using the
> > multi-thread capability of autofs version 5? Here's how far I got.
> > First,
> > we're not going to mount anything at login time; we're going to
> > mount the
> > homedir the first time it's referenced, which on my system would be
> > slightly before logging in is finished (to check the ssh key in the
> > homedir).
>
> Note this is not possible for us. You cannot use SSH-keys when the
> home directory is on a Netware server because you need the user's
> password to be able to mount the home directory, there is no way to
> perform the mount before asking the user for their password. Once the
> user is logged in, as long as they maintain that session open, they
> can then use SSH key based authentication when logging in to the same
> PWF Linux server as their home directory is already mounted so their
> SSH keys are accessible before their subsequent logins. This is one
> of the "features" our users complain about the most...
>
> > Similarly, we're going to rely on automount's normal expiration
> > behavior to get rid of mounts after logout.
> >
> > /etc/auto.master would say:
> > /server /etc/auto.per-user
> >
> > /etc/auto.per-user says:
> > * -fstype=autofs,-DNCP_USER=& program:/etc/auto.userdirs
> > (this is bogus, see below)
> >
> > /etc/auto.userdirs is executable and goes something like this: (I
> > modified
> > it so it reports something that can be mounted on my system, and it
> > actually happens.)
> >
> > #!/bin/sh
> > # $1 is the map key, i.e. on access to /server/$user/$share, $1
> > would be
> > # $share. Translate the key into the server's IP address. Likely
> > this
> > # is waaaaay different on an authentic Novell network.
> > ip=`dig +short +search $1 A`
> >
> > # Emit the map row (leaving off the key). Bogus \'s supplied for
> > # readability.
> > echo -fstype=ncp,ipserver=$ip,owner=$NCP_USER,uid=$NCP_USER,gid=
> > $NCP_USER,\
> > hard,nodev,nosuid,nfsextras,strong,codepage=cp850,iocharset=utf8,\
> > filemode=640,dirmode=750,a=/authcon/$NCP_USER :$1/$NCP_USER.Aliases
> >
> > Now, what's the right way to get the NCP user available to the program
> > map? In a file map -DNCP_USER (as shown, with the hyphen) will
> > propagate
> > this variable into the map rows, so the whole thing could have been
> > handled in a file map... except for the IP address in the mount
> > options.
> > If ipserver could possibly be a FQDN rather than a numeric IP
> > address, I
> > would be very, very tempted to create a massive DNS map that has "A"
> > records for PWF-HOME$N.$user.ncp-xlate.cam.ac.uk (to give an example
> > domain
> > structure). This would be updated, perhaps by dynamic DNS updates,
> > whenever a user's server assignment changed.
> >
> > Returning to the question that most interests me, in the submount I
> > tried
> > these variants:
> >
> > * -fstype=autofs,-DNCP_USER=& program:/etc/auto.userdirs
> > (NCP_USER was not defined as an environment variable; neither was
> > USER)
> > * -fstype=autofs program:/etc/auto.userdirs &
> > (The extra arg to the program map was ignored with no error
> > message)
> >
> > What do people think would be the best way to get the containing map
> > key
> > into the program map? Not the key to be translated by the map (in our
> > case PWF-HOME1 etc.), but the key that caused the submount to be
> > created,
> > or any of the other environment variables of the submount, such as
> > $USER,
> > which is probably what you really want to use here.
>
> I would have expected the -DNCP_USER= to be created as an environment
> variable for the program map to find or alternatively to be given on
> the program map command line. Given a choice the environment variable
> option would be much nicer and easier to use.
Setting them in the environment is the sensible and easiest thing for me
to do. But setting the macros that are in the lookup table at the time
of the mount it isn't done at the moment. I think we had a request for
this some time ago and I made a patch for testing but didn't get any
feedback so I let it slip.
>
> > Warning: before deploying a submount-based scheme in production,
> > watch for
> > a resolution of the internal locking (mutex) issue that's so
> > bedeviling me.
>
> Could you elaborate on this? What issue are you seeing? Thanks a lot
> in advance!
Jim sees autofs hang.
There is synchronization problem between submounts that are shutting
down at the same time a mount request comes in. Of course we only see it
on busy systems.
Ian
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-24 7:38 ` Ian Kent
@ 2008-06-24 8:08 ` Anton Altaparmakov
2008-06-24 18:46 ` Jim Carter
0 siblings, 1 reply; 39+ messages in thread
From: Anton Altaparmakov @ 2008-06-24 8:08 UTC (permalink / raw)
To: Ian Kent; +Cc: autofs, Unix Support, J.P. King, H. Peter Anvin
Hi,
On 24 Jun 2008, at 08:38, Ian Kent wrote:
> On Tue, 2008-06-24 at 08:27 +0100, Anton Altaparmakov wrote:
>> On 24 Jun 2008, at 02:08, Jim Carter wrote:
>>> What do people think would be the best way to get the containing map
>>> key
>>> into the program map? Not the key to be translated by the map (in
>>> our
>>> case PWF-HOME1 etc.), but the key that caused the submount to be
>>> created,
>>> or any of the other environment variables of the submount, such as
>>> $USER,
>>> which is probably what you really want to use here.
>>
>> I would have expected the -DNCP_USER= to be created as an environment
>> variable for the program map to find or alternatively to be given on
>> the program map command line. Given a choice the environment
>> variable
>> option would be much nicer and easier to use.
>
> Setting them in the environment is the sensible and easiest thing
> for me
> to do. But setting the macros that are in the lookup table at the time
> of the mount it isn't done at the moment. I think we had a request for
> this some time ago and I made a patch for testing but didn't get any
> feedback so I let it slip.
Ok. I have for testing purposes done the changes you suggested and am
using a file map successfully so we probably will not want/need to use
a program map given the overhead it would impose. Much easier to
regenerate the file map for each user when they log in. We now have:
/etc/auto.master:
/.servers file:/etc/auto.user
/etc/auto.user:
* -fstype=autofs file:/var/run/pwfautomount/auto.&
And /var/run/pwfautomount/auto.<username> is generated when <username>
user logs in and for my user aia21 contains exactly the same content
as before:
PWF-HOME1 -
fstype
=
ncp
,ipserver
=
172.16.3.42
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-HOME1/aia21.Aliases
PWF-HOME2 -
fstype
=
ncp
,ipserver
=
172.16.3.43
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-HOME2/aia21.Aliases
PWF-HOME3 -
fstype
=
ncp
,ipserver
=
172.16.3.44
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-HOME3/aia21.Aliases
PWF-HOME4 -
fstype
=
ncp
,ipserver
=
172.16.3.45
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-HOME4/aia21.Aliases
PWF-SHARED -
fstype
=
ncp
,ipserver
=
172.16.3.8
,owner
=
aia21
,uid
=
aia21
,gid
=
aia21
,hard
,nodev
,nosuid
,nfsextras
,strong,codepage=cp850,iocharset=utf8,filemode=640,dirmode=750,a=/
authcon/aia21 :PWF-SHARED/aia21.Aliases
On logout I then do this:
# Kill user's processes politely at first, then less so.
su -c "kill -TERM -1" $user
sleep 1
su -c "kill -KILL -1" $user
sleep 1
# For logging purposes
ps -U $user
# Tidy up the user's (auto)mounts.
(
umount /home/$user
umount /authcon/$user
/sbin/killproc -USR1 /usr/sbin/automount
) >/dev/null 2>&1
And yes, this does expire everybody's non-busy mounts but that is not
actually a bad thing. They will get automounted on next use so there
is no problem. And it has the nice side effect that it will cause
broken mounts to expire sooner. (We have a recurring problem where
people leaving themselves logged in for ages end up with broken
connections and NCPfs does not support reconnects so this might
actually help us.)
>>> Warning: before deploying a submount-based scheme in production,
>>> watch for
>>> a resolution of the internal locking (mutex) issue that's so
>>> bedeviling me.
>>
>> Could you elaborate on this? What issue are you seeing? Thanks a
>> lot
>> in advance!
>
> Jim sees autofs hang.
> There is synchronization problem between submounts that are shutting
> down at the same time a mount request comes in. Of course we only
> see it
> on busy systems.
I assume someone has attached to such a hung machine with gdb and
gotten the two (or more) stack traces involved in the dead lock to
find where in the code this happens? If not, that begs the question
as to why not? (-: Also if the problem really is with a mutex then
the kernel's own mutex debugging code should pick up on the dead lock
and produce stack traces, too. Jim, have you tried running a kernel
with lock debugging features turned on?
If there is a reproducible test case, perhaps a script that can be run
to trigger it, I could look into it if no-one else has done it
already...
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-24 8:08 ` Anton Altaparmakov
@ 2008-06-24 18:46 ` Jim Carter
0 siblings, 0 replies; 39+ messages in thread
From: Jim Carter @ 2008-06-24 18:46 UTC (permalink / raw)
To: Anton Altaparmakov
Cc: autofs, H. Peter Anvin, J.P. King, Unix Support, Ian Kent
On Tue, 24 Jun 2008, Anton Altaparmakov wrote:
> Ok. I have for testing purposes done the changes you suggested and am using a
> file map successfully so we probably will not want/need to use a program map
> given the overhead it would impose. Much easier to regenerate the file map
> for each user when they log in. We now have:
>
> /etc/auto.master:
> /.servers file:/etc/auto.user
>
> /etc/auto.user:
> * -fstype=autofs file:/var/run/pwfautomount/auto.&
>
> And /var/run/pwfautomount/auto.<username> is generated when <username> user
> logs in and for my user aia21 contains exactly the same content as before:
This looks like a very sane way to handle your situation.
> # Tidy up the user's (auto)mounts.
> (
> umount /home/$user
> umount /authcon/$user
> /sbin/killproc -USR1 /usr/sbin/automount
> ) >/dev/null 2>&1
>
> And yes, this does expire everybody's non-busy mounts but that is not actually
> a bad thing. They will get automounted on next use so there is no problem.
> And it has the nice side effect that it will cause broken mounts to expire
> sooner. (We have a recurring problem where people leaving themselves logged
> in for ages end up with broken connections and NCPfs does not support
> reconnects so this might actually help us.)
So it's a similar deal as CIFS: you need, and don't have, the user's
plaintext password if the automounter ever expires the mount and then tries
to reconnect when it's referred to again (in the same session). Bummer.
At least with CIFS there's the possibility of getting a Kerberos ticket
valid on Windows at login time, and making it available via rpc.gssd or
something like that. I want to experiment with that but haven't
been able to make time for it yet -- some of our users would really get
good use out of such a feature.
It's much better if the filesystem is not mounted when the server or client
crashes (or some idiot unplugs it). Automounter expiration is good, if
feasible for the filesystem type. It also disposes of resources promptly
without extra scripting by the sysop that could get broken.
> I assume someone has attached to such a hung machine with gdb and gotten the
> two (or more) stack traces involved in the dead lock to find where in the code
> this happens?
More like 130 threads to be reported, in my case :-( Yes, I have this all
automated. You can take a look at some of the tracebacks in the mailing
list archive (oink). The rate of hanging seems to be proportional to the
square of the rate of mount-expire cycles, being caused by a race condition
getting a mutex, so it was noticed first on our webservers, which serve
automounted UserDirs. Ian Kent and I are making good progress stomping
this bug (he fixes, I break it again :-).
James F. Carter Voice 310 825 2897 FAX 310 206 6673
UCLA-Mathnet; 6115 MSA; 405 Hilgard Ave.; Los Angeles, CA, USA 90095-1555
Email: jimc@math.ucla.edu http://www.math.ucla.edu/~jimc (q.v. for PGP key)
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-24 7:27 ` Anton Altaparmakov
2008-06-24 7:38 ` Ian Kent
@ 2008-06-24 18:55 ` Jim Carter
2008-06-24 19:18 ` Anton Altaparmakov
1 sibling, 1 reply; 39+ messages in thread
From: Jim Carter @ 2008-06-24 18:55 UTC (permalink / raw)
To: Anton Altaparmakov
Cc: autofs, Ian Kent, J.P. King, Unix Support, H. Peter Anvin
On Tue, 24 Jun 2008, Anton Altaparmakov wrote:
> >This problem is interesting: how would you do this while using the
> >multi-thread capability of autofs version 5? Here's how far I got. First,
> >we're not going to mount anything at login time; we're going to mount the
> >homedir the first time it's referenced, which on my system would be
> >slightly before logging in is finished (to check the ssh key in the
> >homedir).
>
> Note this is not possible for us. You cannot use SSH-keys when the home
> directory is on a Netware server because you need the user's password to be
> able to mount the home directory, there is no way to perform the mount before
> asking the user for their password.
Oh, I didn't mean that you should use ssh authentication (in the sense that
if the given password decrypts the ssh private key, that's sufficient to
authenticate the user), I meant that we always load the keys into an agent
process if existing, which requires automounting the homedir partway
through PAM processing before the user is fully logged in.
Are you saying that publickey authentication in ssh is desired by users but
is not feasible, because the plaintext password is required to mount the
homedir to read the public key? I guess that's right, when the homedir is
on NCP or CIFS.
> >Warning: before deploying a submount-based scheme in production, watch for
> >a resolution of the internal locking (mutex) issue that's so bedeviling me.
>
> Could you elaborate on this? What issue are you seeing? Thanks a lot in
> advance!
Ian Kent described it pretty well in his reply. The thread that's trying
to mount a directory just hangs, and any further reference to that dir
piles up waiting forever for the mount to finish. At least the client
process can be killed.
James F. Carter Voice 310 825 2897 FAX 310 206 6673
UCLA-Mathnet; 6115 MSA; 405 Hilgard Ave.; Los Angeles, CA, USA 90095-1555
Email: jimc@math.ucla.edu http://www.math.ucla.edu/~jimc (q.v. for PGP key)
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: Horrible denial of service bug in autmount 5
2008-06-24 18:55 ` Jim Carter
@ 2008-06-24 19:18 ` Anton Altaparmakov
0 siblings, 0 replies; 39+ messages in thread
From: Anton Altaparmakov @ 2008-06-24 19:18 UTC (permalink / raw)
To: Jim Carter; +Cc: autofs, Ian Kent, Unix Support, H. Peter Anvin
Hi,
On 24 Jun 2008, at 19:55, Jim Carter wrote:
> On Tue, 24 Jun 2008, Anton Altaparmakov wrote:
>>> This problem is interesting: how would you do this while using the
>>> multi-thread capability of autofs version 5? Here's how far I
>>> got. First,
>>> we're not going to mount anything at login time; we're going to
>>> mount the
>>> homedir the first time it's referenced, which on my system would be
>>> slightly before logging in is finished (to check the ssh key in the
>>> homedir).
>>
>> Note this is not possible for us. You cannot use SSH-keys when the
>> home
>> directory is on a Netware server because you need the user's
>> password to be
>> able to mount the home directory, there is no way to perform the
>> mount before
>> asking the user for their password.
>
> Oh, I didn't mean that you should use ssh authentication (in the
> sense that
> if the given password decrypts the ssh private key, that's
> sufficient to
> authenticate the user), I meant that we always load the keys into an
> agent
> process if existing, which requires automounting the homedir partway
> through PAM processing before the user is fully logged in.
>
> Are you saying that publickey authentication in ssh is desired by
> users but
> is not feasible, because the plaintext password is required to mount
> the
> homedir to read the public key? I guess that's right, when the
> homedir is
> on NCP or CIFS.
Yes, that is correct. Users want it and we can't give it to them as
we cannot read their ~/.ssh directory contents until we have asked for
their plaintext password and used it to authenticate to the netware
server.
Best regards,
Anton
>>> Warning: before deploying a submount-based scheme in production,
>>> watch for
>>> a resolution of the internal locking (mutex) issue that's so
>>> bedeviling me.
>>
>> Could you elaborate on this? What issue are you seeing? Thanks a
>> lot in
>> advance!
>
> Ian Kent described it pretty well in his reply. The thread that's
> trying
> to mount a directory just hangs, and any further reference to that dir
> piles up waiting forever for the mount to finish. At least the client
> process can be killed.
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/
^ permalink raw reply [flat|nested] 39+ messages in thread
end of thread, other threads:[~2008-06-24 19:18 UTC | newest]
Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-06-20 13:24 Horrible denial of service bug in autmount 5 Anton Altaparmakov
2008-06-20 13:44 ` Ian Kent
2008-06-20 14:01 ` Anton Altaparmakov
2008-06-20 15:04 ` Ian Kent
2008-06-20 15:24 ` Anton Altaparmakov
2008-06-20 15:28 ` Ian Kent
2008-06-20 15:49 ` J.P. King
2008-06-20 16:07 ` Ian Kent
2008-06-20 16:22 ` J.P. King
2008-06-20 16:27 ` Ian Kent
2008-06-20 17:03 ` H. Peter Anvin
2008-06-20 18:22 ` Ian Kent
2008-06-20 19:03 ` H. Peter Anvin
2008-06-21 2:43 ` Ian Kent
2008-06-21 4:27 ` H. Peter Anvin
2008-06-21 4:44 ` Ian Kent
2008-06-21 4:54 ` H. Peter Anvin
2008-06-21 9:18 ` J.P. King
2008-06-23 1:53 ` Ian Kent
2008-06-23 2:26 ` J.P. King
2008-06-23 1:08 ` H. Peter Anvin
2008-06-23 5:33 ` Jim Carter
2008-06-23 8:06 ` Anton Altaparmakov
2008-06-23 9:03 ` Ian Kent
2008-06-23 9:12 ` Ian Kent
2008-06-23 9:18 ` Ian Kent
2008-06-24 1:08 ` Jim Carter
2008-06-24 7:27 ` Anton Altaparmakov
2008-06-24 7:38 ` Ian Kent
2008-06-24 8:08 ` Anton Altaparmakov
2008-06-24 18:46 ` Jim Carter
2008-06-24 18:55 ` Jim Carter
2008-06-24 19:18 ` Anton Altaparmakov
2008-06-23 2:40 ` Ian Kent
2008-06-23 2:55 ` J.P. King
2008-06-23 3:10 ` Ian Kent
2008-06-23 7:15 ` Anton Altaparmakov
2008-06-23 7:45 ` Ian Kent
2008-06-23 5:27 ` Jim Carter
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.