开源 Windows linux命令 linux 程序员 Python 微软 wordpress apache mysql Firefox HTML5 Ubuntu shell google centos java Android php nginx

给 Xen 安装 Xen Shell 控制面板

安装完 Xen 后可能需要安装一个控制面板方便用户自己操作虚拟机(VPS)。可以在网上找到一些 Xen 的开源控制面板,有的是基于 Web 的,不过大多数 Xen 控制面板都不完善也不好用,有的还有漏洞,比如2010年的时候 HyperVM 就曝重大安全漏洞,导致多家 VPS 服务商的服务器被黑,客户数据全部丢失,有的服务商甚至因为这个关门了。今天介绍的这个 Xen Shell 控制面板是由 perl 写的命令行式 Xen 管理工具,包含开启、关闭、重启、查看控制台等功能。

首先到 http://xen-tools.org/software/xen-shell/releases.html 下载最新的 xen-shell 源代码包,解压后安装:

# wget http://xen-tools.org/software/xen-shell/xen-shell-1.9.tar.gz
# tar zxvf xen-shell-1.9.tar.gz
# cd xen-shell-1.9
# make
# make install

修改 xen-shell 的配置文件,加上 banner 然后禁止一些不需要的命令:

# vi /etc/xen-shell/xen-shell.conf

banner = VPSee's VPS Shell
blacklist = version, uptime, shutdown, pause, serial, sysreq, unpause, top, whoami, author, quit

增加一个用户登陆 xen-login-shell 使用 xen-shell 控制面板:

# useradd vpsee
# passwd vpsee

# vi /etc/shells
/usr/bin/xen-login-shell

# chsh -s /usr/bin/xen-login-shell vpsee

在 Xen 虚拟机配置文件里修改 name, xen_shell, vif,如下:

# vi /etc/xen/vpsee

name = "vpsee"
xen_shell = 'vpsee'
bootloader = "/usr/bin/pygrub"
vcpus = 1
maxmem = "512"
memory = "512"
disk = [ "phy:sdb1,xvdb1,w", "phy:sdb2,xvdb2,w" ]
root = "/dev/sdb1 ro"
vif = [ "vifname=vpsee,bridge=xenbr0" ]
on_shutdown = "destroy"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"

用新建的用户登陆后运行 xen-shell 后会出现以下错误:

$ /usr/bin/xen-shell 

  There were no Xen configuration files found which matched the pattern:

   /etc/xen/*

  Please update /etc/xen-shell/xen-shell.conf

这是因为刚创建的用户没有权限读取 /etc/xen 目录及 /etc/xen/vpsee 配置文件,所以需要修改 /etc/xen 和 /etc/xen/vpsee 的权限:

# chmod 755 xen

刚创建的用户进入 xen-shell 后需要执行 xm 等相关操作,需要 root 权限,所以要把用户加到 sudoers 里面去:

# chmod 0640 /etc/sudoers
# vi /etc/sudoers
User_Alias   XENUSERS = vpsee
Cmnd_Alias   XEN      = /usr/sbin/xm
Cmnd_Alias   XENIMG   = /usr/bin/xen-create-image
XENUSERS     ALL      = NOPASSWD: XEN,XENIMG

# chmod 0440 /etc/sudoers

用户登陆后仍然不能执行 xm console 等操作,因为找不到路径,所以需要在用户主目录下把 xm 命令的路径包括进去:

# vi /home/vpsee/.bashrc
# User specific aliases and functions
export PATH=$PATH:/usr/sbin/

最后再执行 xen-shell 就可以顺利看到界面了。

vpsee vps shell

延伸阅读

评论