Chinaunix首页 | 论坛 | 博客
  • 博客访问: 574389
  • 博文数量: 836
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 4995
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-22 16:55
文章分类

全部博文(836)

文章存档

2008年(836)

我的朋友

分类: LINUX

2008-08-22 17:50:21

 
我的ubuntu7.04在锁定屏幕后,动一动鼠标就直接返回桌面,不提示输入密码。我登录时用的不是root,是普通用户。

  在网上查到gnome里锁定屏幕用的是以下命令:

  gnome-screensaver-command--lock

  而gnome的屏保会调用gnome-screensaver-dialog来提示密码,于是找到它运行了一下:

  /usr/lib/gnome-screensaver/gnome-screensaver-dialog

  **(gnome-screensaver-dialog:11152):WARNING**:Screenlockingdisabled:runningunderGDM
  RESPONSE=OK

  看样子它认为screenlocking没有启用,但是不知道原因,只能研究一下源码了。在gnome-screensaver的svn浏览了一下gnome-screensaver-dialog.c的代码,发现下面相关的几行:

  if(getenv("RUNNING_UNDER_GDM")){
  if(nolock_reason){
  *nolock_reason=g_strdup("runningunderGDM");
  }
  returnFALSE;
  }

  看来只要设定了RUNNING_UNDER_GDM这个环境变量就不会提示密码,而我的环境里的确有这个变量:

  echo$RUNNING_UNDER_GDM
  yes

  知道原因后就简单了。我不清楚RUNNING_UNDER_GDM是在什么地方设定的,也不知道还有没有其他东西会用到它,所以只是修改了锁屏相关的东西。

  先把原来的gnome-screensaver改个名字:

  mvgnome-screensavergnome-screensaver.orig

  在/usr/bin下新建一个gnome-screensaver,输入以下内容:

  #!/bin/sh

  #先清除RUNNING_UNDER_GDM变量
  unsetRUNNING_UNDER_GDM
  #然后再运行原来的gnome-screensaver
  gnome-screensaver.orig$@

  保存后改成可执行:

  chmod xgnome-screensaver

  杀掉gnome-screensaver进程再重新运行,或者直接重启系统。OK,现在终于可以锁定屏幕了!

  RUNNING_UNDER_GDM这个变量好象是gnome为了解决livecd锁屏后无法返回的问题而设的,因为livecd的用户没有密码,一旦锁屏就无法解锁。我不知道正常安装的系统里面还有没有这个变量,我这里是用gnix_oag大侠的方法硬盘安装的,有可能和这种安装方式有关

阅读(758) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~