������ ������ ����������

������ �������� ��������������� ������������ �������� ����������� �������� ������� ������������. ���� ����������� � ������ ���������� ������� �� ���� ����������� ���� ������ � �� ���������������� ����������, ������� �� ����������. ������ ��� ����� ����������� � ������� ������������, ������� ���������� ������ � ������������ ������������ � ���, ��� ��� �� ����� ����� ������� ��������� ������ ����������. ��� ��, ��� �� ������ ������������� ��������������, ���������� ������� ��� ��� ����� ��������������� ��� ����������, ��� � ������ ������������ ����� ������� ��������������, ������� �������� ������������ ����������� � ������������ ��� ������. ������� �������, ��������� �������������� ������ ����� ���� ������ � ���������� ������ ��� ����� ������������� �����. �� ������ ������������ ��������, �������������� ���� � ������ �������, ����� ������ ������� ���� ����� �� �������������������� ��������� ��� ����������.

����� ������������ ������� ������� ���������� ���� ������. ������ ������ �������� � ���� ���������� ������ (������������ ����������, ������ � ����������), ������ ������, ������ ��������� � ���� ���������� �������. � ��������������������� ����� ��� ����� ����� ��������� ������. ������ ������������ ����� ����� ������������� � �������� ���� ����� � ���� �����. �� ���� ��������� �� ����� ������������� ������. ���� ����� ���� ��������� ��������, ��������� �� ������� �� �������. �������� ����������� ����� ��������� ����� �������, ��� �������� ������ ���������� ������ ������ � ���������� ������������� �������� ������� ��� ������������ �� ����� ��������. ����� � ������, ��� ������������ ������ ����� ������� ������ ���, ��� ��� �����, ���� ��� �� ������ ������� ��� ������ �������������. ����������� ����������, ����������� � ������ �����, ������������ ��� ���������.

��� ������, ������� ����������� � ������ �����, �������� ������� ������� ������ ������������ ������� UNIX. � ����, ����� �����, ��� ��������� ��������� ��� ����������, ��� ��������������� ������� � ����� ��������, ������� � �������� � �������, ���� ��������. ��� ������� �������� ��� ����� �����, ��� ����� �� ������ � ��� ���� (����������� ������� ������� ������� ��� ������) � �� ����� ����������� ��� ����� �����, ����� ���������, ��� � ���������.

� ������ ������� �� ���������� ���������������� �������� acme, inuse � lock. Acme - ��� ������������ � ������� UNIX'� acctcom. Acctcom ��������� �������� �������� ������ �� ����������� ������� ����������, �� ��������� ����� ��������� ��������� ��� �����. Acme ������������� �� ��� ���. ��������, ��� ������� ������ �������� � ���� ���������, � �� � ��������� ����, � ������� �� ���������� acctcom ���������� �� ��� ���.

��������� ��������, inuse, ��������� ��� ���������� ��� �������� ��� "�������", ����� �� ����-������ �������. ��� ���������� ��������� ��� � �� ��������� ������ ������������ ���. ��� ���������� ������ ������������ ������������ ��������� ��� �� ����� ��, ��� � �� ����� �������������� shell.

��������� ��������, lock, ������������ ��� ������������ � ��������������� ���� ������� � ����� � �������� �� ����� ���� ������� ����������� � �������� chmod.


      ���:  acme

acme ����������� ������� ���������� ��� ���

����������

���������� �����, ����������� ��� ������ �� ����� ���������� ��� ���, ������� �������� � ������� �����.

������ ������

     acme [-l] [-u]

������ ������

acme -u ������� ��� ������� ���������� � ������������ � ������ $LOGNAME

����� ���������

    1   :
    2   # @(#) acme v1.0  Give accounting info on me Author: Russ Sage
    2�                    ���� ������� ���������� ��� ���
    �
    4   if [ "$1" != "-l" -a "$1" != "-u" ]
    5     then  echo "usage: acme [-l] [-u]" >&2
    6           echo "     -l for ttyline"   >&2
    7           echo "     -u for user name" >&2
    8           exit 0
    9   fi
    �
    11  OPT=""
    12  for ARG in $*
    13  do
    14          case $ARG in
    15          -l)     OPT="$OPT -l `basename \`tty\``";;
    16          -u)     OPT="$OPT -u $LOGNAME";;
    17          *)      OPT="$OPT $ARG";;
    18          esac
    19  done
    �
    21  echo "acctcom $OPT"
    22  acctcom $OPT

���������� ����� ����������

ARG ������ ��������, ��������� � ��������� ������
LOGNAME ���������� �����, ���������� ��� ��������������� ���
OPT ������������ ������ ���� ����� � �� ����������

