diff options
Diffstat (limited to 'riemann.fmi.uni-sofia.bg/ngetty/ngetty.man')
| -rw-r--r-- | riemann.fmi.uni-sofia.bg/ngetty/ngetty.man | 452 |
1 files changed, 452 insertions, 0 deletions
diff --git a/riemann.fmi.uni-sofia.bg/ngetty/ngetty.man b/riemann.fmi.uni-sofia.bg/ngetty/ngetty.man new file mode 100644 index 0000000..a54e9dd --- /dev/null +++ b/riemann.fmi.uni-sofia.bg/ngetty/ngetty.man @@ -0,0 +1,452 @@ + + +NGETTY(8) NGETTY(8) + + +NAME + ngetty - daemon for virtual console terminals + +SYNOPSIS + ngetty [ tty1 | vc/1 | 1 ] [ /dev/tty2 | vc/2 | 2 ] ... + ngetty-helper /dev/ttyX [ login ] + ngetty-argv :options:child:[name]:args [user [tty]] + + +DESCRIPTION + ngetty is a daemon that starts login sessions on virtual + console terminals, on demand. It opens the virtual con- + sole terminals specified by the tty... arguments, dis- + plays a /etc/issue message, prints the login prompt on + each terminal and waits for user name. On user action, + ngetty executes login(1) in a new process with the termi- + nal the user is typing in as the controlling terminal. + + login(1) then prompts for a password to login with the + system and finally, if the login succeeds, executes the + user's login shell. + + When the user logs out, ngetty restarts the corresponding + virtual console terminal. + + + Actually almost the whole work is done by a ngetty-helper + program. It makes /var/run/utmp, /var/log/wtmp records, + prints /etc/issue, hostname, login prompt, waits for user + name. ngetty invokes the ngetty-helper by need. + +HISTORY + The traditional way to enable logins on virtual console + terminals is to start a bunch of getty(8) programs, one + for each virtual console terminal, from init(8). As most + users rarely login on virtual console terminals nowadays, + preferring graphical logins instead, it seems wasteful to + have all those getty(8) processes doing nothing but wast- + ing memory. Alternatively, ngetty manages logins on any + number of virtual console terminals from a single, light, + process. + +INVOCATION + ngetty does not use stdin, stdout or stderr and closes + them. + + When running ngetty in the background, remember to disas- + sociate it from the current controlling terminal by making + it the process group leader of a new session, e.g.: + + setsid ngetty tty... & + ngetty-argv :-D:-S:-e:--:/sbin/ngetty::1:2:3:4 + + To start ngetty from init(8), add something like this to + /etc/inittab: + + ng:2345:respawn:/sbin/ngetty tty1 tty2 ... tty6 + + If ngetty-argv is available use it to start ngetty from + /etc/inittab. See the example bellow. + +DIAGNOSTICS + If ngetty can not open one of the virtual console termi- + nals specified in the tty... arguments, most likely + because that tty device node does not exist, no greeting + message will be displayed on that terminal, obviously, and + ngetty will simply go on, ignoring the offending terminal. + Create the missing tty device and send SIGCHLD to ngetty. + Then it will reopen the new tty. Instead of sending + SIGCHLD you can login and logout on some working tty. + This also forces ngetty to reopen the new tty. + + + ngetty uses ngetty-helper program. It's path is hard- + coded in ngetty. Never remove ngetty-helper program nor + move it to other location. + + If, on user action, ngetty-helper can not execute + login(1), in all likelihood because the compiled-in LOGIN + path does not match your system's login(1) path, ngetty + restarts the terminal and redisplays the greeting message. + + In any case, ngetty does not output error messages. + + + +OPTIONS + It's possible to set different options for ngetty-helper + program in file /etc/ngetty/Conf. If the option begin + with "=" it's applied for all tty. If it start with a tty + name it's applied only on current tty. Examples: + + # options format: + # [ttyX]=option[=value] + #=debug + =environ=,TERM=linux + tty3=long-hostname + tty1=clear=\033c + =newline= + =timeout=180 + tty1=timeout=60 + tty1=delay=1 + + For security reasons ngetty-helper evaluate the file + /etc/ngetty/Conf only if it has mode: + + -rw------- root root /etc/ngetty/Conf + + ngetty-helper recognizes the following options which might + be embedded in the /etc/ngetty/Conf file: + + # tty5=login-prog=/bin/login.test + If a line starts with #, space or tab it is a com- + ment. + + debug If debug is set ngetty-helper write on terminal all + successfully applied options. Set this on the fist + line of /etc/ngetty/Conf file. + + date-string + Escape \d (current day) in /etc/issue as: + Fri Jun 01 2007. Default is: 2007-06-01. + + days=string + Abbreviation for week days (21 bytes). Default is: + =days=SunMonTueWedThuFriSat + + months=string + Abbreviation for months (36 bytes). Default is: + =months=JanFebMarAprMayJunJulAugSepOctNovDec + + tz=string + Change the timezone offset. If the string starts + with slash it's the name of tzfile. The string is + positive number if the local time zone is east of + the Prime Meridian and negative if it is west. + Default is /etc/localtime. Examples: + =tz=-18000 -0500 + =tz=7200 +0200 + =tz=/etc/localtime + =tz=AUTO + + echo-off + Turn the echo off just before starting /bin/login. + It's similar to stty -echo. + + newline=string + Print this string before writing out /etc/issue. + (default is \012). Example: + tty3=newline=\012I am \l\012 + + clear=string + Clear the screen before prompting for the login + name with the string (default is \033c). Examples: + tty1=clear= + tty3=clear=\033[H\033[J + + noclear-first=/etc/ngetty/.noclear + Do not clear the screen before prompting for the + login name the first time after reboot. Example: + tty1=noclear-first=/etc/ngetty/.noclear.tty1 + + nohangup + Do not call vhangup() to disable writing to this + tty by other applications. + + long-hostname + By default the hostname is only printed until the + first dot. With this option enabled, the full text + from gethostname() is shown. + + nousername + Do not ask for user name. Exec login(1) immedi- + ately. Example: + =nousername + =login-prompt= Press ENTER to activate \l + + deny=,black,list,users... + Disable login process for some users. The first + char after "deny=" is split char. Example: + tty1=deny=,root,nobody,guest + + allow=,white,list,users... + Enable login process only for the users. The first + char after "allow=" is split char. Example: + =clear= + =allow=,root,operator + + print=an:CM:PY:04:69 + Accept only these chars in user name. Default is + to accept only ",-._ 0-9 a-z A-Z". It's possible + to insert here the output of + printf 'tty3=print=az:AZ:\ABC\XYZ:__' + Here ABC and XYZ are octal numbers. Examples: + tty1=print=az:AZ + tty2=print=az:AZ:__:,.:09 + + issue-file=/etc/issue + Change the issue file. Disable printing of the + issue file with: + =issue-file= + + login-prog=/bin/login + Change the login app. It's possible to use + fgetty's /bin/login1 application with: + =echo-off + =login-prog=/bin/login1 + + login-buffer=string + Read login name over the string. Default string is + 40 bytes long. Example: + =login-buffer=12345678901234567 + + login-prompt=\n login: + Change the login prompt string. Example: + =login-prompt=\033[1;33m\l\033[0;39m \n login: + + nice=10 + Change the priority by calling nice(). + + delay=5 + Sleep this many seconds before printing the file + /etc/issue. + + timeout=180 + Wait at most this many seconds for user name. + + chdir=/home + Change into this directory before calling the login + prog. + + chroot=/chroot + Call chroot() with this directory name. + + autologin-name=username + Log the specified user automatically in without + asking for a login name and password. Check the -f + option from /bin/login for this. Example: + tty1=autologin-name=maria + + autologin-first=/etc/ngetty/.autologin + Log in automatically only the first time after + reboot without asking for a login name and pass- + word. Example: + tty1=autologin-name=maria + tty1=autologin-first=/etc/ngetty/.autologin + + environ=,TERM=linux + Replace the environ. The first char after "envi- + ron=" is split char. Examples: + =environ=,TERM=vt100,PATH=/bin:/usr/bin,HOME=/ + tty3=environ=,TERM=linux,TTY=/dev/tty3 + + sh-A=line + Exec this line before printing /etc/issue. The + line is executed using /bin/sh -c line. It's good + idea to use the full paths here. Example: + tty4=sh-A=exec /bin/ps e -u root + tty4=delay=8 + + sh-B=line + Similar to option sh-A. This is executed before + asking for username. + + login-argv=any_string + Ngetty starts login application with options + login -- XYZ # default + login -f XYZ # if autologin-name=XYZ + With this option it's possible to start login appl + with any_string instead of -- or -f. Using the + program ngetty-argv(8) one can start arbitrary pro- + gram with different arguments. Two very dangerous + examples are (never try them): + tty4=login-prog=/sbin/ngetty-argv + tty5=login-prog=/sbin/ngetty-argv + tty4=login-argv=,/bin/login,,-f,%U + tty5=login-argv=:-C:/bin/bash:-bash + + +WARNING + If ngetty-helper finds stdout or stderr open it exits + immediately with error 100. Ngetty invokes it correctly. + See also the program test-helper.c in source package. + + Do not edit the file /etc/ngetty/Conf directly. Put the + configurations in /etc/ngetty/Conf.sed (the same syntax + and permissions as /etc/ngetty/Conf) and after editing it, + execute: + + cd /etc/ngetty && ./setup + + The script /etc/ngetty/setup removes comments, merges + lines ending with a backslash and expands the string + =tz=AUTO to numeric number. Then it updates + /etc/ngetty/Conf. + + +SIGNALS + If ngetty receives SIGTERM it kill all child's PID (first + with SIGTERM and then with SIGKILL) and exit immediately. + It does not change UID, GID and mode of the controlling + tty devices. It does not catch the other signals. Send- + ing SIGCHLD to ngetty forces it to reread his internal + cache tables and to restart failed tty devices. + + +ISSUE ESCAPES + ngetty-helper recognizes the following escapes sequences + which might be embedded after login-prompt=, newline=, + clear= or in the /etc/issue file: + + \d insert current day (localtime), + + \l insert line on which ngetty is running, + + \m inserts machine architecture (uname -m), + + \n inserts machine's network node hostname (uname -n), + + \o inserts domain name, + + \r inserts operating system release (uname -r), + + \t insert current time (localtime), + + \s inserts operating system name, + + \u insert the number of users which are currently + logged in, + + \U insert the string "1 user" or "<n> users", where + <n> is the number of users currently logged in, + + \v inserts operating system version (uname -v). + + \XYZ inserts a letter with octal code XYZ. + + +EXAMPLE + "Linux eos i386 #1 Tue Mar 19 21:54:09 MET 1996" was pro- + duced by putting "\s \n \m \v" into /etc/issue. + + +NGETTY-ARGV + The program ngetty-argv(8) splits argv[1] on strings, + expands %U and %T to username and tty and then start the + the application. The first char after "login-argv=" is + split char. In the examples above every user logs on tty4 + without password and tty5 is always root. To understand + better how ngetty-argv works try as non-root: + + ngetty-argv ':/bin/echo:echo:%U: on %T' usr tty3 + ngetty-argv ':/bin/sleep:-hacker:39:I am %U on %T' 123 X + + + One can put also options for ngetty-argv at the beginning. + + -- last option + + -u503 setuid to 503 + + -g230 setgid to 230 + + -a120 exec alarm(120) before starting child + + -s10 sleep 10 secs before starting child + + -d/X/YZ chdir(/X/YZ) before starting child + + -r/A/BC chroot(/A/BC) before starting child + + -D start the child in background and exit + + -N -C NOTTY | SCTTY controlling tty + + -S like setsid(8) + + -e,HOME=/,TERM=linux same as environ= above + + -p/path/to/pid.file write the child pid here + + One possible example for /etc/ngetty/Conf is: + tty9=clear= + tty9=issue-file= + tty9=login-prompt=\n \d \t qmail-qread: + tty9=login-prog=/sbin/ngetty-argv + tty9=login-argv=:-u106:-g503:-d/var/qmail:-- + :./bin/qmail-qread:qread + + Another example is setting the TTY environ automatically: + =login-prog=/sbin/ngetty-argv + =login-argv=:-e,TTY=/dev/%T,TERM=linux:-- + :/bin/login:login-%T:--:%U + + I recommend using ngetty-argv in /etc/inittab also. Put + as last argument runlevel string. Then ps will show + ngetty-2345 instead of ngetty. Next start tty1 ... tty6 + on runlevels 2345. + ng:2345:respawn:/sbin/ngetty-argv + .-e.-S.-d/.-s1.--./sbin/%U.%U-%T.1.2.3.4.5.6 + ngetty 2345 + + On a terminal (in scripts) start ngetty with + ngetty-argv .-N.-S.-e./sbin/%U.%U.8.9.10 ngetty + ngetty-argv .-D.-S.-e./sbin/%U.%U.8.9.10 ngetty + + This program is a hack written for ngetty-helper. There + is no additional code in ngetty-helper and it's possible + to start a program with any args. It is like a filter + between ngetty-helper and login application. One can easy + modify it without touching ngetty-helper. It's similar to + DJB well known argv0(1) and setuidgid(8). You can write + own such programs and use them instead of ngetty-argv. + +FILES + /etc/ngetty/Conf ngetty-helper configuration file + /etc/ngetty/Conf.sed private setup file + /etc/ngetty/setup updates Conf.sed -> Conf + /etc/issue printed before the login prompt + /var/run/utmp the system status file + /var/log/wtmp the system logging file + /etc/inittab init(8) configuration file + + +SEE ALSO + getty(8) fgetty(8) mingetty(8) + login(1) nlogin(1) argv0(1) setuidgid(8) stty(1) + http://sites.google.com/site/anbadeol/logind + +AUTHOR + Nikola Vladov + http://riemann.fmi.uni-sofia.bg/ngetty/ + +COPYRIGHT + Copyright 2007,2008,2010 Nikola Vladov + + This program is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public + License as published by the Free Software Foundation; + either version 2 of the License, or (at your option) any + later version. + + This program is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the GNU General Public License for more + details. |
