LXC挂载目录,默认为无特权容器,容器内要读写挂载的文件要映射服务器用户并为容器内用户设置相应权限。
mp0: /data/e,mp=/data/e
mp1: /data/f,mp=/data/f
PVE运行LXC以root身份启动,查看root的从属用户起始id为100000,数量65536个。
grep root /etc/subgid /etc/subuid
/etc/subgid:root:100000:65536
/etc/subuid:root:100000:65536
映射从属用户到lxc容器:
cat /etc/pve/lxc/100.conf
#容器内root(id=0)映射为服务器id 100000,递增65536个,即容器内用户id 0-65535对应服务器100000-165535
lxc.idmap: u 0 100000 65536
lxc.idmap: g 0 100000 65536
注意容器内nobody id为65534,没映射到会连接不上ssh,提示错误:
fatal: setgroups: Invalid argument [preauth]
如果将挂载目录让容器内root可读写的话在服务器内将所有者更改为id 100000。
chown -R 100000:100000 /data/e
#也可使用用户名
useradd -u 100000 -M -s -s /usr/sbin/nologin lxc-root
chown -R lxc-root:lxc-root /data/e
映射实体用户,服务器和容器内有相同ID的用户。
cat /etc/subuid /etc/subgid
root:1000:1
root:1000:1
lxc.idmap = u 1000 1000 1
lxc.idmap = g 1000 1000 1