我已经在lxc容器内安装了 VirtualBox 。但是,当我尝试启动 VM 时,我收到以下消息:
kernel driver not accessible (rc=1909)
....permission problem with /dev/vboxdrv.
Run Code Online (Sandbox Code Playgroud)
这显然看起来像是一个可预测的安全问题。
有谁知道我如何授予容器访问此设备驱动程序的权限:/dev/vboxdrv?
非常感谢任何帮助或指示。
我目前正在一个安全的沙箱环境中开始一个评估不受信任的程序(学生作业)的项目。主要思想是围绕 lxc-utils 为 GlassFish 和 Java 包装器创建一个 Web 应用程序来管理 LXC 容器。它将有一个等待程序的队列,一个 Java 包装器将维护固定数量(池)的 LXC 容器,为每个程序分配一个(未使用的)容器。
每个容器都应该使用 SELinux 来保护主机系统。
我的问题是:为沙箱环境创建这样的机制是个好主意,还是有更好的解决方案来解决这个问题?它应该轻巧且安全,以防止学生的创造力。
我查看了 stackexchange 站点,但找不到任何内容。我查看了 Linux 容器https://en.wikipedia.org/wiki/LXC以及管理程序https://en.wikipedia.org/wiki/Hypervisor上的维基百科条目,但对两者的解释都超出了没有工作过也不会明白。我还看到了http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun但这也没有解释。
我玩过虚拟机之类的虚拟机。我对虚拟机的有限理解的一个起始想法可能是在沙盒环境中测试软件(当您无法购买/负担得起机器并且仍然对您正在开发的软件有一些想法时拥有一个 Solaris 盒子因为该目标硬件正在工作。)虽然它使用受到限制。这可能也是它在云计算领域取得飞跃的方式之一。问题很广泛,所以这就是我提炼它的方式-
有人能解释一下 hypervisor 和 *nix 容器是什么(如果可能的话,用类比)?
*nix 管理程序与虚拟机相同还是有区别?
通常在服务器上配置与安全相关的补丁的自动更新。因此,如果我运行的是 MySQL 5.5 并且出现了新的安全补丁,Ubuntu Server 将应用升级并重新启动 MySQL 以自动保护我。显然,这可以被禁用,但它对我们这些有点懒惰的人有帮助;)
Docker 容器内部是否存在这样的概念?如果我在 Docker 容器中运行 MySQL,是否需要不断停止容器,在其中打开一个 shell,然后更新和升级 MySQL?
环境:
我使用 CentOS-7 作为虚拟机管理程序,在libvirt. 每个容器都运行 CentOS-7 的最小安装以及精简的 FreePBX(Asterisk、Apache、MySQL + 位)。
症状:
有16个容器正在运行,没有任何问题。当我再次启动一个容器时,它确实会启动,但在第 17 个容器启动后,我无法systemctl start/restart/stop <anything>在任何容器中执行以下操作:
[root@test-lxc ~]# systemctl restart dnsmasq
Error: Too many open files
Run Code Online (Sandbox Code Playgroud)
诊断:
以下诊断和计数是在第 17 个 LXC 运行且systemctl restart blabla出现故障时完成的:
我可以 ssh 到任何 LXC 并运行最基本的命令,例如 ls 等。我怀疑该限制在某种程度上只影响systemd.
我试图理解我在哪里/为什么达到了极限。
[root@lxc-hypervisor]# sysctl fs.file-nr
fs.file-nr = 29616 0 12988463
Run Code Online (Sandbox Code Playgroud)
这没有经过调整,这只是默认安装的情况。与上述相同,最大(最后)值 = 12988463 由虚拟机管理程序报告,并且也在每个 LXC 内部。每个 LXC 中也报告了非常相似的第一个值,略低于 30000。
当我尝试计算每个 LXC 内所有进程的文件描述符时,我在每个 LXC 中得到的顺序是 400 ~ 500。
for pid in $( ls …Run Code Online (Sandbox Code Playgroud) 我试图在“监禁”某些应用程序之间做出决定,我知道 KVM 与 LXC 的权衡以及我如何同时使用它们。
最近我再次遇到 UML(用户模式 Linux),想知道它在安全性和资源消耗(或开销,如果你愿意)方面的比较。
我在哪里可以找到这样的比较,或者这里有人知道他们是如何比较的吗?
基本上:
我将在这个项目中使用 Ubuntu Linux。
为了在会议上培训特定应用程序,我需要:
对于#1,我们希望使用单个用户帐户,这样我们就不必为每个学生创建一个帐户并分发用户名和密码。
有谁知道我如何才能实现这些目标?哪种技术(例如 LXC、Chroot 等)最适合这种情况?我一直在考虑使用 .bash_profile 和 .bash_logout 来处理这些环境的创建和破坏,但不确定哪种技术能够创建我需要的环境。
在 Ubuntu 14.04 上使用以下命令行创建用户(非特权)LXC 容器时:
lxc-create -n test1 -t download -- -d $(lsb_release -si|tr 'A-Z' 'a-z') -r $(lsb_release -sc) -a $(dpkg --print-architecture)
Run Code Online (Sandbox Code Playgroud)
并且(不涉及创建的配置文件)然后尝试使用以下命令启动它:
lxc-start -n test1 -l DEBUG
Run Code Online (Sandbox Code Playgroud)
它失败。日志文件显示我:
lxc-start 1420149317.700 INFO lxc_start_ui - using rcfile /home/user/.local/share/lxc/test1/config
lxc-start 1420149317.700 INFO lxc_utils - XDG_RUNTIME_DIR isn't set in the environment.
lxc-start 1420149317.701 INFO lxc_confile - read uid map: type u nsid 0 hostid 100000 range 65536
lxc-start 1420149317.701 INFO lxc_confile - read uid map: type g nsid 0 hostid 100000 range 65536 …Run Code Online (Sandbox Code Playgroud) 问题是假设我想制作我的 linux 容器。第一个命令总是:-
sudo lxc-create -t debian -n p1
Run Code Online (Sandbox Code Playgroud)
模板名称通常是“ubuntu”,但由于我是 Debian 粉丝,因此已将其替换为 debian。两者的最终结果都是一样的,它开始通过写在 /usr/share/lxc/templates 的 lxc-debian 模板从 debian.org 下载组件。
$ sudo lxc-create -t debian -n debian-n
[sudo] password for shirish:
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/debian/rootfs-wheezy-amd64 ...
Downloading debian minimal ...
I: Retrieving Release
Run Code Online (Sandbox Code Playgroud)
我确实有一个本地 debian-wheezy.iso 映像文件。有没有办法告诉它使用本地 .iso 图像而不是访问网络。
使用用户时(在我的例子中是通过 LXC),您将一系列从属 GID 和 UID 分配给非特权用户。请参阅资源:subuid(5),subgid(5),newuidmap(1),newgidmap(1),user_namespaces(7)。
然后可以使用该范围,并将通过用户映射到系统帐户。
假设我们有一个(主机)系统帐户john,其 UID(和 GID)为 1000。GID 和 UID 的分配范围是 100000..165536。
所以一个条目分别存在于/etc/subgid和 中/etc/subuid:
john:100000:65536
Run Code Online (Sandbox Code Playgroud)
非特权容器内的文件归“内部”john所有,现在归主机 101000 所有,归“内部”root所有的文件归 100000。
通常,这些范围不会分配给主机上的任何名称。
ls朋友们提供更有意义的输出?john在我们的情况下?如果是这样,在从属范围内的那些有效用户和用户“所有者”之间创建共享组并相应地设置权限的唯一明智方法是?好吧,或者 ACL,很明显。lxc ×10
linux ×4
container ×2
userns ×2
chroot ×1
containers ×1
debian ×1
docker ×1
permissions ×1
sandbox ×1
security ×1
selinux ×1
shadow ×1
ubuntu ×1
virtualbox ×1