我想在我的一些 Debian/Ubuntu 主机上创建一个新用户,该用户能够使用命令apt-get update和更新服务器apt-get dist-upgrade,但我不想给他们完整的 sudo 访问权限来做任何其他事情。这可能吗?也许有一种方法可以创建一个他们无法编辑但可以执行的脚本,该脚本将以 root 用户身份执行?
我有很多 docker 容器,我需要在与它们的主机相同的 LAN 上进行寻址。到目前为止,我一直通过使用设置桥接器并手动为其分配 IP以及自己管理 IP来实现这一点。一个示例启动将是这样的:
docker run \
--net="none" \ \
--lxc-conf="lxc.network.type = veth" \
--lxc-conf="lxc.network.ipv4 = 192.168.1.3/24" \
--lxc-conf="lxc.network.ipv4.gateway = 192.168.1.254" \
--lxc-conf="lxc.network.link = br0" \
--lxc-conf="lxc.network.name = eth0" \
--lxc-conf="lxc.network.flags = up" \
-d [Docker Image ID]
Run Code Online (Sandbox Code Playgroud)
主机在/etc/network/interfaces(ubuntu) 中定义了网桥,如下所示:
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.254
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Run Code Online (Sandbox Code Playgroud)
自从我发现了serf,我一直在尝试在容器内使用自动发现,以便 DHCP 可以跟踪 IP 并将它们分发给容器。我从那以后将启动命令更改为: …
每当我发送关闭或重新启动 Debian 服务器的命令时,我的 shell 都会挂起并且没有响应(无法输入任何命令)。

在 Ubuntu 中执行相同的操作会导致会话正常关闭,因此我没有一个捆绑的终端挂在那里。是否有我需要安装的软件包或要进行的配置更改,以便我可以在 Debian 上获得相同的行为?
我已经为 Ubuntu 14.04 KVM 主机更新了我的KVM 管理脚本以支持 debian 8 来宾。手动安装后(预置脚本还不起作用),我在启动时遇到以下消息:

在安装过程中,我:
是否需要小心执行某些步骤,或者 Debian 8 尚未安装为 KVM 来宾?
在放弃并决定通过将所有行更新/etc/apt/sources.list为jessie而不是将 debian 7 VM 升级到 debian 8之后wheezy,我发现我最终得到了相同的行为。
然而,这个实例有一个静态 IP,我发现我仍然可以通过 SSH 连接到该 IP 上的服务器,所以看起来这是某种图形问题,服务器确实设法启动,我们只是看不到登录文本。我该如何解决这个问题?
这一次,在通过升级 debian 7 创建的 debian 安装上,我可以从 grub 菜单中单击高级并选择现在可用的 (sysvinit) 选项。我希望这可以解释启动的正常版本出了什么问题?

