
On Tue, Feb 26, 2013 at 05:23:18PM -0700, Eric Blake wrote:
On 02/26/2013 09:08 AM, Michal Privoznik wrote:
Currently, if we label a file to match qemu process DAC label, we do not store the original owner anywhere. So when relabeling back, the only option we have is to relabel to root:root which is obviously wrong.
However, bare remembering is not enough. We need to keep track of how many times we labeled a file so only the last restore chown()-s file back to the original owner.
Definitely important for a read-only file shared by more than one domain.
In order to not pollute domain XML, this info is kept in driver's private data in a hash table with path being key and pair <oldLabel, refcount> being value.
Makes sense.
Have you looked at what it would take to use ACLs to grant access to qemu without having to do a full-blown chown? That would also need to use the hash table to undo the ACL at the end of the day, and we would need to fall back to chown() on file systems where ACL doesn't work, but it certainly sounds like that would be sharing some of the work in this patch.
Yep, independantly this patch we ought to make use of ACLs. It would remove a whole class of problems users experiance and make udev happier since it hates things chown'ing device nodes behind its back and has a tendancy to change them back at any moment. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|