我们常常使用/etc/sysconfig/vncservers文件来控制vncserver的自动启动,但是这种方法使得vncviewer一旦登录,就以某个身份登录到了linux桌面,取得了linux的控制权,显然,这存在着潜在在安全风险.下面使用vnc和gdm的配合来实现rhel4(rhel5配置文件略有不同)规避这种风险.
使用gmd后,当vncviewer连接后,除了要通过vncserver本身的密码验证,还将出现linux本身的login窗口,只有通过linux本身账号和密码验证,方能取得linux控制权.当然这从另一个角度给我们带来了方便,那就是我们可以自由地选择所需要的账户登录.
配置方法如下:
1.开启XDMCP功能
编辑 /etc/X11/gdm/gdm.conf
找到[xdmcp]一节
把Enable=false改成
Enable=true
2.配置VNC
在本例中只启用一个vncserver进程,即端口号为5901的:1,如果需要开启更多的进程,按规则相应增加即可.
1) 创建vnc访问密码
vncpasswd /root/.vncpasswd #把密码文件存放在/root下的.vncpasswd文件中
2) 创建一个xinetd 服务
新建文件etc/xinetd.d/vnc1
内容如下
service vnc1
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -geometry 1024×768 -depth 16 -once -fp unix/:7100 -DisconnectClients=0 -NeverShared passwordFile=/root/.vncpasswd -extension XFIXES
}
上面内容中 1024×768表示启动的桌面分辨率大小,passwordFile表示vncserver密码文件存放的位置.
3) 让vnc自动启动
编辑 /etc/services
加入vnc1 5901/tcp # VNC & GDM
注意vnc1表示你在xinetd中创建的服务,5901/tcp表示vncserver所用的端口,vncserver使用端口从5900开始递增,在使用vncviewer连接时,5900表示:0,而5901表示:2.以此类推.
OK,一切完毕,重启验证一下吧,goodluck!
将etc/xinetd.d/vnc1改为如下内容:
service vnc1
{
type = UNLISTED
disable = no
socket_type = stream
protocol = tcp
wait = yes
user = root
server = /usr/bin/Xvnc
server_args = -inetd :1 -query localhost -geometry 1024×768 -depth 16 -once -fp unix/:7100 -DisconnectClients=1 -AlwaysShared passwordFile=/root/.vncpasswd -extension XFIXES
port = 5901
}
取消3) 让vnc自动启动 这一步骤.
第一种方法,每次连接都显示linux login窗口,每登录一个用户都是不同的桌面.关闭vncviewer,用户自动注销,而不会保留该用户桌面.
第二种方法,当此前没有使用vncviewer登录过任何用户时,显示linux login窗口,当之前有用户登录过,而且没有注销时,显示该用户桌面而不显示linux login窗口.该用户注销后,重新显示linux login窗口.
不应该啊
除非你是用vncserver :1这样的命令启动的
试了一下, linux login窗口没有显示,直接登进去了