������ �������� ��������������� ������������ �������� ����������� �������� ������� ������������. ���� ����������� � ������ ���������� ������� �� ���� ����������� ���� ������ � �� ���������������� ����������, ������� �� ����������. ������ ��� ����� ����������� � ������� ������������, ������� ���������� ������ � ������������ ������������ � ���, ��� ��� �� ����� ����� ������� ��������� ������ ����������. ��� ��, ��� �� ������ ������������� ��������������, ���������� ������� ��� ��� ����� ��������������� ��� ����������, ��� � ������ ������������ ����� ������� ��������������, ������� �������� ������������ ����������� � ������������ ��� ������. ������� �������, ��������� �������������� ������ ����� ���� ������ � ���������� ������ ��� ����� ������������� �����. �� ������ ������������ ��������, �������������� ���� � ������ �������, ����� ������ ������� ���� ����� �� �������������������� ��������� ��� ����������.
����� ������������ ������� ������� ���������� ���� ������. ������ ������ �������� � ���� ���������� ������ (������������ ����������, ������ � ����������), ������ ������, ������ ��������� � ���� ���������� �������. � ��������������������� ����� ��� ����� ����� ��������� ������. ������ ������������ ����� ����� ������������� � �������� ���� ����� � ���� �����. �� ���� ��������� �� ����� ������������� ������. ���� ����� ���� ��������� ��������, ��������� �� ������� �� �������. �������� ����������� ����� ��������� ����� �������, ��� �������� ������ ���������� ������ ������ � ���������� ������������� �������� ������� ��� ������������ �� ����� ��������. ����� � ������, ��� ������������ ������ ����� ������� ������ ���, ��� ��� �����, ���� ��� �� ������ ������� ��� ������ �������������. ����������� ����������, ����������� � ������ �����, ������������ ��� ���������.
��� ������, ������� ����������� � ������ �����, �������� ������� ������� ������ ������������ ������� 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 � ������������ ���������� ������ �������� �������, ��������� � ������������.
����� | ���������� | ������