中华网通行证
用户名 密码

如何实现Linux操作系统的自动登录(2)
中华网科技 http://tech.china.com 2005-07-22 11:03:07
进入BBS】【进入聊天室】【 推荐给朋友 】【浏览字号: 】【关闭窗口

  
三、自动登录后,保持用户原来的配置(桌面、shell以及其它的一些环境变量)

  观察原来/etc/X11/prefdm脚本的自动登录部分:

  ......
  # 第一步:查看是否为自动登录
  if [ -f /etc/sysconfig/autologin -a -x /usr/sbin/autologin ]; then
    if /usr/sbin/autologin; then  
      exit 0
    fi
  fi
  ......

  不难看出,脚本中保留了自动登录的接口:一个可执行文件/usr/sbin/autologin以及一个配置文件/etc/sysconfig/autologin。
  1、/etc/sysconfig/autologin配置文件的实现:
  #config for autologin
  USER=root
  EXEC=/usr/X11R6/bin/startx
  说明,USER指定自动登录时的用户名;EXEC指定启动X要运行的程序。
  2、/usr/sbin/autologin可执行文件的实现
  /*********************
  **** autologin.c ****
  *********************/
  #include
  #include
  #include
  #include
  #include
  #include
  #include
  int main(int argc, char **argv)
  {
  struct stat st;
  FILE *f;
  char *cfg;
  struct passwd *pw;
  uid_t uid;
  gid_t gid;
  char *dir, *shell;
  char *user=NULL;
  char *cmd=NULL;
  user="root";
  /*为了能说明问题又保持程序简洁,这里默认登录用户为root,实际上,
  登陆用户名应该从/etc/sysconfig/autologin中得到,
  程序实现时要注意过滤掉/etc/sysconfig/autologin中的无效用户名*/
  cmd="/usr/X11R6/bin/startx";
  /*同样,这里直接指定启动X Window的程序,实际上,该程序应该从/etc/sysconfig/autologin中得到*/
  pw = getpwnam(user);
  //getpwnam返回包含用户信息的passwd结构(该结构在pwd.h中定义)。
  if(pw) {
  uid=pw->pw_uid;    
  gid=pw->pw_gid;    dir=strdup(pw->pw_dir);
  shell=strdup(pw->pw_shell);
  }
  //获得用户相关信息
  else {
  printf("ERROR: No such user %s!n", user);
  return 1;
  }
  chown("/dev/console", uid, gid);
  chown("/dev/tty", uid, gid);    
  //为控制台和终端设置用户ID及组ID
  
  //下面是设置用户相关ID
  setregid(gid, gid);
  setegid(gid);
  setgid(gid);
  setreuid(uid, uid);
  seteuid(uid);
  setuid(uid);    
  setenv("HOME", dir, 1);
  setenv("SHELL", shell, 1);
  setenv("USER", user, 1);
  setenv("LOGNAME", user, 1);
  //设置用户相关环境变量
  chdir(dir);
  //切换到用户根目录
  user=NULL;
  execvp(cmd, argv);
  /*在配置完用户的相关信息后,执行启动X Window操作。注意这里默认执行/usr/X11R6/bin/startx */
  printf("ERROR: Couldn‘t exec %s: %sn", cmd, strerror(errno));
  return 2;
  }

  运行gcc -o autologin autologin.c,拷贝autologin可执行文件到/usr/sbin/autologin,拷贝autologin配置文件到/etc/sysconfig/autologin。 重新启动系统,会直接进入X Window并保留用户原来所有的风格。
  
  如果不需要自动登录的配置文件/etc/sysconfig/autologin,所有的操作都在/usr/sbin/autologin以默认的方式实现(比如,默认登录身份为root,默认执行操作为/usr/X11R6/bin/startx等),那么,/etc/X11/prefdm脚本的自动登录部分可简化如下:
  ......
  # 第一步:查看是否为自动登录
    if /usr/sbin/autologin; then  
      exit 0
    fi
  //第二步  ......
  ......

  即在脚本中去掉条件测试开关,直接执行/usr/sbin/autologin,这时,只需要拷贝autologin可执行文件到/usr/sbin/autologin,不再需要拷贝autologin配置文件到/etc/sysconfig/autologin。

  四、选择进入kde或者gnome,并自动启动X Window应用程序

  如果重新启动后系统进入了kde,而用户需要进入gnome,只需运行switchdesk gnome在重新启动系统即可,以后每次启动时会自动进入gnome;反之亦然。 一般系统自动登录的目的是启动X Window后自动运行某个XWindow程序。如果系统默认的启动级别为3,那么如果要在系统启动后自动运行某些应用程序,只需要在某些脚本中加入相应命令即可,不再详述。在XWindow启动后自动运行应用程序要复杂一些,幸好,kde和gnome都为此留下了自动启动接口。如果在kde桌面环境下自动启动应用程序,只需要把应用程序名字加入/root/.kde/Autostart/目录下即可(这里注意不同用户的根目录可能不同,如用户zyx的根目录可能为/home/zyx)。如果在gnome桌面环境下自动启动应用程序,只需把应用程序的名字加入/主菜单/程序/设置/会话/会话特性及启动程序的startup programs属性页中即可。

首页 上页 | 1 | 2 | 下页 尾页  共 2

 

50款最具性价比数码相机/MP3推荐!
作者:天极网 来源: 

发表言论:
笔  名:
查看评论
﹣相关报道
Linux的经典使用技巧8则 (2005-07-21 13:40:41)

﹣精彩回顾
·揭秘越南姑娘的“性契约”(组图)
·中国研制成功银河麒麟操作系统
·近处偷拍野狮性爱 野草丛中见柔情(图)
·难得一见“水下分娩”全程跟拍(组图)
·古代性器具及性惩罚工具(组图)
·揭密中外历史上乱伦的名人们(组图)
·探秘世界各地诡异的干尸新娘(组图)
·隋唐两个王朝的九大著名"绿帽子"(组图)
·另类的惨烈:螳螂血战壁虎谁更凶猛(图)
·一分钟平静死去 注射死刑全过程(图)

进入BBS】【进入聊天室】【 推荐给朋友 】【浏览字号: 】【关闭窗口


潮流·时尚
·市场上的天价手机全搜罗
·一周降幅最大手机导购
·FM调频收音功能手机选购
·索尼爱立信三新机曝光
·诺基亚N73音乐版精品赏
·热门便携笔记本搜索导购
·近期最新上市机型大盘点
·矩阵Matrix鼠标垫细评测
·19寸20寸22寸液晶该买谁
·近期几款热卖MP3大推荐
·四大即将退市经典MP3选购
·06年最火七大DC缺点曝光
·六百万像素超值机型推荐
·诺基亚推出随身小音箱
·LG直板巧克力KG99评测
·MOTO新机即将国内上市
·超低价蓝牙手机导购
·130万像素一样拍出好照片
·诺基亚两款蓝牙耳机新品
·索爱纯美折叠机Z558评测

软件下载
·豪杰大眼睛 V2.5
·Foxmail V6.5
·天网防火墙Athena
·极品五笔 V6.8
·PPS网络电视
·超级兔子魔法设置
中华网搜索
站内搜索
全网搜索




热门搜索
耳机 印刷 手机 拖鞋
减速机 钟表 成人用品
减肥 枸杞 T恤 升降机
心理 健康 彩票 招聘
礼品 旅游 猎头 培训

产品服务
·机会!机会不容错过
·中华商机,搜索创新
·准确快捷,搜你所搜
·¥来¥往,尽在中华邮
·中华搜索,贴心搜索




科技频道主编信箱