��������

����� ��� ����� ��������� ���� acme?

����������� ������� ������ UNIX ��������� ����������� ����������� ����������� ��� ����� ������� ���������� �� ������������� �������. ���������� ������� ���������� ���������� ������ � ���� /usr/adm/pacct. ���������� ���� ������� ���������� ����������� ����� �������. ������ ��� ��� ���������� �������� ��������� ����� ������� ���������� � ���� ���������� ���� ������. ��������������, ������� �������� � ��������� ��� ��������, �������� acct(2). ������� ����������������� ������ ����� ��������������� � ��������� ������� (acct on(1M)) � �������� ���������� ����� ������� ���������� (acctcom(1)).

������, ����� �� �����, ��� ��������� ������� ������ � ��� ��� ���� ��������, ��� ����� ���������� ��� ����������. Acctcom ����� �������� ������� � �����������, �� ��� ���������� �����, ����� ������������ ������. �������� ����� ������������ �� ������ ������������ ����� (��� �������, ���� ������������� �������� ��� ������� �������� setuid), �� ����� ������������, �� ������, �� ������� � �.�. � �������� ����� ��������� ����� ������ ���������� �� ������ ����� ��������� � �� ����� ������������. � �� ������� �� ������ �������� ������ ���� �������� ������, ������� ��������� � ���. ����� �� ��������� acctcom � ����� �������, ��� ���������� ������� �������������� ����������, ����� ��� ��� ������ ��������� � ���� ���������������� ���. ���� �� ������, ���� �� �� ����� ��������� ���������� ������� �� ������� � ����� ����������, ��������� ��� ��������� ����������. ��� ����� � ������������ acme.

��� ������ acme?

Acme - ��� ������������ ��������� ��� ������� acctcom(1). �� ������ ��� ������ ����������, ������� ��������� �������� ��������� ������. �� ������ ������ ���� ���������� ����� acme ����� � ����������� ����, � ��� ��������� �� ������� ���. ���� acme ���������� ��� ����������, ��������� acctcom ������� �� ��������� ��� ������.

������� acctcom ����� ����� �����. � ���������������� �� ���������� ���� ��� ���, �� ���� ���������� �� �����. ����� �������, ������� �������� acme, �������� -l � -u. ����� ������� ����� -l, acme �������� ��� ������ ��������� � �������� ��� � ��������� ������. ���� ������� ����� -u, acme �������� ���� ���������������� ��� � ���� ��������� ��� � ��������� ������. ����� �� ������� ������������ ������ ����� ��� �������� ������������� ���������� ��� ���������� ��������� ��������� �������. ��� ���� ����� ���� ����������� ������������ ������ ����� ������� acctcom, acme �������� � ��������� ������, ����������� ��� fcctcom, ����� �������������� ���������� ����� acctcom, ���������� � ��������� ������ ��� acme. ����� �������, acme ������������ ������� �����������, � ����� ���� ��������� ��� ��������� ������� ��� ��� ����.

����� ���, ��� �������� ���������� ������� acctcom, �� ����� ��������� ����������� ��� ��������� ������, ��� ��� �� ������ ������ ��������� ������, ��������������� acme. ��� ����� ����� ���������� ��������, ��������� �� �� ������ �����, ��� ���������� ������ ���������.

�������

     1. $ acme

������ ���� ���� ������� ������. ��� ���������������� ������ ���� ������, ������� ���� �������� ������� � ������� �������� �� ��������� �����. ����������� ������!

     2. $ acme -u -b

������ � �������� ������� ���� ������� ������� � ���� ���������������� ������. �������� ������� �������� - �� ����� ��������� �� ���������� ������ �� ���� ������ �������.

     3. $ acme -l

����� ���� ������� ������� ��� ������������ �����, ������� � ������ �������. ���� ����� ���� �������� ������� ��������, ���������� � ������� �� ���������� ������������� ���� ������������ ����� ��� ���� ��������, ������� ������ ����������������� ������ ������������� (��-�� �������� ���� setuid, ������� � ��� ���������), ������� �������� � ���� �� ������������ �����.

���������

� ������� 4-9 ����������� �������� �� ������� ������. ���� ������ ����������� �������� �� -l � �� -u, �� ��� ������. ��������� ��������� �� ���� � ��������� �����������.

� ������ 11 ���������� OPT ���������������� ������ �������. ��� ���������� �������� ��� �������������� ����� acctcom � �� ���������.

������ 12-19 ������������ ����� ���� for, ������� ����������� �� ���� ����������� ����������. ������ �������� ��������� � ��������� case � ����������� �������. ���� ������ �������� -l (������ 15), � ���������� OPT ��������� �� ��������, ������� ��� ��� �����, ����� -l � ����������� ��� ������������� ����������, ���������� �� ������� UNIX'� tty. ������� tty ������� � ������� /dev, ������� �� �����. ��� ���� ����� ���������� �� ����� ��������, �� ����� �� ���� ���������� ������ ������ �������� ���.

���� ������� ����� -u, � ���������� OPT ����������� -u � ���� ��������������� ���. ���� ���������� �������� ����� ������ ������, �� ��� ������ ����������� � ���������� OPT. �������� ����� �������, �� ����� �������� � ��������� ������ acme ������ ����� ������� acctcom. �������� ��������, ��� ����� �� ����������� �������� �� ������ � ���������� ��������� ������. �� ������ ������ �������� ��������, ������� ������� ������ ������� acctcom. ������ ��� �� ����, ������� �� ��������� ������� �� �������� ��� �������� ���������� � ��������� ������, ����� ��� �������� ����������� ����������� ����� ���������� �����.

����� ���� ��������� ���� ����� ������ 21 ������� �� ����� ��������� ������, ������� ������ ���� ���������, ��� ��� �� �����, ��� �� ��������. � ������ 22 ����������� ���� ������� acctcom. �������� ��������� ������������� �������� acctcom(1).


      ���:   inuse

inuse ��������� ������������� ���������

����������

��������� ��� �������� ����� �������� � ��������� ���������. ���� ���-���� ���������� �����������, �� ��� ��������.

������ ������

      inuse

������� ������

inuse ������� ��������� � ��������� ���������

mypasswd �������� ��� ������, �� �� ������������ �� �����

����� ���������

    1   :
    2   # @(#) inuse v1.0  Disable terminal and alert if used  Author: Russ Sage
    2�    ��������� ������������� ��������� � �������� � ������� �������������
    �
    4   trap "echo you\'re BUSTED!!; stty echo; kill $$" 2 15
    �
    6   PATH=/bin:/usr/bin
    7   SECRET="secret"
    �
    9   stty -echo
    10  echo "Lock string: \c"
    11  read BUF1
    12  echo
    �
    14  while :
    15  do
    16          BUF2=`line < /dev/tty`
    17          if [ "$BUF2" = "$BUF1" ]
    18            then  break
    19          elif [ "$BUF2" = "$SECRET" ]
    20            then  break
    21          fi
    22          echo "^G\c"
    23  done
    24  stty echo

��������

����� ��� ����� ��������� ���� inuse?

������� ���� ������ ��������: ����� �����, ��� ������ �����, ������ ��������� � ��� ����� � ��� �����. ����� �� ��������� ���� ������� �����, ��� �� ����������� ������ �� ����� ������������������ ����������? ������ ��� ������� � ������� � �������� �� ��� ������� �����, �� �� �� ������ ��������� ���� ������ �������� ��� ����. ��� ���������� ���������, ������� �� ������ ��������� �� ����� ������ ���������� � ������� �� �������� ������ ����� ������������ ��, ��� �� �������.

�������, �� ���������� ����� ����� �������, ������� ����������� � ������� ������, �������� �����������, ��� �������� ������������. �� ������ ������������� ���������� � ������, ���� ���-������ ������ ������� "����������" ��� "������" � ����� ����������. ������������ �������� ��������������� ��������� ������ ���� ���� ������ ��� ������� ������������� �����, ������� � ����� ������ ������������ ���.

��� ������ inuse?

Inuse ��������� ��� �������� � ����� ������ ������. ��� ��������, ��� �������� �� �������� �� ���� ������� ��� ������� ����-�� �������. ����� �� ������ �������������� ��� ��������, ������� ��������� ������ ��� ������, ������� �� ���������.

����� �� ������ ��� ��������� inuse, � ��� ������������� ������. ���-����������� �� �������� ���������, ������� ������ �� ��������� �� �����. ��� �������� ����, ��� ����� �� �������� �������������� ���������� ����� inuse �����-���� ���� ������, ��� �������� ������ ������������ ��������������� �� ����� ������������� ���������� /dev/tty, � �� ����� �������� ���������� ������������ �����. ��� ��������� ���������� �� ������� ������ ������������� ����������� � ������ ��������� ����� ������� �� ����������� ���� ����� �������� �������, ����������� ������ �����.

����� ������ ������ ������ inuse �������� � ����������� ����, ������� ������ ������� � ���������� � ���������� ���������� ������� ������ � ����� ��������. ������ ���, ����� ���-�� ������ ���-�� ������������, �������� �������� ������. ����� �� ������ ���� �� ���������� �������, ��������� ��������������� � �������� ��������������.

