zoukankan      html  css  js  c++  java
  • Linux自动登陆的设置方法

     

    前些天为了实现Linux自动登陆的方法,在网上查了很多资料,发现有不少方法,但网上有些方法的讲解不是特别清楚,或者已经过时。因此,特意整理了一下Linux自动登陆的设置方法。
    本文的测试环境为Centos 5.5。

    1、设置GDM
    GDM是GNOME显示管理器,通过设置其配置文件/etc/gdm/custom.conf可以设置帐号自动登陆。
    设置方法如下:
    在/etc/gdm/custom.conf文件中添加以下内容
    [daemon]
    AutomaticLogin=username
    AutomaticLoginEnable=True
    其中,username是要自动登陆的用户名。
    说明:username不能是root,也就说无法实现root的自动登陆。

    2、设置prefdm
    其中,/etc/inittab文件的最后一行,该行命令的作用是启动X Windows,而/etc/X11/prefdm就是具体实现启动X Windows的脚本。
    在/etc/X11/prefdm中添加启动X Windows的命令,并退出。
    /usr/bin/startx
    exit 1
    说明:
    (1)这两行代码一定要在
    [ -n "$preferred" ] && exec $preferred "$@" >/dev/null 2>&1 </dev/null
    代码之前。
    (2)该方法自动以root登陆,是因为运行到/etc/X11/prefdm时,是root身份。

    3、在rc.local中启动X Windows
    在/etc/rc.local中添加启动X Windows的命令
    /usr/bin/startx
    说明:该方法自动以root登陆,是因为运行到/etc/rc.local时,是root身份。


    4、更改mingetty和login的源码。
    该方法只对文本模式有效,因此,需要把/etc/initab中的设置为:
    id:3:initdefault:

    /sbin/mingetty的作用是获取登陆用户名,并把用户名作为参数调用/bin/login。
    /bin/login其中一个功能就是获取用户输入的密码。
    (1) 查看/sbin/mingetty所属的软件包
    [root@localhost ~]$ rpm -qf /sbin/mingetty 
    mingetty-1.07-5.2.2
    (2)下载mingetty对应的源码
    mingetty-1.07-5.2.2.src.rpm
    (3)解压源码包
    [root@localhost Desktop]# rpm -ivh mingetty-1.07-5.2.2.src.rpm 
    解压后的源码包所在的目录为: /usr/src/redhat/SOURCES/
    查看文件
    [root@localhost ~]# ls /usr/src/redhat/SOURCES/mingetty*
    /usr/src/redhat/SOURCES/mingetty-1.00-opt.patch
    /usr/src/redhat/SOURCES/mingetty-1.07.tar.gz
    继续解压源码包
    [root@localhost ~]# tar zxvf /usr/src/redhat/SOURCES/mingetty-1.07.tar.gz
    mingetty-1.07/
    mingetty-1.07/mingetty.8
    mingetty-1.07/COPYING
    mingetty-1.07/Makefile
    mingetty-1.07/mingetty-0.9.4-autologin.patch
    mingetty-1.07/mingetty.c
    (4)修改mingetty.c中的代码
    更改mingetty的代码需要进行两步操作。
    第352行的char *logname, *s;
    更改为char *logname = "root", *s;
    把第409-415行注释
    /* if (autologin) {
      do_prompt (0);
      printf ("login: %s (automatic login) ", autologin);
      logname = autologin;
     } else
      while ((logname = get_logname ()) == 0)
       /* do nothing */ /*; */
    (5)编译生成mingetty
    [root@localhost ~]# cd /usr/src/redhat/SOURCES/mingetty-1.07/
    [root@localhost mingetty-1.07]# make
    (6)更新mingetty
    [root@localhost mingetty-1.07]# cp mingetty /sbin/mingetty
    mingetty的源码更改就完成了。


    (1) 查看/bin/login所属的软件包
    [root@localhost ~]# rpm -qf /bin/login
    util-linux-2.13-0.47.el5
    (2)下载login对应的源码
    util-linux-2.13-0.47.e15.src.rpm
    (3)解压源码包
    [root@localhost Desktop]# rpm -ivh util-linux-2.13-0.47.e15.src.rp 
    解压后的源码包所在的目录为: /usr/src/redhat/SOURCES/
    查看解压的文件:
    [root@localhost ~]# ls /usr/src/redhat/SOURCES/util-linux-2.13*tar*
    util-linux-2.13-pre7.tar.bz2
    继续解压文件
    [root@localhost ~]# tar xf /usr/src/redhat/SOURCES/util-linux-2.13-pre7.tar.bz2
    解压后的文件夹为util-linux-2.13-pre7。
    其中login的源码的目录为/usr/src/redhat/SOURCES/util-linux-2.13-pre7/login-utils
    login-utils文件中不存在make文件,因此,需要自己编写编译命令来生成login。
    (4)修改login.c中的代码
    把344行的passwd_req = 1;
    更改为passwd_req = 0;
    在文件中添加locale.h头文件
    #include <locale.h>
    (5)编译生成login
    [root@localhost login-utils]# gcc -o login login.c ../lib/setproctitle.c checktty.c -Wall -lcrypt -I ../include/
    (6)更新login
    [root@localhost login-utils]# cp login /bin/login

    重启,即可在文本模式中以root账户登录。

    参考资料
    1、http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip20/
    2、http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip20/index2.html

     
    分类: Linux
  • 相关阅读:
    Linux几个常用的目录结构
    Linux 安装composer
    Elasticsearch修改network后启动失败
    php7 闭包调用
    php 爬虫框架
    file_get_contents('php://input') 和POST的区别
    PHP指定日期转时间戳
    .Net 站点跨域问题及解决方法
    C# 多线程学习系列一
    Nginx学习系列四默认负载均衡轮询及Ip_hash等常用指令介绍
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4458462.html
Copyright © 2011-2022 走看看