Hi Steve,

On 2009.07.23 14:34:22 -0700, Steve Lawrence wrote:
> On Thu, Jul 23, 2009 at 09:14:55AM +0200, Martin Rehak wrote:
> > Hi Steve,
> > 
> > On 2009.07.22 12:32:01 -0700, Steve Lawrence wrote:
> > > The issue is that from the global zone context (non-zlogin), stuff like
> > > symbolic links to something like /etc could copy files from the global
> > > zone.
> > 
> > I don't understand it. cpio preserves symlinks, so symlinks will appear
> > just like symlinks in NGZ and files as a files. That means no mapping/no
> > risk. Am I right?
> > 
> > > I'm not sure why this is dangerous in this case, as we are only reading
> > > from the zone, as cpio does not traverse/open sym links, it just copes the
> > > link itself.
> 
> I don't see a problem with it, but you should get feedback from others as 
> well.
> I see a problem with the current implementation.  A spoofed cpio program in
> an evil non-global zone could create a desctructive cpio stream.  The
> cpio -icdmP@ in the global zone could write to /.
> 
> Another solution could be to do the restore within the context of the
> zlogin, to a path mounted within the zone's root.

I see.

Is there any reason why we are doing a zone copy in the zlogin at all?
Which problems would we face if we copy a zone from global zone. That
would eliminate problems with evil zone environment completely.

Many thanks
-- 
Martin

> -Steve L.
> 
> > 
> > That's what I think.
> > 
> > > Does this all end up going through zlogin one byte at a time?
> > 
> > Yes, the whole stream goes through zlogin from NGZ to GZ where it is
> > expanded.
> > 
> > What would be the problem if we wouldn't use any zlogin? Just a cpio on
> > zone root to a cpio to other zone root? What is the risk there?
> > 
> > Thank you
> > -- 
> > Martin
> > 
> > > -Steve
> > > 
> > > On Wed, Jul 22, 2009 at 04:57:47PM +0200, Martin Rehak wrote:
> > > > Hi,
> > > > 
> > > > I am trying to get Live Upgrade better by reimplementing some parts of
> > > > the code. What I am not sure of is whether is it safe to do a copy of
> > > > non global zone imports (filesystems dedicated to a zone in its config)
> > > > from the global zone.
> > > > 
> > > > This is existing code (lucopy.sh:1808, install-nv-clone):
> > > > http://grok.czech.sun.com:8080/source/xref/install-nv-clone/usr/src/cmd/inst/liveupgrade/scripts/lucopy.sh
> > > > 
> > > > 1808    (
> > > > 1809        fgrep -xv $mountpoint /tmp/lucopy.zonefs.$$
> > > > 1810        cat /tmp/lucopy.zoneipd.$$
> > > > 1811    ) | sed 's+.*+^&/+' |
> > > > 1812    zlogin $ozonename \
> > > > 1813        "cat > /tmp/lucopy.excl.$$; \
> > > > 1814        (
> > > > 1815            if [ -s /tmp/lucopy.excl.$$ ]; then
> > > > 1816                cd $zroot$mountpoint && \
> > > > 1817                find . -depth -print | \
> > > > 1818                egrep -vf /tmp/lucopy.excl.$$ | \
> > > > 1819                    cpio -ocmP@
> > > > 1820            else
> > > > 1821                cd $zroot$mountpoint && \
> > > > 1822                  find . -depth -print | cpio -ocmP@
> > > > 1823            fi
> > > > 1824        )" |
> > > > 1825    ( cd $tdir && cpio -icdmP@ )
> > > > 1826    lulib_unmount_pathname $tdir
> > > > 
> > > > To describe it, I would say that it will zlogin into the non global
> > > > zone, generates there a listing which it sends onto stdin of cpio which
> > > > writes an archive on its stdout. That archive is directed to the
> > > > stdin of cpio running _OUTSIDE_ the zone (in the global zone) which
> > > > finally expands it and writes it to a target directory.
> > > > 
> > > > Unfortunatelly few lines above there is this comment:
> > > > 
> > > > 1769    # Mount each non-lofs zone import in a temporary location
> > > > 1770    # and copy over the bits that belong there, extracted from
> > > > 1771    # the running zone.  We are now reaching through zone-
> > > > 1772    # controlled paths and thus must be extremely careful.
> > > > 1773    # Direct copies are not safe.
> > > > 
> > > > And the question is: What can happen if I simply will not generate the
> > > > listing and the archive inside the zone but will do it in the global
> > > > zone and using 'cpio -p'?
> > > > 
> > > > If I generalize the problem a little bit more I would like to know your
> > > > opinion about my idea of copying whole BE including zones in just one
> > > > 'cpio -p'. Why it wouldn't work, please?
> > > > 
> > > > Thank you very much for your any reply
> > > > -- 
> > > > Martin Rehak
> > > > _______________________________________________
> > > > zones-discuss mailing list
> > > > zones-discuss@opensolaris.org
_______________________________________________
zones-discuss mailing list
zones-discuss@opensolaris.org

Reply via email to