�� ���������� ��� ���������� inuse: ��������� ���� �������������� shell, ����������� ����, � ��������� �� ����� ��. ��� ��������� ���� � �� �� ������ �������� �������� ���������. ��� �������������, ��������� ������ ��� ��� �������, � �� ��������� ������� ��������������� ����. ������� ����������� ��������� ����, � ����� ��-���������.

���������

������ 4 �������������� �������� trap. ��� ����������� ����������� trap ����������� ��� �������.

����� ���������� ������� trap �������� ������������ �� ����� ������� �������� ������ ���������� ����� � ���������� �� ��� ��������. ������ ������� ������ �������������� � ���, ��� �� �����������. ������ ������� ����������� �������� ������� � ����� ���-�����������, ��� ��� ���, ��� ����� ������������ ������� � ����������, ����������� �� ������. � ��������� ������� ���������� ��������� ��������� ������������. ��� �� ������ �����, ��� ������������ �������� ������ ����� ����������� ������ ���������. ��������� � "������ ����" � ��������� kill ����������� � �������������� ������������ $$, ������� ������������ ����� ����������������� ����� �������������� shell-��������. ���������� ������� ���������� ��������� 2 � 15, �������� �������� ���������� � ����������� ���������� ��������������. �������, ��� ������ ������ �� ��������� (������ 3) ����� �� ������������. ������� ����� �� �������� �����.

������ 6 ������������� �������, �� �������� ����� ���������� inuse. ��� ����� inuse ������� �� ������ ���� "��������� ��������" ���-������, ��� ������ ��������� (� "��������� ����"). ������ 7 �������������� ��������� ������ ��������� "secret", ������� ������ �� ��������. �� ������ �������� ������ �� ����� ����� ����� ���������� ���������� ����� � ����� �������. � ������ ������� � �����, � ������� �������� ����� ������ shell-���������, �� ������ ��������� ����������� ������. � ��������� ������ ������ ������������ ������ ������� ��������� �����.

������ 9 ��������� ���-�����������, ������ 10 �������� ������ ������, � ������ 11 ������ ������, ������� �� �������, � ������� ��� � ���������� BUF1.

������ 14-23 ������������ ����� ������ ���� while, ������� ����� �������� ������ ������ ����������� ������. ������ 16 ������ ���� � ����������. ��� ������� �������� ������� ������ 17 ���������, ������������� �� ��, ��� ������� � ����������, ������ ������������. ���� ���, ���������� BUF2 ������������ � ��������� �������. ���� �����-�� �� ������� ���������, �������� break ���������� ����� �� ����� while, ��� ����� ��������� ���������� ���������. ���� ��������� ������ �� ������������� �� ������ �� �������, �� � ������ 22 �������� �������� ������ � ����� �������� ����������� �������� ������ ����������.

���� ������ ������ ���������, � ������ 24 ���������� ���-����������� �� �������� � ��������� �����������. ���� ���������� ����������, �������������� �������� trap. ������ �������� �������� ��������������� ����.

��������� � ��������

��� ����� ����������� ����� ������� ������ �� ���������. ��� ���������� ����������, ������� �� ��� ������ ����������, �� ����� ���� ������� ���� ������ ��� ����������� ��������. �� ��������� ������� ������ ���������� ���������� trap, ��������� ��� ���������� ����� ��������� �������� �� ��������������� ���������� ����� inuse. ����� ��� �������� ������������, �� ���-���������� �������� � ���������� �������, �� �� ��������� �� ���. ���, ��� �������� �� �������, ����� ��� � �������� ����� �� ��������, ������� �� ������� ���������� (������ ��� ������� DEL). ����� �� ��� ������, �� ����� ��������� ��������� "you're busted", ���-����������� ����� ���������� � ��������� ���� ���� ���������� (������ 15). ����� ������ ����������� ����������� ����������, ���� ������ �������, ���������� ��������� � ��������� ����� ���� ���� ����������. ��� ������������������ ����������� ����� � �����, ��� � ������ �����. ������ ���, ����� ������� ������������ � ����� �����������, ������������ ����. ���� ��� ��� ����� ����������� ���������� �����, �� ���� ���� ���������� �������� �� ����������� � ������������, �������� �������� ���� ����� ������.

���� ������� ������ ����� ������ �� ����������� ��������� trap, �� ��������� ���������� �����. ���� �� ������� ������ ����� ������ ����� ������ ������ ��������� trap, �� ���������� ������ ����� ������ �������� � ��������� ����������. ��� �� ������ ������� �����, �� ���������������� �� ����� shell ��������� ���� ������ �����, � ��� ������������� ��� � ���, ��� ���= �� �� � �������.

������� �������� ������ ��� �������� ���������� � ������ ������������ �������� stty(1). ��� �������� ����� �������������� � ����� �� ������ �������. � ���� ������� ��������� �����:

        speed 9600 baud; intr = DEL; quit = ^|; erase = ^h; kill = ^u;
        eof = ^d;

������ �� ���������� "stty intr z", �� ������ ���������� ������ z � �������� ������� ���������� ����� ���������, ������� ����� ��������� ������� ���������� � ������ ������������ ����� ������������ ����� ��� ���� ������ ������ ������ ������ ������. ��������� ��� ����� ����� ����� ������� ������ ��������, �� ������ ��������� ��, ��� �� ������. ����� ���������� �������� �� ������ ������ � ����� ���������� ����� ���, ��� ������. ���� ������ ���� ������� ������� ������, ��� �������� ����������, �� ����� ���������� ��� ����������� �������, �� ������� � ������ ����� ������.

������ �� ������������ ������ �� ����� ��.

����� ��������� inuse �� ����� ��

    1   char id[] = "@(#) inuse v1.0 Disable terminal Author: Russ Sage";
    �
    3   #include
    4   #include
    5   #include
    �
    7   #define SSIZ 7
    8   #define BSIZ 512
    9   #define BELL "\07"
    10  #define LF   "\n"
    �
    12  main()
    13  {
    14          register int fd, sig, n;
    15          char    secret[SSIZ];
    16          char    buf1[BSIZ], buf2[BSIZ];
    17          struct  sgttyb sav_tty, chg_tty;
    �
    19          secret[0] = 's';
    20          secret[1] = 'e';
    21          secret[2] = 'c';
    22          secret[3] = 'r';
    23          secret[4] = 'e';
    24          secret[5] = 't';
    25          secret[6] = '\n';
    �
    27          buf1[0] = buf2[0] = '\0';
    28          if ((fd = open("/dev/tty",O_RDONLY)) == -1)
    29                  exit(1);
    �
    31          for (sig = 2; sig <= 15; sig++)
    32                  signal(sig, SIG_IGN);
    �
    34          if (gtty(0, &sav_tty))
    35                  exit(2);
    36          chg_tty = sav_tty;
    37          chg_tty.sg_flags &= ~ECHO;
    38          if (stty(0, &chg_tty))
    39                  exit(3);
    �
    41          write(1,"Lock string: ",13);
    42          read(fd, buf1, BSIZ);
    43          write(1, LF, 1);
    �
    45          for (;;) {
    46                  n = read(fd, buf2, BSIZ);
    47                  buf2[n] = '\0';
    �
    49                  if (strcmp(buf2, buf1) == 0)
    50                          break;
    51                  if (strcmp(buf2, secret) == 0)
    52                          break;
    53                  write(1, BELL, 1);
    54          }
    55          stty(0, &sav_tty);
    56          close(fd);
    57  }

��������

����� ��� ����� ��������� inuse (��)?

������ inuse �� ����� �� �������� ����� ��� ��, ��� � ������ �� ����� shell. �������� ������� ����������� � ���, ��� ��������� ����� �� ����� shell ���������� ��������� ������� (1), � �� ����� ��� ��������� �� �� ���������� ������� �������� (2) � (3).

��� ������ ��������� inuse (��)?

������������� ������ ���������������� ����� ��, ��� � � shell-������. ���������������� ��������� ������ (� ������ ������ ����������� ����� ���������, ����� ������� strings(1) �� ������ ���������� ��� � ����������� ������), ��������������� �������, �������� ������ ������������ � ���������� ����������� ����, ������� ������ ������� � ����������. ��� ������ �� ���������� ���-�� ������� � ������ ������� �������� �������, ������� ������ ������������ � ����� ���������� ��������. ���� ��� ������������� ������ �� �������, ��������� ����������������� �������� � �����������. ���� ���������� �� ���������, �������� ������ �������� ������ � ����� ������ ����������.

��������� ����� ������� �� ��������, ������� �������� ���������� ��������� �� �����������. ������������ ������ ���������� �� ���������� - ������������ ������� "kill -9". ������ 9 �������� ������������, ������� ������ �����������. ���� �� ��� ����� ���� �������, �� �� ���� �� �������� ������� ���������� ���������� ��������, ����� ��� �������� ����� �� �������.

���������

������ 1 �������� ��������������� ���������� � ���������� ������. ��� ������� ����� ������ � ��������� ������ ������� what(1) ����� ������ ��� ������, ����� �� ����� ���������� ��� ��� ����������������� ����� ���������.

������ 3 ���������� ���� fcntl.h. ���� ���� �������� ��� ����������� ����� �� ��� ��������, ��������, ������ � ������ ������. ������ 4 ���������� ���� signal.h. �� ���������� ���� ���� ��� ����������� ���������� SIG_IGN, ������� �������� �������� ������������� �������� (signal_ignore). ������ 5 ���������� ���� sgtty.h, ������� �� ���������� ��� ����������� �����, ��� ��������� � ��������� ���������� � ��������� ����������� ������ ioctl(2).

������ 7 ���������� ������ ���������� ������. ���� ������ �� ����������� ������ ���� ����� �����, ��� ����� ������. ���� ������ ������ ��� �������� ����������������.

������ 8 ��������� ������ ������, � ������� ������ ��� ������������ ������ � ����������. ���� 512 �������� ������� ����� ��� ������ ����������, �� ����� ���� ������ ������������ � �������� ������� �������� �������. ������� �������� ������ ���� ��� ����� ������.

������ 9 � 10 ���������� ����������� ������� ��������� ������� � �������� ������.

������ 14 ��������� ��������� ������� ����������. �������� ��������, ��� �� ���������� ����������� �����. ������������� ����������� ���������� ��� ��������� ������ - �������� �����. ���� �� �������� ������� ����� ���������� �� ��������� � ����������� ��������� � ����� ������, �� ����� ������� ������. ���������� ���������� ��������������� ��� ������� ����������. ���������� fd ������������ � �������� ��������� ����������� ��� �������� ����� /dev/tty, ���������� si g ��������������� ������������� �������� ���� ��������, � ���������� n ������������ ����� ����� ����������� ��������.

������ 15 ���������� ��������� ������. ���� ���������� ������ �������� ��� ��������� ������, ������� ����� ����������� � ���������. ������ 16 ���������� ��� ������, � ������� �� ������ �������� �������. Buf1 ������������ ��� ������ ����������������� ������, � buf2 ��� ������� ����� ������, ������� �����������, ����� �� ����� ���������� ���������� ���������. ������ 17 ���������� ��� ������� ���������, ������� �������� ���������� �� ���������� ��������� (ioctl). ����� � ��� ��� ���������, ��������� ���� �� ��� - ��������������, � ������ - ��, �� ������� �� ����� ��������, ����� �� ������ �������������� ���������.

������ 19-25 ��������� ������ � ��������� ������. �� ��������� ������������ ����������, ��������� ��� ����� ���������� ����� ������ �������� � ��������� ������ ���������� �����������. ��� ���� ������������ ��� �������������� ����������� ����������� ��������� � ����� ���������� ������ ����������.

� ������ 27 ��� ��� ������ ���������������� � ������� ������.

������ 28 � 29 ��������� ���������� /dev/tty. ���� ������������ ���������� ����� ����� -1, ��� ������� �� ������ � ��������� �����������.

������ 31 � 32 ������������� ��� �������. ���� for �������� � ���������, �������� ������ �� 2 �� 15. ��� ������� �� ���� �������� ����������� ��������� ����� signal � ����� ������������� �������� � ������ ����������.

� ������� 34-39 ����������� ����������� ������������ ������������� ��� ���������� ���-����������� ��������. ������ 34 �������� ���������� �� ���������� ��������� � ��������� sav_tty. ��������� ����� gtty - ��� ������ ����������� ��������� � ��������� ������� ioctl(get_values). ���� ���� ����� ��������, ��������� �����������.

������ 36 ������� ������ �� ��������� sav_tty � ��������� chg_tty. ����� ������ 37 ����������� �������� sg_flags ��������� �������� ��������� ��� ��� �� ��������� � �������� ECHO, ��� �������� "��������� ���-�����������". ����� ����� ������ 38 � 39 ���������� ���������� �������� ������� �� ������������ ����������. ��������� ����� stty - ��� ������ ����������� ��������� � ��������� ������� ioctl(set_values).

������ 41 ������� �� ����� ������ �� ���� ������. ���������� ����� 1 �������� ����������� ����������� ������, � 13 - ����� ������ ��������. ������ 42 ������ BSIZ �������� �� ����� /dev/tty. ����� ������ �� ����� �������� ������ �������� ������. ��� ���������� �������, ��������� ��� ���������� ���-����������� �� ����� �� ��������� ������ �������� ������, ����� �� ������� ���� ������. ������� �� ��������� �������� ���� ������ ����� ����.

������ 45-54 ������������ ����� ����������� ����, ������� ������ ������� � ����������. ������ 46 ��������� ������ ��������� ��� ������������� ������. � ���� ������ ��������� ������ ���������� � buf2, � �� � buf1. �� �������� ���������� ��������, ����������� � buf2 (n). ��������� �������������� �������� ���������� � ����, � �� � 1, ��� ����� n �������� �� �������� � ����� ������ � ����� �� ��������� ���� ��� ����, ����� ���, ��� ���� �������, ������������ ����� ������ ��������. �� ������ ��� ������, ��� ������� read �� ���������� ��������� ���������� ������. ��� ������ ��������� ������ stdio. �� �������� ��������� � ������� (3) ����������� �� �������, � �� � ������� (2). ��� ����� �������� ����������� ������� � ���� ������, ����� �� ����� ���� �������� � ��������.

������ 49 ���������� ��, ��� ����� � ����������, � ��� �������, ������� �� ����� � ������ ������ ���������. ���� ��� ���������� ������ ���������, strcmp ���������� �������� ����, ������� �������� � ����������. ������� break ������� ���������� �� ����� for, � ��������� ������������. ������ 51 ��������� ����� �� ��������� � ��������� �������. ���� ���������� ����������, �� ����� �������� �� �����.

���� ���������� �� ���������, ������ 53 ������ �� �������� �������� ������ � ���������� ���������� ��������� read � ������ ����� for.

���� ��������� ����� �� ����� for, ���������� ���������� ������ 55. ���������� ������ �������������� ���������� �� ���������� ���������, ��� ����� ���������� ���-�����������. ������ 56 ��������� ���� /dev/tty, � ���������� ���������� ���������� ������ ���������.

�� ����� ������, ��������� �� ����� ��, ���� � ��������� �������, ��� �� ����� shell, �� ����� ��������� ������������. ��� �� ����� ���� ����������� ��� �������� �����, ����� ������� kill -9. ������ � ����������� ������ ������� �� ���������� ����. �� ��������� ������� ������� ������ � ����� ����� ������ �� ���� ������������� ����� ������� ������ � ��������� ����� ������� ���������.


      ���: lock

lock ������������ � ��������������� ������

����������

�������� ����� ������� � ������ �� ������ � ������, ��� �������� ��� ������������ � ���������������.

������ ������

      lock [-u] file [...]

������ ������

     lock $HOME

��������� ����������� ������ ��� ���� � ����������� ������/������ ��� ������ � ������ ������������� �� ��������� � ����� ���������������� ��������.

����� ���������

    1   :
    2   # @(#) lock v1.0  Lock and unlock files  Author: Russ Sage
    2�                    ������������ � ��������������� ������
    �
    4   if [ $# -eq 0 ]
    5     then echo "lock: incorrect argument count" >&2
    6          echo "usage: lock [-u] file [...]"    >&2
    7          exit 1
    8   fi
    �
    10  if [ "`echo $1 | cut -c1`" = "-" -a "$1" != "-u" ]
    11    then  echo "lock: invalid argument $1"   >&2
    12          echo "usage: lock [-u] file [...]" >&2
    13          exit 1
    14  fi
    �
    16  MODE1="go-rw"
    17  MODE2="u-w"
    �
    19  if [ "$1" = "-u" ]
    20    then  shift
    21          MODE1="go+r"
    22          MODE2="u+w"
    23  fi
    �
    25  chmod $MODE1 $@
    26  chmod $MODE2 $@

���������� ����� ����������

MODE1 ������ ������� � �����, ����������� � ������ ������������� � ������ �������������
MODE2 ������ ������� � �����, ����������� � ���������

��������

����� ��� ����� ��������� ���� lock?

��� ����� � ������� UNIX ����� ��������� ����� �������. ��� ������ ���������� � ������������ � ���, ��� ������������ ���� ����. ��� ������� ����� ������ ���� ����������� ��� ������ ���� ������� - ��� ���������, ������ � ������ �������������. ������ ��������� ����� ����� ����� 644, � ����������� � �������� - 755. ��������� ������� ����������� �� ��������� ������ ��������.

���� �� ������ ���������� ����� ������ ��� ������, ������� ������������ ������� chmod(1). ����� ����� ������ ����������� ���� ��� ���������� ������������ ����� (��������, 777), ���� ��� ��������� ���������, �����������, ����� ��������� ������������� ��� ����� ������ (��������, ugo+rwx). ���� �� ������ �������� ��� ��������� ������������ �����������, ����� ������������ ��� ����� ��������� ���������. �� ���� � ����� ������ ��� ����� ������� ��������, ����������� ��������� ����� ������� �� ������� � ����������� �� ������������� ����� ���������� ���, ��� �������� ���� ������� � �����.

��� ������ lock?

Lock - ��� ��������, ������� ��������� ������� �������, ��������������� ������������ ���� ����� ������. ���� ��������� ���� ������������ ����������� ������ ������� ������������� ��� ������� ������� � ������������ �������. ���� ������� ������������ ������ �������, ���� ����� ����� ����������� � ���������� ���������.

�������� ������� ��� lock �������� ����� ������. ����������� ������������� ���������� ������ � ����� ������� ���� ������. � ��� ������ ���������� �� ������� ���� ���� ��� �����. ����� ������ � ��������� ��������� ����� �����������.

�������� lock �� ��������� - ������������ ���������� �����. ����� -u ������������ ��������� ����.

���� ������� chmod �������� �������� ��� �����, ��� ������� �������� ��� ��� � � ���� ������ ��������� ��������� �� ������.

�������

    1.  $ lock -u $HOME/src *.c

��������������� ����� �������� � ��������� �������� � ���� �������� ������ �� ����� �� � ������� ��������. ��������������� ���� ����������� ������ ���� � ����������� ������ ������ ���.

    2.  $ lock $HOME/bin

��������� ��� ������� bin ���, ����� ����� �� ��� ������ ��� ������ � ���� �����. ���� ���� ��� ������� ������ ������, ����� ����������� ����� ��� �� ����� � ���� �������� cd, ���� ���������� ��� x. ���� �� ���������� ��������� ������� ls, ������ ���� ����� �������� ��������� �� ������ ���� "filename not found" (���� � ������ "filename" �� ������). ����� �� ����� �������� ���������� �� ���������� ����������� �����, ����� ��� ��������� �������������� � ����� �������, �� ����� ����� ������� ����� ���� ������ �� ��������� �� ������.

���������

������ 4-8 ��������� ������� ����������. ���� �� ��� ������ �� ���� ��������, ��������� ��������� �� ������. ������ ���� ������� ���� �� ���� ��� �����.

������ 10-14 ���������, �������� �� ������ ������ ������� ������������ ��������� ������ "�����" � ���������� �� ������ ����� �� ���������� ����� -u. ���� ��� ������� �����������, ��������� ��������� �� ������ � ��������� �����������.

������ 16 � 17 �������������� ��������� ������� ���� ������� �� ���������. MODE1 ��������������� ��� ������� ������ � ������ ���������� ������������� "������" � "������". MODE2 ��������������� ��� ������� ������������ (�.�. ���) ����� ������. ��� ��������� ��� ���� �� ��������� ������ � ����. ��� ����� ��� ����� ����������, ��������� ��� ��� ������ �������� ������. ������������ ������ ������� ��� - ������ ������� ������� chmod � ����� ���������� �����������.

������ 19-23 ���������, ���� �� ������� � ��������� ������ ����� -u. ���� ����, ��� ��������� �� ��������� ������ �������� shift � ���������� ������ ���������������� ��� ��������������� ������. ������ 21 ��������� ����������� ������ ������ ������������� � ������. ������ 22 ��������� ��� ����������� ������. �������� ��������, ��� � ��������� ����� lock �� ���������� ����������� ����� x, s ��� t. ��� ������� ���������, ��������� ��� x ������ ���� ���������� ������ � ������, ���� ���� ����� ���� �����������. ��� ��������� ��� x ������ ���� ���������� ������ � ������, ���� �� ������, ����� ������ ������������ ����� �������� � ���� �������. �� ����� ������� �� ������������� ����������� ������ ��� ������ ������������� � ��� ������ �������������, �� �� ��������� �� ��� ������������ ������. ��� �������������� ���� ���������������� �� ������, ���� ���� ����� �������������� ����� ����� ������� � ����, ������� �� �� �����-�� �������� �� ������ ���������.

� ������� 25 � 26 ����������� ������� chmod. �������� $@ ����������� ��� ����������� ���� ���� ������, ��������� � ��������� ������. ����� ������ ��������� ��� �������� lock � ����������� ������� ������.

�� ��������� ����� ���� �� ������ ���������� ��������� ���� � ���, ��� ����� ����������� �����, � ������� �� ���������, ��� ����� ���� � ������� �������������� � ������ ����� ����������� ������������ ��� ������� ����. �� ������ ��������� ������ � ��������� ������� UNIX � ������������ ���������� ������ �������� �������, ��������� � ������������.

����� | ���������� | ������