Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Eugene Grosbein                      2:5006/1       15 Dec 2002  13:19:37
 To : Anton Maksimenkov
 Subject : Re: dial - in
 -------------------------------------------------------------------------------- 
 
 
  AM>>> Позвонил войсом. Модем тpубу взял, я тpубу положил.
  AM>>> Модем пищал в линию не обpащая внимания на коpоткие гудки, я его
  AM>>> - выкл-вкл. Потом TD и TR стали гоpеть непpеpывно, cu говоpила
  AM>>> Device busy. ps в этот момент показывала, что запущена login.
  EG>> getty из линии получил мусор, дал этот мусор login'у в качестве имени,
  EG>> login ждет пароля с линии. Ждать будет 300 секунд, это не
  EG>> настраивается. Я запатчил getty и login, чтобы можно было настраивать
  EG>> из /etc/ttys этот таймаут.
  AM> Поделись, что ли где патч посмотpеть. Или так закинь...
  AM> Вобщем, я так понял, вышеописанное - это ноpмальное явление. Т.е. нужно
  AM> подождать 5 мин. и "само pассосется". Может заодно конфигами поделишься?
 
 В /etc/gettytab создаешь настройку с таймаутом на ввод имени после коннекта.
 to#10 это десять секунд на ввод имени. Это штатная фича, работает на
 штатном getty.
 
 stdh.115200|115200-baud:\
   :np:sp#115200:to#10:
 
 Патченные getty и login идут в /usr/local/bin и /usr/local/libexec
 соответственно. Патчи нужны, чтобы менять таймаут на ввод пароля.
 В /etc/ttys на порт вешаем патченный getty, который будет запускать
 /usr/local/bin/login вместо /usr/bin/login:
 
 ttyd0  "/usr/local/libexec/getty -t 10 stdh.115200"   dialup  on insecure
 
 Патченный getty принимает параметр -t <timeout> и передает его в login,
 а login умеет его принять и использовать для ограничения ввода пароля.
 Сам патч ниже. Лучше всего применять так:
 
 mkdir -p pgetty/libexec/getty
 mkdir -p pgetty/usr.bin/login
 cd pgetty
 cp -r /usr/src/libexec/getty libexec/
 cp -r /usr/src/usr.bin/login usr.bin/
 patch </path/to/patch
 cd libexec/getty && make depend && make all install
 cd .../../usr.bin/login && make depend && make all install
 
 Сам патч:
 
 Index: libexec/getty/Makefile
 ===================================================================
 RCS file: /usr/local/cvsroot/pgetty/libexec/getty/Makefile,v
 retrieving revision 1.1.1.2
 retrieving revision 1.2
 diff -u -r1.1.1.2 -r1.2
 - --- libexec/getty/Makefile  8 May 2002 09:53:37 -0000   1.1.1.2
 +++ libexec/getty/Makefile 15 Dec 2002 05:02:20 -0000  1.2
 @@ -6,6 +6,7 @@
  DPADD=   ${LIBUTIL}
  LDADD=   -lutil
  MAN=  gettytab.5 ttys.5 getty.8
 +BINDIR=  /usr/local/libexec
  # for the paranoid:
  #CFLAGS+= -Wall -Wstrict-prototypes -Wno-unused -Wwrite-strings
  
 Index: libexec/getty/main.c
 ===================================================================
 RCS file: /usr/local/cvsroot/pgetty/libexec/getty/main.c,v
 retrieving revision 1.1.1.2
 retrieving revision 1.11
 diff -u -r1.1.1.2 -r1.11
 - --- libexec/getty/main.c 8 May 2002 09:53:37 -0000  1.1.1.2
 +++ libexec/getty/main.c  8 May 2002 09:58:22 -0000   1.11
 @@ -131,6 +131,7 @@
  
  #define  puts Gputs
  
 +static void  dying __P((void));
  static void  dingdong __P((int));
  static int   getname __P((void));
  static void  interrupt __P((int));
 @@ -151,9 +152,16 @@
  jmp_buf timeout;
  
  static void
 +dying()
 +{
 +  syslog(LOG_INFO,"finished");
 +}
 +
 +static void
  dingdong(signo)
    int signo;
  {
 +  syslog(LOG_INFO,"alarm after %d",TO);
    alarm(0);
    longjmp(timeout, 1);
  }
 @@ -189,11 +197,14 @@
    int first_sleep = 1, first_time = 1;
    struct rlimit limit;
    int rval;
 -
 +  char* login_timeout=NULL; /* don't specify timeout */
 +                            /* for login(1) by default */
 +  
    signal(SIGINT, SIG_IGN);
    signal(SIGQUIT, SIG_IGN);
  
    openlog("getty", LOG_ODELAY|LOG_CONS|LOG_PID, LOG_AUTH);
 +  atexit(&dying);
    gethostname(hostname, sizeof(hostname) - 1);
    hostname[sizeof(hostname) - 1] = '\0';
    if (hostname[0] == '\0')
 @@ -210,8 +221,17 @@
    gettable("default", defent);
    gendefaults();
    tname = "default";
 +  if(argc > 2 && strcmp(argv[1],"-t") == 0) {
 +    login_timeout=argv[2];
 +    argc-=2;
 +    argv+=2;
 +  } 
 +
    if (argc > 1)
       tname = argv[1];
 +  if(login_timeout!=NULL)
 +    syslog(LOG_INFO,"started on %s with timeout %s",
 +                     tname,login_timeout);
  
    /*
     * The following is a work around for vhangup interactions
 @@ -276,7 +296,6 @@
       }
        }
    }
 -
    /* Start with default tty settings */
    if (tcgetattr(STDIN_FILENO, &tmode) < 0) {
       syslog(LOG_ERR, "tcgetattr %s: %m", ttyn);
 @@ -410,8 +429,13 @@
        limit.rlim_max = RLIM_INFINITY;
        limit.rlim_cur = RLIM_INFINITY;
        (void)setrlimit(RLIMIT_CPU, &limit);
 -      execle(LO, "login", AL ? "-fp" : "-p", name,
 +      if(login_timeout) 
 +        execle(LO, "login", "-t", login_timeout,
 +          AL ? "-fp" : "-p", name,
            (char *) 0, env);
 +      else 
 +        execle(LO, "login", AL ? "-fp" : "-p", name,
 +            (char *) 0, env);
        syslog(LOG_ERR, "%s: %m", LO);
        exit(1);
       }
 Index: libexec/getty/pathnames.h
 ===================================================================
 RCS file: /usr/local/cvsroot/pgetty/libexec/getty/pathnames.h,v
 retrieving revision 1.1.1.2
 retrieving revision 1.3
 diff -u -r1.1.1.2 -r1.3
 - --- libexec/getty/pathnames.h   8 May 2002 09:53:37 -0000   1.1.1.2
 +++ libexec/getty/pathnames.h  8 May 2002 09:58:22 -0000  1.3
 @@ -37,4 +37,4 @@
  #include <paths.h>
  
  #define  _PATH_GETTYTAB  "/etc/gettytab"
 -#define  _PATH_LOGIN  "/usr/bin/login"
 +#define  _PATH_LOGIN  "/usr/local/bin/login"
 Index: usr.bin/login/Makefile
 ===================================================================
 RCS file: /usr/local/cvsroot/pgetty/usr.bin/login/Makefile,v
 retrieving revision 1.1.1.2
 retrieving revision 1.2
 diff -u -r1.1.1.2 -r1.2
 - --- usr.bin/login/Makefile  8 May 2002 10:08:28 -0000   1.1.1.2
 +++ usr.bin/login/Makefile 15 Dec 2002 05:02:20 -0000  1.2
 @@ -1,6 +1,7 @@
  # From:  @(#)Makefile 8.1 (Berkeley) 7/19/93
  # $FreeBSD: src/usr.bin/login/Makefile,v 1.31.2.2 2001/07/16 07:02:39 markm Exp
 $
  
 +BINDIR=/usr/local/bin
  PROG= login
  SRCS= login.c login_access.c login_fbtab.c
  MAN=  login.1 login.access.5
 @@ -9,6 +10,7 @@
  
  DPADD=   ${LIBUTIL} ${LIBCRYPT}
  LDADD=   -lutil -lcrypt
 +NOPAM=   yes
  
  .if !defined(NOPAM)
  CFLAGS+= -DUSE_PAM
 Index: usr.bin/login/login.c
 ===================================================================
 RCS file: /usr/local/cvsroot/pgetty/usr.bin/login/login.c,v
 retrieving revision 1.1.1.2
 retrieving revision 1.4
 diff -u -r1.1.1.2 -r1.4
 - --- usr.bin/login/login.c   8 May 2002 10:08:28 -0000   1.1.1.2
 +++ usr.bin/login/login.c  8 May 2002 10:10:40 -0000  1.4
 @@ -183,7 +183,6 @@
       exit(0);
    }
    (void)signal(SIGALRM, timedout);
 -  (void)alarm(timeout);
    (void)setpriority(PRIO_PROCESS, 0, 0);
  
    openlog("login", LOG_ODELAY, LOG_AUTH);
 @@ -201,7 +200,7 @@
    uid = getuid();
    euid = geteuid();
    egid = getegid();
 -  while ((ch = getopt(argc, argv, "fh:p")) != -1)
 +  while ((ch = getopt(argc, argv, "fh:pt:")) != -1)
       switch (ch) {
       case 'f':
        fflag = 1;
 @@ -250,6 +249,7 @@
       case 'p':
        pflag = 1;
        break;
 +     case 't': timeout=atoi(optarg); break;
       case '?':
       default:
        if (!uid)
 @@ -258,6 +258,7 @@
       }
    argc -= optind;
    argv += optind;
 +  (void)alarm(timeout);
  
    if (*argv) {
       username = *argv;
 
 Eugene
 -- 
 "Люди забыли эту истину," - сказал Лис, - "но ты не забывай"
 --- slrn/0.9.7.4 (FreeBSD)
  * Origin: Svyaz Service JSC (2:5006/1@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 dial - in   Anton Maksimenkov   05 Dec 2002 16:43:31 
 Re: dial - in   Sergey Goryachev   05 Dec 2002 10:52:50 
 dial - in   Pavel Akhmetshin   05 Dec 2002 11:28:33 
 dial - in   Alex Gusakov   05 Dec 2002 13:23:19 
 Re: dial - in   Alex Povolotsky   05 Dec 2002 14:04:59 
 Re: dial - in   Valentin Davydov   06 Dec 2002 09:40:09 
 dial - in   Eugene M. Zheganin   06 Dec 2002 17:08:42 
 Re: dial - in   Anton Maksimenkov   11 Dec 2002 17:19:30 
 dial - in   Eugene M. Zheganin   05 Dec 2002 16:21:38 
 Re: dial - in   Anton Maksimenkov   11 Dec 2002 17:23:34 
 dial - in   Eugene M. Zheganin   11 Dec 2002 09:47:28 
 Re: dial - in   Anton Maksimenkov   13 Dec 2002 22:15:19 
 Re: dial - in   Eugene Grosbein   13 Dec 2002 12:13:44 
 Re: dial - in   Anton Maksimenkov   15 Dec 2002 01:20:46 
 Re: dial - in   Eugene Grosbein   15 Dec 2002 13:19:37 
 Re: dial - in   Anton Maksimenkov   19 Dec 2002 21:04:07 
 Re: dial - in   Eugene Grosbein   19 Dec 2002 11:41:36 
 Re: dial - in   Anton Maksimenkov   21 Dec 2002 10:11:49 
 Re: dial - in   Eugene Grosbein   21 Dec 2002 11:06:39 
 Re: dial - in   Valentin Davydov   16 Dec 2002 10:27:44 
 dial - in   Eugene M. Zheganin   14 Dec 2002 12:02:44 
 Re: dial - in   Valentin A. Alekseev   06 Dec 2002 18:15:42 
 Re: dial - in   Anton Maksimenkov   11 Dec 2002 17:18:22 
Архивное /ru.unix.bsd/26093a87c44cd.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional