agetty
打开 tty
端口,为登录名称建立命令控制符,并引出
login
程序
如何使你的Linux系统省略输入用户名密码
1、省略密码验证
很简单,只需把/etc/passwd中的root:x:0:0:root:/root:/bin/bash,改为root::0:0:root:/root:/bin/bash,就可以了,就是去掉了里面的x,这样root用户就不用密码了。其他用户也一样。
2、省略输入用户名
(1)修改/etc/inittab
在inittab中,有如下配置
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
表示系统可以有六个控制台,可以用ALT+(F1~F6)来切换。而/sbin/agetty就是一个登陆验证程序,执行它,会提示用户输入用户名和密码,然后启动一个指定的shell(在passwd文件中指定的)。
所以,我们只需将其修改为不执行agettty,而是执行自己编写的一个脚本,就可以跳过用户名和密码的输入。修改如下:
1:2345:respawn:/root/logintest tty1 9600
这里我在/root/下放了一个测试脚本,这样系统启动时就会执行那个脚本,脚本内容:
#!/bin/sh
/bin/login -f root
脚本其实就是执行了一个root用户的登陆而已,如果有其他要求,也可以添加到脚本中。
# /etc/inittab
#
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
#
# Note: BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use
# sysvinit.
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id == tty to run on, or empty for /dev/console
# runlevels == ignored
# action == one of sysinit, respawn, askfirst, wait, and once
# process == program to run
# Startup the system
::sysinit:/bin/mount -t proc proc /proc
::sysinit:/bin/mount -o remount,rw /
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -a
::sysinit:/bin/hostname -F /etc/hostname
# now run any rc scripts
::sysinit:/etc/init.d/rcS
# Put a getty on the serial port
#ttyPS0::respawn:/sbin/getty -L ttyPS0 0 vt100 # GENERIC_SERIAL
ttyPS0::respawn:/sbin/logtest -L ttyPS0 0 vt100 # GENERIC_SERIAL
# Stuff to do for the 3-finger salute
#::ctrlaltdel:/sbin/reboot
# Stuff to do before rebooting
::shutdown:/etc/init.d/rcK
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r