我对 LVM 快照的存储和工作方式有点困惑。据我所知,当您使用 LVM 创建快照时,它不会占用任何空间,但当您对系统上的文件进行更改时,您的 LVM 快照卷的大小将会增加。如果它们的大小超过其分区的大小,它们将被“删除”并消失,这就是为什么它不是一个好的备份解决方案(除了它也在同一物理系统上这一事实之外)。
LVM快照存储的工作原理如下图所示吗?
我试图展示一个场景,其中根文件系统分区大部分为空,并且有少量数据显示为紫色。我创建了一个名为“快照 1”的快照分区,当我对原始文件进行更改时,该分区会逐渐填满,尽管我很确定 LVM 是基于块的而不是基于文件的。
这是否意味着,如果我有一个 100 GB 的根分区,仅存储 20GB 的数据,如果我给它 21GB 的大小,我就永远不需要担心我的快照分区溢出?或者快照分区是否必须与根分区一样大或更大,因为它还记录未使用空间(0 的块)的差异?
我正在 Ubuntu 16.04 上尝试使用 Qemu 外部快照进行 KVM(因为它们太快了!),并进行以下设置:
head.qcow2符号链接始终指向顶部“head”qcow2 图像。这样我就不必不断更新虚拟机配置。(维尔什编辑)。base.qcow2我使用以下脚本拍摄快照(创建一个新的 qcow2 图像并将其设为头部)。该脚本仅在来宾未运行时执行。
#!/bin/bash
UNIX_TIMESTAMP=$(date +%s)
CURRENT_BACKING_FILE=`readlink head.qcow2`
NEW_HEAD_FILE="`pwd`/`echo $UNIX_TIMESTAMP`.qcow2"
# Create the new "head" disk image where all future changes are made.
sudo qemu-img create \
-f qcow2 \
-b $CURRENT_BACKING_FILE \
$NEW_HEAD_FILE
# Update the symlink
rm head.qcow2
ln -s $NEW_HEAD_FILE head.qcow2
Run Code Online (Sandbox Code Playgroud)
当 head.qcow2 指向 base.qcow2 时,这将正常工作,或者我运行脚本一次,因此只有一个支持文件。但是,如果存在一系列备份文件(例如,一个备份文件也有一个备份文件),那么我将收到以下错误:
error: Failed to start domain template-ubuntu-docker2
error: internal error: early end of file from …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Debian 9 KVM 来宾上设置 passbolt,步骤之一是以 www-data 用户身份生成 GPG 密钥。不幸的是,每当我尝试执行此操作(通过gpg --gen-key以 www-data 用户身份运行)时,我都会得到以下输出:
...
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: agent_genkey failed: Permission denied
Key generation failed: Permission …Run Code Online (Sandbox Code Playgroud) 我正在将我的“配置 openvpn 服务器”从 ubuntu 14 移植到 debian 8。到目前为止,除了本节之外,它运行良好:
# Set up iptables to forward packets for vpn and do this upon startup.
echo 'iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
exit 0' > /etc/rc.local
Run Code Online (Sandbox Code Playgroud)
似乎 debian 8 不使用此/etc/rc.local文件,因此我的 vpn 服务器在重新启动后无法正确转发流量。我必须手动调用该脚本,或执行命令。
在启动时更新 iptables 的“debian 8 方式”是什么?
阅读/etc/rc.local应该可以工作后,我确保将权限设置为 755 并将脚本更新为如下:
/bin/echo "starting..." …Run Code Online (Sandbox Code Playgroud) 当我将 Debian 8 添加到我的KVM 管理工具时,我发现除非我添加console=ttyS0到 grub 引导配置中,否则我无法访问控制台。这不是很好,但它奏效了。我正在将 Ubuntu 16.04 添加到管理工具中,这次在安装来宾时遇到了同样的问题,但是当我在连接到控制台的情况下重新启动实例时,我无法再看到 grub 菜单选项。因此,我无法实施解决方法。
我设法通过arp -an在虚拟机管理程序上运行并连接到 KVM 桥上的 IP 来找到来宾实例的 IP 地址,直到找到正确的 IP 地址。这使我能够确认来宾已正确安装并运行。我希望能够连接到控制台sudo virsh console [guest ID],以防网络出现问题或 openssh 突然决定停止工作。我需要做什么才能从虚拟机管理程序连接到来宾 ubuntu 16.04 控制台?
我的直觉是,我只需要调整sudo virsh edit [guestID]. 目前我有:
...
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
...
Run Code Online (Sandbox Code Playgroud)
我正在运行 KVM 服务器 (Ubuntu 14.04) 并想为我的客人拍摄快照。我正在阅读这篇文章中如何做到这一点。似乎我应该能够通过运行以下命令来拍摄客人的快照:
sudo virsh snapshot-create $GUEST_ID /path/to/snapshot/file.xml
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做(并且也尝试不指定文件路径)时,我收到以下错误消息:
error: unsupported configuration: internal snapshot for disk vda unsupported for storage type raw
Run Code Online (Sandbox Code Playgroud)
创建来宾时,我使用以下命令预先创建磁盘映像:
qemu-img create -f qcow2 -o preallocation=metadata,lazy_refcounts=on $filepath 20G
Run Code Online (Sandbox Code Playgroud)
当我使用命令sudo virsh edit $GUEST_ID查看guest的定义时,它清楚地显示了“raw”,如下图:
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/home/$USER/kvm/domain.name.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</disk>
Run Code Online (Sandbox Code Playgroud)
是否有可能我实际上没有运行 qcow2 磁盘映像,或者我是否错误地输入了快照命令?有没有一种方法可以仅使用 CLI 来测试以确保我的磁盘映像是原始格式还是 qcow2 格式?