Hello Andre,<br><br>All labels are set from the host, so it shouldn't matter if a directory is bind mounted or not.<br><br>For the setup, this is actually pretty straightforward:<br>- You apply the desired label recursively on the container rootdir - See my python script to ease the process here : <a href="https://svn.coredumb.net/filedetails.php?repname=Coredumb&path=%2Fscripts%2Ftrunk%2Fpython%2Fsmack_label.py">https://svn.coredumb.net/filedetails.php?repname=Coredumb&path=%2Fscripts%2Ftrunk%2Fpython%2Fsmack_label.py</a><br>
- You change your current label to the desired one<br>- You start the container<br>- You change back your current label<br><br>Here's a practical example:<br># smack_label.py -w -r /srv/lxc/lxc1 lxc1<br># echo "lxc1" > /proc/self/current/attr<br>
# lxc-start -n lxc1<br># echo "_" > /proc/self/current/attr<br><br>You now have a container with all its files and processes labelled "lxc1". It's now up to you to set the accesses you need.<br>
<br><br>Note: _ or "floor" is the default label<br>Out from the documentation of Smack: A read or execute access requested on an object labelled "_" is permitted.<br><br>This is the default behaviour and can sure be overridden.<br>
<br>If you take my example in my previous mail, i tried to mount sysfs in the container and got it refused cause mounting it read-only is impossible.<br><br>In the message from the host:<br>type=1400 audit(1312278692.783:33840): lsm=SMACK fn=smack_sb_mount action=denied subject="curse" object="_" requested=w pid=19215 comm="mount" path="/sys" dev=sysfs ino=1<br>
<br>You can see here that object labeled "curse" tried to access sysfs labeled "_" in write mode and got explicitly refused.<br>You could change this behaviour by issuing the following command:<br>echo "curse _ rwx" > /smack/load<br>
<br>As you guess this is not what you want to do, cause it would let your container write to the host ;)<br><br><br>To <span id="result_box" class="short_text" lang="en"><span class="hps">summarize, by default only setting a different label - without any complex configuration at all - to your </span></span>containers will ensure you that a root inside a container could only have minimal impact and/or no impact on the host.<br>
The "smack setup" is only setting up the rules you need to secure your containers and datas inside them.<br>All smack documentation is available in the Kernel sources directory.<br><br><br>Hope this helps and that i've made myself clear enough,<br>
Olivier<br><br><div class="gmail_quote">On Mon, Aug 1, 2011 at 2:27 PM, Andre Nathan <span dir="ltr"><<a href="mailto:andre@digirati.com.br">andre@digirati.com.br</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi Olivier<br>
<div class="im"><br>
On Sun, 2011-07-31 at 16:42 +0200, Mauras Olivier wrote:<br>
</div><div class="im">> Furthermore system has SMACK enabled - Simplified Mandatory Access<br>
> Control - a label based MAC.<br>
> Each LXC container has its files and processes labeled differently -<br>
> Labels which can't write the host system default label, so basically a<br>
> root in a container can't make anything harmfull on the host system.<br>
> Same can be achieved _less easily_ with Selinux - Look at IBM papers.<br>
<br>
</div>Would you mind sharing your SMACK setup?<br>
<br>
Also, do you know how this applies to bind-mounted directories? Can I<br>
label a container's files when they are read-only bind-mounted from the<br>
host?<br>
<br>
Thanks,<br>
<font color="#888888">Andre<br>
<br>
</font></blockquote></div><br>