Re: [PATCH 2/5] nsenter: add --all meaning all namespaces and cwd and root

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 28/01/13 03:38, Eric W. Biederman wrote:
> Ángel González <ingenit@xxxxxxxx> writes:
>> Except that when you are distributing such script (eg. an init-like
>> script), your shell script will need to add code detecting which
>> namespaces the kernel supports (and adding appropiate flags to nsenter)
>> and checking if your nsenter version supports them or not.
> 
> Then what you want is --ignore-namespaces-if-not-supported-in-kernel.
> That is a somewhat different problem than --all.

No, I also want it to do
--include-namespaces-i-did-not-know-when-writing-this-shell-script :)



>> It's better to have --all to enter all namespaces that nsenter supports.
>> If you want to, it could print a warning when using --all and nsenter
>> knows about more namespaces than the kernel or if it detects that the
>> kernel knows about more namespaces than itself.
>> But having a --all to enter “as namespaces as possible” would be the
>> right thing IMHO.
> 
> The argument for --all and this is an argument that only applies to
> nsenter and not unshare is that usually things are more likely to do
> what you expect if you share more namespaces with them.
> 
> The counter argument is that sharing fewer namespaces than expected
> can easily invalidate your testing and introduce subtle bugs.
> 
> "nsenter -t $pid --all" is what I want most days, but I can't
> convince myself that "nsenter -t $pid -muinpUrw" is worse (just a few
> more characters) and it has the advantage that what has worked before
> should work again.
> 
> Right now --all looks like a subtle trap waiting for users.  Even
> --ignore-namespaces-if-not-supported-in-kernel looks like that to
> a degree.
> 
> With nsenter if we don't ignore failures when something we need is
> missing the failure is up there and in your face.  If we do ignore
> failures we can easily run into cases where commands that we run
> continue to work but on the wrong namespaces, causing all kinds of
> things to fail.
> 
> Think about using: "nsneter -t $pid -p /bin/kill -KILL -1" to ask a
> container to shutdown.  If we were to ignore the fact you can't enter
> the pid namespace than the command would kill everything and the box
> would go down.
> 
> That seems very scary.   So I don't like removing namespaces silently.

It could show a "Warning: Your kernel doesn't support pid namespaces"
in stderr.

No texactly ideal in your case, but slightly better.
Another option is to add --all-available, making a hard error not having
the namespaces specified by the explicit options but
--all-available to ignore missing ones.

> Having an --all that could mean everything nsenter supports this week
> is better but you start getting shell scripts that work fine on new
> distros but fail in horrible ways on old distro's with old versions of
> nsenter.  That certainly is better but still a bit of a scary prospect.
> 
> Eric

The namespaces-of-the-week could be a configure option for people
running on old kernels, but I don't see much way for improvement.



--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux