А.В. Столяров - Операционная среда ОС UNIX для изучающих программирование, страница 4
Описание файла
PDF-файл из архива "А.В. Столяров - Операционная среда ОС UNIX для изучающих программирование", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 4 страницы из PDF
Òàêèì îáðàçîì, åñëèíà êàòàëîã óñòàíîâëåíû ïðàâà ÷òåíèÿ, íî íåò ïðàâ èñïîëíåíèÿ, ìû ìîæåì åãî ïðîñìîòðåòü, íî âîñïîëüçîâàòüñÿ óâèäåííûì íàì íå óäàñòñÿ.Íàïðîòèâ, åñëè åñòü ïðàâà èñïîëíåíèÿ, íî íåò ïðàâ ÷òåíèÿ, ìû ìîæåìîòêðûòü ôàéë èç ýòîãî êàòàëîãà òîëüêî â òîì ñëó÷àå, åñëè òî÷íî çíàåìèìÿ ôàéëà. Óçíàòü èìÿ ìû íèêàê íå ìîæåì, ò.ê. âîçìîæíîñòè ïðîñìîòðåòü êàòàëîã ó íàñ íåò.ÎñòàâøèåñÿSetUid Bitòðè(04000),(ñòàðøèõ)SetGid BitðàçðÿäàñëîâàïðàâäîñòóïàSticky Bit (01000).óñòàíîâèòü SetUid Bit, ýòîòíàçûâàþòñÿ(02000) èÅñëè äëÿ èñïîëíÿåìîãî ôàéëàôàéë áóäåòïðè èñïîëíåíèè èìåòü ïðàâà ñâîåãî âëàäåëüöà (÷àùå âñåãî - ïîëüçîâàòåëÿroot) âíå çàâèñèìîñòè îò òîãî, êòî èç ïîëüçîâàòåëåé ñîîòâåòñòâóþùèé ôàéëçàïóñòèë.SetGid Bit ðàáîòàåò ïîõîæèì îáðàçîì, óñòàíàâëèâàÿ ýôôåêòèâíóþãðóïïó ïîëüçîâàòåëÿ (â îòëè÷èå îò ýôôåêòèâíîãî èäåíòèôèêàòîðà ïîëüçîâàòåëÿ).
Ïðèìåðîì suid-ïðîãðàììû ÿâëÿåòñÿSticky Bit,passwd.óñòàíîâëåííûé íà èñïîëíÿåìîì ôàéëå, â íåêîòîðûõ âåðñèÿõÎÑ Unix îáîçíà÷àåò, ÷òî ñåãìåíò êîäà ïðîãðàììû ñëåäóåò îñòàâèòü â ïàìÿòèäàæå ïîñëå òîãî, êàê ïðîãðàììà áóäåò çàâåðøåíà; ýòî ïîçâîëÿåò ýêîíîìèòüâðåìÿ íà çàãðóçêå â ïàìÿòü ïðîãðàìì, èñïîëíÿåìûõ ÷àùå äðóãèõ.Äëÿ êàòàëîãîâSetGid Bit îçíà÷àåò, ÷òî, êàêîé áû ïîëüçîâàòåëü íè ñîçäàëâ ýòîì êàòàëîãå ôàéë, â êà÷åñòâå ãðóïïû âëàäåëüöà äëÿ ýòîãî ôàéëà áóäåòóñòàíîâëåíà òà æå ãðóïïà, ÷òî è ó ñàìîãî êàòàëîãà.Sticky Bit îçíà÷àåò, ÷òî,3 Îáðàòèòå âíèìàíèå, ÷òî ÷èñëî çàïèñàíî ñ íóë¼ì âïåðåäè; ñîãëàñíî ïðàâèëàìÿçûêà Ñè ýòî îçíà÷àåò, ÷òî ÷èñëî çàïèñàíî â âîñüìåðè÷íîé ñèñòåìå16äàæå åñëè ïîëüçîâàòåëü èìååò ïðàâî íà çàïèñü â äàííûé êàòàëîã, óäàëèòü îíñìîæåò òîëüêî ñâîè (ïðèíàäëåæàùèå åìó) ôàéëû.Äëÿ èçìåíåíèÿ ïðàâ äîñòóïà ê ôàéëàì èñïîëüçóåòñÿ êîìàíäàchmod4 .
Ýòà êîìàíäà ïîçâîëÿåò çàäàòü íîâûå ïðàâà äîñòóïà â âèäå âîñüìåðè÷íîãî ÷èñëà, íàïðèìåð:chmod 644 myfile.cóñòàíàâëèâàåò äëÿ ôàéëà myfile.c ïðàâà çàïèñè òîëüêî äëÿ âëàäåëüöà,à ïðàâà ÷òåíèÿ äëÿ âñåõ.Ïðàâà äîñòóïà òàêæå ìîæíî çàäàòü â âèäå ìíåìîíè÷åñêîé ñòðîêèâèäà [ugoa][+-=][rwxsXtugo] Áóêâû u, g, o è a â íà÷àëå îçíà÷àþò, ñîîòâåòñòâåííî, âëàäåëüöà (user), ãðóïïó (group), âñåõ îñòàëüíûõ (others)è âñåõ ñðàçó (all).
+ îçíà÷àåò äîáàâëåíèå íîâûõ ïðàâ, - ñíÿòèå ñòàðûõïðàâ, = óñòàíîâêó óêàçàííûõ ïðàâ è ñíÿòèå âñåõ îñòàëüíûõ. Ïîñëåçíàêà áóêâû r, w, x îçíà÷àþò, êàê ìîæíî äîãàäàòüñÿ, ïðàâà íà ÷òåíèå, çàïèñü è èñïîëíåíèå, áóêâà s óñòàíîâêó/ñíÿòèå Set-áèòîâ (èìååòñìûñë äëÿ âëàäåëüöà è ãðóïïû), t îáîçíà÷àåò Sticky Bit. Áóêâà X (çàãëàâíàÿ) îçíà÷àåò óñòàíîâêó/ñíÿòèå áèòà èñïîëíåíèÿ òîëüêî äëÿ êàòàëîãîâ, à òàêæå äëÿ òåõ ôàéëîâ, íà êîòîðûå õîòÿ áû ó êîãî-íèáóäü åñòüïðàâà èñïîëíåíèÿ.Åñëè êîìàíäó chmod èñïîëüçîâàòü ñ êëþ÷îì -R, îíà ïðîâåä¼ò ñìåíóïðàâ äîñòóïà êî âñåì ôàéëàì âî âñåõ ïîääèðåêòîðèÿõ çàäàííîé äèðåêòîðèè.Íàïðèìåð, êîìàíäà chmod a+x myscript ñäåëàåò ôàéë myscript èñïîëíÿåìûì; êîìàíäà chmod go-rwx * ñíèìåò ñî âñåõ ôàéëîâ â òåêóùåìêàòàëîãå âñå ïðàâà, êðîìå ïðàâ âëàäåëüöà.
Î÷åíü ïîëåçíîé ìîæåò îêàçàòüñÿ êîìàíäàchmod -R u+rwX,go=rX ~íà ñëó÷àé, åñëè âû ñëó÷àéíî èñïîðòèòå ïðàâà äîñòóïà â ñâîåé äîìàøíåéäèðåêòîðèè; ýòà êîìàíäà, ñêîðåå âñåãî, ïðèâåä¼ò âñ¼ â óäîâëåòâîðèòåëüíîå ñîñòîÿíèå. 2.5. Ïåðåíàïðàâëåíèÿ ââîäà-âûâîäà â èíòåðïðåòàòîðå Bourne ShellÊàê èçâåñòíî, ïðàêòè÷åñêè âñå ïðîãðàììû â ÎÑ Unix ñëåäóþò ñîãëàøåíèþ, ïî êîòîðîìó ïîòîê ââîäà-âûâîäà ñ äåñêðèïòîðîì 0 îáúÿâëÿåòñÿ ïîòîêîì ñòàíäàðòíîãî ââîäà, ïîòîê ñ äåñêðèïòîðîì 1 ïîòîêîì4ñîêðàùåíèå ñëîâ Change Mode17cmd1cmd1cmd2cmd3cmd1cmd4cmd5Òàáëèöà 5Ïðèìåðû ïåðåíàïðàâëåíèé ââîäà-âûâîäà> file1çàïóñòèòü ïðîãðàììó cmd1, íàïðàâèâ å¼ âûâîä â ôàéë file1.
Åñëè ôàéë ñóùåñòâóåò,îí áóäåò ïåðåçàïèñàí ñ íóëÿ, åñëè íå ñóùåñòâóåò áóäåò ñîçäàí.>> file1çàïóñòèòü ïðîãðàììó cmd1, äîïèñàâ å¼ âûâîä â êîíåö ôàéëà file1. Åñëè ôàéëà íåñóùåñòâóåò, îí áóäåò ñîçäàí.< file2çàïóñòèòü ïðîãðàììó cmd2, ïîäàâ åé ñîäåðæèìîå ôàéëà file2 â êà÷åñòâå ñòàíäàðòíîãî ââîäà. Åñëè ôàéëà íå ñóùåñòâóåò, ïðîèçîéä¼ò îøèáêà.> file1 < file2 çàïóñòèòü ïðîãðàììó cmd3, ïåðåíàïðàâèâêàê ââîä, òàê è âûâîä.| cmd2çàïóñòèòü îäíîâðåìåííî ïðîãðàììû cmd1 ècmd2, ïîäàâ äàííûå ñî ñòàíäàðòíîãî âûâîäà ïåðâîé íà ñòàíäàðòíûé ââîä âòîðîé.2> errfileíàïðàâèòü ïîòîê ñîîáùåíèé îá îøèáêàõ âôàéë errfile.2>&1 | cmd6îáúåäèíèòü ïîòîêè ñòàíäàðòíîãî âûâîäà èâûâîäà îøèáîê ïðîãðàììû cmd5 è íàïðàâèòü âñ¼ íà ñòàíäàðòíûé ââîä ïðîãðàììåcmd6ñòàíäàðòíîãî âûâîäà è ïîòîê ñ äåñêðèïòîðîì 2 ïîòîêîì äëÿ âûâîäàñîîáùåíèé îá îøèáêàõ.Îñóùåñòâëÿÿ îáìåí äàííûìè ÷åðåç ñòàíäàðòíûå ïîòîêè, áîëüøèíñòâî ïðîãðàìì íå äåëàåò ïðåäïîëîæåíèé î òîì, ñ ÷åì íà ñàìîì äåëåñâÿçàí òîò èëè èíîé ïîòîê.
Ýòî ïîçâîëÿåò èñïîëüçîâàòü îäíè è òå æåïðîãðàììû êàê äëÿ ðàáîòû ñ òåðìèíàëîì, òàê è äëÿ ÷òåíèÿ èç ôàéëàè/èëè çàïèñè â ôàéë.Êîìàíäíûå èíòåðïðåòàòîðû, â òîì ÷èñëå êëàññè÷åñêèé Bourne Shell,ïðåäîñòàâëÿþò âîçìîæíîñòè äëÿ óïðàâëåíèÿ ââîäîì-âûâîäîì çàïóñêàåìûõ ïðîãðàìì. Äëÿ ýòîãî èñïîëüçóþòñÿ ñèìâîëû <, >, >>, >& è | (ñì.òàáë. 5).Îáû÷íî â ÎÑ Unix ïðèñóòñòâóåò ïðîãðàììà less, ïîçâîëÿþùàÿ ïîñòðàíè÷íî ïðîñìàòðèâàòü ñîäåðæèìîå ôàéëîâ, ïîëüçóÿñü êëàâèøàìè18Ñòðåëêà ââåðõ, Ñòðåëêà âíèç, PgUp, PgDn è äð. äëÿ ïðîêðóòêè.Ýòà æå ïðîãðàììà ïîçâîëÿåò ïîñòðàíè÷íî ïðîñìàòðèâàòü òåêñò, ïîäàííûé åé íà ñòàíäàðòíûé ââîä.
Èñïîëüçîâàíèå ïðîãðàììû less ïîëåçíî âñëó÷àå, åñëè èíôîðìàöèÿ, âûäàâàåìàÿ êàêîé-ëèáî èç çàïóñêàåìûõ âàìèïðîãðàìì, íå óìåùàåòñÿ íà ýêðàí. Íàïðèìåð, êîìàíäàls -lR | lessïîçâîëèò âàì ïðîñìîòðåòü ñïèñîê âñåõ ôàéëîâ, íàõîäÿùèõñÿ â òåêóùåéäèðåêòîðèè è âñåõ å¼ ïîääèðåêòîðèÿõ.Ó÷òèòå, ÷òî êîìïèëÿòîð gcc âûäà¼ò âñå ñîîáùåíèÿ îá îøèáêàõ è ïðåäóïðåæäåíèÿ â ñòàíäàðòíûé ïîòîê îøèáîê.
Ïîýòîìó, ÷òîáû ïðîñìîòðåòü ïîñòðàíè÷íî ñîîáùåíèÿ, âûäàâàåìûå â õîäå êîìïèëÿöèè, ñëåäóåòäàòü, íàïðèìåð, òàêóþ êîìàíäó:gcc -Wall -g myprog.c -o myprog 2>&1 | less 2.6. ÏðîöåññûÑïèñîê ïðîöåññîâ, âûïîëíÿþùèõñÿ â íàñòîÿùèé ìîìåíò, ìîæíî ïîëó÷èòü êîìàíäîé ps:$ psPID TTY2199 pts/52241 pts/5TIME CMD00:00:00 bash00:00:00 psÊàê âèäíî, êîìàíäà ïî óìîë÷àíèþ âûäà¼ò òîëüêî ñïèñîê ïðîöåññîâ,çàïóùåííûõ â äàííîì êîíêðåòíîì ñåàíñå ðàáîòû.Ê ñîæàëåíèþ, îïöèè êîìàíäû ps î÷åíü ñèëüíî îòëè÷àþòñÿ â çàâèñèìîñòè îò âåðñèè (â ÷àñòíîñòè, äëÿ FreeBSD è Linux). Çà ïîäðîáíîéèíôîðìàöèåé ñëåäóåò îáðàùàòüñÿ ê äîêóìåíòàöèè ïî äàííîé êîíêðåòíîé ÎÑ; çäåñü ìû îãðàíè÷èìñÿ çàìå÷àíèåì, ÷òî êîìàíäà ps ax âûäàñòñïèñîê âñåõ ñóùåñòâóþùèõ ïðîöåññîâ, à êîìàíäà ps axu äîïîëíèòåëüíîâûäàñò èíôîðìàöèþ î âëàäåëüöàõ ïðîöåññîâ5 . íåêîòîðûõ ñëó÷àÿõ ìîæåò îêàçàòüñÿ ïîëåçíîé ïðîãðàììà top, ðàáîòàþùàÿ èíòåðàêòèâíî.
Îíà âûäà¼ò íà ýêðàí ñïèñîê íàèáîëåå àêòèâíûõ ïðîöåññîâ, îáíîâëÿÿ åãî îäèí ðàç â ñåêóíäó. ×òîáû âûéòè èç ïðîãðàììû top, íåîáõîäèìî ââåñòè áóêâó q.5 Ýòî âåðíî äëÿ ÎÑ Linux è FreeBSD.  äðóãèõ ÎÑ, íàïðèìåð â SunOS/Solaris,îïöèè êîìàíäû ps èìåþò ñîâåðøåííî èíîé ñìûñë19Ñíÿòü ïðîöåññ ìîæíî ñ ïîìîùüþ ñèãíàëà. Îáû÷íî ïðèìåíÿþò ñíà÷àëà ñèãíàë SIGTERM (15), à åñëè ïîñëå ýòîãî ïðîöåññ íå çàâåðøèëñÿ ñèãíàë SIGKILL (9).
Ñèãíàë SIGTERM ìîæåò áûòü ïåðåõâà÷åí ïðîãðàììîé, íàïðèìåð, ñ öåëüþ êîððåêòíîãî çàâåðøåíèÿ; ñèãíàë SIGKILL óíè÷òîæàåò ïðîöåññ áåçóñëîâíûì îáðàçîì, íå îñòàâëÿÿ âîçìîæíîñòè ïðîèçâåäåíèÿ êàêèõ-ëèáî äåéñòâèé ïî ïîäãîòîâêå ê êîððåêòíîìó çàâåðøåíèþ.Äëÿ ïåðåäà÷è ñèãíàëà ïðîöåññó èñïîëüçóåòñÿ êîìàíäà kill. Ïîóìîë÷àíèþ ïåðåäà¼òñÿ ñèãíàë SIGTERM, ò.å., íàïðèìåð, êîìàíäàkill 2763 ïðèâåä¼ò ê òîìó, ÷òî ïðîöåññ 2763 ïîëó÷èò ñèãíàë SIGTERM.Çàäàòü äðóãîé ñèãíàë ìîæíî ëèáî ïî íîìåðó, ëèáî ïî íàçâàíèþ (TERM,KILL è ò.ï.).
Ñëåäóþùèå äâå êîìàíäû ýêâèâàëåíòíû; îáå ïåðåäàþò ïðîöåññó 2763 ñèãíàë SIGKILL:kill -9 2763kill -KILL 2763 2.7. Âûïîëíåíèå â ôîíîâîì ðåæèìåÍåêîòîðûå ïðîãðàììû âûïîëíÿþòñÿ â òå÷åíèå äëèòåëüíîãî âðåìåíè, ïðè ýòîì íå òðåáóÿ âçàèìîäåéñòâèÿ ñ ïîëüçîâàòåëåì ÷åðåç ñòàíäàðòíûå ïîòîêè ââîäà/âûâîäà. Âî âðåìÿ âûïîëíåíèÿ òàêèõ ïðîãðàììóäîáíî èìåòü âîçìîæíîñòü ïðîäîëæàòü äàâàòü êîìàíäû êîìàíäíîìóèíòåðïðåòàòîðó, ÷òîáû íå òðàòèòü âðåìÿ.Äîïóñòèì, íàì ïîòðåáîâàëñÿ ñïèñîê âñåõ ôàéëîâ â ôàéëîâîé ñèñòåìå. Òàêîé ñïèñîê ìîæíî ïîëó÷èòü ñ ïîìîùüþ êîìàíäû ls -lR /.Åñòåñòâåííî áûëî áû ïåðåíàïðàâèòü å¼ âûâîä â ôàéë, ÷òîáû ïîçäíååèìåòü âîçìîæíîñòü åãî àíàëèçà.
Çàìåòèì, ÷òî òàêàÿ êîìàíäà áóäåò âûïîëíÿòüñÿ íåñêîëüêî ìèíóò è æäàòü å¼ îêîí÷àíèÿ íàì áû íå õîòåëîñü,ïîñêîëüêó ýòè íåñêîëüêî ìèíóò ìû ìîãëè áû, íàïðèìåð, èñïîëüçîâàòüäëÿ íàáîðà òåêñòà â ðåäàêòîðå. ×òîáû çàïóñòèòü êîìàíäó â ôîíîâîìðåæèìå, ê íåé ñëåäóåò â êîíöå ïðèïèñàòü ñèìâîë &, íàïðèìåð:$ ls -lR / >list.txt 2>/dev/null &[1] 2437Çäåñü ìû ïåðåíàïðàâèëè ïîòîê âûâîäà ñîîáùåíèé îá îøèáêàõ â óñòðîéñòâî /dev/null6 , ÷òîáû ñîîáùåíèÿ î íåâîçìîæíîñòè ÷òåíèÿ íåêîòîðûõêàòàëîãîâ íå ìåøàëè íàøåé äàëüíåéøåé ðàáîòå.6 Óñòðîéñòâî /dev/null ïðåäíàçíà÷åíî äëÿ ïîãëîùåíèÿ ïîòîêîâ äàííûõ, êîòîðûåíàì íå íóæíû; â íåãî ìîæíî çàïèñûâàòü ÷òî óãîäíî, äàííûå ïðè ýòîì ïîïðîñòóèñ÷åçàþò20 îòâåò íà íàøó êîìàíäó ñèñòåìà ñîîáùàåò, ÷òî çàäàíèå çàïóùåíîâ ôîíîâîì ðåæèìå â êà÷åñòâå ôîíîâîé çàäà÷è 1, ïðè÷åì íîìåð çàïóùåííîãî ïðîöåññà 2437.